Commit 0e8d5378e87f36b5519b5c9fe4f568dbaba49fec

Authored by daifengyi
1 parent cc38043f

refactor

HDFwear/Tools/BluetoothManager+Function.swift
@@ -126,4 +126,122 @@ extension BluetoothManager { @@ -126,4 +126,122 @@ extension BluetoothManager {
126 self.setCmdClosure = completion 126 self.setCmdClosure = completion
127 sendData(data) 127 sendData(data)
128 } 128 }
  129 +
  130 + //MARK: - 发送数据
  131 + func sendData(_ data: Data) {
  132 + if peripheral == nil {
  133 + print("peripheral == nil")
  134 + return
  135 + }
  136 +
  137 + var serverUUID: String = ""
  138 + var writeUUID: String = ""
  139 + switch platform {
  140 + case ._828:
  141 + serverUUID = BLEConfig.ServerUUID
  142 + writeUUID = BLEConfig.WriteUUID
  143 + default:
  144 + break
  145 + }
  146 +
  147 + if let services = peripheral?.services {
  148 + for service in services {
  149 + if service.uuid.uuidString == serverUUID {
  150 + if service.characteristics == nil {
  151 + return
  152 + }
  153 + for char in service.characteristics! {
  154 + if char.uuid.uuidString == writeUUID {
  155 + if platform == ._828 {
  156 + if data.count <= 20 {
  157 + print("发送: \([UInt8](data))")
  158 + peripheral?.writeValue(data, for: char, type: .withoutResponse)
  159 + } else {
  160 + print("发送 拼: \([UInt8](data))")
  161 + let n = data.count/20 + (data.count%20 == 0 ? 0 : 1)
  162 + for i in 0..<n {
  163 + peripheral?.writeValue(data[i*20..<min(i*20+20, data.count)], for: char, type: .withoutResponse)
  164 + }
  165 + }
  166 + } else {
  167 + print("发送: \([UInt8](data))")
  168 + peripheral?.writeValue(data, for: char, type: .withResponse)
  169 + }
  170 + }
  171 + }
  172 + }
  173 + }
  174 + }
  175 + }
  176 + //MARK: - 新解析数据
  177 + func parseData(_ bytes: [UInt8]) {
  178 + totalLength = 0
  179 + mergeLength = 0
  180 + totalBytes = []
  181 + guard bytes.count > 12 else { return }
  182 + let msgId = Int(UInt16(bytes[4]) << 8 | UInt16(bytes[5]))
  183 + let data = Data(bytes: bytes, count: bytes.count)
  184 + switch msgId {
  185 + case 0x8001:
  186 + parseDefaultResponseData(bytes)
  187 + case 0x8002:// 设备信息查询应答
  188 + print("设备信息查询应答")
  189 + case 0x8009:// 实时步数、卡路里、距离自动上报
  190 + print("实时步数、卡路里、距离自动上报")
  191 + case 0x8010:// 电量变化自动上报
  192 + print("电量变化自动上报")
  193 + case 0x8014:// 电话挂断
  194 + print("电话挂断")
  195 + case 0x8015:// 找手机
  196 + print("找手机")
  197 + case 0x8016:// 历史心率数据上报
  198 + print("历史心率数据上报")
  199 + case 0x8017:// 历史血氧数据上报
  200 + print("历史血氧数据上报")
  201 + case 0x8018:// 历史体温数据上报
  202 + print("历史体温数据上报")
  203 + case 0x8019:// 睡眠数据上报
  204 + print("睡眠数据上报")
  205 + case 0x8020:// 历史压力数据上报
  206 + print("历史压力数据上报")
  207 + default:
  208 + break
  209 + }
  210 +// switch cmd {
  211 +// case .set, .find, .device, .remind, .firmware:
  212 +// parseSetData(SetCmd(rawValue: bytes[10]), data: data)
  213 +// case .sync:
  214 +// let valueBytes = Array(bytes[13..<bytes.count])
  215 +// print(valueBytes)
  216 +// parseSyncData(SyncCmd(rawValue: bytes[10]), bytes: valueBytes)
  217 +// case .weather:
  218 +// if setCmdClosure != nil {
  219 +// setCmdClosure?(nil)
  220 +// setCmdClosure = nil
  221 +// }
  222 +// }
  223 + }
  224 +
  225 + private func parseDefaultResponseData(_ bytes: [UInt8]) {
  226 + guard bytes.count == 17, bytes[9] == 5 else {
  227 + return
  228 + }
  229 + let newcmd = NewCmd(rawValue: bytes[13])
  230 + switch newcmd {
  231 + case .setTime, .setTimeFormat, .setTemperatureUnit, .setDistanceUnit, .setWristSense, .setTouchSense, .setLowPowerRemind, .setLanguage:
  232 + if setCmdClosure != nil {
  233 + let success = bytes[14] == 0
  234 + if success {
  235 + setCmdClosure?(nil)
  236 + }else {
  237 + setCmdClosure?((Int)(bytes[14]))
  238 + }
  239 + setCmdClosure = nil
  240 + }
  241 + case .none:
  242 + break
  243 + default:
  244 + break
  245 + }
  246 + }
