平台消息基类取电话号码,删除子类取电话号码的操作;训练模式只发送注册鉴权位置消息,其他不发送;Netty TCP增加重置TCP连接接口;收到单片机sn更新的时候重置tcp
| | |
| | | import org.json.JSONObject |
| | | import safeluck.drive.evaluation.DB.Constant |
| | | import safeluck.drive.evaluation.DB.WorkRoomDataBase |
| | | import safeluck.drive.evaluation.bean.ExamPlatformData |
| | | import safeluck.drive.evaluation.im.IMSClientBootstrap |
| | | import safeluck.drive.evaluation.platformMessage.PlatFormConstant |
| | | |
| | | class RTKConfigUpdateWorker(context:Context, workerParams: WorkerParameters) :Worker(context, workerParams){ |
| | | |
| | |
| | | override fun doWork(): Result { |
| | | |
| | | var data = inputData.getString(Constant.RTK_CONFIG_UPDATE_JSON) |
| | | Log.i(TAG,"更新RTK_config imei phone sn="+data) |
| | | MyLog.i(PlatFormConstant.RTK,"更新RTK_config imei phone sn="+data) |
| | | var imei:String="" |
| | | var phone:String="" |
| | | var sn:String="" |
| | |
| | | var jsonObject: JSONObject? = null |
| | | jsonObject = JSONObject(data) |
| | | sn = jsonObject.getString(Constant.RTK_CONFIG_SN) |
| | | ExamPlatformData.getInstance().setPhone(sn); |
| | | Log.i(TAG,"sn="+sn) |
| | | imei = sn.substring(1) |
| | | Log.i(TAG,"imei="+imei) |
| | |
| | | */ |
| | | phone = sn |
| | | Log.i(TAG,"phone="+phone) |
| | | MyLog.i(PlatFormConstant.TAG,"重置TCP连接") |
| | | IMSClientBootstrap.getInstance().resetConnect(); |
| | | } |
| | | var rtkConfigDao = WorkRoomDataBase.getWorkRoomDataBase(applicationContext).rtkConfigDao.also { |
| | | it.update(sn, imei, phone) |
| | |
| | | public void onChanged(RTKConfig rtkConfig) { |
| | | |
| | | MyLog.i(TAG, "RTKConfig Changed: " + (rtkConfig != null ? rtkConfig.toString() : "null")); |
| | | mRTKConfig = rtkConfig; |
| | | |
| | | if (rtkConfig != null) |
| | | ExamPlatformData.getInstance().setPhone(rtkConfig.getSn()); |
| | | mRTKConfig = rtkConfig; |
| | | |
| | | synchronized (MainActivity.this){ |
| | | // if (onlySendOnceRTKConfig){ |
| | | // MyLog.i(TAG,"进入 synchronized (MainActivity.this)"); |
| | |
| | | |
| | | JKMessage0100 jkRegisterMessage = new JKMessage0100(); |
| | | if (mRTKConfig!=null){ |
| | | jkRegisterMessage.phone = ExamPlatformData.getInstance().getPhone(); |
| | | jkRegisterMessage.proviceid = mRTKConfig.getProvince(); |
| | | jkRegisterMessage.cityid = mRTKConfig.getCity(); |
| | | jkRegisterMessage.imei = mRTKConfig.getImei(); |
| | |
| | | }else{ |
| | | MyLog.i(PlatFormConstant.TAG,"密码存在,已注册过,直接发鉴权消息"); |
| | | JKMessage0101 jkMessage0101 = new JKMessage0101(); |
| | | jkMessage0101.phone = ExamPlatformData.getInstance().getPhone(); |
| | | String des = hexPwd; |
| | | long time = System.currentTimeMillis()/1000; |
| | | int unsignedInt = Utils.parseUnsignedInt(String.valueOf(time),10); |
| | |
| | | CEventCenter.dispatchEvent(Constant.BIND_RTK_SPEED_TOPIC,cmd,0,speed); |
| | | utc = utc.replace(".",""); |
| | | JKMessage0206 jkMessage0206 = new JKMessage0206(); |
| | | jkMessage0206.phone = ExamPlatformData.getInstance().getPhone(); |
| | | jkMessage0206.alert = 0; |
| | | jkMessage0206.status = 0; |
| | | jkMessage0206.jd = longitude; |
| | |
| | | import safeluck.drive.evaluation.Constant; |
| | | import safeluck.drive.evaluation.DB.appstatusdb.AppStatusWorker; |
| | | import safeluck.drive.evaluation.app; |
| | | import safeluck.drive.evaluation.platformMessage.PlatFormConstant; |
| | | import safeluck.drive.evaluation.util.SPUtils; |
| | | import safeluck.drive.evaluation.viewmodels.ExamPlatformModel; |
| | | import safeluck.drive.evaluation.viewmodels.MainViewModel; |
| | |
| | | ICEventListener listener = null; |
| | | LinkedList<ICEventListener> listeners = null; |
| | | synchronized (LISTENER_LOCK){ |
| | | Log.d(TAG, "dispatchEvent | topic="+topic+"\tmsgCode="+event.getMsgCode()+"\tresultCode="+event.getResultCode() |
| | | +"\tobj="+event.getObj()); |
| | | // Log.d(TAG, "dispatchEvent | topic="+topic+"\tmsgCode="+event.getMsgCode()+"\tresultCode="+event.getResultCode() |
| | | // +"\tobj="+event.getObj()); |
| | | Object obj = LISTENER_MAP.get(topic); |
| | | if (obj == null){ |
| | | return; |
| | |
| | | String icStr = jsSpeed.getString("serialno"); |
| | | if (result == 0) { |
| | | JKMessage0201 jkMessage0201 = new JKMessage0201(); |
| | | jkMessage0201.phone = ExamPlatformData.getInstance().getPhone(); |
| | | if (exam_type==Constant.Chang_di){ |
| | | jkMessage0201.currentExam = 0; |
| | | }else{ |
| | |
| | | currTotalScore = 100; |
| | | //TODO 发送JKMessage0202 给平台,开始考试 |
| | | final JKMessage0202 jkMessage0202 = new JKMessage0202(); |
| | | jkMessage0202.phone = ExamPlatformData.getInstance().getPhone(); |
| | | jkMessage0202.timeBCD = new Date(); |
| | | jkMessage0202.ID = ExamPlatformData.getInstance().getID(); |
| | | |
| | |
| | | private void stopExam() { |
| | | MyLog.i(TAG,"结束考试"); |
| | | |
| | | |
| | | //TODO 发送JKMessage0204给平台 结束考试 |
| | | JKMessage0204 jkMessage0204 = new JKMessage0204(); |
| | | jkMessage0204.timeBCD = new Date(); |
| | | jkMessage0204.score = currTotalScore; |
| | | jkMessage0204.stop = JKMessage0204.SUCC_STOP; |
| | | jkMessage0204.ID = ExamPlatformData.getInstance().getID(); |
| | | jkMessage0204.exam_id = ExamPlatformData.getInstance().getExam_id(); |
| | | MessageProcessor.getInstance().sendMessage(jkMessage0204); |
| | | //设置模式为NONE 0 |
| | | ExamPlatformData.getInstance().setTrainingMode(ExamPlatformData.MODE_NONE); |
| | | //恢复初始数据 |
| | |
| | | ExamPlatformData.getInstance().getTTS().speak("结束考试"); |
| | | examStatusViewModel.updateStartExam(Constant.NONE_BEEN_START_EXAM); |
| | | sendExamJson(0,0);//结束考试 exstart=0 |
| | | //TODO 发送JKMessage0204给平台 结束考试 |
| | | JKMessage0204 jkMessage0204 = new JKMessage0204(); |
| | | jkMessage0204.phone = ExamPlatformData.getInstance().getPhone(); |
| | | jkMessage0204.timeBCD = new Date(); |
| | | jkMessage0204.score = 10; |
| | | jkMessage0204.stop = JKMessage0204.SUCC_STOP; |
| | | jkMessage0204.ID = ExamPlatformData.getInstance().getID(); |
| | | jkMessage0204.exam_id = ExamPlatformData.getInstance().getExam_id(); |
| | | MessageProcessor.getInstance().sendMessage(jkMessage0204); |
| | | |
| | | } |
| | | |
| | | private ICEventListener icEventListener = new ICEventListener() { |
| | |
| | | break; |
| | | case R.id.btn_start_exam: |
| | | JKMessage0202 jkMessage0202 = new JKMessage0202(); |
| | | jkMessage0202.phone = "0314200100000004"; |
| | | jkMessage0202.timeBCD = new Date(); |
| | | jkMessage0202.curr_exam = 1; |
| | | jkMessage0202.ID = "123456789"; |
| | |
| | | break; |
| | | case R.id.btn_fail: |
| | | JKMessage0203 jkMessage0203 = new JKMessage0203(); |
| | | jkMessage0203.phone = "0314200100000004"; |
| | | jkMessage0203.timeBCD = "200226135444"; |
| | | jkMessage0203.fail_item_id = 4; |
| | | jkMessage0203.fail_score = 10; |
| | |
| | | |
| | | //TODO 发送JKMessage0202 给平台,开始考试 |
| | | final JKMessage0202 jkMessage0202 = new JKMessage0202(); |
| | | jkMessage0202.phone = ExamPlatformData.getInstance().getPhone(); |
| | | jkMessage0202.timeBCD = new Date(); |
| | | jkMessage0202.ID = ExamPlatformData.getInstance().getID(); |
| | | |
| | |
| | | |
| | | private void stopExam() { |
| | | MyLog.i(TAG,"结束训练"); |
| | | |
| | | //TODO 发送JKMessage0204给平台 结束考试 |
| | | JKMessage0204 jkMessage0204 = new JKMessage0204(); |
| | | jkMessage0204.timeBCD = new Date(); |
| | | jkMessage0204.score = currTotalScore; |
| | | jkMessage0204.stop = JKMessage0204.SUCC_STOP; |
| | | jkMessage0204.ID = ExamPlatformData.getInstance().getID(); |
| | | jkMessage0204.exam_id = ExamPlatformData.getInstance().getExam_id(); |
| | | MessageProcessor.getInstance().sendMessage(jkMessage0204); |
| | | //设置模式为NONE 0 |
| | | ExamPlatformData.getInstance().setTrainingMode(ExamPlatformData.MODE_NONE); |
| | | |
| | |
| | | ExamPlatformData.getInstance().getTTS().speak("结束训练"); |
| | | examStatusViewModel.updateStartExam(Constant.NONE_BEEN_START_EXAM); |
| | | sendExamJson(0,0);//结束考试 exstart=0 |
| | | //TODO 发送JKMessage0204给平台 结束考试 |
| | | JKMessage0204 jkMessage0204 = new JKMessage0204(); |
| | | jkMessage0204.phone = ExamPlatformData.getInstance().getPhone(); |
| | | jkMessage0204.timeBCD = new Date(); |
| | | jkMessage0204.score = 10; |
| | | jkMessage0204.stop = JKMessage0204.SUCC_STOP; |
| | | jkMessage0204.ID = ExamPlatformData.getInstance().getID(); |
| | | jkMessage0204.exam_id = ExamPlatformData.getInstance().getExam_id(); |
| | | MessageProcessor.getInstance().sendMessage(jkMessage0204); |
| | | |
| | | } |
| | | |
| | | private ICEventListener icEventListener = new ICEventListener() { |
| | |
| | | } |
| | | |
| | | } |
| | | |
| | | /** |
| | | * 重置TCP连接 |
| | | * 原来已经init过,传输过host,本方法知识重置连接 |
| | | */ |
| | | public void resetConnect() { |
| | | if (isActive){ |
| | | if (imsClient != null){ |
| | | imsClient.resetConnect(false); |
| | | } |
| | | } |
| | | |
| | | } |
| | | } |
| | |
| | | @Override |
| | | public byte[] getHearbeatMsg() { |
| | | JKMessage0002 jkMessage0002 = new JKMessage0002(); |
| | | jkMessage0002.phone = ExamPlatformData.getInstance().getPhone(); |
| | | |
| | | return messageEscaper.escape(jkMessage0002.toBytes()); |
| | | } |
| | |
| | | String des = ((JKMessage8100) jk2019MessageBase).des; |
| | | SPUtils.put(app.getAppContext(),SPUtils.DES_HEX_PWD,des); |
| | | JKMessage0101 jkMessage0101 = new JKMessage0101(); |
| | | // jkMessage0101.des =((JKMessage8100) jk2019MessageBase).des; |
| | | long time =System.currentTimeMillis()/1000; |
| | | int unsignedInt = Utils.parseUnsignedInt(String.valueOf(time),10); |
| | | MyLog.i(String.format("总秒数(long)=%d,装换成unsigned int= %d",time,unsignedInt)); |
| | |
| | | |
| | | |
| | | if ( ExamPlatformData.getInstance().getExamplatformStatus() == ExamPlatformData.DEV_LOGIN){ |
| | | byte[] msgidbytes= ArrayUtils.subArray(msg.toBytes(),2,2); |
| | | String msgid = BytesUtils.bytesToHexString(msgidbytes); |
| | | if (canSend(msgid)){ |
| | | if (IMSClientBootstrap.getInstance().isActive()){ |
| | | IMSClientBootstrap.getInstance().sendMessage(messageEscaper.escape(msg.toBytes())); |
| | | }else{ |
| | | Log.e(TAG, "run: 发送消息失败,未初始化连接NettyTcp"); |
| | | } |
| | | } |
| | | |
| | | }else{ |
| | | // JK2019MessageBase jk2019MessageBase = MessageManager.get(msg.toString()); |
| | | byte[] msgidbytes= ArrayUtils.subArray(msg.toBytes(),2,2); |
| | | String msgid = BytesUtils.bytesToHexString(msgidbytes); |
| | | Log.i(TAG, "run: msgid="+msgid); |
| | | if (canSend(msgid)){ |
| | | if ((msgid.equalsIgnoreCase("0100")) || (msgid.equalsIgnoreCase("0101"))){ |
| | | MyLog.i(PlatFormConstant.TAG,"注册/鉴权消息直接发送,不发送是否登录成功"); |
| | | MyLog.i(PlatFormConstant.TAG,"注册/鉴权消息直接发送"); |
| | | if (IMSClientBootstrap.getInstance().isActive()){ |
| | | IMSClientBootstrap.getInstance().sendMessage(messageEscaper.escape(msg.toBytes())); |
| | | }else{ |
| | |
| | | }else{ |
| | | MyLog.i(PlatFormConstant.TAG,"登录未成功,不能发送消息="+msgid); |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | |
| | | IMSClientBootstrap.getInstance().addHeartbeat(seconds); |
| | | } |
| | | } |
| | | |
| | | private boolean canSend(String msgId){ |
| | | if (ExamPlatformData.getInstance().getTrainingMode()==ExamPlatformData.TRAINING_MODE){ |
| | | //训练模式下 只有几条可以发送 |
| | | switch (msgId){ |
| | | case "0206": |
| | | case "0100": |
| | | case "0101": |
| | | return true; |
| | | } |
| | | |
| | | }else{ |
| | | //考试模式下全部都可以发送 |
| | | return true; |
| | | } |
| | | return false; |
| | | } |
| | | } |
| | |
| | | import com.safeluck.aykj.utils.BitState; |
| | | import com.safeluck.aykj.utils.BytesUtils; |
| | | |
| | | import safeluck.drive.evaluation.bean.ExamPlatformData; |
| | | import safeluck.drive.evaluation.platformMessage.decoder.JWD; |
| | | import safeluck.drive.evaluation.platformMessage.decoder.JWDCoder; |
| | | import safeluck.drive.evaluation.platformMessage.decoder.Phone; |
| | |
| | | public BitState props = new BitState((short) 0); |
| | | @Order(5) |
| | | @Phone |
| | | public String phone="0314200100000004"; |
| | | public String phone= ExamPlatformData.getInstance().getPhone(); |
| | | @Order(6) |
| | | @Int16 |
| | | public int messageNo; |
| | |
| | | package safeluck.drive.evaluation.platformMessage; |
| | | |
| | | import org.jetbrains.annotations.Nullable; |
| | | |
| | | import java.util.HashMap; |
| | | |
| | | public class PlatFormConstant { |
| | |
| | | |
| | | public static final int SUCCESS = 0; |
| | | public static final short STU_INFO_SUCC = 1; |
| | | @Nullable |
| | | public static final String RTK = "RTK_Config"; |
| | | } |
| | |
| | | var gson:Gson =Gson() |
| | | override fun doWork(): Result { |
| | | val jkMessage0203 = JKMessage0203() |
| | | jkMessage0203.phone = ExamPlatformData.getInstance().phone |
| | | jkMessage0203.ID = ExamPlatformData.getInstance().id |
| | | jkMessage0203.exam_id = ExamPlatformData.getInstance().exam_id |
| | | var ttsInput = inputData.getString(Constant.TTS); |