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 | 171 | 发送: [237, 126, 0, 1, 0, 40, 0, 1, 0, 2, 16, 1, 37, 187] |
172 | 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 | 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 | 388 | BluetoothManager.shared.newSetExerciseHeartRateRemind(bool: true, minHr: 110, maxHr: 150) { error in |
379 | 389 | if error != nil { |
380 | 390 | print("newSetExerciseHeartRateRemind" + (error?.description ?? "")) |
... | ... | @@ -519,7 +529,8 @@ extension MineViewController: UITableViewDataSource, UITableViewDelegate { |
519 | 529 | alert.addAction(archiveAction21) |
520 | 530 | |
521 | 531 | alert.addAction(archiveAction23) |
522 | - alert.addAction(archiveAction24) | |
532 | + alert.addAction(archiveAction24a) | |
533 | + alert.addAction(archiveAction24b) | |
523 | 534 | alert.addAction(archiveAction25a) |
524 | 535 | alert.addAction(archiveAction25b) |
525 | 536 | alert.addAction(archiveAction26a) |
... | ... | @@ -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 | 834 | alert.addAction(archiveAction9a) |
813 | 835 | alert.addAction(archiveAction9b) |
... | ... | @@ -833,6 +855,7 @@ extension MineViewController: UITableViewDataSource, UITableViewDelegate { |
833 | 855 | alert.addAction(archiveAction108) |
834 | 856 | alert.addAction(archiveAction109) |
835 | 857 | alert.addAction(archiveAction110) |
858 | + alert.addAction(archiveAction111) | |
836 | 859 | |
837 | 860 | alert.addAction(UIAlertAction(title: "取消", style: .destructive, handler: nil)) |
838 | 861 | present(alert, animated: true, completion: nil) | ... | ... |
HDFwear/Tools/Bluetooth+Types.swift
HDFwear/Tools/BluetoothManager+Function.swift
... | ... | @@ -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 | 281 | let data = BleMessage.shared.getSyncCmd(.hrAutoDetect, option) |
282 | 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 | 292 | func newGetWristSenseData(option: SyncOption = .now, closure: WristSenseClosure? = nil) { |
286 | 293 | let data = BleMessage.shared.getSyncCmd(.wristSense, option) |
... | ... | @@ -692,6 +699,16 @@ extension BluetoothManager { |
692 | 699 | }else { |
693 | 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 | 712 | case 0x8037://固件版本号 |
696 | 713 | print("固件版本号") |
697 | 714 | let content = parseContentFromBytes(bytes) |
... | ... | @@ -972,6 +989,17 @@ extension BluetoothManager { |
972 | 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 | 1004 | func parseExerciseData(_ content: [UInt8], _ index: Int) { |
977 | 1005 | guard content.count > 0 else { | ... | ... |
HDFwear/Tools/BluetoothManager.swift
... | ... | @@ -116,6 +116,8 @@ class BluetoothManager: NSObject { |
116 | 116 | var boLowRemindClosure: BoLowRemindClosure? |
117 | 117 | typealias HrAutoDetectClosure = (_ enable:Bool, _ error: Int?) -> Void |
118 | 118 | var hrAutoDetectClosure: HrAutoDetectClosure? |
119 | + typealias ExerciseHrRemindClosure = (_ enable:Bool, _ error: Int?) -> Void | |
120 | + var exerciseHrRemindClosure: ExerciseHrRemindClosure? | |
119 | 121 | typealias WristSenseClosure = (_ enable:Bool, _ error: Int?) -> Void |
120 | 122 | var wristSenseClosure: WristSenseClosure? |
121 | 123 | typealias FirmwareVersionClosure = (_ first:Int?, _ second:Int?, _ error: Int?) -> Void |
... | ... | @@ -1395,6 +1397,8 @@ class BluetoothManager: NSObject { |
1395 | 1397 | boLowRemindClosure = closure as? BoLowRemindClosure |
1396 | 1398 | case .hrAutoDetect: |
1397 | 1399 | hrAutoDetectClosure = closure as? HrAutoDetectClosure |
1400 | + case .exerciseHrRemind: | |
1401 | + exerciseHrRemindClosure = closure as? ExerciseHrRemindClosure | |
1398 | 1402 | case .wristSense: |
1399 | 1403 | wristSenseClosure = closure as? WristSenseClosure |
1400 | 1404 | case .firmwareVersion: | ... | ... |