Commit b74ad0a2c03e2da9a6b9d38ad2429789068b6704

Authored by jason
1 parent a21b612e

feat:bo remind & hr auto detect

HDFwear/20240126ReadMe.md
... ... @@ -161,7 +161,17 @@ BluetoothManager+Function
161 161 发送: [237, 126, 0, 1, 0, 40, 0, 1, 0, 2, 21, 1, 218, 78]
162 162 接收: [237, 126, 0, 1, 128, 56, 0, 1, 0, 1, 1, 49, 176]
163 163  
  164 +拉取血氧预警开关
  165 + func newGetBoLowRemindData(option: SyncOption = .now, closure: BoLowRemindClosure? = nil)
  166 + 发送: [237, 126, 0, 1, 0, 40, 0, 1, 0, 2, 15, 1, 54, 246]
  167 + 接收: [237, 126, 0, 1, 128, 50, 0, 1, 0, 1, 80, 253, 102]
164 168  
  169 +拉取心率自动测量开关
  170 + func newGetHrAutoDetectData(option: SyncOption = .now, closure: BoAutoDetectClosure? = nil)
  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]
  173 +
  174 +
165 175 接受数据类
166 176  
167 177 固件升级
... ...
HDFwear/Mine/MineViewController.swift
... ... @@ -384,7 +384,17 @@ extension MineViewController: UITableViewDataSource, UITableViewDelegate {
384 384 }
385 385 }
386 386  
387   - let archiveAction25 = UIAlertAction(title: "newSetHeartRateDetectInterval", style: .default) { action in
  387 + let archiveAction25a = UIAlertAction(title: "newSetHeartRateDetectInterval disable", style: .default) { action in
  388 + BluetoothManager.shared.newSetHeartRateDetectInterval(bool: false, interval: 30) { error in
  389 + if error != nil {
  390 + print("newSetHeartRateDetectInterval" + (error?.description ?? ""))
  391 + }else {
  392 + print("newSetHeartRateDetectInterval success")
  393 + }
  394 + }
  395 + }
  396 +
  397 + let archiveAction25b = UIAlertAction(title: "newSetHeartRateDetectInterval enable 18", style: .default) { action in
388 398 BluetoothManager.shared.newSetHeartRateDetectInterval(bool: true, interval: 18) { error in
389 399 if error != nil {
390 400 print("newSetHeartRateDetectInterval" + (error?.description ?? ""))
... ... @@ -394,7 +404,17 @@ extension MineViewController: UITableViewDataSource, UITableViewDelegate {
394 404 }
395 405 }
396 406  
397   - let archiveAction26 = UIAlertAction(title: "newSetBloodOxygenLowRemind", style: .default) { action in
  407 + let archiveAction26a = UIAlertAction(title: "newSetBloodOxygenLowRemind disable", style: .default) { action in
  408 + BluetoothManager.shared.newSetBloodOxygenLowRemind(minBo: 0) { error in
  409 + if error != nil {
  410 + print("newSetBloodOxygenLowRemind" + (error?.description ?? ""))
  411 + }else {
  412 + print("newSetBloodOxygenLowRemind success")
  413 + }
  414 + }
  415 + }
  416 +
  417 + let archiveAction26b = UIAlertAction(title: "newSetBloodOxygenLowRemind enable 80", style: .default) { action in
398 418 BluetoothManager.shared.newSetBloodOxygenLowRemind(minBo: 80) { error in
399 419 if error != nil {
400 420 print("newSetBloodOxygenLowRemind" + (error?.description ?? ""))
... ... @@ -500,8 +520,10 @@ extension MineViewController: UITableViewDataSource, UITableViewDelegate {
500 520  
501 521 alert.addAction(archiveAction23)
502 522 alert.addAction(archiveAction24)
503   - alert.addAction(archiveAction25)
504   - alert.addAction(archiveAction26)
  523 + alert.addAction(archiveAction25a)
  524 + alert.addAction(archiveAction25b)
  525 + alert.addAction(archiveAction26a)
  526 + alert.addAction(archiveAction26b)
505 527 alert.addAction(archiveAction27)
506 528 alert.addAction(archiveAction28a)
507 529 alert.addAction(archiveAction28d)
... ... @@ -764,6 +786,28 @@ extension MineViewController: UITableViewDataSource, UITableViewDelegate {
764 786 }
765 787 }
766 788  
  789 + let archiveAction109 = UIAlertAction(title: "newGetBoLowRemindData", style: .default) {[weak self] action in
  790 + BluetoothManager.shared.newGetBoLowRemindData() {value, error in
  791 + if error != nil {
  792 + print("newGetBoLowRemindData" + (error?.description ?? ""))
  793 + }else {
  794 + self?.showDetailAlert(msg: String(value))
  795 + print("newGetBoLowRemindData success")
  796 + }
  797 + }
  798 + }
  799 +
  800 + let archiveAction110 = UIAlertAction(title: "newGetHrAutoDetectData", style: .default) {[weak self] action in
  801 + BluetoothManager.shared.newGetHrAutoDetectData() {enable, error in
  802 + if error != nil {
  803 + print("newGetHrAutoDetectData" + (error?.description ?? ""))
  804 + }else {
  805 + self?.showDetailAlert(msg: String(enable))
  806 + print("newGetHrAutoDetectData success")
  807 + }
  808 + }
  809 + }
  810 +
767 811  
768 812 alert.addAction(archiveAction9a)
769 813 alert.addAction(archiveAction9b)
... ... @@ -787,6 +831,8 @@ extension MineViewController: UITableViewDataSource, UITableViewDelegate {
787 831 alert.addAction(archiveAction106)
788 832 alert.addAction(archiveAction107)
789 833 alert.addAction(archiveAction108)
  834 + alert.addAction(archiveAction109)
  835 + alert.addAction(archiveAction110)
790 836  
791 837 alert.addAction(UIAlertAction(title: "取消", style: .destructive, handler: nil))
792 838 present(alert, animated: true, completion: nil)
... ...
HDFwear/Tools/Bluetooth+Types.swift
... ... @@ -180,6 +180,8 @@ enum SyncType: UInt8 {
180 180 case beidouCard = 0x0C
181 181 case noDisturb = 0x0D
182 182 case boAutoDetect = 0x0E
  183 + case boLowRemind = 0x0F
  184 + case hrAutoDetect = 0x10
183 185 case firmwareVersion = 0x14
184 186 case wristSense = 0x15
185 187 case other = 0xff
... ...
HDFwear/Tools/BluetoothManager+Function.swift
... ... @@ -270,6 +270,17 @@ extension BluetoothManager {
270 270 newStartSyncHealthData(closure: closure, data: data, synType: .boAutoDetect)
271 271 }
272 272  
  273 + // 拉取血氧预警开关
  274 + func newGetBoLowRemindData(option: SyncOption = .now, closure: BoLowRemindClosure? = nil) {
  275 + let data = BleMessage.shared.getSyncCmd(.boLowRemind, option)
  276 + newStartSyncHealthData(closure: closure, data: data, synType: .boLowRemind)
  277 + }
  278 +
  279 + // 拉取心率自动检测开关
  280 + func newGetHrAutoDetectData(option: SyncOption = .now, closure: BoAutoDetectClosure? = nil) {
  281 + let data = BleMessage.shared.getSyncCmd(.hrAutoDetect, option)
  282 + newStartSyncHealthData(closure: closure, data: data, synType: .hrAutoDetect)
  283 + }
273 284 // 拉取抬腕提醒开关
274 285 func newGetWristSenseData(option: SyncOption = .now, closure: WristSenseClosure? = nil) {
275 286 let data = BleMessage.shared.getSyncCmd(.wristSense, option)
... ... @@ -661,6 +672,26 @@ extension BluetoothManager {
661 672 }else {
662 673 parseBoAutoDetectData(content)
663 674 }
  675 + case 0x8032://血氧预警开关
  676 + print("血氧自动测量开关")
  677 + let content = parseContentFromBytes(bytes)
  678 + if (content.count == 1 && content.first == 0xff) {
  679 + for delegate in syncDelegateList {
  680 + delegate.didReceiveFinishCommand(0x8032)
  681 + }
  682 + }else {
  683 + parseBoLowRemindData(content)
  684 + }
  685 + case 0x8033://心率自动测量开关
  686 + print("心率自动测量开关")
  687 + let content = parseContentFromBytes(bytes)
  688 + if (content.count == 1 && content.first == 0xff) {
  689 + for delegate in syncDelegateList {
  690 + delegate.didReceiveFinishCommand(0x8033)
  691 + }
  692 + }else {
  693 + parseHrAutoDetectData(content)
  694 + }
664 695 case 0x8037://固件版本号
665 696 print("固件版本号")
666 697 let content = parseContentFromBytes(bytes)
... ... @@ -919,6 +950,28 @@ extension BluetoothManager {
919 950 boAutoDetectClosure?(enable, nil)
920 951 }
921 952  
  953 + // 血氧预警开关
  954 + func parseBoLowRemindData(_ content: [UInt8]) {
  955 + guard content.count > 0 else {
  956 + print("无有效的信息")
  957 + boLowRemindClosure?(0, nil)
  958 + return
  959 + }
  960 + let value = Int(content[0])
  961 + boLowRemindClosure?(value, nil)
  962 + }
  963 +
  964 + // 心率自动测量开关
  965 + func parseHrAutoDetectData(_ content: [UInt8]) {
  966 + guard content.count > 0 else {
  967 + print("无有效的信息")
  968 + hrAutoDetectClosure?(false, nil)
  969 + return
  970 + }
  971 + let enable = (content[0] == 0x01)
  972 + hrAutoDetectClosure?(enable, nil)
  973 + }
  974 +
922 975 // 运动数据
923 976 func parseExerciseData(_ content: [UInt8], _ index: Int) {
924 977 guard content.count > 0 else {
... ...
HDFwear/Tools/BluetoothManager.swift
... ... @@ -112,6 +112,10 @@ class BluetoothManager: NSObject {
112 112 var noDisturbClosure: NoDisturbClosure?
113 113 typealias BoAutoDetectClosure = (_ enable:Bool, _ error: Int?) -> Void
114 114 var boAutoDetectClosure: BoAutoDetectClosure?
  115 + typealias BoLowRemindClosure = (_ value:Int, _ error: Int?) -> Void
  116 + var boLowRemindClosure: BoLowRemindClosure?
  117 + typealias HrAutoDetectClosure = (_ enable:Bool, _ error: Int?) -> Void
  118 + var hrAutoDetectClosure: HrAutoDetectClosure?
115 119 typealias WristSenseClosure = (_ enable:Bool, _ error: Int?) -> Void
116 120 var wristSenseClosure: WristSenseClosure?
117 121 typealias FirmwareVersionClosure = (_ first:Int?, _ second:Int?, _ error: Int?) -> Void
... ... @@ -1387,6 +1391,10 @@ class BluetoothManager: NSObject {
1387 1391 noDisturbClosure = closure as? NoDisturbClosure
1388 1392 case .boAutoDetect:
1389 1393 boAutoDetectClosure = closure as? BoAutoDetectClosure
  1394 + case .boLowRemind:
  1395 + boLowRemindClosure = closure as? BoLowRemindClosure
  1396 + case .hrAutoDetect:
  1397 + hrAutoDetectClosure = closure as? HrAutoDetectClosure
1390 1398 case .wristSense:
1391 1399 wristSenseClosure = closure as? WristSenseClosure
1392 1400 case .firmwareVersion:
... ...