BleMessage+Function.swift
4.56 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
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
118
119
120
//
// BleMessage+Function.swift
// HDFwear
//
// Created by daifengyi on 2023/6/27.
//
import SwiftDate
extension BleMessage {
func getResponseCmd(frameNumber: [UInt8], messageId: [UInt8], success: Bool) -> Data {
let bytes: [UInt8] = frameNumber + messageId + (success ? [0x00] : [0x01])
return createDataPacket(key: .response, bytes: bytes)
}
func getQueryDeviceInfoCmd(queryItems: [UInt8]) -> Data {
let bytes: [UInt8] = [UInt8(queryItems.count)] + queryItems
return createDataPacket(key: .setTimeFormat, bytes: bytes)
}
func getTimeCmd() -> Data {
let date = DateInRegion().date
let calendar = Calendar.current
let weekday = calendar.component(.weekday, from: date)
// 调整星期表示
let adjustedWeekday = (weekday == 1) ? 7 : (weekday - 1)
let timeBytes: [UInt8] = [UInt8(date.year%100), UInt8(date.month), UInt8(date.day), UInt8(date.hour), UInt8(date.minute), UInt8(date.second), UInt8(adjustedWeekday)]
// return getSendData(cmd: .set, key: .time, bytes: timeBytes)
// let a = getPackData(key: .setTime, contentBytes: timeBytes)
// let b = createDataPacket(key: .setTime, bytes: timeBytes)
return createDataPacket(key: .setTime, bytes: timeBytes)
}
func getTimeFormatCmd(format: TimeFormat) -> Data {
let bytes: [UInt8] = [format.rawValue]
return createDataPacket(key: .setTimeFormat, bytes: bytes)
}
func getTemperatureUnitCmd(unit: TemperatureUnit) -> Data {
let bytes: [UInt8] = [unit.rawValue]
return createDataPacket(key: .setTemperatureUnit, bytes: bytes)
}
func getDistanceUnitCmd(unit: DistanceUnit) -> Data {
let bytes: [UInt8] = [unit.rawValue]
return createDataPacket(key: .setDistanceUnit, bytes: bytes)
}
func getWristSenseCmd(_ bool: Bool) -> Data {
let bytes: [UInt8] = bool ? [0x01] : [0x00]
return createDataPacket(key: .setWristSense, bytes: bytes)
}
func getTouchSenseCmd(_ bool: Bool) -> Data {
let bytes: [UInt8] = bool ? [0x01] : [0x00]
return createDataPacket(key: .setTouchSense, bytes: bytes)
}
func getLowPowerRemind(_ bool: Bool) -> Data {
let bytes: [UInt8] = bool ? [0x01] : [0x00]
return createDataPacket(key: .setLowPowerRemind, bytes: bytes)
}
func getLanguageCmd(_ lan: UInt8) -> Data {
let bytes: [UInt8] = [lan]
return createDataPacket(key: .setLanguage, bytes: bytes)
}
func getRestoreCmd() -> Data {
let bytes: [UInt8] = []
return createDataPacket(key: .setRestore, bytes: bytes)
}
func getHeartRateHighRemindCmd(_ maxHr: UInt8) -> Data {
let bytes: [UInt8] = [maxHr]
return createDataPacket(key: .setHeartRateHighRemind, bytes: bytes)
}
func getHeartRateLowRemindCmd(_ minHr: UInt8) -> Data {
let bytes: [UInt8] = [minHr]
return createDataPacket(key: .setHeartRateLowRemind, bytes: bytes)
}
func getFindWatchCmd(_ bool: Bool) -> Data {
let bytes: [UInt8] = bool ? [0x01] : [0x00]
return createDataPacket(key: .setFindWatch, bytes: bytes)
}
func getPressureAutoDetectCmd(_ bool: Bool) -> Data {
let bytes: [UInt8] = bool ? [0x01] : [0x00]
return createDataPacket(key: .setPressureAutoDetect, bytes: bytes)
}
func getBloodOxygenAutoDetectCmd(_ bool: Bool) -> Data {
let bytes: [UInt8] = bool ? [0x01] : [0x00]
return createDataPacket(key: .setbloodOxygenAutoDetect, bytes: bytes)
}
func getUserInfoCmd(_ user: UserInfoModel) -> Data {
let bytes = [0x00, UInt8(user.weight), 0x00, UInt8(user.height), UInt8(user.gender)]
return createDataPacket(key: .setUserInfo, bytes: bytes)
}
func getNotDisturbCmd(_ remind: RemindModel, weekflag: [WeekFlag], isRepeat: Bool) -> Data {
guard !weekflag.isEmpty else {
return createDataPacket(key: .setDistanceUnit, bytes: [])
}
var flag: UInt8 = 0
for item in weekflag {
flag |= 1 << item.rawValue
}
let bytes: [UInt8] = [remind.isOn ? 0x01 : 0x00, isRepeat ? 0x01: 0x00, flag, UInt8(remind.startDate.hour), UInt8(remind.startDate.minute), UInt8(remind.endDate.hour), UInt8(remind.endDate.minute)]
return createDataPacket(key: .setNoDisturb, bytes: bytes)
}
func getSyncCmd(_ type: SyncType) -> Data {
let bytes: [UInt8] = [type.rawValue]
return createDataPacket(key: .setSynWatch, bytes: bytes)
}
}