129 } 247 }
HDFwear/Tools/BluetoothManager.swift
@@ -113,7 +113,7 @@ class BluetoothManager: NSObject { @@ -113,7 +113,7 @@ class BluetoothManager: NSObject {
113 // weak var delegate: BluetoothManagerDelegate? 113 // weak var delegate: BluetoothManagerDelegate?
114 114
115 var manger: MTKBleManager? 115 var manger: MTKBleManager?
116 - private var peripheral: CBPeripheral? = nil 116 + var peripheral: CBPeripheral? = nil
117 // private var conPeripheral: CBPeripheral? = nil //已连接的 117 // private var conPeripheral: CBPeripheral? = nil //已连接的
118 var platform: Platform = .other 118 var platform: Platform = .other
119 119
@@ -127,9 +127,9 @@ class BluetoothManager: NSObject { @@ -127,9 +127,9 @@ class BluetoothManager: NSObject {
127 127
128 128
129 //mergeData 129 //mergeData
130 - private var totalBytes: [UInt8] = []  
131 - private var totalLength: Int = 0  
132 - private var mergeLength: Int = 0 130 + var totalBytes: [UInt8] = []
  131 + var totalLength: Int = 0
  132 + var mergeLength: Int = 0
133 133
134 //sync 134 //sync
135 private var isSyncReceived: Bool = false //是否收到同步data 135 private var isSyncReceived: Bool = false //是否收到同步data
@@ -1217,80 +1217,6 @@ class BluetoothManager: NSObject { @@ -1217,80 +1217,6 @@ class BluetoothManager: NSObject {
1217 AudioServicesPlaySystemSound(kSystemSoundID_Vibrate) 1217 AudioServicesPlaySystemSound(kSystemSoundID_Vibrate)
1218 } 1218 }
1219 1219
1220 - //MARK: - 新解析数据  
1221 - private func newParseDefaultResponseData(_ bytes: [UInt8]) {  
1222 - guard bytes.count == 17, bytes[9] == 5 else {  
1223 - return  
1224 - }  
1225 - let newcmd = NewCmd(rawValue: bytes[13])  
1226 - switch newcmd {  
1227 - case .setTime, .setTimeFormat, .setTemperatureUnit, .setDistanceUnit, .setWristSense, .setTouchSense, .setLowPowerRemind, .setLanguage:  
1228 - if setCmdClosure != nil {  
1229 - let success = bytes[14] == 0  
1230 - if success {  
1231 - setCmdClosure?(nil)  
1232 - }else {  
1233 - setCmdClosure?((Int)(bytes[14]))  
1234 - }  
1235 - setCmdClosure = nil  
1236 - }  
1237 - case .none:  
1238 - break  
1239 - default:  
1240 - break  
1241 - }  
1242 -  
1243 - }  
1244 -  
1245 -  
1246 - //MARK: - 发送数据  
1247 -  
1248 - func sendData(_ data: Data) {  
1249 - if peripheral == nil {  
1250 - print("peripheral == nil")  
1251 - return  
1252 - }  
1253 -  
1254 - var serverUUID: String = ""  
1255 - var writeUUID: String = ""  
1256 - switch platform {  
1257 - case ._828:  
1258 - serverUUID = BLEConfig.ServerUUID  
1259 - writeUUID = BLEConfig.WriteUUID  
1260 - default:  
1261 - break  
1262 - }  
1263 -  
1264 - if let services = peripheral?.services {  
1265 - for service in services {  
1266 - if service.uuid.uuidString == serverUUID {  
1267 - if service.characteristics == nil {  
1268 - return  
1269 - }  
1270 - for char in service.characteristics! {  
1271 - if char.uuid.uuidString == writeUUID {  
1272 - if platform == ._828 {  
1273 - if data.count <= 20 {  
1274 - print("发送: \([UInt8](data))")  
1275 - peripheral?.writeValue(data, for: char, type: .withoutResponse)  
1276 - } else {  
1277 - print("发送 拼: \([UInt8](data))")  
1278 - let n = data.count/20 + (data.count%20 == 0 ? 0 : 1)  
1279 - for i in 0..<n {  
1280 - peripheral?.writeValue(data[i*20..<min(i*20+20, data.count)], for: char, type: .withoutResponse)  
1281 - }  
1282 - }  
1283 - } else {  
1284 - print("发送: \([UInt8](data))")  
1285 - peripheral?.writeValue(data, for: char, type: .withResponse)  
1286 - }  
1287 - }  
1288 - }  
1289 - }  
1290 - }  
1291 - }  
1292 - }  
1293 -  
1294 private func sendCustomDialData(_ data: Data) { 1220 private func sendCustomDialData(_ data: Data) {
1295 if !isSyncDial { return } 1221 if !isSyncDial { return }
1296 if peripheral == nil || data.count == 0 { 1222 if peripheral == nil || data.count == 0 {
@@ -1620,34 +1546,6 @@ extension BluetoothManager: ClientProfileDelegate { @@ -1620,34 +1546,6 @@ extension BluetoothManager: ClientProfileDelegate {
1620 1546
1621 } 1547 }
1622 1548
1623 - func parseData(_ bytes: [UInt8]) {  
1624 - totalLength = 0  
1625 - mergeLength = 0  
1626 - totalBytes = []  
1627 - guard bytes.count > 12 else { return }  
1628 - let msgId = Int(UInt16(bytes[4]) << 8 | UInt16(bytes[5]))  
1629 - let data = Data(bytes: bytes, count: bytes.count)  
1630 - switch msgId {  
1631 - case 0x8001:  
1632 - newParseDefaultResponseData(bytes)  
1633 - default:  
1634 - break  
1635 - }  
1636 -// switch cmd {  
1637 -// case .set, .find, .device, .remind, .firmware:  
1638 -// parseSetData(SetCmd(rawValue: bytes[10]), data: data)  
1639 -// case .sync:  
1640 -// let valueBytes = Array(bytes[13..<bytes.count])  
1641 -// print(valueBytes)  
1642 -// parseSyncData(SyncCmd(rawValue: bytes[10]), bytes: valueBytes)  
1643 -// case .weather:  
1644 -// if setCmdClosure != nil {  
1645 -// setCmdClosure?(nil)  
1646 -// setCmdClosure = nil  
1647 -// }  
1648 -// }  
1649 - }  
1650 -  
1651 1549
1652 func onCharacteristicWrite() { 1550 func onCharacteristicWrite() {
1653 // print("已经连接5") 1551 // print("已经连接5")