app/src/main/java/safeluck/drive/evaluation/fragment/InspectSignalFragment.java
@@ -13,6 +13,7 @@
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.VisibleForTesting;
import androidx.appcompat.widget.Toolbar;
import androidx.databinding.DataBindingUtil;
import androidx.lifecycle.ViewModelProviders;
@@ -32,6 +33,7 @@
import safeluck.drive.evaluation.DB.signalConfigdb.SingalConfig;
import safeluck.drive.evaluation.MainActivity;
import safeluck.drive.evaluation.R;
import safeluck.drive.evaluation.bean.CarSignal;
import safeluck.drive.evaluation.bean.MCUInfo;
import safeluck.drive.evaluation.cEventCenter.CEventCenter;
import safeluck.drive.evaluation.cEventCenter.ICEventListener;
@@ -62,60 +64,69 @@
        @Override
        public void onCEvent(String topic, int msgCode, int resultCode, Object obj) {
            synchronized (object){
                if (msgCode==Constant.MCU_SN){
                    final MCUInfo mcuInfo = gson.fromJson((String)obj, MCUInfo.class);
                if (msgCode==Constant.ID_SM_CARSENSOR){
                    final CarSignal mcuInfo = gson.fromJson((String)obj, CarSignal.class);
                    Log.i(TAG,mcuInfo.toString());
                    if (mcuInfo != null){
                        gpios.clear();
                        for (int i = 0; i < 16; i++) {
                            gpios.add(      ByteUtil.getBitStatus(mcuInfo.getGpio(),i));
                        }
                        MyLog.i("mcu info gpio"+mcuInfo.getGpio());
                        handler.post(new Runnable() {
                            @Override
                            public void run() {
                                bingding.roatespeed.updateStr(String.valueOf(mcuInfo.getEngine()));
                                bingding.myspeed.updateStr(String.valueOf(mcuInfo.getSpeed()/10.0));
                                bingding.myspeed.updateStr(String.valueOf(mcuInfo.getSpeed()));
                                bingding.dagnwei.updateStr(gearStr(mcuInfo.getGear()));
                                bingding.odo.updateStr(String.valueOf(mcuInfo.getOdo()));
                                bingding.trip.updateStr(String.valueOf(mcuInfo.getTrip()));
                                bingding.tripTime.updateStr(String.valueOf(mcuInfo.getTrip_time()));
                                bingding.cellVolt.updateStr(String.valueOf(mcuInfo.getCell_volt()));
                                for (int i = 0; i < gpios.size(); i++) {
                                    MyLog.i(TAG, "run: gpio["+i+"]="+gpios.get(i));
                                String keystr="";
                                switch (mcuInfo.getKey()){
                                    case 0:
                                        keystr = "OFF";
                                        break;
                                    case 1:
                                        keystr = "ACC";
                                        break;
                                    case 2:
                                        keystr = "ON";
                                        break;
                                    case 3:
                                        keystr = "START";
                                        break;
                                    default:
                                        keystr = "不支持";
                                        break;
                                }
                                MyLog.i("gpios.size="+gpios.size());
                                bingding.keystatus.updateStr(keystr);
                                bingding.accelerator.updateStr(String.valueOf(mcuInfo.getAps())+"%");
                                fun_id = 0;
                                //安全带
                                bingding.inpsetSignalSlice.tvSeatBelt.setCompoundDrawablesWithIntrinsicBounds(getGpioBitValue()==VALIAD_NUM?leftGreen:leftGray,null,null,null);
                                Log.i(TAG,"安全带之后,Fun_ID="+fun_id);
                                bingding.inpsetSignalSlice.tvSeatBelt.setCompoundDrawablesWithIntrinsicBounds(mcuInfo.getSeat_belt()==VALIAD_NUM?leftGreen:leftGray,null,null,null);
//                                Log.i(TAG,"安全带之后,Fun_ID="+fun_id);
                                //左转
                                bingding.inpsetSignalSlice.tvTrunLeft.setCompoundDrawablesWithIntrinsicBounds(getGpioBitValue()==VALIAD_NUM?leftGreen:leftGray,null,null,null);
                                bingding.inpsetSignalSlice.tvTrunLeft.setCompoundDrawablesWithIntrinsicBounds(mcuInfo.getLeft_turn_lamp()==VALIAD_NUM?leftGreen:leftGray,null,null,null);
                                //右转
                                bingding.inpsetSignalSlice.tvTurnRight.setCompoundDrawablesWithIntrinsicBounds(getGpioBitValue()==VALIAD_NUM?leftGreen:leftGray,null,null,null);
                                bingding.inpsetSignalSlice.tvParkingBrake.setCompoundDrawablesWithIntrinsicBounds(getGpioBitValue()==VALIAD_NUM?leftGreen:leftGray,null,null,null);
                                bingding.inpsetSignalSlice.tvFootBrake.setCompoundDrawablesWithIntrinsicBounds(getGpioBitValue()==VALIAD_NUM?leftGreen:leftGray,null,null,null);
                                bingding.inpsetSignalSlice.tvLowLamp.setCompoundDrawablesWithIntrinsicBounds(getGpioBitValue()==VALIAD_NUM?leftGreen:leftGray,null,null,null);
                                bingding.inpsetSignalSlice.tvHighBeam.setCompoundDrawablesWithIntrinsicBounds(getGpioBitValue()==VALIAD_NUM?leftGreen:leftGray,null,null,null);
                                bingding.inpsetSignalSlice.tvTurnRight.setCompoundDrawablesWithIntrinsicBounds(mcuInfo.getRight_turn_lamp()==VALIAD_NUM?leftGreen:leftGray,null,null,null);
                                bingding.inpsetSignalSlice.tvParkingBrake.setCompoundDrawablesWithIntrinsicBounds(mcuInfo.getHand_break()==VALIAD_NUM?leftGreen:leftGray,null,null,null);
                                bingding.inpsetSignalSlice.tvFootBrake.setCompoundDrawablesWithIntrinsicBounds(mcuInfo.getMain_break()==VALIAD_NUM?leftGreen:leftGray,null,null,null);
                                bingding.inpsetSignalSlice.tvLowLamp.setCompoundDrawablesWithIntrinsicBounds(mcuInfo.getDipped_beam_lamp()==VALIAD_NUM?leftGreen:leftGray,null,null,null);
                                bingding.inpsetSignalSlice.tvHighBeam.setCompoundDrawablesWithIntrinsicBounds(mcuInfo.getMain_beam_lamp()==VALIAD_NUM?leftGreen:leftGray,null,null,null);
                                bingding.inpsetSignalSlice.tvGateLock.setCompoundDrawablesWithIntrinsicBounds(getGpioBitValue()==VALIAD_NUM?leftGreen:leftGray,null,null,null);
                                bingding.inpsetSignalSlice.tvNullEngine.setCompoundDrawablesWithIntrinsicBounds(getGpioBitValue()==VALIAD_NUM?leftGreen:leftGray,null,null,null);
                                bingding.inpsetSignalSlice.tvGearOne.setCompoundDrawablesWithIntrinsicBounds(getGpioBitValue()==VALIAD_NUM?leftGreen:leftGray,null,null,null);
                                bingding.inpsetSignalSlice.tvGearTwo.setCompoundDrawablesWithIntrinsicBounds(getGpioBitValue()==VALIAD_NUM?leftGreen:leftGray,null,null,null);
                                bingding.inpsetSignalSlice.tvGearThree.setCompoundDrawablesWithIntrinsicBounds(getGpioBitValue()==VALIAD_NUM?leftGreen:leftGray,null,null,null);
                                bingding.inpsetSignalSlice.tvGearFour.setCompoundDrawablesWithIntrinsicBounds(getGpioBitValue()==VALIAD_NUM?leftGreen:leftGray,null,null,null);
                                bingding.inpsetSignalSlice.tvGearFive.setCompoundDrawablesWithIntrinsicBounds(getGpioBitValue()==VALIAD_NUM?leftGreen:leftGray,null,null,null);
                                bingding.inpsetSignalSlice.tvReverseGear.setCompoundDrawablesWithIntrinsicBounds(getGpioBitValue()==VALIAD_NUM?leftGreen:leftGray,null,null,null);
                                Log.i(TAG,"三挡之后,Fun_ID="+fun_id);
                                bingding.inpsetSignalSlice.tvGateLock.setCompoundDrawablesWithIntrinsicBounds(mcuInfo.getLock()==VALIAD_NUM?leftGreen:leftGray,null,null,null);
                              //副刹
                                bingding.inpsetSignalSlice.tvSecondaryBrake.setCompoundDrawablesWithIntrinsicBounds(getGpioBitValue()==VALIAD_NUM?leftGreen:leftGray,null,null,null);//副刹
                                bingding.inpsetSignalSlice.tvWindingOne.setCompoundDrawablesWithIntrinsicBounds(getGpioBitValue()==VALIAD_NUM?leftGreen:leftGray,null,null,null);
                                bingding.inpsetSignalSlice.tvWindingTwo.setCompoundDrawablesWithIntrinsicBounds(getGpioBitValue()==VALIAD_NUM?leftGreen:leftGray,null,null,null);
                                bingding.inpsetSignalSlice.tvWindingThree.setCompoundDrawablesWithIntrinsicBounds(getGpioBitValue()==VALIAD_NUM?leftGreen:leftGray,null,null,null);
                                bingding.inpsetSignalSlice.tvWindingFour.setCompoundDrawablesWithIntrinsicBounds(getGpioBitValue()==VALIAD_NUM?leftGreen:leftGray,null,null,null);
                                bingding.inpsetSignalSlice.tvSecondaryBrake.setCompoundDrawablesWithIntrinsicBounds(mcuInfo.getAssist_break()==VALIAD_NUM?leftGreen:leftGray,null,null,null);//副刹
                                bingding.inpsetSignalSlice.tvWindingOne.setCompoundDrawablesWithIntrinsicBounds(mcuInfo.getSurround1()==VALIAD_NUM?leftGreen:leftGray,null,null,null);
                                bingding.inpsetSignalSlice.tvWindingTwo.setCompoundDrawablesWithIntrinsicBounds(mcuInfo.getSurround2()==VALIAD_NUM?leftGreen:leftGray,null,null,null);
                                bingding.inpsetSignalSlice.tvWindingThree.setCompoundDrawablesWithIntrinsicBounds(mcuInfo.getSurround3()==VALIAD_NUM?leftGreen:leftGray,null,null,null);
                                bingding.inpsetSignalSlice.tvWindingFour.setCompoundDrawablesWithIntrinsicBounds(mcuInfo.getSurround4()==VALIAD_NUM?leftGreen:leftGray,null,null,null);
                                bingding.inpsetSignalSlice.tvFoglight.setCompoundDrawablesWithIntrinsicBounds(getGpioBitValue()==VALIAD_NUM?leftGreen:leftGray,null,null,null);
                                bingding.inpsetSignalSlice.tvFoglight.setCompoundDrawablesWithIntrinsicBounds(mcuInfo.getFog_lamp()==VALIAD_NUM?leftGreen:leftGray,null,null,null);
                                //示宽灯
                                bingding.inpsetSignalSlice.tvWidthLamp.setCompoundDrawablesWithIntrinsicBounds(getGpioBitValue()==VALIAD_NUM?leftGreen:leftGray,null,null,null);
                                bingding.inpsetSignalSlice.tvWidthLamp.setCompoundDrawablesWithIntrinsicBounds(mcuInfo.getClearance_lamp()==VALIAD_NUM?leftGreen:leftGray,null,null,null);
                            }
                        });
                    }
@@ -124,20 +135,20 @@
        }
    };
    private int getGpioBitValue(){
        int index = singalConfigList.get(fun_id++).getIndex();
        Log.i(TAG,"fun_id"+(fun_id-1)+"对应index="+index);
        if (index<gpios.size()){
    private String gearStr(int gear) {
            int value = gpios.get(index-1);
            return value;
        }else{
            Log.i(TAG,"索引超出,所以值返回0,默认灰色信号");
            return 0;
        switch (gear){
            case 0:
                return "空";
            case 6:
                return "倒";
            default:
                return String.valueOf(gear);
        }
    }
    public static SupportFragment newInstance(){
        return new InspectSignalFragment();
    }
@@ -146,20 +157,16 @@
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        bingding = DataBindingUtil.inflate(inflater,R.layout.layout_check_signal,container,false);
        initView();
        SignalConfigViewModel signalConfigViewModel = ViewModelProviders.of(this).get(SignalConfigViewModel.class);
        signalConfigViewModel.getSignalConfigs().observe(this, singalConfigs -> {
            if (singalConfigs != null && singalConfigs.size()>0){
                singalConfigList.clear();
                singalConfigList = singalConfigs;
                sortSigalConfigList();
            }
        });
        leftGreen = getResources().getDrawable(R.drawable.green_light,null);
        leftGray = getResources().getDrawable(R.drawable.gray_light,null);
        return bingding.getRoot();
    }