|
|
@@ -9,7 +9,9 @@ import com.clj.fastble.data.BleDevice
|
|
|
import com.clj.fastble.exception.BleException
|
|
|
import com.grkj.iscs.ble.BleBean
|
|
|
import com.grkj.iscs.ble.BleCmdManager
|
|
|
+import com.grkj.iscs.ble.BleCmdManager.assembleData
|
|
|
import com.grkj.iscs.ble.BleConst
|
|
|
+import com.grkj.iscs.ble.BleConst.REQ_WORK_TICKET_RESULT
|
|
|
import com.grkj.iscs.ble.BleConst.REQ_WORK_TICKET_RESULT_PART
|
|
|
import com.grkj.iscs.ble.BleUtil
|
|
|
import com.grkj.iscs.ble.CustomBleGattCallback
|
|
|
@@ -198,6 +200,7 @@ object BusinessManager {
|
|
|
* 下发工作票
|
|
|
*/
|
|
|
fun sendTicketBusiness(mac: String, activity: AppCompatActivity, loadingCallBack: (Boolean, String?) -> Unit) {
|
|
|
+ isSendTicket = true
|
|
|
CommonUtils.checkBlePermission(activity) {
|
|
|
doScanBle(mac, loadingCallBack)
|
|
|
}
|
|
|
@@ -354,8 +357,12 @@ object BusinessManager {
|
|
|
loadingCallBack.invoke(false, "token获取成功")
|
|
|
println("getToken success")
|
|
|
Executor.delayOnMain(500) {
|
|
|
- println("haha : $ticketJson")
|
|
|
- sendTicket(ticketJson!!, it.bleDevice, loadingCallBack)
|
|
|
+ if (isSendTicket) {
|
|
|
+ println("haha : $ticketJson")
|
|
|
+ sendTicket(ticketJson!!, it.bleDevice, loadingCallBack)
|
|
|
+ } else {
|
|
|
+ getTicketStatus(it.bleDevice, loadingCallBack)
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -433,7 +440,10 @@ object BusinessManager {
|
|
|
loadingCallBack.invoke(false, null)
|
|
|
if (res == 0x01.toByte() && job == 0x01.toByte()) {
|
|
|
loadingCallBack.invoke(false, "切换工作模式成功")
|
|
|
+ } else if (res == 0x02.toByte() && job == 0x01.toByte()) {
|
|
|
+ loadingCallBack.invoke(false, "切换待机模式成功")
|
|
|
}
|
|
|
+ BleManager.getInstance().disconnectAllDevice()
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -446,25 +456,28 @@ object BusinessManager {
|
|
|
val idx = byteArray[4] + byteArray[5]
|
|
|
val total = byteArray[6] + byteArray[7]
|
|
|
val res = byteArray[8]
|
|
|
- if (idx != total - 1 && (res == 0x00.toByte() || res == 0x02.toByte())) {
|
|
|
- // TODO 要判断res
|
|
|
- BleCmdManager.sendWorkTicket(
|
|
|
- BleUtil.instance?.getBleDeviceByMac(bleBean.bleDevice.mac)?.ticketSend!!,
|
|
|
- if (res == 0x00.toByte()) idx + 1 else idx,
|
|
|
- bleBean.bleDevice,
|
|
|
- object : CustomBleWriteCallback() {
|
|
|
- override fun onPrompt(promptStr: String?) {}
|
|
|
+ if (idx != total - 1) {
|
|
|
+ if ((res == 0x00.toByte() || res == 0x02.toByte())) {
|
|
|
+ // TODO 要判断res
|
|
|
+ BleCmdManager.sendWorkTicket(
|
|
|
+ BleUtil.instance?.getBleDeviceByMac(bleBean.bleDevice.mac)?.ticketSend!!,
|
|
|
+ if (res == 0x00.toByte()) idx + 1 else idx,
|
|
|
+ bleBean.bleDevice,
|
|
|
+ object : CustomBleWriteCallback() {
|
|
|
+ override fun onPrompt(promptStr: String?) {}
|
|
|
|
|
|
- override fun onConnectPrompt(promptStr: String?) {}
|
|
|
+ override fun onConnectPrompt(promptStr: String?) {}
|
|
|
|
|
|
- override fun onDisConnectPrompt(promptStr: String?) {}
|
|
|
+ override fun onDisConnectPrompt(promptStr: String?) {}
|
|
|
|
|
|
- override fun onWriteSuccess(current: Int, total: Int, justWrite: ByteArray?) {}
|
|
|
+ override fun onWriteSuccess(current: Int, total: Int, justWrite: ByteArray?) {}
|
|
|
|
|
|
- override fun onWriteFailure(exception: BleException?) {}
|
|
|
+ override fun onWriteFailure(exception: BleException?) {}
|
|
|
|
|
|
- })
|
|
|
+ })
|
|
|
+ }
|
|
|
} else {
|
|
|
+ LogUtil.i("Work ticket is done")
|
|
|
// 下发完毕,切换工作模式
|
|
|
loadingCallBack.invoke(true, "切换钥匙为工作模式")
|
|
|
BleCmdManager.switchMode(byteArrayOf(0x01), bleBean.bleDevice, object : CustomBleWriteCallback() {
|
|
|
@@ -488,7 +501,6 @@ object BusinessManager {
|
|
|
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]
|
|
|
@@ -501,6 +513,7 @@ object BusinessManager {
|
|
|
}
|
|
|
// TODO 缺少res处理
|
|
|
if (idx != total - 1) {
|
|
|
+ loadingCallBack.invoke(true, "获取工作票分包")
|
|
|
getTicketStatusPart((idx + 1).toByteArray(), total.toByteArray(), byteArrayOf(0x01.toByte()), bleDevice, object : CustomBleWriteCallback() {
|
|
|
override fun onPrompt(promptStr: String?) {}
|
|
|
|
|
|
@@ -517,10 +530,25 @@ object BusinessManager {
|
|
|
}
|
|
|
})
|
|
|
} else {
|
|
|
+ loadingCallBack.invoke(false, "工作票完成状态读取完成")
|
|
|
BleUtil.instance?.getBleDeviceByMac(bleDevice.mac)?.let {
|
|
|
println("工作票完成接收 : ${String(it.ticketStatus)}")
|
|
|
+ loadingCallBack.invoke(false, "工作票完成接收${String(it.ticketStatus)}")
|
|
|
// TODO 清空ticket
|
|
|
it.ticketStatus = byteArrayOf()
|
|
|
+ // 切换为待机模式
|
|
|
+ BleCmdManager.switchMode(byteArrayOf(0x02), bleDevice, object : CustomBleWriteCallback() {
|
|
|
+ override fun onPrompt(promptStr: String?) {}
|
|
|
+
|
|
|
+ override fun onConnectPrompt(promptStr: String?) {}
|
|
|
+
|
|
|
+ override fun onDisConnectPrompt(promptStr: String?) {}
|
|
|
+
|
|
|
+ override fun onWriteSuccess(current: Int, total: Int, justWrite: ByteArray?) {
|
|
|
+ println("switch mode 1 success")}
|
|
|
+ override fun onWriteFailure(exception: BleException?) {
|
|
|
+ println("switch mode 1 fail")}
|
|
|
+ })
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -533,4 +561,44 @@ object BusinessManager {
|
|
|
BleUtil.instance?.write(it.bleDevice, cmd = BleCmdManager.assembleData(it, REQ_WORK_TICKET_RESULT_PART + idx + total + res), writeCallback = callback)
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 读取工作票完成情况
|
|
|
+ */
|
|
|
+ fun getTicketStatusBusiness(mac: String, activity: AppCompatActivity, loadingCallBack: (Boolean, String?) -> Unit) {
|
|
|
+ isSendTicket = false
|
|
|
+ CommonUtils.checkBlePermission(activity) {
|
|
|
+ doScanBle(mac, loadingCallBack)
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取工作票完成情况
|
|
|
+ */
|
|
|
+ fun getTicketStatus(bleDevice: BleDevice, loadingCallBack: (Boolean, String?) -> Unit) {
|
|
|
+ loadingCallBack.invoke(true, "开始获取工作票")
|
|
|
+ BleCmdManager.getTicketStatus(bleDevice, object : CustomBleWriteCallback() {
|
|
|
+ override fun onPrompt(promptStr: String?) {}
|
|
|
+
|
|
|
+ override fun onConnectPrompt(promptStr: String?) {}
|
|
|
+
|
|
|
+ override fun onDisConnectPrompt(promptStr: String?) {}
|
|
|
+
|
|
|
+ override fun onWriteSuccess(current: Int, total: Int, justWrite: ByteArray?) {
|
|
|
+ loadingCallBack.invoke(false, "工作票获取成功")
|
|
|
+ println("getTicketStatus success")}
|
|
|
+ override fun onWriteFailure(exception: BleException?) {
|
|
|
+ loadingCallBack.invoke(false, "工作票获取失败")
|
|
|
+ println("getTicketStatus fail")}
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 下发工作票还是读取工作票完成状态
|
|
|
+ */
|
|
|
+ var isSendTicket = true
|
|
|
}
|