Commit 4239cb3b2f638f04839154e1a83e6889e4050948
1 parent
b74ad0a2
feat:exercise hr remind
Showing
5 changed files
with
63 additions
and
3 deletions
HDFwear/20240126ReadMe.md
@@ -171,6 +171,10 @@ BluetoothManager+Function | @@ -171,6 +171,10 @@ BluetoothManager+Function | ||
171 | 发送: [237, 126, 0, 1, 0, 40, 0, 1, 0, 2, 16, 1, 37, 187] | 171 | 发送: [237, 126, 0, 1, 0, 40, 0, 1, 0, 2, 16, 1, 37, 187] |
172 | 接收: [237, 126, 0, 1, 128, 51, 0, 1, 0, 1, 1, 242, 18] | 172 | 接收: [237, 126, 0, 1, 128, 51, 0, 1, 0, 1, 1, 242, 18] |
173 | 173 | ||
174 | +拉取运动心率预警开关 | ||
175 | + func newGetExerciseHrRemindData(option: SyncOption = .now, closure: ExerciseHrRemindClosure? = nil) | ||
176 | + 发送: [237, 126, 0, 1, 0, 40, 0, 1, 0, 2, 18, 1, 67, 217] | ||
177 | + 接收: [237, 126, 0, 1, 128, 53, 0, 1, 0, 1, 0, 111, 210] | ||
174 | 178 | ||
175 | 接受数据类 | 179 | 接受数据类 |
176 | 180 |
HDFwear/Mine/MineViewController.swift
@@ -374,7 +374,17 @@ extension MineViewController: UITableViewDataSource, UITableViewDelegate { | @@ -374,7 +374,17 @@ extension MineViewController: UITableViewDataSource, UITableViewDelegate { | ||
374 | } | 374 | } |
375 | } | 375 | } |
376 | 376 | ||
377 | - let archiveAction24 = UIAlertAction(title: "newSetExerciseHeartRateRemind", style: .default) { action in | 377 | + let archiveAction24a = UIAlertAction(title: "newSetExerciseHeartRateRemind disable", style: .default) { action in |
378 | + BluetoothManager.shared.newSetExerciseHeartRateRemind(bool: false, minHr: 60, maxHr: 90) { error in | ||
379 | + if error != nil { | ||
380 | + print("newSetExerciseHeartRateRemind" + (error?.description ?? "")) | ||
381 | + }else { | ||
382 | + print("newSetExerciseHeartRateRemind success") | ||
383 | + } | ||
384 | + } | ||
385 | + } | ||
386 | + | ||
387 | + let archiveAction24b = UIAlertAction(title: "newSetExerciseHeartRateRemind enable 110-150", style: .default) { action in | ||
378 | BluetoothManager.shared.newSetExerciseHeartRateRemind(bool: true, minHr: 110, maxHr: 150) { error in | 388 | BluetoothManager.shared.newSetExerciseHeartRateRemind(bool: true, minHr: 110, maxHr: 150) { error in |
379 | if error != nil { | 389 | if error != nil { |
380 | print("newSetExerciseHeartRateRemind" + (error?.description ?? "")) | 390 | print("newSetExerciseHeartRateRemind" + (error?.description ?? "")) |
@@ -519,7 +529,8 @@ extension MineViewController: UITableViewDataSource, UITableViewDelegate { | @@ -519,7 +529,8 @@ extension MineViewController: UITableViewDataSource, UITableViewDelegate { | ||
519 | alert.addAction(archiveAction21) | 529 | alert.addAction(archiveAction21) |
520 | 530 | ||
521 | alert.addAction(archiveAction23) | 531 | alert.addAction(archiveAction23) |
522 | - alert.addAction(archiveAction24) | 532 | + alert.addAction(archiveAction24a) |
533 | + alert.addAction(archiveAction24b) | ||
523 | alert.addAction(archiveAction25a) | 534 | alert.addAction(archiveAction25a) |
524 | alert.addAction(archiveAction25b) | 535 | alert.addAction(archiveAction25b) |
525 | alert.addAction(archiveAction26a) | 536 | alert.addAction(archiveAction26a) |
@@ -808,6 +819,17 @@ extension MineViewController: UITableViewDataSource, UITableViewDelegate { | @@ -808,6 +819,17 @@ extension MineViewController: UITableViewDataSource, UITableViewDelegate { | ||
808 | } | 819 | } |
809 | } | 820 | } |
810 | 821 | ||
822 | + let archiveAction111 = UIAlertAction(title: "newGetExerciseHrRemindData", style: .default) {[weak self] action in | ||
823 | + BluetoothManager.shared.newGetExerciseHrRemindData() {enable, error in | ||
824 | + if error != nil { | ||
825 | + print("newGetExerciseHrRemindData" + (error?.description ?? "")) | ||
826 | + }else { | ||
827 | + self?.showDetailAlert(msg: String(enable)) | ||
828 | + print("newGetExerciseHrRemindData success") | ||
829 | + } | ||
830 | + } | ||
831 | + } | ||
832 | + | ||
811 | 833 | ||
812 | alert.addAction(archiveAction9a) | 834 | alert.addAction(archiveAction9a) |
813 | alert.addAction(archiveAction9b) | 835 | alert.addAction(archiveAction9b) |
@@ -833,6 +855,7 @@ extension MineViewController: UITableViewDataSource, UITableViewDelegate { | @@ -833,6 +855,7 @@ extension MineViewController: UITableViewDataSource, UITableViewDelegate { | ||
833 | alert.addAction(archiveAction108) | 855 | alert.addAction(archiveAction108) |
834 | alert.addAction(archiveAction109) | 856 | alert.addAction(archiveAction109) |
835 | alert.addAction(archiveAction110) | 857 | alert.addAction(archiveAction110) |
858 | + alert.addAction(archiveAction111) | ||
836 | 859 | ||
837 | alert.addAction(UIAlertAction(title: "取消", style: .destructive, handler: nil)) | 860 | alert.addAction(UIAlertAction(title: "取消", style: .destructive, handler: nil)) |
838 | present(alert, animated: true, completion: nil) | 861 | present(alert, animated: true, completion: nil) |
HDFwear/Tools/Bluetooth+Types.swift
@@ -182,6 +182,7 @@ enum SyncType: UInt8 { | @@ -182,6 +182,7 @@ enum SyncType: UInt8 { | ||
182 | case boAutoDetect = 0x0E | 182 | case boAutoDetect = 0x0E |
183 | case boLowRemind = 0x0F | 183 | case boLowRemind = 0x0F |
184 | case hrAutoDetect = 0x10 | 184 | case hrAutoDetect = 0x10 |
185 | + case exerciseHrRemind = 0x12 | ||
185 | case firmwareVersion = 0x14 | 186 | case firmwareVersion = 0x14 |
186 | case wristSense = 0x15 | 187 | case wristSense = 0x15 |
187 | case other = 0xff | 188 | case other = 0xff |
HDFwear/Tools/BluetoothManager+Function.swift
@@ -277,10 +277,17 @@ extension BluetoothManager { | @@ -277,10 +277,17 @@ extension BluetoothManager { | ||
277 | } | 277 | } |
278 | 278 | ||
279 | // 拉取心率自动检测开关 | 279 | // 拉取心率自动检测开关 |
280 | - func newGetHrAutoDetectData(option: SyncOption = .now, closure: BoAutoDetectClosure? = nil) { | 280 | + func newGetHrAutoDetectData(option: SyncOption = .now, closure: HrAutoDetectClosure? = nil) { |
281 | let data = BleMessage.shared.getSyncCmd(.hrAutoDetect, option) | 281 | let data = BleMessage.shared.getSyncCmd(.hrAutoDetect, option) |
282 | newStartSyncHealthData(closure: closure, data: data, synType: .hrAutoDetect) | 282 | newStartSyncHealthData(closure: closure, data: data, synType: .hrAutoDetect) |
283 | } | 283 | } |
284 | + | ||
285 | + // 拉取运动心率预警开关 | ||
286 | + func newGetExerciseHrRemindData(option: SyncOption = .now, closure: ExerciseHrRemindClosure? = nil) { | ||
287 | + let data = BleMessage.shared.getSyncCmd(.exerciseHrRemind, option) | ||
288 | + newStartSyncHealthData(closure: closure, data: data, synType: .exerciseHrRemind) | ||
289 | + } | ||
290 | + | ||
284 | // 拉取抬腕提醒开关 | 291 | // 拉取抬腕提醒开关 |
285 | func newGetWristSenseData(option: SyncOption = .now, closure: WristSenseClosure? = nil) { | 292 | func newGetWristSenseData(option: SyncOption = .now, closure: WristSenseClosure? = nil) { |
286 | let data = BleMessage.shared.getSyncCmd(.wristSense, option) | 293 | let data = BleMessage.shared.getSyncCmd(.wristSense, option) |
@@ -692,6 +699,16 @@ extension BluetoothManager { | @@ -692,6 +699,16 @@ extension BluetoothManager { | ||
692 | }else { | 699 | }else { |
693 | parseHrAutoDetectData(content) | 700 | parseHrAutoDetectData(content) |
694 | } | 701 | } |
702 | + case 0x8035://运动心率预警开关 | ||
703 | + print("运动心率预警开关") | ||
704 | + let content = parseContentFromBytes(bytes) | ||
705 | + if (content.count == 1 && content.first == 0xff) { | ||
706 | + for delegate in syncDelegateList { | ||
707 | + delegate.didReceiveFinishCommand(0x8035) | ||
708 | + } | ||
709 | + }else { | ||
710 | + parseExerciseHrRemindData(content) | ||
711 | + } | ||
695 | case 0x8037://固件版本号 | 712 | case 0x8037://固件版本号 |
696 | print("固件版本号") | 713 | print("固件版本号") |
697 | let content = parseContentFromBytes(bytes) | 714 | let content = parseContentFromBytes(bytes) |
@@ -972,6 +989,17 @@ extension BluetoothManager { | @@ -972,6 +989,17 @@ extension BluetoothManager { | ||
972 | hrAutoDetectClosure?(enable, nil) | 989 | hrAutoDetectClosure?(enable, nil) |
973 | } | 990 | } |
974 | 991 | ||
992 | + // 运动心率预警开关 | ||
993 | + func parseExerciseHrRemindData(_ content: [UInt8]) { | ||
994 | + guard content.count > 0 else { | ||
995 | + print("无有效的信息") | ||
996 | + exerciseHrRemindClosure?(false, nil) | ||
997 | + return | ||
998 | + } | ||
999 | + let enable = (content[0] == 0x01) | ||
1000 | + exerciseHrRemindClosure?(enable, nil) | ||
1001 | + } | ||
1002 | + | ||
975 | // 运动数据 | 1003 | // 运动数据 |
976 | func parseExerciseData(_ content: [UInt8], _ index: Int) { | 1004 | func parseExerciseData(_ content: [UInt8], _ index: Int) { |
977 | guard content.count > 0 else { | 1005 | guard content.count > 0 else { |
HDFwear/Tools/BluetoothManager.swift
@@ -116,6 +116,8 @@ class BluetoothManager: NSObject { | @@ -116,6 +116,8 @@ class BluetoothManager: NSObject { | ||
116 | var boLowRemindClosure: BoLowRemindClosure? | 116 | var boLowRemindClosure: BoLowRemindClosure? |
117 | typealias HrAutoDetectClosure = (_ enable:Bool, _ error: Int?) -> Void | 117 | typealias HrAutoDetectClosure = (_ enable:Bool, _ error: Int?) -> Void |
118 | var hrAutoDetectClosure: HrAutoDetectClosure? | 118 | var hrAutoDetectClosure: HrAutoDetectClosure? |
119 | + typealias ExerciseHrRemindClosure = (_ enable:Bool, _ error: Int?) -> Void | ||
120 | + var exerciseHrRemindClosure: ExerciseHrRemindClosure? | ||
119 | typealias WristSenseClosure = (_ enable:Bool, _ error: Int?) -> Void | 121 | typealias WristSenseClosure = (_ enable:Bool, _ error: Int?) -> Void |
120 | var wristSenseClosure: WristSenseClosure? | 122 | var wristSenseClosure: WristSenseClosure? |
121 | typealias FirmwareVersionClosure = (_ first:Int?, _ second:Int?, _ error: Int?) -> Void | 123 | typealias FirmwareVersionClosure = (_ first:Int?, _ second:Int?, _ error: Int?) -> Void |
@@ -1395,6 +1397,8 @@ class BluetoothManager: NSObject { | @@ -1395,6 +1397,8 @@ class BluetoothManager: NSObject { | ||
1395 | boLowRemindClosure = closure as? BoLowRemindClosure | 1397 | boLowRemindClosure = closure as? BoLowRemindClosure |
1396 | case .hrAutoDetect: | 1398 | case .hrAutoDetect: |
1397 | hrAutoDetectClosure = closure as? HrAutoDetectClosure | 1399 | hrAutoDetectClosure = closure as? HrAutoDetectClosure |
1400 | + case .exerciseHrRemind: | ||
1401 | + exerciseHrRemindClosure = closure as? ExerciseHrRemindClosure | ||
1398 | case .wristSense: | 1402 | case .wristSense: |
1399 | wristSenseClosure = closure as? WristSenseClosure | 1403 | wristSenseClosure = closure as? WristSenseClosure |
1400 | case .firmwareVersion: | 1404 | case .firmwareVersion: |