From 4239cb3b2f638f04839154e1a83e6889e4050948 Mon Sep 17 00:00:00 2001 From: jason Date: Wed, 31 Jan 2024 19:38:15 +0800 Subject: [PATCH] feat:exercise hr remind --- HDFwear/20240126ReadMe.md | 4 ++++ HDFwear/Mine/MineViewController.swift | 27 +++++++++++++++++++++++++-- HDFwear/Tools/Bluetooth+Types.swift | 1 + HDFwear/Tools/BluetoothManager+Function.swift | 30 +++++++++++++++++++++++++++++- HDFwear/Tools/BluetoothManager.swift | 4 ++++ 5 files changed, 63 insertions(+), 3 deletions(-) diff --git a/HDFwear/20240126ReadMe.md b/HDFwear/20240126ReadMe.md index 0e80e90..532d65c 100644 --- a/HDFwear/20240126ReadMe.md +++ b/HDFwear/20240126ReadMe.md @@ -171,6 +171,10 @@ BluetoothManager+Function 发送: [237, 126, 0, 1, 0, 40, 0, 1, 0, 2, 16, 1, 37, 187] 接收: [237, 126, 0, 1, 128, 51, 0, 1, 0, 1, 1, 242, 18] +拉取运动心率预警开关 + func newGetExerciseHrRemindData(option: SyncOption = .now, closure: ExerciseHrRemindClosure? = nil) + 发送: [237, 126, 0, 1, 0, 40, 0, 1, 0, 2, 18, 1, 67, 217] + 接收: [237, 126, 0, 1, 128, 53, 0, 1, 0, 1, 0, 111, 210] 接受数据类 diff --git a/HDFwear/Mine/MineViewController.swift b/HDFwear/Mine/MineViewController.swift index 2a62502..665912c 100644 --- a/HDFwear/Mine/MineViewController.swift +++ b/HDFwear/Mine/MineViewController.swift @@ -374,7 +374,17 @@ extension MineViewController: UITableViewDataSource, UITableViewDelegate { } } - let archiveAction24 = UIAlertAction(title: "newSetExerciseHeartRateRemind", style: .default) { action in + let archiveAction24a = UIAlertAction(title: "newSetExerciseHeartRateRemind disable", style: .default) { action in + BluetoothManager.shared.newSetExerciseHeartRateRemind(bool: false, minHr: 60, maxHr: 90) { error in + if error != nil { + print("newSetExerciseHeartRateRemind" + (error?.description ?? "")) + }else { + print("newSetExerciseHeartRateRemind success") + } + } + } + + let archiveAction24b = UIAlertAction(title: "newSetExerciseHeartRateRemind enable 110-150", style: .default) { action in BluetoothManager.shared.newSetExerciseHeartRateRemind(bool: true, minHr: 110, maxHr: 150) { error in if error != nil { print("newSetExerciseHeartRateRemind" + (error?.description ?? "")) @@ -519,7 +529,8 @@ extension MineViewController: UITableViewDataSource, UITableViewDelegate { alert.addAction(archiveAction21) alert.addAction(archiveAction23) - alert.addAction(archiveAction24) + alert.addAction(archiveAction24a) + alert.addAction(archiveAction24b) alert.addAction(archiveAction25a) alert.addAction(archiveAction25b) alert.addAction(archiveAction26a) @@ -808,6 +819,17 @@ extension MineViewController: UITableViewDataSource, UITableViewDelegate { } } + let archiveAction111 = UIAlertAction(title: "newGetExerciseHrRemindData", style: .default) {[weak self] action in + BluetoothManager.shared.newGetExerciseHrRemindData() {enable, error in + if error != nil { + print("newGetExerciseHrRemindData" + (error?.description ?? "")) + }else { + self?.showDetailAlert(msg: String(enable)) + print("newGetExerciseHrRemindData success") + } + } + } + alert.addAction(archiveAction9a) alert.addAction(archiveAction9b) @@ -833,6 +855,7 @@ extension MineViewController: UITableViewDataSource, UITableViewDelegate { alert.addAction(archiveAction108) alert.addAction(archiveAction109) alert.addAction(archiveAction110) + alert.addAction(archiveAction111) alert.addAction(UIAlertAction(title: "取消", style: .destructive, handler: nil)) present(alert, animated: true, completion: nil) diff --git a/HDFwear/Tools/Bluetooth+Types.swift b/HDFwear/Tools/Bluetooth+Types.swift index 94632a4..aee6bdf 100644 --- a/HDFwear/Tools/Bluetooth+Types.swift +++ b/HDFwear/Tools/Bluetooth+Types.swift @@ -182,6 +182,7 @@ enum SyncType: UInt8 { case boAutoDetect = 0x0E case boLowRemind = 0x0F case hrAutoDetect = 0x10 + case exerciseHrRemind = 0x12 case firmwareVersion = 0x14 case wristSense = 0x15 case other = 0xff diff --git a/HDFwear/Tools/BluetoothManager+Function.swift b/HDFwear/Tools/BluetoothManager+Function.swift index 314f11b..addc2a0 100644 --- a/HDFwear/Tools/BluetoothManager+Function.swift +++ b/HDFwear/Tools/BluetoothManager+Function.swift @@ -277,10 +277,17 @@ extension BluetoothManager { } // 拉取心率自动检测开关 - func newGetHrAutoDetectData(option: SyncOption = .now, closure: BoAutoDetectClosure? = nil) { + func newGetHrAutoDetectData(option: SyncOption = .now, closure: HrAutoDetectClosure? = nil) { let data = BleMessage.shared.getSyncCmd(.hrAutoDetect, option) newStartSyncHealthData(closure: closure, data: data, synType: .hrAutoDetect) } + + // 拉取运动心率预警开关 + func newGetExerciseHrRemindData(option: SyncOption = .now, closure: ExerciseHrRemindClosure? = nil) { + let data = BleMessage.shared.getSyncCmd(.exerciseHrRemind, option) + newStartSyncHealthData(closure: closure, data: data, synType: .exerciseHrRemind) + } + // 拉取抬腕提醒开关 func newGetWristSenseData(option: SyncOption = .now, closure: WristSenseClosure? = nil) { let data = BleMessage.shared.getSyncCmd(.wristSense, option) @@ -692,6 +699,16 @@ extension BluetoothManager { }else { parseHrAutoDetectData(content) } + case 0x8035://运动心率预警开关 + print("运动心率预警开关") + let content = parseContentFromBytes(bytes) + if (content.count == 1 && content.first == 0xff) { + for delegate in syncDelegateList { + delegate.didReceiveFinishCommand(0x8035) + } + }else { + parseExerciseHrRemindData(content) + } case 0x8037://固件版本号 print("固件版本号") let content = parseContentFromBytes(bytes) @@ -972,6 +989,17 @@ extension BluetoothManager { hrAutoDetectClosure?(enable, nil) } + // 运动心率预警开关 + func parseExerciseHrRemindData(_ content: [UInt8]) { + guard content.count > 0 else { + print("无有效的信息") + exerciseHrRemindClosure?(false, nil) + return + } + let enable = (content[0] == 0x01) + exerciseHrRemindClosure?(enable, nil) + } + // 运动数据 func parseExerciseData(_ content: [UInt8], _ index: Int) { guard content.count > 0 else { diff --git a/HDFwear/Tools/BluetoothManager.swift b/HDFwear/Tools/BluetoothManager.swift index 37dcb9b..00599fc 100644 --- a/HDFwear/Tools/BluetoothManager.swift +++ b/HDFwear/Tools/BluetoothManager.swift @@ -116,6 +116,8 @@ class BluetoothManager: NSObject { var boLowRemindClosure: BoLowRemindClosure? typealias HrAutoDetectClosure = (_ enable:Bool, _ error: Int?) -> Void var hrAutoDetectClosure: HrAutoDetectClosure? + typealias ExerciseHrRemindClosure = (_ enable:Bool, _ error: Int?) -> Void + var exerciseHrRemindClosure: ExerciseHrRemindClosure? typealias WristSenseClosure = (_ enable:Bool, _ error: Int?) -> Void var wristSenseClosure: WristSenseClosure? typealias FirmwareVersionClosure = (_ first:Int?, _ second:Int?, _ error: Int?) -> Void @@ -1395,6 +1397,8 @@ class BluetoothManager: NSObject { boLowRemindClosure = closure as? BoLowRemindClosure case .hrAutoDetect: hrAutoDetectClosure = closure as? HrAutoDetectClosure + case .exerciseHrRemind: + exerciseHrRemindClosure = closure as? ExerciseHrRemindClosure case .wristSense: wristSenseClosure = closure as? WristSenseClosure case .firmwareVersion: -- libgit2 0.21.4