// // 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) } }