package safeluck.drive.evaluation.fragment;
|
|
import android.content.Context;
|
import android.graphics.drawable.Drawable;
|
import android.os.Bundle;
|
import android.os.Handler;
|
|
import android.util.Log;
|
import android.view.LayoutInflater;
|
import android.view.View;
|
import android.view.ViewGroup;
|
import android.widget.TextView;
|
|
import androidx.annotation.NonNull;
|
import androidx.annotation.Nullable;
|
import androidx.appcompat.widget.Toolbar;
|
import androidx.databinding.DataBindingUtil;
|
import androidx.lifecycle.ViewModelProviders;
|
|
import com.anyun.basecommonlib.MyLog;
|
import com.anyun.im_lib.util.ByteUtil;
|
import com.google.gson.Gson;
|
|
import java.util.ArrayList;
|
import java.util.Collections;
|
import java.util.Comparator;
|
import java.util.List;
|
|
import me.yokeyword.fragmentation.SupportFragment;
|
import safeluck.drive.evaluation.Constant;
|
import safeluck.drive.evaluation.DB.signalConfigdb.SignalConfigViewModel;
|
import safeluck.drive.evaluation.DB.signalConfigdb.SingalConfig;
|
import safeluck.drive.evaluation.MainActivity;
|
import safeluck.drive.evaluation.R;
|
import safeluck.drive.evaluation.bean.MCUInfo;
|
import safeluck.drive.evaluation.cEventCenter.CEventCenter;
|
import safeluck.drive.evaluation.cEventCenter.ICEventListener;
|
import safeluck.drive.evaluation.databinding.LayoutCheckSignalBinding;
|
import safeluck.drive.evaluation.databinding.LayoutSignalSliceBinding;
|
|
/**
|
* MyApplication2
|
* Created by lzw on 2019/3/22. 11:07:11
|
* 邮箱:632393724@qq.com
|
* All Rights Saved! Chongqing AnYun Tech co. LTD
|
*/
|
public class InspectSignalFragment extends SupportFragment {
|
|
|
private static final String TAG = "InspectSignalFragment";
|
private static final int VALIAD_NUM = 1;//1高电平有效
|
private Gson gson= new Gson();
|
private Handler handler = new Handler();
|
private LayoutCheckSignalBinding bingding;
|
private List<Integer> gpios = new ArrayList<>();
|
Drawable leftGreen ;
|
Drawable leftGray ;
|
private int index =0 ;
|
private Object object = new Object();
|
private int fun_id = 0;
|
private ICEventListener icEventListener = new ICEventListener() {
|
@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 (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));
|
|
for (int i = 0; i < gpios.size(); i++) {
|
MyLog.i(TAG, "run: gpio["+i+"]="+gpios.get(i));
|
}
|
MyLog.i("gpios.size="+gpios.size());
|
|
fun_id = 0;
|
//安全带
|
bingding.inpsetSignalSlice.tvSeatBelt.setCompoundDrawablesWithIntrinsicBounds(getGpioBitValue()==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.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.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.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.tvFoglight.setCompoundDrawablesWithIntrinsicBounds(getGpioBitValue()==VALIAD_NUM?leftGreen:leftGray,null,null,null);
|
//示宽灯
|
bingding.inpsetSignalSlice.tvWidthLamp.setCompoundDrawablesWithIntrinsicBounds(getGpioBitValue()==VALIAD_NUM?leftGreen:leftGray,null,null,null);
|
}
|
});
|
}
|
}
|
}
|
|
}
|
};
|
private int getGpioBitValue(){
|
|
int index = singalConfigList.get(fun_id++).getIndex();
|
Log.i(TAG,"fun_id"+(fun_id-1)+"对应index="+index);
|
if (index<gpios.size()){
|
|
int value = gpios.get(index-1);
|
return value;
|
}else{
|
Log.i(TAG,"索引超出,所以值返回0,默认灰色信号");
|
return 0;
|
}
|
|
}
|
public static SupportFragment newInstance(){
|
return new InspectSignalFragment();
|
}
|
private List<SingalConfig> singalConfigList = new ArrayList<>();
|
@Nullable
|
@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();
|
}
|
|
private void sortSigalConfigList() {
|
Collections.sort(singalConfigList, new Comparator<SingalConfig>() {
|
@Override
|
public int compare(SingalConfig o1, SingalConfig o2) {
|
return o1.getFunc_id()-o2.getFunc_id();
|
}
|
});
|
Log.i(TAG,"根据fun_id 升序排列");
|
for (int j = 0; j < singalConfigList.size(); j++) {
|
Log.i(TAG,singalConfigList.get(j).toString());
|
}
|
}
|
|
private void initView() {
|
Log.i(TAG,"currTopFragment="+getTopFragment().getClass().getSimpleName());
|
if (HomeFragment.class.getSimpleName().equals(getTopFragment().getClass().getSimpleName())){
|
((MainActivity)_mActivity).viewtitle.setVisibility(View.GONE);
|
((MainActivity)_mActivity).btn_return.setVisibility(View.GONE);
|
}else{
|
((MainActivity)_mActivity).viewtitle.setVisibility(View.VISIBLE);
|
((MainActivity)_mActivity).btn_return.setVisibility(View.VISIBLE);
|
}
|
|
|
|
}
|
@Override
|
public void onAttach(Context context) {
|
super.onAttach(context);
|
CEventCenter.onBindEvent(true,icEventListener, Constant.BIND_MCUINFO_TOPIC);
|
}
|
|
@Override
|
public void onDetach() {
|
super.onDetach();
|
CEventCenter.onBindEvent(false,icEventListener,Constant.BIND_MCUINFO_TOPIC);
|
}
|
}
|