|
|
@@ -191,6 +191,8 @@ object BusinessManager {
|
|
|
|
|
|
/****************************************** 蓝牙 ******************************************/
|
|
|
|
|
|
+ // 工作票下发json
|
|
|
+ var ticketJson: String? = null
|
|
|
/**
|
|
|
* 下发工作票
|
|
|
*/
|
|
|
@@ -307,7 +309,8 @@ object BusinessManager {
|
|
|
override fun onIndicateSuccess() {
|
|
|
LogUtil.i("监听成功")
|
|
|
val testStr = "{\"cardNo\":\"80A8C0F4EA\",\"password\":\"12345678\",\"effectiveTime\":24,\"data\":[{\"taskCode\":\"202401020001\",\"taskId\":\"71b49baa49b343bc84d7e6b829ac1bdc\",\"codeId\":1,\"dataList\":[{\"dataId\":1,\"equipRfidNo\":\"049648B2E31690\",\"infoRfidNo\":\"04E3BCCA201290\",\"target\":1},{\"dataId\":2,\"equipRfidNo\":\"0405982414C563\",\"target\":0,\"prevId\":1}]},{\"taskCode\":\"202401020002\",\"taskId\":\"145b5a4cc38c41e19943f4c8b48d12b0\",\"codeId\":2,\"dataList\":[{\"dataId\":1,\"equipRfidNo\":\"045460F7F4F438\",\"infoRfidNo\":\"04BC6584C65009\",\"target\":1},{\"dataId\":2,\"equipRfidNo\":\"042B99E449E795\",\"target\":0,\"prevId\":1},{\"dataId\":3,\"equipRfidNo\":\"04A312EE848B62\",\"infoRfidNo\":\"04220E86831289\",\"target\":1,\"prevId\":2}]}],\"lockList\":[{\"lockId\":\"1\",\"rfid\":\"040E21443010E9\"},{\"lockId\":\"2\",\"rfid\":\"0457505E5861C2\"}]}"
|
|
|
- sendTicket(testStr, it.bleDevice, loadingCallBack)
|
|
|
+// sendTicket(testStr, it.bleDevice, loadingCallBack)
|
|
|
+ sendTicket(ticketJson!!, it.bleDevice, loadingCallBack)
|
|
|
}
|
|
|
|
|
|
override fun onIndicateFailure(exception: BleException?) {
|
|
|
@@ -317,7 +320,7 @@ object BusinessManager {
|
|
|
override fun onCharacteristicChanged(data: ByteArray?) {
|
|
|
LogUtil.i("监听数据 : ${data?.toHexStrings()}")
|
|
|
data?.let { itData ->
|
|
|
- handleRsp(it, itData)
|
|
|
+ handleRsp(it, itData, loadingCallBack)
|
|
|
}
|
|
|
}
|
|
|
})
|
|
|
@@ -334,15 +337,17 @@ object BusinessManager {
|
|
|
|
|
|
override fun onWriteSuccess(current: Int, total: Int, justWrite: ByteArray?) {
|
|
|
println("sendTicket success")
|
|
|
+ loadingCallBack.invoke(true, "工作票下发中...")
|
|
|
}
|
|
|
|
|
|
override fun onWriteFailure(exception: BleException?) {
|
|
|
println("sendTicket fail")
|
|
|
+ loadingCallBack.invoke(false, "工作票下发失败")
|
|
|
}
|
|
|
})
|
|
|
}
|
|
|
|
|
|
- fun handleRsp(bleBean: BleBean, byteArray: ByteArray) {
|
|
|
+ fun handleRsp(bleBean: BleBean, byteArray: ByteArray, loadingCallBack: (Boolean, String?) -> Unit) {
|
|
|
val len = byteArray[2].toInt()
|
|
|
val token = byteArray.copyOfRange(len + 7, len + 11)
|
|
|
if (token.contentEquals(bleBean.token)) {
|
|
|
@@ -352,12 +357,12 @@ object BusinessManager {
|
|
|
}
|
|
|
when {
|
|
|
// 工作模式切换
|
|
|
- byteArray.startsWith(BleConst.RSP_SWITCH_MODE) -> handleSwitchModeResult(byteArray)
|
|
|
+ byteArray.startsWith(BleConst.RSP_SWITCH_MODE) -> handleSwitchModeResult(byteArray, loadingCallBack)
|
|
|
// 工作票下发
|
|
|
- byteArray.startsWith(BleConst.RSP_SEND_WORK_TICKET) -> handleWorkTicketResult(bleBean, byteArray)
|
|
|
+ byteArray.startsWith(BleConst.RSP_SEND_WORK_TICKET) -> handleWorkTicketResult(bleBean, byteArray, loadingCallBack)
|
|
|
// 获取设备工作票完成情况
|
|
|
byteArray.startsWith(BleConst.RSP_WORK_TICKET_RESULT) && byteArray[3] == 0x02.toByte() ->
|
|
|
- handleTicketStatus(bleBean.bleDevice, byteArray)
|
|
|
+ handleTicketStatus(bleBean.bleDevice, byteArray, loadingCallBack)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -366,18 +371,20 @@ object BusinessManager {
|
|
|
* job : 0x01:工作模式 0x02:待机模式
|
|
|
* res : 0x01:成功 0x02:失败
|
|
|
*/
|
|
|
- private fun handleSwitchModeResult(byteArray: ByteArray) {
|
|
|
+ private fun handleSwitchModeResult(byteArray: ByteArray, loadingCallBack: (Boolean, String?) -> Unit) {
|
|
|
LogUtil.i("handleSwitchModeResult : ${byteArray.toHexStrings()}")
|
|
|
val job = byteArray[4]
|
|
|
val res = byteArray[5]
|
|
|
+ loadingCallBack.invoke(false, null)
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 工作票下发结果
|
|
|
* res:0x00:成功 0x01:失败 0x02:传输超时 0x0D:当前IDX超出范围 0x0E:当前数据CRC校验失败 0x14:JSON结构错误 0x63:未知错误
|
|
|
*/
|
|
|
- private fun handleWorkTicketResult(bleBean: BleBean, byteArray: ByteArray) {
|
|
|
+ private fun handleWorkTicketResult(bleBean: BleBean, byteArray: ByteArray, loadingCallBack: (Boolean, String?) -> Unit) {
|
|
|
LogUtil.i("handleWorkTicketResult : ${byteArray.toHexStrings()}")
|
|
|
+ loadingCallBack.invoke(false, null)
|
|
|
val idx = byteArray[4] + byteArray[5]
|
|
|
val total = byteArray[6] + byteArray[7]
|
|
|
val res = byteArray[8]
|
|
|
@@ -401,6 +408,7 @@ object BusinessManager {
|
|
|
})
|
|
|
} else {
|
|
|
// 下发完毕,切换工作模式
|
|
|
+ loadingCallBack.invoke(true, "切换钥匙为工作模式")
|
|
|
BleCmdManager.switchMode(byteArrayOf(0x01), bleBean.bleDevice, object : CustomBleWriteCallback() {
|
|
|
override fun onPrompt(promptStr: String?) {}
|
|
|
|
|
|
@@ -419,9 +427,10 @@ object BusinessManager {
|
|
|
/**
|
|
|
* 处理工作票完成情况
|
|
|
*/
|
|
|
- private fun handleTicketStatus(bleDevice: BleDevice, byteArray: ByteArray) {
|
|
|
+ private fun handleTicketStatus(bleDevice: BleDevice, byteArray: ByteArray, loadingCallBack: (Boolean, String?) -> Unit) {
|
|
|
// TODO 需要有超时重传机制
|
|
|
LogUtil.i("handleTicketStatus : ${byteArray.toHexStrings()}")
|
|
|
+ loadingCallBack.invoke(false, null)
|
|
|
|
|
|
val total = byteArray[4] + byteArray[5]
|
|
|
val idx = byteArray[6] + byteArray[7]
|