Commit 4239cb3b2f638f04839154e1a83e6889e4050948

Authored by jason
1 parent b74ad0a2

feat:exercise hr remind

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
... ... @@ -182,6 +182,7 @@ enum SyncType: UInt8 {
182 182 case boAutoDetect = 0x0E
183 183 case boLowRemind = 0x0F
184 184 case hrAutoDetect = 0x10
  185 + case exerciseHrRemind = 0x12
185 186 case firmwareVersion = 0x14
186 187 case wristSense = 0x15
187 188 case other = 0xff
... ...
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:
... ...