Commit 4239cb3b2f638f04839154e1a83e6889e4050948

Authored by jason
1 parent b74ad0a2

feat:exercise hr remind

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: