|
@@ -42,6 +42,7 @@ import com.grkj.iscs.model.bo.WorkTicketGetBO
|
|
|
import com.grkj.iscs.model.bo.WorkTicketSendBO
|
|
import com.grkj.iscs.model.bo.WorkTicketSendBO
|
|
|
import com.grkj.iscs.model.vo.ticket.LockPointUpdateReqVO
|
|
import com.grkj.iscs.model.vo.ticket.LockPointUpdateReqVO
|
|
|
import com.grkj.iscs.model.vo.ticket.TicketDetailRespVO
|
|
import com.grkj.iscs.model.vo.ticket.TicketDetailRespVO
|
|
|
|
|
+import com.grkj.iscs.presentation.PresentationManager
|
|
|
import com.grkj.iscs.util.ActivityUtils
|
|
import com.grkj.iscs.util.ActivityUtils
|
|
|
import com.grkj.iscs.util.CommonUtils
|
|
import com.grkj.iscs.util.CommonUtils
|
|
|
import com.grkj.iscs.util.Executor
|
|
import com.grkj.iscs.util.Executor
|
|
@@ -98,20 +99,20 @@ object BusinessManager {
|
|
|
}
|
|
}
|
|
|
when (dockBean.type) {
|
|
when (dockBean.type) {
|
|
|
DOCK_TYPE_KEY -> {
|
|
DOCK_TYPE_KEY -> {
|
|
|
- dockBean.getKeyList().forEach { keyBean ->
|
|
|
|
|
|
|
+ dockBean.deviceList.forEach { keyBean ->
|
|
|
if (keyBean.isExist) {
|
|
if (keyBean.isExist) {
|
|
|
// 放回钥匙,读取rfid
|
|
// 放回钥匙,读取rfid
|
|
|
- ModBusController.readKeyRfid(dockBean.addr.toInt() - 1, if (keyBean.isLeft) 0 else 1) { isLeft, res ->
|
|
|
|
|
|
|
+ ModBusController.readKeyRfid(dockBean.addr.toInt() - 1, if ((keyBean as DockBean.KeyBean).isLeft) 0 else 1) { isLeft, res ->
|
|
|
val rfid = res.copyOfRange(3, 11).toHexStrings(false).removeLeadingZeros()
|
|
val rfid = res.copyOfRange(3, 11).toHexStrings(false).removeLeadingZeros()
|
|
|
ModBusController.updateKeyRfid(dockBean.addr.toInt(), keyBean.isLeft, rfid)
|
|
ModBusController.updateKeyRfid(dockBean.addr.toInt(), keyBean.isLeft, rfid)
|
|
|
- NetApi.getKeyInfo(rfid) {
|
|
|
|
|
- if (it != null && !it.macAddress.isNullOrEmpty()) {
|
|
|
|
|
- ModBusController.updateKeyMac(dockBean.addr.toInt(), keyBean.isLeft, it.macAddress)
|
|
|
|
|
- showKeyReturnDialog(it.macAddress, isLeft, dockBean.addr.toInt())
|
|
|
|
|
- } else {
|
|
|
|
|
- ToastUtils.tip(R.string.get_key_info_fail)
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
|
|
+// NetApi.getKeyInfo(rfid) {
|
|
|
|
|
+// if (it != null && !it.macAddress.isNullOrEmpty()) {
|
|
|
|
|
+// ModBusController.updateKeyMac(dockBean.addr.toInt(), keyBean.isLeft, it.macAddress)
|
|
|
|
|
+// showKeyReturnDialog(it.macAddress, isLeft, dockBean.addr.toInt())
|
|
|
|
|
+// } else {
|
|
|
|
|
+// ToastUtils.tip(R.string.get_key_info_fail)
|
|
|
|
|
+// }
|
|
|
|
|
+// }
|
|
|
// TODO 蓝牙通信
|
|
// TODO 蓝牙通信
|
|
|
}
|
|
}
|
|
|
// ModBusController.controlKeyBuckle(false, isLeft = true, dockBean.addr.toInt() - 1)
|
|
// ModBusController.controlKeyBuckle(false, isLeft = true, dockBean.addr.toInt() - 1)
|
|
@@ -119,22 +120,22 @@ object BusinessManager {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
DOCK_TYPE_LOCK -> {
|
|
DOCK_TYPE_LOCK -> {
|
|
|
- dockBean.getLockList().forEach { lockBean ->
|
|
|
|
|
|
|
+ dockBean.deviceList.forEach { lockBean ->
|
|
|
if (lockBean.isExist) {
|
|
if (lockBean.isExist) {
|
|
|
ModBusController.readLockRfid(dockBean.addr.toInt() - 1, lockBean.idx) { res ->
|
|
ModBusController.readLockRfid(dockBean.addr.toInt() - 1, lockBean.idx) { res ->
|
|
|
val rfid = res.copyOfRange(3, 11).toHexStrings(false).removeLeadingZeros()
|
|
val rfid = res.copyOfRange(3, 11).toHexStrings(false).removeLeadingZeros()
|
|
|
ModBusController.updateLockRfid(dockBean.addr.toInt(), lockBean.idx, rfid)
|
|
ModBusController.updateLockRfid(dockBean.addr.toInt(), lockBean.idx, rfid)
|
|
|
- NetApi.getLockInfo(rfid) {
|
|
|
|
|
- if (it != null) {
|
|
|
|
|
|
|
+// NetApi.getLockInfo(rfid) {
|
|
|
|
|
+// if (it != null) {
|
|
|
// TODO 考虑快速拿取
|
|
// TODO 考虑快速拿取
|
|
|
ModBusController.controlLockBuckle(false, dockBean.addr.toInt() - 1, lockBean.idx) { itRst ->
|
|
ModBusController.controlLockBuckle(false, dockBean.addr.toInt() - 1, lockBean.idx) { itRst ->
|
|
|
if (itRst.isNotEmpty()) {
|
|
if (itRst.isNotEmpty()) {
|
|
|
// 上报锁具信息
|
|
// 上报锁具信息
|
|
|
- NetApi.updateLockReturn(rfid, MyApplication.instance!!.serialNo()) {}
|
|
|
|
|
|
|
+// NetApi.updateLockReturn(rfid, MyApplication.instance!!.serialNo()) {}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
|
|
+// }
|
|
|
|
|
+// }
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
@@ -209,7 +210,7 @@ object BusinessManager {
|
|
|
dlg.setType(TipDialog.TYPE_CONFIRM)
|
|
dlg.setType(TipDialog.TYPE_CONFIRM)
|
|
|
dlg.setConfirmListener {
|
|
dlg.setConfirmListener {
|
|
|
ModBusController.controlKeyBuckle(false, isLeft, slaveIdx)
|
|
ModBusController.controlKeyBuckle(false, isLeft, slaveIdx)
|
|
|
- getTicketStatusBusiness(mac, ActivityUtils.currentActivity() as BaseActivity<*>) { b, s ->
|
|
|
|
|
|
|
+ getTicketStatusBusiness(mac, ActivityUtils.currentActivity() as BaseActivity<*>) { b, s, rst ->
|
|
|
(ActivityUtils.currentActivity() as BaseActivity<*>).handleLoading(b, s)
|
|
(ActivityUtils.currentActivity() as BaseActivity<*>).handleLoading(b, s)
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
@@ -311,7 +312,7 @@ object BusinessManager {
|
|
|
private fun prepareBle(
|
|
private fun prepareBle(
|
|
|
mac: String,
|
|
mac: String,
|
|
|
activity: AppCompatActivity,
|
|
activity: AppCompatActivity,
|
|
|
- loadingCallBack: (Boolean, String?) -> Unit,
|
|
|
|
|
|
|
+ loadingCallBack: (Boolean, String?, Boolean?) -> Unit,
|
|
|
prepareDoneCallBack: (Boolean, BleBean?) -> Unit
|
|
prepareDoneCallBack: (Boolean, BleBean?) -> Unit
|
|
|
) {
|
|
) {
|
|
|
CommonUtils.checkBlePermission(activity) {
|
|
CommonUtils.checkBlePermission(activity) {
|
|
@@ -320,9 +321,9 @@ object BusinessManager {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@AfterPermissionGranted(PERMISSION_REQUEST_CODE)
|
|
@AfterPermissionGranted(PERMISSION_REQUEST_CODE)
|
|
|
- fun doScanBle(mac: String, loadingCallBack: (Boolean, String?) -> Unit, prepareDoneCallBack: (Boolean, BleBean?) -> Unit) {
|
|
|
|
|
|
|
+ fun doScanBle(mac: String, loadingCallBack: (Boolean, String?, Boolean?) -> Unit, prepareDoneCallBack: (Boolean, BleBean?) -> Unit) {
|
|
|
LogUtil.d("扫描开始:$mac")
|
|
LogUtil.d("扫描开始:$mac")
|
|
|
- loadingCallBack(true, "正在扫描设备...")
|
|
|
|
|
|
|
+ loadingCallBack(true, "正在扫描设备...", null)
|
|
|
BleUtil.instance?.scan(object : CustomBleScanCallback() {
|
|
BleUtil.instance?.scan(object : CustomBleScanCallback() {
|
|
|
override fun onPrompt(promptStr: String?) {
|
|
override fun onPrompt(promptStr: String?) {
|
|
|
BleManager.getInstance().enableBluetooth()
|
|
BleManager.getInstance().enableBluetooth()
|
|
@@ -349,9 +350,10 @@ object BusinessManager {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
override fun onScanFinished(scanResultList: MutableList<BleDevice>?) {
|
|
override fun onScanFinished(scanResultList: MutableList<BleDevice>?) {
|
|
|
- loadingCallBack.invoke(false, null)
|
|
|
|
|
|
|
+ loadingCallBack.invoke(false, null, null)
|
|
|
if (BleUtil.instance?.deviceList?.isEmpty() == true) {
|
|
if (BleUtil.instance?.deviceList?.isEmpty() == true) {
|
|
|
ToastUtils.tip(R.string.ble_no_device_found)
|
|
ToastUtils.tip(R.string.ble_no_device_found)
|
|
|
|
|
+ loadingCallBack.invoke(false, null, false)
|
|
|
return
|
|
return
|
|
|
}
|
|
}
|
|
|
BleUtil.instance?.getBleDeviceByMac(mac)?.bleDevice?.let {
|
|
BleUtil.instance?.getBleDeviceByMac(mac)?.bleDevice?.let {
|
|
@@ -366,26 +368,26 @@ object BusinessManager {
|
|
|
*/
|
|
*/
|
|
|
fun doConnect(
|
|
fun doConnect(
|
|
|
bleDevice: BleDevice,
|
|
bleDevice: BleDevice,
|
|
|
- loadingCallBack: (Boolean, String?) -> Unit,
|
|
|
|
|
|
|
+ loadingCallBack: (Boolean, String?, Boolean?) -> Unit,
|
|
|
prepareDoneCallBack: (Boolean, BleBean?) -> Unit
|
|
prepareDoneCallBack: (Boolean, BleBean?) -> Unit
|
|
|
) {
|
|
) {
|
|
|
- loadingCallBack.invoke(true, CommonUtils.getStr(R.string.ble_connecting))
|
|
|
|
|
|
|
+ loadingCallBack.invoke(true, CommonUtils.getStr(R.string.ble_connecting), null)
|
|
|
BleManager.getInstance().disconnect(bleDevice)
|
|
BleManager.getInstance().disconnect(bleDevice)
|
|
|
BleUtil.instance?.connectBySelect(bleDevice,
|
|
BleUtil.instance?.connectBySelect(bleDevice,
|
|
|
object : CustomBleGattCallback() {
|
|
object : CustomBleGattCallback() {
|
|
|
override fun onPrompt(promptStr: String?) {
|
|
override fun onPrompt(promptStr: String?) {
|
|
|
- loadingCallBack.invoke(false, promptStr)
|
|
|
|
|
|
|
+ loadingCallBack.invoke(false, promptStr, false)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
override fun onStartConnect() {}
|
|
override fun onStartConnect() {}
|
|
|
|
|
|
|
|
override fun onConnectFail(bleDevice: BleDevice?, exception: BleException?) {
|
|
override fun onConnectFail(bleDevice: BleDevice?, exception: BleException?) {
|
|
|
- loadingCallBack.invoke(false, CommonUtils.getStr(R.string.ble_connect_fail))
|
|
|
|
|
|
|
+ loadingCallBack.invoke(false, CommonUtils.getStr(R.string.ble_connect_fail), false)
|
|
|
prepareDoneCallBack.invoke(false, null)
|
|
prepareDoneCallBack.invoke(false, null)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
override fun onConnectSuccess(bleDevice: BleDevice?, gatt: BluetoothGatt?, status: Int) {
|
|
override fun onConnectSuccess(bleDevice: BleDevice?, gatt: BluetoothGatt?, status: Int) {
|
|
|
- loadingCallBack.invoke(false, null)
|
|
|
|
|
|
|
+ loadingCallBack.invoke(false, null, null)
|
|
|
LogUtil.i("onConnectSuccess : $bleDevice")
|
|
LogUtil.i("onConnectSuccess : $bleDevice")
|
|
|
bleDevice?.let {
|
|
bleDevice?.let {
|
|
|
val bleBean = BleBean(it)
|
|
val bleBean = BleBean(it)
|
|
@@ -403,7 +405,7 @@ object BusinessManager {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
override fun onDisConnected(isActiveDisConnected: Boolean, device: BleDevice?, gatt: BluetoothGatt?, status: Int) {
|
|
override fun onDisConnected(isActiveDisConnected: Boolean, device: BleDevice?, gatt: BluetoothGatt?, status: Int) {
|
|
|
- loadingCallBack.invoke(false, null)
|
|
|
|
|
|
|
+ loadingCallBack.invoke(false, null, false)
|
|
|
ToastUtils.tip(CommonUtils.getStr(R.string.ble_disconnect))
|
|
ToastUtils.tip(CommonUtils.getStr(R.string.ble_disconnect))
|
|
|
BleUtil.instance?.getBleDeviceByMac(device?.mac)?.let {
|
|
BleUtil.instance?.getBleDeviceByMac(device?.mac)?.let {
|
|
|
BleUtil.instance?.deviceList?.remove(it)
|
|
BleUtil.instance?.deviceList?.remove(it)
|
|
@@ -417,10 +419,10 @@ object BusinessManager {
|
|
|
*/
|
|
*/
|
|
|
private fun indicate(
|
|
private fun indicate(
|
|
|
bleBean: BleBean?,
|
|
bleBean: BleBean?,
|
|
|
- loadingCallBack: (Boolean, String?) -> Unit,
|
|
|
|
|
|
|
+ loadingCallBack: (Boolean, String?, Boolean?) -> Unit,
|
|
|
prepareDoneCallBack: (Boolean, BleBean?) -> Unit
|
|
prepareDoneCallBack: (Boolean, BleBean?) -> Unit
|
|
|
) {
|
|
) {
|
|
|
- loadingCallBack.invoke(true, "开始监听...")
|
|
|
|
|
|
|
+ loadingCallBack.invoke(true, "开始监听...", null)
|
|
|
bleBean?.let {
|
|
bleBean?.let {
|
|
|
BleUtil.instance?.indicate(it.bleDevice, indicateCallback = object : CustomBleIndicateCallback() {
|
|
BleUtil.instance?.indicate(it.bleDevice, indicateCallback = object : CustomBleIndicateCallback() {
|
|
|
override fun onPrompt(promptStr: String?) {
|
|
override fun onPrompt(promptStr: String?) {
|
|
@@ -443,7 +445,7 @@ object BusinessManager {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
override fun onIndicateFailure(exception: BleException?) {
|
|
override fun onIndicateFailure(exception: BleException?) {
|
|
|
- loadingCallBack.invoke(false, null)
|
|
|
|
|
|
|
+ loadingCallBack.invoke(false, null, false)
|
|
|
ToastUtils.tip("监听失败")
|
|
ToastUtils.tip("监听失败")
|
|
|
LogUtil.i("监听失败")
|
|
LogUtil.i("监听失败")
|
|
|
prepareDoneCallBack.invoke(false, null)
|
|
prepareDoneCallBack.invoke(false, null)
|
|
@@ -464,20 +466,20 @@ object BusinessManager {
|
|
|
*/
|
|
*/
|
|
|
private fun getToken(
|
|
private fun getToken(
|
|
|
bleBean: BleBean?,
|
|
bleBean: BleBean?,
|
|
|
- loadingCallBack: (Boolean, String?) -> Unit,
|
|
|
|
|
|
|
+ loadingCallBack: (Boolean, String?, Boolean?) -> Unit,
|
|
|
prepareDoneCallBack: (Boolean, BleBean?) -> Unit
|
|
prepareDoneCallBack: (Boolean, BleBean?) -> Unit
|
|
|
) {
|
|
) {
|
|
|
- loadingCallBack.invoke(true, "开始获取token...")
|
|
|
|
|
|
|
+ loadingCallBack.invoke(true, "开始获取token...", null)
|
|
|
bleBean?.let {
|
|
bleBean?.let {
|
|
|
BleCmdManager.getToken(it.bleDevice.mac, object : CustomBleWriteCallback() {
|
|
BleCmdManager.getToken(it.bleDevice.mac, object : CustomBleWriteCallback() {
|
|
|
override fun onWriteSuccess(current: Int, total: Int, justWrite: ByteArray?) {
|
|
override fun onWriteSuccess(current: Int, total: Int, justWrite: ByteArray?) {
|
|
|
- loadingCallBack.invoke(false, "token获取成功")
|
|
|
|
|
|
|
+ loadingCallBack.invoke(false, "token获取成功", null)
|
|
|
LogUtil.i("getToken success : ${bleBean.bleDevice.mac}")
|
|
LogUtil.i("getToken success : ${bleBean.bleDevice.mac}")
|
|
|
prepareDoneCallBack.invoke(true, bleBean)
|
|
prepareDoneCallBack.invoke(true, bleBean)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
override fun onWriteFailure(exception: BleException?) {
|
|
override fun onWriteFailure(exception: BleException?) {
|
|
|
- loadingCallBack.invoke(false, "token获取失败")
|
|
|
|
|
|
|
+ loadingCallBack.invoke(false, "token获取失败", false)
|
|
|
LogUtil.e("getToken fail : ${bleBean.bleDevice.mac}")
|
|
LogUtil.e("getToken fail : ${bleBean.bleDevice.mac}")
|
|
|
prepareDoneCallBack.invoke(false, null)
|
|
prepareDoneCallBack.invoke(false, null)
|
|
|
}
|
|
}
|
|
@@ -487,6 +489,31 @@ object BusinessManager {
|
|
|
|
|
|
|
|
/******************************************蓝牙通用准备结束******************************************/
|
|
/******************************************蓝牙通用准备结束******************************************/
|
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 下发工作票
|
|
|
|
|
+ * TODO 演示demo专用
|
|
|
|
|
+ * @param loadingCallBack 是否显示loading、提示信息、是否结束(true成功结束、false失败结束、null继续执行)
|
|
|
|
|
+ */
|
|
|
|
|
+ fun sendTicketBusiness(
|
|
|
|
|
+ mac: String,
|
|
|
|
|
+ activity: AppCompatActivity,
|
|
|
|
|
+ loadingCallBack: (Boolean, String?, Boolean?) -> Unit
|
|
|
|
|
+ ) {
|
|
|
|
|
+ prepareBle(mac, activity, loadingCallBack) { done, bleBean ->
|
|
|
|
|
+ if (done) {
|
|
|
|
|
+ Executor.delayOnMain(500) {
|
|
|
|
|
+ // 单bleBean json赋值
|
|
|
|
|
+ bleBean?.ticketSend = PresentationManager.getSimpleTicketJson()
|
|
|
|
|
+ bleBean?.ticketSend?.let { itJson ->
|
|
|
|
|
+ sendTicket(itJson, bleBean.bleDevice, loadingCallBack)
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ } else {
|
|
|
|
|
+ loadingCallBack.invoke(false, null, false)
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
/**
|
|
/**
|
|
|
* 下发工作票
|
|
* 下发工作票
|
|
|
*/
|
|
*/
|
|
@@ -494,7 +521,7 @@ object BusinessManager {
|
|
|
mac: String,
|
|
mac: String,
|
|
|
ticketDetail: TicketDetailRespVO,
|
|
ticketDetail: TicketDetailRespVO,
|
|
|
activity: AppCompatActivity,
|
|
activity: AppCompatActivity,
|
|
|
- loadingCallBack: (Boolean, String?) -> Unit,
|
|
|
|
|
|
|
+ loadingCallBack: (Boolean, String?, Boolean?) -> Unit,
|
|
|
) {
|
|
) {
|
|
|
prepareBle(mac, activity, loadingCallBack) { done, bleBean ->
|
|
prepareBle(mac, activity, loadingCallBack) { done, bleBean ->
|
|
|
if (done) {
|
|
if (done) {
|
|
@@ -506,7 +533,7 @@ object BusinessManager {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
} else {
|
|
} else {
|
|
|
- loadingCallBack.invoke(false, null)
|
|
|
|
|
|
|
+ loadingCallBack.invoke(false, null, false)
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
@@ -514,29 +541,30 @@ object BusinessManager {
|
|
|
/**
|
|
/**
|
|
|
* 读取工作票完成情况
|
|
* 读取工作票完成情况
|
|
|
*/
|
|
*/
|
|
|
- fun getTicketStatusBusiness(mac: String, activity: AppCompatActivity, loadingCallBack: (Boolean, String?) -> Unit) {
|
|
|
|
|
|
|
+ fun getTicketStatusBusiness(mac: String, activity: AppCompatActivity, loadingCallBack: (Boolean, String?, Boolean?) -> Unit) {
|
|
|
prepareBle(mac, activity, loadingCallBack) { done, bleBean ->
|
|
prepareBle(mac, activity, loadingCallBack) { done, bleBean ->
|
|
|
if (done) {
|
|
if (done) {
|
|
|
Executor.delayOnMain(500) {
|
|
Executor.delayOnMain(500) {
|
|
|
getTicketStatus(bleBean!!.bleDevice, loadingCallBack)
|
|
getTicketStatus(bleBean!!.bleDevice, loadingCallBack)
|
|
|
}
|
|
}
|
|
|
} else {
|
|
} else {
|
|
|
- loadingCallBack.invoke(false, null)
|
|
|
|
|
|
|
+ loadingCallBack.invoke(false, null, false)
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- private fun sendTicket(jsonStr: String, bleDevice: BleDevice, loadingCallBack: (Boolean, String?) -> Unit) {
|
|
|
|
|
- loadingCallBack.invoke(true, "开始下发工作票...")
|
|
|
|
|
|
|
+ private fun sendTicket(jsonStr: String, bleDevice: BleDevice, loadingCallBack: (Boolean, String?, Boolean?) -> Unit) {
|
|
|
|
|
+ val ctx = MyApplication.instance!!
|
|
|
|
|
+ loadingCallBack.invoke(true, ctx.getString(R.string.simple_start_send_ticket), null)
|
|
|
BleCmdManager.sendWorkTicket(jsonStr, bleDevice = bleDevice, callback = object : CustomBleWriteCallback() {
|
|
BleCmdManager.sendWorkTicket(jsonStr, bleDevice = bleDevice, callback = object : CustomBleWriteCallback() {
|
|
|
override fun onWriteSuccess(current: Int, total: Int, justWrite: ByteArray?) {
|
|
override fun onWriteSuccess(current: Int, total: Int, justWrite: ByteArray?) {
|
|
|
println("sendTicket success")
|
|
println("sendTicket success")
|
|
|
- loadingCallBack.invoke(true, "工作票下发中...")
|
|
|
|
|
|
|
+ loadingCallBack.invoke(true, ctx.getString(R.string.simple_sending_ticket), null)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
override fun onWriteFailure(exception: BleException?) {
|
|
override fun onWriteFailure(exception: BleException?) {
|
|
|
LogUtil.e("sendTicket fail : ${bleDevice.mac}")
|
|
LogUtil.e("sendTicket fail : ${bleDevice.mac}")
|
|
|
- loadingCallBack.invoke(false, "工作票下发失败")
|
|
|
|
|
|
|
+ loadingCallBack.invoke(false, ctx.getString(R.string.simple_send_ticket_fail), null)
|
|
|
}
|
|
}
|
|
|
})
|
|
})
|
|
|
}
|
|
}
|
|
@@ -589,7 +617,7 @@ object BusinessManager {
|
|
|
return jsonStr
|
|
return jsonStr
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- fun handleRsp(bleBean: BleBean, byteArray: ByteArray, loadingCallBack: (Boolean, String?) -> Unit) {
|
|
|
|
|
|
|
+ fun handleRsp(bleBean: BleBean, byteArray: ByteArray, loadingCallBack: (Boolean, String?, Boolean?) -> Unit) {
|
|
|
// TODO Token校验
|
|
// TODO Token校验
|
|
|
// val len = byteArray[2].toInt()
|
|
// val len = byteArray[2].toInt()
|
|
|
// val token = byteArray.copyOfRange(len + 7, len + 11)
|
|
// val token = byteArray.copyOfRange(len + 7, len + 11)
|
|
@@ -628,15 +656,16 @@ object BusinessManager {
|
|
|
* job : 0x01:工作模式 0x02:待机模式
|
|
* job : 0x01:工作模式 0x02:待机模式
|
|
|
* res : 0x01:成功 0x02:失败
|
|
* res : 0x01:成功 0x02:失败
|
|
|
*/
|
|
*/
|
|
|
- private fun handleSwitchModeResult(byteArray: ByteArray, loadingCallBack: (Boolean, String?) -> Unit) {
|
|
|
|
|
|
|
+ private fun handleSwitchModeResult(byteArray: ByteArray, loadingCallBack: (Boolean, String?, Boolean?) -> Unit) {
|
|
|
LogUtil.i("handleSwitchModeResult : ${byteArray.toHexStrings()}")
|
|
LogUtil.i("handleSwitchModeResult : ${byteArray.toHexStrings()}")
|
|
|
|
|
+ val ctx = MyApplication.instance!!
|
|
|
val job = byteArray[4]
|
|
val job = byteArray[4]
|
|
|
val res = byteArray[5]
|
|
val res = byteArray[5]
|
|
|
- loadingCallBack.invoke(false, null)
|
|
|
|
|
|
|
+ loadingCallBack.invoke(false, null, null)
|
|
|
if (res == 0x01.toByte() && job == 0x01.toByte()) {
|
|
if (res == 0x01.toByte() && job == 0x01.toByte()) {
|
|
|
- loadingCallBack.invoke(false, "切换工作模式成功")
|
|
|
|
|
|
|
+ loadingCallBack.invoke(false, ctx.getString(R.string.simple_switch_work_mode_success), null)
|
|
|
} else if (res == 0x02.toByte() && job == 0x01.toByte()) {
|
|
} else if (res == 0x02.toByte() && job == 0x01.toByte()) {
|
|
|
- loadingCallBack.invoke(false, "切换待机模式成功")
|
|
|
|
|
|
|
+ loadingCallBack.invoke(false, ctx.getString(R.string.simple_switch_standby_mode_success), null)
|
|
|
}
|
|
}
|
|
|
BleManager.getInstance().disconnectAllDevice()
|
|
BleManager.getInstance().disconnectAllDevice()
|
|
|
}
|
|
}
|
|
@@ -645,9 +674,10 @@ object BusinessManager {
|
|
|
* 工作票下发结果
|
|
* 工作票下发结果
|
|
|
* res:0x00:成功 0x01:失败 0x02:传输超时 0x0D:当前IDX超出范围 0x0E:当前数据CRC校验失败 0x14:JSON结构错误 0x63:未知错误
|
|
* res:0x00:成功 0x01:失败 0x02:传输超时 0x0D:当前IDX超出范围 0x0E:当前数据CRC校验失败 0x14:JSON结构错误 0x63:未知错误
|
|
|
*/
|
|
*/
|
|
|
- private fun handleWorkTicketResult(bleBean: BleBean, byteArray: ByteArray, loadingCallBack: (Boolean, String?) -> Unit) {
|
|
|
|
|
|
|
+ private fun handleWorkTicketResult(bleBean: BleBean, byteArray: ByteArray, loadingCallBack: (Boolean, String?, Boolean?) -> Unit) {
|
|
|
|
|
+ val ctx = MyApplication.instance!!
|
|
|
LogUtil.i("handleWorkTicketResult : ${byteArray.toHexStrings()}")
|
|
LogUtil.i("handleWorkTicketResult : ${byteArray.toHexStrings()}")
|
|
|
- loadingCallBack.invoke(false, null)
|
|
|
|
|
|
|
+ loadingCallBack.invoke(false, null, null)
|
|
|
val idx = byteArray[4] + byteArray[5]
|
|
val idx = byteArray[4] + byteArray[5]
|
|
|
val total = byteArray[6] + byteArray[7]
|
|
val total = byteArray[6] + byteArray[7]
|
|
|
val res = byteArray[8]
|
|
val res = byteArray[8]
|
|
@@ -668,7 +698,7 @@ object BusinessManager {
|
|
|
} else {
|
|
} else {
|
|
|
LogUtil.i("Work ticket is done")
|
|
LogUtil.i("Work ticket is done")
|
|
|
// 下发完毕,切换工作模式
|
|
// 下发完毕,切换工作模式
|
|
|
- loadingCallBack.invoke(true, "切换钥匙为工作模式")
|
|
|
|
|
|
|
+ loadingCallBack.invoke(true, ctx.getString(R.string.simple_switch_work_mode), null)
|
|
|
BleCmdManager.switchMode(STATUS_WORK, bleBean.bleDevice, object : CustomBleWriteCallback() {
|
|
BleCmdManager.switchMode(STATUS_WORK, bleBean.bleDevice, object : CustomBleWriteCallback() {
|
|
|
override fun onWriteSuccess(current: Int, total: Int, justWrite: ByteArray?) {
|
|
override fun onWriteSuccess(current: Int, total: Int, justWrite: ByteArray?) {
|
|
|
println("switch mode 1 success")}
|
|
println("switch mode 1 success")}
|
|
@@ -678,9 +708,10 @@ object BusinessManager {
|
|
|
// 打开钥匙卡扣
|
|
// 打开钥匙卡扣
|
|
|
val keyBean = ModBusController.getKeyByRfid(bleBean.bleDevice.mac)
|
|
val keyBean = ModBusController.getKeyByRfid(bleBean.bleDevice.mac)
|
|
|
if (keyBean == null) {
|
|
if (keyBean == null) {
|
|
|
- loadingCallBack.invoke(false, "未找到钥匙信息")
|
|
|
|
|
- ToastUtils.tip(R.string.key_not_exists)
|
|
|
|
|
|
|
+ loadingCallBack.invoke(false, ctx.getString(R.string.simple_key_not_found), false)
|
|
|
|
|
+ ToastUtils.tip(R.string.simple_key_not_exists)
|
|
|
} else {
|
|
} else {
|
|
|
|
|
+ loadingCallBack.invoke(false, null, true)
|
|
|
val dock = ModBusController.getDockByKeyMac(bleBean.bleDevice.mac)
|
|
val dock = ModBusController.getDockByKeyMac(bleBean.bleDevice.mac)
|
|
|
ModBusController.controlKeyBuckle(true, keyBean.isLeft, dock?.addr?.toInt())
|
|
ModBusController.controlKeyBuckle(true, keyBean.isLeft, dock?.addr?.toInt())
|
|
|
}
|
|
}
|
|
@@ -690,9 +721,10 @@ object BusinessManager {
|
|
|
/**
|
|
/**
|
|
|
* 处理工作票完成情况
|
|
* 处理工作票完成情况
|
|
|
*/
|
|
*/
|
|
|
- private fun handleTicketStatus(bleDevice: BleDevice, byteArray: ByteArray, loadingCallBack: (Boolean, String?) -> Unit) {
|
|
|
|
|
|
|
+ private fun handleTicketStatus(bleDevice: BleDevice, byteArray: ByteArray, loadingCallBack: (Boolean, String?, Boolean?) -> Unit) {
|
|
|
// TODO 需要有超时重传机制
|
|
// TODO 需要有超时重传机制
|
|
|
LogUtil.i("handleTicketStatus : ${byteArray.toHexStrings()}")
|
|
LogUtil.i("handleTicketStatus : ${byteArray.toHexStrings()}")
|
|
|
|
|
+ val ctx = MyApplication.instance!!
|
|
|
|
|
|
|
|
val total = byteArray[4] + byteArray[5]
|
|
val total = byteArray[4] + byteArray[5]
|
|
|
val idx = byteArray[6] + byteArray[7]
|
|
val idx = byteArray[6] + byteArray[7]
|
|
@@ -705,7 +737,7 @@ object BusinessManager {
|
|
|
}
|
|
}
|
|
|
// TODO 缺少res处理
|
|
// TODO 缺少res处理
|
|
|
if (idx != total - 1) {
|
|
if (idx != total - 1) {
|
|
|
- loadingCallBack.invoke(true, "获取工作票分包")
|
|
|
|
|
|
|
+ loadingCallBack.invoke(true, ctx.getString(R.string.simple_get_ticket_part), null)
|
|
|
getTicketStatusPart((idx + 1).toByteArray(), total.toByteArray(), byteArrayOf(0x01.toByte()), bleDevice, object : CustomBleWriteCallback() {
|
|
getTicketStatusPart((idx + 1).toByteArray(), total.toByteArray(), byteArrayOf(0x01.toByte()), bleDevice, object : CustomBleWriteCallback() {
|
|
|
override fun onWriteSuccess(current: Int, total: Int, justWrite: ByteArray?) {
|
|
override fun onWriteSuccess(current: Int, total: Int, justWrite: ByteArray?) {
|
|
|
println("getTicketStatusPart success")
|
|
println("getTicketStatusPart success")
|
|
@@ -716,10 +748,10 @@ object BusinessManager {
|
|
|
}
|
|
}
|
|
|
})
|
|
})
|
|
|
} else {
|
|
} else {
|
|
|
- loadingCallBack.invoke(false, "工作票完成状态读取完成")
|
|
|
|
|
|
|
+ loadingCallBack.invoke(false, ctx.getString(R.string.simple_get_ticket_status_done), null)
|
|
|
BleUtil.instance?.getBleDeviceByMac(bleDevice.mac)?.let {
|
|
BleUtil.instance?.getBleDeviceByMac(bleDevice.mac)?.let {
|
|
|
println("工作票完成接收 : ${String(it.ticketStatus)}")
|
|
println("工作票完成接收 : ${String(it.ticketStatus)}")
|
|
|
- loadingCallBack.invoke(false, "工作票完成接收${String(it.ticketStatus)}")
|
|
|
|
|
|
|
+ loadingCallBack.invoke(false, "工作票完成接收${String(it.ticketStatus)}", true)
|
|
|
// TODO 清空ticket
|
|
// TODO 清空ticket
|
|
|
it.ticketStatus = byteArrayOf()
|
|
it.ticketStatus = byteArrayOf()
|
|
|
// TODO 根据工作票完成情况,切换为待机模式
|
|
// TODO 根据工作票完成情况,切换为待机模式
|
|
@@ -773,14 +805,14 @@ object BusinessManager {
|
|
|
/**
|
|
/**
|
|
|
* 获取工作票完成情况
|
|
* 获取工作票完成情况
|
|
|
*/
|
|
*/
|
|
|
- private fun getTicketStatus(bleDevice: BleDevice, loadingCallBack: (Boolean, String?) -> Unit) {
|
|
|
|
|
- loadingCallBack.invoke(true, "开始获取工作票")
|
|
|
|
|
|
|
+ private fun getTicketStatus(bleDevice: BleDevice, loadingCallBack: (Boolean, String?, Boolean?) -> Unit) {
|
|
|
|
|
+ loadingCallBack.invoke(true, "开始获取工作票", null)
|
|
|
BleCmdManager.getTicketStatus(bleDevice, object : CustomBleWriteCallback() {
|
|
BleCmdManager.getTicketStatus(bleDevice, object : CustomBleWriteCallback() {
|
|
|
override fun onWriteSuccess(current: Int, total: Int, justWrite: ByteArray?) {
|
|
override fun onWriteSuccess(current: Int, total: Int, justWrite: ByteArray?) {
|
|
|
- loadingCallBack.invoke(false, "工作票获取成功")
|
|
|
|
|
|
|
+ loadingCallBack.invoke(false, "工作票获取成功", null)
|
|
|
println("getTicketStatus success")}
|
|
println("getTicketStatus success")}
|
|
|
override fun onWriteFailure(exception: BleException?) {
|
|
override fun onWriteFailure(exception: BleException?) {
|
|
|
- loadingCallBack.invoke(false, "工作票获取失败")
|
|
|
|
|
|
|
+ loadingCallBack.invoke(false, "工作票获取失败", false)
|
|
|
println("getTicketStatus fail")}
|
|
println("getTicketStatus fail")}
|
|
|
})
|
|
})
|
|
|
}
|
|
}
|