BleMessage+Function.swift 4.07 KB
//
//  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 timeBytes: [UInt8] = [UInt8(date.year%100), UInt8(date.month), UInt8(date.day), UInt8(date.hour), UInt8(date.minute), UInt8(date.second)]
        //        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) -> Data {
        //jtd!
        let bytes: [UInt8] = [remind.isOn ? 0x01 : 0x00, 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)
    }
}