Commit 92b5af793d9e364dc8b76ffeb00a1f87e37610dc

Authored by daifengyi
1 parent 0e8d5378

feat:synchronize 0

HDFwear/Tools/BleMessage+Function.swift
... ... @@ -92,4 +92,9 @@ extension BleMessage {
92 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 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 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 142 func getSyncDialCmd(bytes: [UInt8]) -> Data {
152 143 return getSendData(cmd: .set, key: .dial, bytes: bytes)
153 144 }
... ...
HDFwear/Tools/Bluetooth+Types.swift
... ... @@ -135,9 +135,9 @@ enum NewCmd: UInt8 {
135 135 case setUserInfo = 0x0026
136 136 case setNoDisturb = 0x0027
137 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 158 }
159 159  
160 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 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 172 enum SyncDay: Int {
... ...
HDFwear/Tools/BluetoothManager+Function.swift
... ... @@ -90,7 +90,7 @@ extension BluetoothManager {
90 90 }
91 91  
92 92 // 设置查找手表
93   - // bool 0表示关闭振动 1表示打开震动
  93 + // bool 0表示关闭 1表示打开
94 94 func newSetFindWatch(bool: Bool, completion: ((_ error: Int?) -> ())? = nil) {
95 95 let data = BleMessage.shared.getFindWatchCmd(bool)
96 96 self.setCmdClosure = completion
... ... @@ -98,7 +98,7 @@ extension BluetoothManager {
98 98 }
99 99  
100 100 // 设置压力自动检测
101   - // bool 0表示关闭振动 1表示打开震动
  101 + // bool 0表示关闭 1表示打开
102 102 func newSetPressureAutoDetect(bool: Bool, completion: ((_ error: Int?) -> ())? = nil) {
103 103 let data = BleMessage.shared.getPressureAutoDetectCmd(bool)
104 104 self.setCmdClosure = completion
... ... @@ -106,7 +106,7 @@ extension BluetoothManager {
106 106 }
107 107  
108 108 // 设置血压自动检测
109   - // bool 0表示关闭振动 1表示打开震动
  109 + // bool 0表示关闭 1表示打开
110 110 func newSetBloodOxygenAutoDetect(bool: Bool, completion: ((_ error: Int?) -> ())? = nil) {
111 111 let data = BleMessage.shared.getBloodOxygenAutoDetectCmd(bool)
112 112 self.setCmdClosure = completion
... ... @@ -127,6 +127,112 @@ extension BluetoothManager {
127 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 236 //MARK: - 发送数据
131 237 func sendData(_ data: Data) {
132 238 if peripheral == nil {
... ...
HDFwear/Tools/BluetoothManager.swift
... ... @@ -132,10 +132,10 @@ class BluetoothManager: NSObject {
132 132 var mergeLength: Int = 0
133 133  
134 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 139 // private var
140 140  
141 141 override init() {
... ... @@ -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 662 GCDTimer.shared.scheduledDispatchTimerNotNow(WithTimerName: "syncBug", timeInterval: 25, queue: .main, repeats: false) {
707 663 print("同步超时")
708 664 self.isSync = false
709   - self.isSyncCmd = .other
  665 + self.isSyncType = .other
710 666 self.isSyncReceived = false
711 667 for delegate in self.syncDelegateList {
712 668 delegate.syncBug()
... ... @@ -837,7 +793,7 @@ class BluetoothManager: NSObject {
837 793 stopSyncTimer(BLEConfig.SyncHealthTimer)
838 794 if !isNextSync {
839 795 isSync = false
840   - isSyncCmd = .other
  796 + isSyncType = .other
841 797 }
842 798  
843 799 switch key {
... ... @@ -1303,7 +1259,7 @@ class BluetoothManager: NSObject {
1303 1259 print("同步失败")
1304 1260 // stopSyncTimer(BLEConfig.SyncHealthTimer)
1305 1261 isSync = false
1306   - isSyncCmd = .other
  1262 + isSyncType = .other
1307 1263 heartRateClosure?([], -1001)
1308 1264 bloodPressureClosure?([], -1001)
1309 1265 bloodOxygenClosure?([], -1001)
... ... @@ -1511,7 +1467,7 @@ extension BluetoothManager: ClientProfileDelegate {
1511 1467 if bytes[0] == 0xED && bytes[1] == 0x7E {
1512 1468 // if bytes.count > 10, BleCmd(rawValue: bytes[8]) == .sync {
1513 1469 // if isSync {
1514   -// if SyncCmd(rawValue: bytes[10]) != isSyncCmd {
  1470 +// if SyncCmd(rawValue: bytes[10]) != isSyncType {
1515 1471 // syncReceiveFail()
1516 1472 // } else {
1517 1473 // isNextSync = bytes[1] == 112
... ...