Blame view

HDFwear/Tools/Bluetooth+Types.swift 6.47 KB
f2cf74c7   yangbin   1.0.20(4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
  //
  //  Bluetooth+Types.swift
  //  Twear
  //
  //  Created by yangbin on 2021/12/6.
  //
  
  import CoreFoundation
  
  
  
  struct ScanDevice {
      var peripheral: CBPeripheral
      var mac: String
      
      init(_ peripheral: CBPeripheral, mac: String) {
          self.peripheral = peripheral
          self.mac = mac
      }
  }
  
  
  
  
f2cf74c7   yangbin   1.0.20(4)
25
  public struct BLEConfig {
920e260e   daifengyi   feat:data package
26
27
28
29
30
      // 
      static let ServerUUID = "0000FFF0-0000-1000-8000-00805F9B34FB" //主服务UUID
      static let ReadUUID = "0000FFF3-0000-1000-8000-00805F9B34FB"   //读取数据特征值
      static let WriteUUID = "0000FFF2-0000-1000-8000-00805F9B34FB"  //写入数据特征值
      
9f8cba6d   jason   feat:notification...
31
32
      static let NotificationUUID = "0000FFD2-0000-1000-8000-00805F9B34FB"  //写入数据特征值
      
920e260e   daifengyi   feat:data package
33
  //    0000FFF4-0000-1000-8000-00805F9B34FB    //  转换特征值
f2cf74c7   yangbin   1.0.20(4)
34
      
920e260e   daifengyi   feat:data package
35
36
37
38
      // 
  //    static let ServerUUID = "C3E6FEA0-E966-1000-8000-BE99C223DF6A" //主服务UUID
  //    static let ReadUUID = "C3E6FEA2-E966-1000-8000-BE99C223DF6A"   //读取数据特征值
  //    static let WriteUUID = "C3E6FEA1-E966-1000-8000-BE99C223DF6A"  //写入数据特征值
f2cf74c7   yangbin   1.0.20(4)
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
      
      
      static let MTKBasServerUUID = "0000180F-0000-1000-8000-00805F9B34FB"  //mtk2502 Bas主服务UUID
      static let MTKBasReadUUID = "00002A19-0000-1000-8000-00805F9B34FB"   //mtk2502 Bas读取数据特征值
      static let MTKBasWriteUUID = "00002A19-0000-1000-8000-00805F9B34FB"  //mtk2502 Bas写入数据特征值
      
      static let MTKServerUUID = "000018AA-0000-1000-8000-00805F9B34FB"  //mtk2502主服务UUID
      static let MTKReadUUID = "00002AAA-0000-1000-8000-00805F9B34FB"   //mtk2502读取数据特征值
      static let MTKWriteUUID = "00002AAA-0000-1000-8000-00805F9B34FB"  //mtk2502写入数据特征值
      
      static let MTKDialServerUUID = "0000180D-0000-1000-8000-00805F9B34FB"  //mtk2502 Dial主服务UUID
      static let MTKDialReadUUID = "00002A37-0000-1000-8000-00805F9B34FB"   //mtk2502 Dial读取数据特征值
      static let MTKDialWriteUUID = "00002A37-0000-1000-8000-00805F9B34FB"  //mtk2502 Dial写入数据特征值
      static let SyncHealthTimer = "SyncHealthDataTimer"
      
  }
  
  
  
  enum DistanceUnit: UInt8 {
1b6b2401   jason   feat:api timeForm...
59
60
      case meter = 1
      case foot = 0
f2cf74c7   yangbin   1.0.20(4)
61
62
63
64
65
66
  }
  enum TemperatureUnit: UInt8 {
      case celsius = 0
      case fahrenheit = 1
  }
  enum TimeFormat: UInt8 {
1b6b2401   jason   feat:api timeForm...
67
68
      case hour_12 = 0
      case hour_24 = 1
f2cf74c7   yangbin   1.0.20(4)
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
  }
  
  enum BleCmd: UInt8 {
      case firmware = 0x01
      case set = 0x02
      case device = 0x04
      case weather = 0x03
      case find = 0x05
      case remind = 0x06
      case sync = 0x0A
  }
  
  enum SetCmd: UInt8 {
      case unit = 0x01
      case firmware = 0x12
      case firmware_return = 0x13
      case time = 0x20
      case alarmClock = 0x21
      case user = 0x23
      case sedentary = 0x25
      case menstrual = 0x26
      case language = 0x27
      case drink = 0x28
      case push = 0x29
      case dial = 0x2B
      case setting = 0x2E
      case weather = 0x30
      case contact = 0x32
      case card = 0x33
      case contact1 = 0x34
      case contact2 = 0x35
      case contact3 = 0x36
      case custom = 0x37
      case pay = 0x38
      case battery = 0x40  // device-battery   set-contact4
      case battery_return = 0x41
      case openCamera = 0x46
      case takePicture = 0x47
      case exitCamera = 0x48
      case wrist = 0x4A
      case autoMeasure = 0x4B
      case find_device = 0x50
      case find_phone_start = 0x51
      case find_phone_stop = 0x52
      case disturb = 0x64
      case sync = 0xA0
      case set_return = 0x2F
  }
  
920e260e   daifengyi   feat:data package
118
  enum NewCmd: UInt8 {
3cba738e   daifengyi   feat:response
119
      case response = 0x01
079b41b8   daifengyi   feat:query device...
120
      case queryDeviceInfo = 0x02
37775d8e   daifengyi   feat:add cmd
121
  //    case ota = 0x07
920e260e   daifengyi   feat:data package
122
      case setTime = 0x09
6102d0b3   daifengyi   feat:time format
123
      case setTimeFormat = 0x10
50eee3a1   daifengyi   feat:temperature ...
124
125
      case setTemperatureUnit = 0x11
      case setDistanceUnit = 0x12
2db3eb12   daifengyi   feat:wrist sense
126
      case setWristSense = 0x13
5f08af0b   daifengyi   feat:touch sense
127
      case setTouchSense = 0x14
e817a7d0   daifengyi   feat:low power re...
128
      case setLowPowerRemind = 0x15
07a5f009   daifengyi   feat:language
129
      case setLanguage = 0x16
829c07bb   daifengyi   feat:restore, hr ...
130
      case setRestore = 0x17
c7f49054   jason   feat: rest & exer...
131
132
      case setHeartRateHighRemind = 0x90// deprecated
      case setHeartRateLowRemind = 0x91// deprecated
35756df0   jason   feat:0301 part1
133
134
      case setRestHeartRateRemind = 0x18//安静心率预警
      case setExerciseHeartRateRemind = 0x19//运动心率预警
829c07bb   daifengyi   feat:restore, hr ...
135
      case setFindWatch = 0x0020
d8efb388   daifengyi   feat: pressure ox...
136
  //    case setMessage = 0x0021
829c07bb   daifengyi   feat:restore, hr ...
137
  //    case setPhoneCall = 0x0022
d8efb388   daifengyi   feat: pressure ox...
138
139
  //                      0x0023
      case setPressureAutoDetect = 0x0024
a9f41925   jason   feat:blood oxygen...
140
      case setBloodOxygenAutoDetect = 0x0025
829c07bb   daifengyi   feat:restore, hr ...
141
142
      case setUserInfo = 0x0026
      case setNoDisturb = 0x0027
92b5af79   daifengyi   feat:synchronize 0
143
      case setSynWatch = 0x0028
9b1c370b   jason   feat:beidou
144
145
      case setBeiDouContact = 0x0029
      case setBeiDouQuickAnswer = 0x0030
03cac185   jason   feat:heart rate d...
146
147
      case setWeather = 0x0031
      case setHeartRateDetectInterval = 0x0032
a9f41925   jason   feat:blood oxygen...
148
      case setBloodOxygenLowRemind = 0x0034
5caab734   jason   feat:message remind
149
      case setMessageRemind = 0x0035
0f975482   jason   feat:exercise
150
      case setExerciseStatus = 0x0038
920e260e   daifengyi   feat:data package
151
152
  }
  
f2cf74c7   yangbin   1.0.20(4)
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
  enum SyncCmd: UInt8 {
      case sleep = 0xA2
      case step = 0xA3
      case hr = 0xA4
      case train = 0xA5
      case bp = 0xAD
      case bo = 0xAE
      case pressure = 0xB8
      case mett = 0xB9
      case hr_rt = 0xAB
      case bp_rt = 0xB1
      case bo_rt = 0xB2
      case step_rt = 0xAC
      case other = 0x00
  }
  
  enum SyncType: UInt8 {
92b5af79   daifengyi   feat:synchronize 0
170
171
172
      case all = 0x00
      case heartRate = 0x01
      case bloodOxygen = 0x02
6e1c7072   jason   feat:step now & h...
173
  //    case step = 0x03
92b5af79   daifengyi   feat:synchronize 0
174
175
176
177
      case temperature = 0x04
      case pressure = 0x05
      case sleep = 0x06
      case train = 0x07
6e1c7072   jason   feat:step now & h...
178
      case step = 0x08
6535c9df   jason   feat:newGetBatery...
179
      case battery = 0x09
66e40f13   jason   feat: blood oxyge...
180
      case gps = 0x0A
36b76cd7   jason   feat:intensive ti...
181
182
      case intensiveTime = 0x0B
      case beidouCard = 0x0C
02bd7bf8   jason   feat:no disturb
183
      case noDisturb = 0x0D
6adf1dc1   jason   feat:bo auto detect
184
      case boAutoDetect = 0x0E
b74ad0a2   jason   feat:bo remind & ...
185
      case boLowRemind = 0x0F
35756df0   jason   feat:0301 part1
186
187
  //    case hrAutoDetect = 0x10
  //    case exerciseHrRemind = 0x12
40bc8724   jason   feat:firmware ver...
188
      case firmwareVersion = 0x14
728a0182   jason   feat:wrist sense
189
      case wristSense = 0x15
35756df0   jason   feat:0301 part1
190
191
192
193
194
195
196
197
      case messageRemind = 0x0017
      case beiDouContact = 0x0018
      case pressureAutoDetect = 0x19
      case lowPowerRemind = 0x1A
      case beiDouQuickAnswer = 0x001B
      case exerciseHrRemind = 0x1C//运动心率预警
      case hrAutoDetect = 0x1D//心率测量间隔设置
      case restHrRemind = 0x1E//安静心率预警
92b5af79   daifengyi   feat:synchronize 0
198
      case other = 0xff
f2cf74c7   yangbin   1.0.20(4)
199
200
  }
  
10c6e004   jason   feat:sleep data
201
202
203
204
205
  enum SyncOption: UInt8 {
      case now = 0x01
      case history = 0x02
  }
  
f2cf74c7   yangbin   1.0.20(4)
206
207
208
209
210
211
212
213
214
215
  enum SyncDay: Int {
      case today = 0
      case yesterday = -1
      case dayBeforYesterday = -2
  }
  
  //enum DeviceCmd: UInt8 {
  //    case openCamera = 0x46
  //    case exitCamera = 0x48
  //}
5e73db33   daifengyi   feat:parse device...
216
217
218
219
220
221
222
223
224
225
226
227
228
  
  // 0x01 设备ID
  // 0x02 设备名称
  // 0x03 设备mac地址
  // 0x04 MCU版本号
  // 0x05 电量
  enum deviceInfoType: UInt8 {
      case deviceId = 0x01
      case deviceName = 0x02
      case deviceMac = 0x03
      case mcuVersion = 0x04
      case battery = 0x05
  }
949f38df   daifengyi   feat:not disturb
229
230
231
232
233
234
235
236
237
238
  
  enum WeekFlag: UInt8 {
      case sunday = 0
      case monday = 1
      case tuesday = 2
      case wednesday = 3
      case thursday = 4
      case friday = 5
      case saturday = 6
  }
0f975482   jason   feat:exercise
239
240
241
242
243
244
245
246
247
248
  
  enum ExerciseStatus: UInt8 {
      case sunday = 0
      case monday = 1
      case tuesday = 2
      case wednesday = 3
      case thursday = 4
      case friday = 5
      case saturday = 6
  }