Commit 5507c7249150784f3c96a561af43b8469898ebf2

Authored by jason
1 parent 519f718b

feat:send interval

HDFwear.xcodeproj/project.pbxproj
... ... @@ -281,6 +281,7 @@
281 281 6CFEEBC22773354500621863 /* HRReferenceVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6CFEEBC12773354500621863 /* HRReferenceVC.swift */; };
282 282 6CFEEBC42773355700621863 /* SleepReferenceVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6CFEEBC32773355700621863 /* SleepReferenceVC.swift */; };
283 283 844959782B48EF900029E2E0 /* BluetoothManager+Deprecated.swift in Sources */ = {isa = PBXBuildFile; fileRef = 844959772B48EF900029E2E0 /* BluetoothManager+Deprecated.swift */; };
  284 + 8473FB622B4BF1A200409148 /* TaskManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8473FB612B4BF1A200409148 /* TaskManager.swift */; };
284 285 847482762B03793C0004F0C2 /* NewWeatherModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 847482752B03793C0004F0C2 /* NewWeatherModel.swift */; };
285 286 847672B82B074E43007DC2DE /* NewBeiDouContactModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 847672B72B074E43007DC2DE /* NewBeiDouContactModel.swift */; };
286 287 B212F1FD2A14CE0400781D59 /* LaunchSetting.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = B212F1FF2A14CE0400781D59 /* LaunchSetting.storyboard */; };
... ... @@ -656,6 +657,7 @@
656 657 6CFEEBC12773354500621863 /* HRReferenceVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HRReferenceVC.swift; sourceTree = "<group>"; };
657 658 6CFEEBC32773355700621863 /* SleepReferenceVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SleepReferenceVC.swift; sourceTree = "<group>"; };
658 659 844959772B48EF900029E2E0 /* BluetoothManager+Deprecated.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "BluetoothManager+Deprecated.swift"; sourceTree = "<group>"; };
  660 + 8473FB612B4BF1A200409148 /* TaskManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TaskManager.swift; sourceTree = "<group>"; };
659 661 847482752B03793C0004F0C2 /* NewWeatherModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NewWeatherModel.swift; sourceTree = "<group>"; };
660 662 847672B72B074E43007DC2DE /* NewBeiDouContactModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NewBeiDouContactModel.swift; sourceTree = "<group>"; };
661 663 847D1C4A2B009FAC0097A96E /* 20231111ReadMe.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = 20231111ReadMe.md; sourceTree = "<group>"; };
... ... @@ -1113,6 +1115,7 @@
1113 1115 844959772B48EF900029E2E0 /* BluetoothManager+Deprecated.swift */,
1114 1116 6C1F987E279BF0AA00C0C3BA /* BluetoothManager+Set.swift */,
1115 1117 B279A3792A4AC2F800A7C7B6 /* BluetoothManager+Function.swift */,
  1118 + 8473FB612B4BF1A200409148 /* TaskManager.swift */,
1116 1119 6C411EE4275DFF37009B2E02 /* Bluetooth+Types.swift */,
1117 1120 6C6051B92760843F00286B37 /* BleMessage.swift */,
1118 1121 B279A37B2A4AC5B000A7C7B6 /* BleMessage+Function.swift */,
... ... @@ -1712,6 +1715,7 @@
1712 1715 6C5A979127CCC00D00221361 /* PressReferenceVC.swift in Sources */,
1713 1716 6CFE53FA277B0D5D00520B00 /* StartMotionVC.swift in Sources */,
1714 1717 6C5B545427755E9D007F7901 /* WristViewController.swift in Sources */,
  1718 + 8473FB622B4BF1A200409148 /* TaskManager.swift in Sources */,
1715 1719 6C6F40892743835F00F9473C /* WomenHealthCell.swift in Sources */,
1716 1720 6C187CD62786E9A500150D1B /* StepCircleView.swift in Sources */,
1717 1721 6C411EDF275DE737009B2E02 /* BluetoothManager.swift in Sources */,
... ...
HDFwear/Tools/BluetoothManager+Function.swift
... ... @@ -334,6 +334,13 @@ extension BluetoothManager {
334 334 }
335 335 //MARK: - 发送数据
336 336 func sendData(_ data: Data) {
  337 + taskManager.executeTaskIfNeeded { [weak self] in
  338 + print("Task executed at \(Date())")
  339 + self?.coreSendData(data)
  340 + }
  341 + }
  342 +
  343 + func coreSendData(_ data: Data) {
337 344 if peripheral == nil {
338 345 print("peripheral == nil")
339 346 return
... ...
HDFwear/Tools/BluetoothManager.swift
... ... @@ -142,6 +142,9 @@ class BluetoothManager: NSObject {
142 142 var isNextSync: Bool = false //是否有下一个同步包
143 143 // private var
144 144  
  145 + // 任务执行管理
  146 + let taskManager = TaskManager()
  147 +
145 148 override init() {
146 149 super.init()
147 150 // manger.registerClientProfile(BLEConfig.MTKServerUUID, clientProfileDelegate: self)
... ...
HDFwear/Tools/TaskManager.swift 0 → 100644
  1 +//
  2 +// TaskManager.swift
  3 +// HDFwear
  4 +//
  5 +// Created by admin on 2024/1/8.
  6 +//
  7 +
  8 +import Foundation
  9 +
  10 +class TaskManager {
  11 + private var lastExecutionTime: DispatchTime = .now()
  12 + private let queue = DispatchQueue(label: "com.watch.taskQueue", attributes: .concurrent)
  13 +
  14 + func executeTaskIfNeeded(taskBlock: @escaping () -> Void) {
  15 + let now = DispatchTime.now()
  16 + let deadline = lastExecutionTime + .milliseconds(300)
  17 +
  18 + let delay: DispatchTimeInterval
  19 + if now >= deadline {
  20 + // If enough time has passed, execute the task immediately
  21 + delay = .seconds(0)
  22 + } else {
  23 + // If not, calculate the delay until the next execution
  24 + delay = .nanoseconds(Int(deadline.uptimeNanoseconds - now.uptimeNanoseconds))
  25 + }
  26 +
  27 + // Schedule the task to execute after the required delay
  28 + lastExecutionTime = .now() + delay
  29 + queue.asyncAfter(deadline: lastExecutionTime) {
  30 + taskBlock()
  31 + }
  32 + }
  33 +}
... ...