Commit 92b5af793d9e364dc8b76ffeb00a1f87e37610dc

Authored by daifengyi
1 parent 0e8d5378

feat:synchronize 0

HDFwear/Tools/BleMessage+Function.swift
@@ -92,4 +92,9 @@ extension BleMessage { @@ -92,4 +92,9 @@ extension BleMessage {
92 let bytes: [UInt8] = [remind.isOn ? 0x01 : 0x00, UInt8(remind.startDate.hour), UInt8(remind.startDate.minute), UInt8(remind.endDate.hour), UInt8(remind.endDate.minute)] 92 let bytes: [UInt8] = [remind.isOn ? 0x01 : 0x00, UInt8(remind.startDate.hour), UInt8(remind.startDate.minute), UInt8(remind.endDate.hour), UInt8(remind.endDate.minute)]
93 return createDataPacket(key: .setNoDisturb, bytes: bytes) 93 return createDataPacket(key: .setNoDisturb, bytes: bytes)
94 } 94 }
  95 +
  96 + func getSyncCmd(_ type: SyncType) -> Data {
  97 + let bytes: [UInt8] = [type.rawValue]
  98 + return createDataPacket(key: .setSynWatch, bytes: bytes)
  99 + }
95 } 100 }
HDFwear/Tools/BleMessage.swift
@@ -139,15 +139,6 @@ class BleMessage: NSObject { @@ -139,15 +139,6 @@ class BleMessage: NSObject {
139 return getSendData(cmd: .set, key: key, bytes: contactBytes) 139 return getSendData(cmd: .set, key: key, bytes: contactBytes)
140 } 140 }
141 141
142 -  
143 -  
144 -  
145 - func getSyncCmd(_ type: SyncType, day: SyncDay = .today) -> Data {  
146 - let date = DateInRegion().date + day.rawValue.days  
147 - let syncBytes: [UInt8] = [type.rawValue, UInt8(date.year%100), UInt8(date.month), UInt8(date.day), 0x00, 0x00, 0x00]  
148 - return getSendData(cmd: .sync, key: .sync, bytes: syncBytes)  
149 - }  
150 -  
151 func getSyncDialCmd(bytes: [UInt8]) -> Data { 142 func getSyncDialCmd(bytes: [UInt8]) -> Data {
152 return getSendData(cmd: .set, key: .dial, bytes: bytes) 143 return getSendData(cmd: .set, key: .dial, bytes: bytes)
153 } 144 }
HDFwear/Tools/Bluetooth+Types.swift
@@ -135,9 +135,9 @@ enum NewCmd: UInt8 { @@ -135,9 +135,9 @@ enum NewCmd: UInt8 {
135 case setUserInfo = 0x0026 135 case setUserInfo = 0x0026
136 case setNoDisturb = 0x0027 136 case setNoDisturb = 0x0027
137 //jtd! 137 //jtd!
138 - case setFetchWatchData = 0x0028  
139 - case setBeiDouContact = 0x0029  
140 - case setBeiDouQuickAnswer = 0x0030 138 + case setSynWatch = 0x0028
  139 +// case setBeiDouContact = 0x0029
  140 +// case setBeiDouQuickAnswer = 0x0030
141 141
142 } 142 }
143 143
@@ -158,14 +158,15 @@ enum SyncCmd: UInt8 { @@ -158,14 +158,15 @@ enum SyncCmd: UInt8 {
158 } 158 }
159 159
160 enum SyncType: UInt8 { 160 enum SyncType: UInt8 {
161 - case sleep = 0x01  
162 - case hr = 0x02 161 + case all = 0x00
  162 + case heartRate = 0x01
  163 + case bloodOxygen = 0x02
163 case step = 0x03 164 case step = 0x03
164 - case train = 0x04  
165 - case bo = 0x05  
166 - case bp = 0x07  
167 - case pressure = 0x08  
168 - case mett = 0x09 165 + case temperature = 0x04
  166 + case pressure = 0x05
  167 + case sleep = 0x06
  168 + case train = 0x07
  169 + case other = 0xff
169 } 170 }
170 171
171 enum SyncDay: Int { 172 enum SyncDay: Int {
HDFwear/Tools/BluetoothManager+Function.swift
@@ -90,7 +90,7 @@ extension BluetoothManager { @@ -90,7 +90,7 @@ extension BluetoothManager {
90 } 90 }
91 91
92 // 设置查找手表 92 // 设置查找手表
93 - // bool 0表示关闭振动 1表示打开震动 93 + // bool 0表示关闭 1表示打开
94 func newSetFindWatch(bool: Bool, completion: ((_ error: Int?) -> ())? = nil) { 94 func newSetFindWatch(bool: Bool, completion: ((_ error: Int?) -> ())? = nil) {
95 let data = BleMessage.shared.getFindWatchCmd(bool) 95 let data = BleMessage.shared.getFindWatchCmd(bool)
96 self.setCmdClosure = completion 96 self.setCmdClosure = completion
@@ -98,7 +98,7 @@ extension BluetoothManager { @@ -98,7 +98,7 @@ extension BluetoothManager {
98 } 98 }
99 99
100 // 设置压力自动检测 100 // 设置压力自动检测
101 - // bool 0表示关闭振动 1表示打开震动 101 + // bool 0表示关闭 1表示打开
102 func newSetPressureAutoDetect(bool: Bool, completion: ((_ error: Int?) -> ())? = nil) { 102 func newSetPressureAutoDetect(bool: Bool, completion: ((_ error: Int?) -> ())? = nil) {
103 let data = BleMessage.shared.getPressureAutoDetectCmd(bool) 103 let data = BleMessage.shared.getPressureAutoDetectCmd(bool)
104 self.setCmdClosure = completion 104 self.setCmdClosure = completion
@@ -106,7 +106,7 @@ extension BluetoothManager { @@ -106,7 +106,7 @@ extension BluetoothManager {
106 } 106 }
107 107
108 // 设置血压自动检测 108 // 设置血压自动检测
109 - // bool 0表示关闭振动 1表示打开震动 109 + // bool 0表示关闭 1表示打开
110 func newSetBloodOxygenAutoDetect(bool: Bool, completion: ((_ error: Int?) -> ())? = nil) { 110 func newSetBloodOxygenAutoDetect(bool: Bool, completion: ((_ error: Int?) -> ())? = nil) {
111 let data = BleMessage.shared.getBloodOxygenAutoDetectCmd(bool) 111 let data = BleMessage.shared.getBloodOxygenAutoDetectCmd(bool)
112 self.setCmdClosure = completion 112 self.setCmdClosure = completion
@@ -127,6 +127,112 @@ extension BluetoothManager { @@ -127,6 +127,112 @@ extension BluetoothManager {
127 sendData(data) 127 sendData(data)
128 } 128 }
129 129
  130 + //MARK: - 同步健康数据
  131 + func getSleepHistoryData(day: SyncDay = .today, closure: SleepClosure? = nil) {
  132 + let data = BleMessage.shared.getSyncCmd(.sleep)
  133 + newStartSyncHealthData(closure: closure, data: data, synType: .sleep)
  134 + }
  135 +
  136 + func getBloodPressureHistoryData(day: SyncDay = .today, closure: BloodPressureClosure? = nil) {
  137 +// let data = BleMessage.shared.getSyncCmd(.bloodOxygen)
  138 +// newStartSyncHealthData(closure: closure, data: data, synType: .pressure)
  139 + }
  140 +
  141 + func getBloodOxygenHistoryData(day: SyncDay = .today, closure: BloodOxygenClosure? = nil) {
  142 + let data = BleMessage.shared.getSyncCmd(.bloodOxygen)
  143 + newStartSyncHealthData(closure: closure, data: data, synType: .bloodOxygen)
  144 + }
  145 +
  146 + func getHeartRateHistoryData(day: SyncDay = .today, closure: HeartRateClosure? = nil) {
  147 + let data = BleMessage.shared.getSyncCmd(.heartRate)
  148 + newStartSyncHealthData(closure: closure, data: data, synType: .heartRate)
  149 + }
  150 +
  151 + func getStepHistoryData(day: SyncDay = .today, closure: StepClosure? = nil) {
  152 + let data = BleMessage.shared.getSyncCmd(.step)
  153 + newStartSyncHealthData(closure: closure, data: data, synType: .step)
  154 + }
  155 +
  156 + func getTrainHistoryData(day: SyncDay = .today, closure: TrainClosure? = nil) {
  157 + let data = BleMessage.shared.getSyncCmd(.train)
  158 + newStartSyncHealthData(closure: closure, data: data, synType: .train)
  159 + }
  160 +
  161 + func getPressureHistoryData(day: SyncDay = .today, closure: PressureClosure? = nil) {
  162 + let data = BleMessage.shared.getSyncCmd(.pressure)
  163 + newStartSyncHealthData(closure: closure, data: data, synType: .pressure)
  164 + }
  165 +
  166 + func getMettHistoryData(day: SyncDay = .today, closure: MettClosure? = nil) {
  167 +// startSyncHealthData(closure: closure, data: BleMessage.shared.getSyncCmd(.mett, day: day), cmd: .mett)
  168 + }
  169 +
  170 + // 同步数据
  171 + func newStartSyncHealthData(closure: Any?, data: Data, synType: SyncType) {
  172 + if !isSync {
  173 + GCDTimer.shared.scheduledDispatchTimerNotNow(WithTimerName: "SyncInterval", timeInterval: 0.1, queue: .main, repeats: false) {
  174 + self.clearClosures(closure: closure)
  175 + self.startSyncTimer()
  176 + self.isNextSync = false
  177 + self.isSync = true
  178 + self.isSyncType = synType
  179 + self.sendData(data)
  180 + }
  181 + } else {
  182 + switch closure {
  183 + case is BloodPressureClosure:
  184 + if bloodPressureClosure == nil {
  185 + bloodPressureClosure = closure as? BloodPressureClosure
  186 + bloodPressureClosure?([], -1002)
  187 + bloodPressureClosure = nil
  188 + }
  189 + case is HeartRateClosure:
  190 + if heartRateClosure == nil {
  191 + heartRateClosure = closure as? HeartRateClosure
  192 + heartRateClosure?([], -1002)
  193 + heartRateClosure = nil
  194 + }
  195 + case is BloodOxygenClosure:
  196 + if bloodOxygenClosure == nil {
  197 + bloodOxygenClosure = closure as? BloodOxygenClosure
  198 + bloodOxygenClosure?([], -1002)
  199 + bloodOxygenClosure = nil
  200 + }
  201 + case is SleepClosure:
  202 + if sleepClosure == nil {
  203 + sleepClosure = closure as? SleepClosure
  204 + sleepClosure?([], -1002)
  205 + sleepClosure = nil
  206 + }
  207 + case is StepClosure:
  208 + if stepClosure == nil {
  209 + stepClosure = closure as? StepClosure
  210 + stepClosure?([], -1002)
  211 + stepClosure = nil
  212 + }
  213 + case is TrainClosure:
  214 + if trainClosure == nil {
  215 + trainClosure = closure as? TrainClosure
  216 + trainClosure?(nil, -1002)
  217 + trainClosure = nil
  218 + }
  219 + case is PressureClosure:
  220 + if pressureClosure == nil {
  221 + pressureClosure = closure as? PressureClosure
  222 + pressureClosure?([], -1002)
  223 + pressureClosure = nil
  224 + }
  225 + case is MettClosure:
  226 + if mettClosure == nil {
  227 + mettClosure = closure as? MettClosure
  228 + mettClosure?([], -1002)
  229 + mettClosure = nil
  230 + }
  231 + default:
  232 + break
  233 + }
  234 + }
  235 + }
130 //MARK: - 发送数据 236 //MARK: - 发送数据
131 func sendData(_ data: Data) { 237 func sendData(_ data: Data) {
132 if peripheral == nil { 238 if peripheral == nil {
HDFwear/Tools/BluetoothManager.swift
@@ -132,10 +132,10 @@ class BluetoothManager: NSObject { @@ -132,10 +132,10 @@ class BluetoothManager: NSObject {
132 var mergeLength: Int = 0 132 var mergeLength: Int = 0
133 133
134 //sync 134 //sync
135 - private var isSyncReceived: Bool = false //是否收到同步data  
136 - private var isSync: Bool = false //是否在同步中  
137 - private var isSyncCmd: SyncCmd = .other //正在同步的指令  
138 - private var isNextSync: Bool = false //是否有下一个同步包 135 + var isSyncReceived: Bool = false //是否收到同步data
  136 + var isSync: Bool = false //是否在同步中
  137 + var isSyncType: SyncType = .other //正在同步的指令
  138 + var isNextSync: Bool = false //是否有下一个同步包
139 // private var 139 // private var
140 140
141 override init() { 141 override init() {
@@ -588,116 +588,72 @@ class BluetoothManager: NSObject { @@ -588,116 +588,72 @@ class BluetoothManager: NSObject {
588 } 588 }
589 } 589 }
590 } 590 }
591 -  
592 -  
593 -  
594 - //MARK: - 同步健康数据  
595 - func getSleepHistoryData(day: SyncDay = .today, closure: SleepClosure? = nil) {  
596 - var sleepDay: SyncDay = day  
597 - let curPlatform = CurDevice.platform  
598 - if curPlatform == ._828 {  
599 - if day == .today {  
600 - sleepDay = .yesterday  
601 - } else if day == .yesterday {  
602 - sleepDay = .dayBeforYesterday  
603 - }  
604 - }  
605 - startSyncHealthData(closure: closure, data: BleMessage.shared.getSyncCmd(.sleep, day: sleepDay), cmd: .sleep)  
606 - }  
607 -  
608 - func getBloodPressureHistoryData(day: SyncDay = .today, closure: BloodPressureClosure? = nil) {  
609 - startSyncHealthData(closure: closure, data: BleMessage.shared.getSyncCmd(.bp, day: day), cmd: .bp)  
610 - }  
611 -  
612 - func getBloodOxygenHistoryData(day: SyncDay = .today, closure: BloodOxygenClosure? = nil) {  
613 - startSyncHealthData(closure: closure, data: BleMessage.shared.getSyncCmd(.bo, day: day), cmd: .bo)  
614 - }  
615 -  
616 - func getHeartRateHistoryData(day: SyncDay = .today, closure: HeartRateClosure? = nil) {  
617 - startSyncHealthData(closure: closure, data: BleMessage.shared.getSyncCmd(.hr, day: day), cmd: .hr)  
618 - }  
619 -  
620 - func getStepHistoryData(day: SyncDay = .today, closure: StepClosure? = nil) {  
621 - startSyncHealthData(closure: closure, data: BleMessage.shared.getSyncCmd(.step, day: day), cmd: .step)  
622 - }  
623 -  
624 - func getTrainHistoryData(day: SyncDay = .today, closure: TrainClosure? = nil) {  
625 - startSyncHealthData(closure: closure, data: BleMessage.shared.getSyncCmd(.train, day: day), cmd: .train)  
626 - }  
627 -  
628 - func getPressureHistoryData(day: SyncDay = .today, closure: PressureClosure? = nil) {  
629 - startSyncHealthData(closure: closure, data: BleMessage.shared.getSyncCmd(.pressure, day: day), cmd: .pressure)  
630 - }  
631 -  
632 - func getMettHistoryData(day: SyncDay = .today, closure: MettClosure? = nil) {  
633 - startSyncHealthData(closure: closure, data: BleMessage.shared.getSyncCmd(.mett, day: day), cmd: .mett)  
634 - }  
635 591
636 - func startSyncHealthData(closure: Any?, data: Data, cmd: SyncCmd) {  
637 - if !isSync {  
638 - GCDTimer.shared.scheduledDispatchTimerNotNow(WithTimerName: "SyncInterval", timeInterval: 0.1, queue: .main, repeats: false) {  
639 - self.clearClosures(closure: closure)  
640 - self.startSyncTimer()  
641 - self.isNextSync = false  
642 - self.isSync = true  
643 - self.isSyncCmd = cmd  
644 - self.sendData(data)  
645 - }  
646 - } else {  
647 - switch closure {  
648 - case is BloodPressureClosure:  
649 - if bloodPressureClosure == nil {  
650 - bloodPressureClosure = closure as? BloodPressureClosure  
651 - bloodPressureClosure?([], -1002)  
652 - bloodPressureClosure = nil  
653 - }  
654 - case is HeartRateClosure:  
655 - if heartRateClosure == nil {  
656 - heartRateClosure = closure as? HeartRateClosure  
657 - heartRateClosure?([], -1002)  
658 - heartRateClosure = nil  
659 - }  
660 - case is BloodOxygenClosure:  
661 - if bloodOxygenClosure == nil {  
662 - bloodOxygenClosure = closure as? BloodOxygenClosure  
663 - bloodOxygenClosure?([], -1002)  
664 - bloodOxygenClosure = nil  
665 - }  
666 - case is SleepClosure:  
667 - if sleepClosure == nil {  
668 - sleepClosure = closure as? SleepClosure  
669 - sleepClosure?([], -1002)  
670 - sleepClosure = nil  
671 - }  
672 - case is StepClosure:  
673 - if stepClosure == nil {  
674 - stepClosure = closure as? StepClosure  
675 - stepClosure?([], -1002)  
676 - stepClosure = nil  
677 - }  
678 - case is TrainClosure:  
679 - if trainClosure == nil {  
680 - trainClosure = closure as? TrainClosure  
681 - trainClosure?(nil, -1002)  
682 - trainClosure = nil  
683 - }  
684 - case is PressureClosure:  
685 - if pressureClosure == nil {  
686 - pressureClosure = closure as? PressureClosure  
687 - pressureClosure?([], -1002)  
688 - pressureClosure = nil  
689 - }  
690 - case is MettClosure:  
691 - if mettClosure == nil {  
692 - mettClosure = closure as? MettClosure  
693 - mettClosure?([], -1002)  
694 - mettClosure = nil  
695 - }  
696 - default:  
697 - break  
698 - }  
699 - }  
700 - } 592 +// func startSyncHealthData(closure: Any?, data: Data, cmd: SyncCmd) {
  593 +// if !isSync {
  594 +// GCDTimer.shared.scheduledDispatchTimerNotNow(WithTimerName: "SyncInterval", timeInterval: 0.1, queue: .main, repeats: false) {
  595 +// self.clearClosures(closure: closure)
  596 +// self.startSyncTimer()
  597 +// self.isNextSync = false
  598 +// self.isSync = true
  599 +// self.isSyncType = cmd
  600 +// self.sendData(data)
  601 +// }
  602 +// } else {
  603 +// switch closure {
  604 +// case is BloodPressureClosure:
  605 +// if bloodPressureClosure == nil {
  606 +// bloodPressureClosure = closure as? BloodPressureClosure
  607 +// bloodPressureClosure?([], -1002)
  608 +// bloodPressureClosure = nil
  609 +// }
  610 +// case is HeartRateClosure:
  611 +// if heartRateClosure == nil {
  612 +// heartRateClosure = closure as? HeartRateClosure
  613 +// heartRateClosure?([], -1002)
  614 +// heartRateClosure = nil
  615 +// }
  616 +// case is BloodOxygenClosure:
  617 +// if bloodOxygenClosure == nil {
  618 +// bloodOxygenClosure = closure as? BloodOxygenClosure
  619 +// bloodOxygenClosure?([], -1002)
  620 +// bloodOxygenClosure = nil
  621 +// }
  622 +// case is SleepClosure:
  623 +// if sleepClosure == nil {
  624 +// sleepClosure = closure as? SleepClosure
  625 +// sleepClosure?([], -1002)
  626 +// sleepClosure = nil
  627 +// }
  628 +// case is StepClosure:
  629 +// if stepClosure == nil {
  630 +// stepClosure = closure as? StepClosure
  631 +// stepClosure?([], -1002)
  632 +// stepClosure = nil
  633 +// }
  634 +// case is TrainClosure:
  635 +// if trainClosure == nil {
  636 +// trainClosure = closure as? TrainClosure
  637 +// trainClosure?(nil, -1002)
  638 +// trainClosure = nil
  639 +// }
  640 +// case is PressureClosure:
  641 +// if pressureClosure == nil {
  642 +// pressureClosure = closure as? PressureClosure
  643 +// pressureClosure?([], -1002)
  644 +// pressureClosure = nil
  645 +// }
  646 +// case is MettClosure:
  647 +// if mettClosure == nil {
  648 +// mettClosure = closure as? MettClosure
  649 +// mettClosure?([], -1002)
  650 +// mettClosure = nil
  651 +// }
  652 +// default:
  653 +// break
  654 +// }
  655 +// }
  656 +// }
701 657
702 658
703 659
@@ -706,7 +662,7 @@ class BluetoothManager: NSObject { @@ -706,7 +662,7 @@ class BluetoothManager: NSObject {
706 GCDTimer.shared.scheduledDispatchTimerNotNow(WithTimerName: "syncBug", timeInterval: 25, queue: .main, repeats: false) { 662 GCDTimer.shared.scheduledDispatchTimerNotNow(WithTimerName: "syncBug", timeInterval: 25, queue: .main, repeats: false) {
707 print("同步超时") 663 print("同步超时")
708 self.isSync = false 664 self.isSync = false
709 - self.isSyncCmd = .other 665 + self.isSyncType = .other
710 self.isSyncReceived = false 666 self.isSyncReceived = false
711 for delegate in self.syncDelegateList { 667 for delegate in self.syncDelegateList {
712 delegate.syncBug() 668 delegate.syncBug()
@@ -837,7 +793,7 @@ class BluetoothManager: NSObject { @@ -837,7 +793,7 @@ class BluetoothManager: NSObject {
837 stopSyncTimer(BLEConfig.SyncHealthTimer) 793 stopSyncTimer(BLEConfig.SyncHealthTimer)
838 if !isNextSync { 794 if !isNextSync {
839 isSync = false 795 isSync = false
840 - isSyncCmd = .other 796 + isSyncType = .other
841 } 797 }
842 798
843 switch key { 799 switch key {
@@ -1303,7 +1259,7 @@ class BluetoothManager: NSObject { @@ -1303,7 +1259,7 @@ class BluetoothManager: NSObject {
1303 print("同步失败") 1259 print("同步失败")
1304 // stopSyncTimer(BLEConfig.SyncHealthTimer) 1260 // stopSyncTimer(BLEConfig.SyncHealthTimer)
1305 isSync = false 1261 isSync = false
1306 - isSyncCmd = .other 1262 + isSyncType = .other
1307 heartRateClosure?([], -1001) 1263 heartRateClosure?([], -1001)
1308 bloodPressureClosure?([], -1001) 1264 bloodPressureClosure?([], -1001)
1309 bloodOxygenClosure?([], -1001) 1265 bloodOxygenClosure?([], -1001)
@@ -1511,7 +1467,7 @@ extension BluetoothManager: ClientProfileDelegate { @@ -1511,7 +1467,7 @@ extension BluetoothManager: ClientProfileDelegate {
1511 if bytes[0] == 0xED && bytes[1] == 0x7E { 1467 if bytes[0] == 0xED && bytes[1] == 0x7E {
1512 // if bytes.count > 10, BleCmd(rawValue: bytes[8]) == .sync { 1468 // if bytes.count > 10, BleCmd(rawValue: bytes[8]) == .sync {
1513 // if isSync { 1469 // if isSync {
1514 -// if SyncCmd(rawValue: bytes[10]) != isSyncCmd { 1470 +// if SyncCmd(rawValue: bytes[10]) != isSyncType {
1515 // syncReceiveFail() 1471 // syncReceiveFail()
1516 // } else { 1472 // } else {
1517 // isNextSync = bytes[1] == 112 1473 // isNextSync = bytes[1] == 112