@moshenguo/ms-data-sdk 0.1.1 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/sdk/bleConst.d.ts +0 -2
- package/build/sdk/bleConst.d.ts.map +1 -1
- package/build/sdk/bleConst.js +0 -2
- package/build/sdk/bleConst.js.map +1 -1
- package/build/sdk/bleSDK.d.ts +283 -14
- package/build/sdk/bleSDK.d.ts.map +1 -1
- package/build/sdk/bleSDK.js +284 -155
- package/build/sdk/bleSDK.js.map +1 -1
- package/build/sdk/models.d.ts +75 -0
- package/build/sdk/models.d.ts.map +1 -1
- package/build/sdk/models.js.map +1 -1
- package/build/sdk/resolveUtil.d.ts +2 -2
- package/build/sdk/resolveUtil.js +2 -2
- package/build/sdk/resolveUtil.js.map +1 -1
- package/docs/.nojekyll +1 -0
- package/docs/assets/hierarchy.js +1 -0
- package/docs/assets/highlight.css +36 -0
- package/docs/assets/icons.js +18 -0
- package/docs/assets/icons.svg +1 -0
- package/docs/assets/main.js +60 -0
- package/docs/assets/navigation.js +1 -0
- package/docs/assets/search.js +1 -0
- package/docs/assets/style.css +1633 -0
- package/docs/classes/BleSDK.html +263 -0
- package/docs/classes/ResolveUtil.html +74 -0
- package/docs/hierarchy.html +1 -0
- package/docs/index.html +13 -0
- package/docs/modules.html +1 -0
- package/docs/types/ChangeEventPayload.html +2 -0
- package/docs/types/MsDataSdkModuleEvents.html +2 -0
- package/docs/types/MsDataSdkViewProps.html +4 -0
- package/docs/types/OnLoadEventPayload.html +2 -0
- package/docs/variables/DeviceConst.html +1 -0
- package/docs/variables/DeviceKey.html +1 -0
- package/docs/variables/default.html +1 -0
- package/package.json +3 -2
package/build/sdk/bleSDK.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bleSDK.js","sourceRoot":"","sources":["../../src/sdk/bleSDK.ts"],"names":[],"mappings":"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","sourcesContent":["// BleSDK.ts\nimport { MyPersonalInfo, MyDeviceInfo, MyAutomaticHRMonitoring, MySedentaryReminderV4 } from './models';\nimport { DeviceConst, BleConst } from './bleConst';\n\nimport { ResolveUtil } from './resolveUtil';\n\nexport class BleSDK {\n static DATA_READ_START = 0;\n static DATA_READ_CONTINUE = 2;\n static DATA_DELETE = 99;\n static DistanceMode_MILE = 0x81;\n static DistanceMode_KM = 0x80;\n static TimeMode_12h = 0x81;\n static TimeMode_24h = 0x80;\n static WristOn_Enable = 0x81;\n static WristOn_DisEnable = 0x80;\n static TempUnit_C = 0x80;\n static TempUnit_F = 0x81;\n static TAG = \"BleSDK\";\n static isRuning = false;\n static ecgopen = false;\n static read = false;\n static pregnancyCycleRead = false;\n static isSettingSocial = false;\n static StartDeviceMeasurementWithType = false;\n\n private static generateValue(size: number): number[] {\n return new Array(size).fill(0);\n }\n\n private static hexByte2Int(b: number, count: number): number {\n return (b & 0xff) * Math.pow(256, count);\n }\n\n private static generateInitValue(): number[] {\n return this.generateValue(16);\n }\n\n private static arrayCopy(\n source: number[],\n srcPos: number,\n dest: number[],\n destPos: number,\n length: number\n ): void {\n for (let i = 0; i < length; i++) {\n dest[destPos + i] = source[srcPos + i];\n }\n }\n\n private static crcValue(list: number[]): void {\n let crcValue = 0;\n for (const value of list) {\n crcValue += value;\n }\n list[15] = crcValue & 0xff;\n }\n\n private static crcDynamicValue(list: number[]): void {\n let crcValue = 0;\n for (const value of list) {\n crcValue += value;\n }\n list[list.length - 1] = crcValue & 0xff;\n }\n\n private static getBcdValue(value: number): number {\n // let data = value.toString();\n // if (data.length > 2) data = data.substring(0, 2);\n // return parseInt(data, 16);\n return Math.floor(value / 10) * 16 + (value % 10);\n }\n static DataParsingWithData(value: number[]): { [key: string]: any } {\n if (!value || value.length === 0) {\n return ResolveUtil.setMethodError('Empty data');\n }\n\n const cmd = value[0];\n\n switch (cmd) {\n case DeviceConst.CMD_Set_Goal:\n return ResolveUtil.setMethodSuccessful(BleConst.SetStepGoal);\n case DeviceConst.CMD_Set_UseInfo:\n return ResolveUtil.setMethodSuccessful(BleConst.SetPersonalInfo);\n case DeviceConst.CMD_Set_Name:\n break;\n case DeviceConst.CMD_Set_MOT_SIGN:\n return ResolveUtil.setMethodSuccessful(BleConst.SetMotorVibrationWithTimes);\n case DeviceConst.CMD_Set_DeviceInfo:\n return ResolveUtil.setMethodSuccessful(BleConst.SetDeviceInfo);\n case DeviceConst.CMD_Set_AutoHeart:\n return ResolveUtil.setMethodSuccessful(BleConst.SetAutomaticHRMonitoring);\n case DeviceConst.CMD_Set_ActivityAlarm://设置 久坐提醒\n return ResolveUtil.setMethodSuccessful(BleConst.SetSedentaryReminder);\n case DeviceConst.CMD_Set_DeviceID:\n return ResolveUtil.setMacSuccessful();\n case DeviceConst.CMD_Start_EXERCISE:\n return ResolveUtil.setMethodSuccessful(BleConst.EnterActivityMode);\n case DeviceConst.CMD_Set_TemperatureCorrection:\n if (value[2] !== 0 && value[3] !== 0) {\n return ResolveUtil.getTemperatureCorrectionValue(value);\n } else {\n return ResolveUtil.setMethodSuccessful(BleConst.CMD_Set_TemperatureCorrection);\n }\n case DeviceConst.CMD_HeartPackageFromDevice:\n return ResolveUtil.getActivityExerciseData(value);\n case DeviceConst.CMD_SET_TIME:\n return ResolveUtil.setTimeSuccessful(value);\n case DeviceConst.CMD_Get_SPORTData:\n return ResolveUtil.getExerciseData(value);\n case DeviceConst.CMD_GET_TIME:\n return ResolveUtil.getDeviceTime(value);\n case DeviceConst.CMD_GET_USERINFO:\n return ResolveUtil.getUserInfo(value);\n case DeviceConst.CMD_Get_DeviceInfo:\n return ResolveUtil.getDeviceInfo(value);\n case DeviceConst.CMD_Enable_Activity:\n return ResolveUtil.getActivityData(value);\n case DeviceConst.CMD_Get_Goal:\n return ResolveUtil.getGoal(value);\n case DeviceConst.CMD_Get_BatteryLevel:\n return ResolveUtil.getDeviceBattery(value);\n case DeviceConst.CMD_Get_Address:\n return ResolveUtil.getDeviceAddress(value);\n case DeviceConst.CMD_Get_Version:\n return ResolveUtil.getDeviceVersion(value);\n case DeviceConst.CMD_Get_Name:\n return ResolveUtil.getDeviceName(value);\n case DeviceConst.CMD_Get_AutoHeart:\n return ResolveUtil.getAutoHeart(value);\n case DeviceConst.CMD_Reset:\n return ResolveUtil.Reset();\n case DeviceConst.CMD_Mcu_Reset:\n return ResolveUtil.MCUReset();\n case DeviceConst.CMD_Notify:\n return ResolveUtil.Notify();\n case DeviceConst.CMD_Get_ActivityAlarm:\n return ResolveUtil.getActivityAlarm(value);\n case DeviceConst.CMD_Get_TotalData:\n return ResolveUtil.getTotalStepData(value);\n case DeviceConst.CMD_Get_DetailData:\n return ResolveUtil.getDetailData(value);\n case DeviceConst.CMD_Get_SleepData:\n return ResolveUtil.getSleepData(value);\n case DeviceConst.CMD_Get_HeartData:\n return ResolveUtil.getHeartData(value);\n case DeviceConst.CMD_Get_OnceHeartData:\n return ResolveUtil.getOnceHeartData(value);\n case DeviceConst.CMD_Get_HrvTestData:\n return ResolveUtil.getHrvTestData(value);\n case DeviceConst.CMD_Get_Clock://获取闹钟数据\n return ResolveUtil.getClockData(value);\n case DeviceConst.CMD_Set_Clock:\n return ResolveUtil.updateClockSuccessful(value);\n case DeviceConst.CMD_Set_NewDeviceInfo:\n return ResolveUtil.setNewDeviceInfo(value);\n case DeviceConst.CMD_Get_NewDeviceInfo:\n return ResolveUtil.getNewDeviceInfo(value);\n case DeviceConst.Enter_photo_modeback:\n return ResolveUtil.enterPhotoModeback(value);\n case DeviceConst.Enter_photo_mode:\n return ResolveUtil.setMethodSuccessful(BleConst.EnterPhotoMode);\n case DeviceConst.Exit_photo_mode:\n return ResolveUtil.setMethodSuccessful(BleConst.BackHomeView);\n case DeviceConst.CMD_ECGQuality:\n return ResolveUtil.eCGQuality(value);\n case DeviceConst.CMD_ECGDATA:\n case DeviceConst.CMD_PPGGDATA:\n break;\n case DeviceConst.Weather:\n return ResolveUtil.setMethodSuccessful(BleConst.Weather);\n case DeviceConst.Braceletdial:\n return ResolveUtil.braceletdial(false, value); // isRunning 暂设为 false\n case DeviceConst.SportMode:\n return ResolveUtil.setMethodSuccessful(BleConst.SportMode);\n case DeviceConst.GetSportMode:\n return ResolveUtil.getSportMode(value);\n case DeviceConst.MeasurementWithType:\n return ResolveUtil.measurementWithType(true, value); // StartDeviceMeasurementWithType 设为 true\n case DeviceConst.GPSControlCommand:\n return ResolveUtil.gPSControlCommand(value);\n case DeviceConst.CMD_Get_GPSDATA:\n return ResolveUtil.getHistoryGpsData(value);\n case DeviceConst.Clear_Bracelet_data:\n return ResolveUtil.setMethodSuccessful(BleConst.Clear_Bracelet_data);\n case DeviceConst.CMD_Get_Auto_Blood_oxygen:\n return ResolveUtil.getAutoBloodOxygen(value);\n case DeviceConst.CMD_Get_Blood_oxygen:\n return ResolveUtil.getBloodoxygen(value);\n case DeviceConst.CMD_SET_SOCIAL:\n return ResolveUtil.setMethodSuccessful(BleConst.SocialdistanceSetting);\n case DeviceConst.Sos:\n return ResolveUtil.setMethodSuccessful(BleConst.Sos);\n case DeviceConst.Temperature_history:\n return ResolveUtil.getTempData(value);\n case DeviceConst.GetAxillaryTemperatureDataWithMode:\n return ResolveUtil.getTempDataer(value);\n case DeviceConst.CMD_QrCode:\n return ResolveUtil.getQrCode(value, false);\n case DeviceConst.CMD_GET_BLOODSUGAR:\n return ResolveUtil.setBoolSugarStatus(value);\n case DeviceConst.CMD_GET_BLOODSUGAR_DATA:\n return ResolveUtil.setBoolSugarValue(value);\n case DeviceConst.GetEcgPpgStatus:\n return ResolveUtil.ECGResult(value);\n case DeviceConst.PregnancyCycle:\n return ResolveUtil.readPregnancyCycle(value);\n case DeviceConst.GetEcgSaveData:\n return ResolveUtil.getEcgHistoryData(value);\n case DeviceConst.Openecg:\n if (value.length >= 16) {\n return ResolveUtil.ecgData(value);\n } else {\n return ResolveUtil.setMethodSuccessful(BleConst.ECG);\n }\n case DeviceConst.WomenHealth:\n if (value[1] === 0) {\n return ResolveUtil.setMethodSuccessful(BleConst.SetWomenHealth);\n } else {\n return ResolveUtil.readWomenHealth(value);\n }\n case DeviceConst.Closeecg:\n return ResolveUtil.setMethodSuccessful(BleConst.CloseECG);\n case DeviceConst.BloodsugarWithMode:\n const ppi2 = this.hexByte2Int(value[2], 0);\n switch (ppi2) {\n case 1:\n return ResolveUtil.setMethodSuccessful(BleConst.ppgStartSucessed);\n case 2:\n return ResolveUtil.setMethodSuccessful(BleConst.ppgResult);\n case 3:\n return ResolveUtil.setMethodSuccessful(BleConst.ppgStop);\n case 4:\n return ResolveUtil.setMethodSuccessful(BleConst.ppgMeasurementProgress);\n case 5:\n return ResolveUtil.setMethodSuccessful(BleConst.ppgQuit);\n default:\n return ResolveUtil.setMethodSuccessful(BleConst.ppgStartFailed);\n }\n case DeviceConst.CMD_Get_PPITestData:\n return ResolveUtil.getPPITestData(value);\n case DeviceConst.CMD_SETTING_HRV_TIME:\n return ResolveUtil.getHrvTimeData(value);\n case DeviceConst.CMD_CLOSE_DEVICE:\n return ResolveUtil.closeDevices(value);\n case DeviceConst.CMD_AUTO_CHECK_STATUS:\n return ResolveUtil.getOffCheckStatus(value);\n }\n\n return ResolveUtil.setMethodError(this.getBcdValue(value[0]).toString());\n }\n ///血糖\n static bloodsugarWithMode(ppgMode: number, ppgStatus: number): number[] {\n const value = this.generateInitValue();\n value[0] = DeviceConst.BloodsugarWithMode;\n value[1] = ppgMode;\n if (ppgMode === 2 || ppgMode === 4) {\n value[2] = ppgStatus;\n }\n this.crcValue(value);\n return value;\n }\n\n static openECGPPG(level: number, time: number): number[] {\n this.ecgopen = level !== 0;\n const value = this.generateInitValue();\n value[0] = DeviceConst.Openecg;\n value[1] = level;\n value[3] = (time) & 0xff;\n value[4] = (time >> 8) & 0xff;\n this.crcValue(value);\n return value;\n }\n\n static stopEcgPPg(): number[] {\n const value = this.generateInitValue();\n value[0] = DeviceConst.Closeecg;\n this.crcValue(value);\n return value;\n }\n ///获得睡眠详细数据\n ///mode : 0-读最近的睡眠详细数据 2-继续上次读的位置下一段数据 99-删除睡眠数据\n ///Obtain detailed sleep data\n ///mode : 0-Read the latest sleep detailed data 2-Continue with the next data segment at the last read location 99-Delete sleep data\n static getDetailSleepDataWithMode(mode: number): number[] {\n const value = this.generateInitValue();\n value[0] = DeviceConst.CMD_Get_SleepData;\n value[1] = mode === 99 ? 0x99 : mode;\n this.crcValue(value);\n return value;\n }\n\n private static insertDateValue(list: number[], time: string): void {\n if (!time || time.length <= 0) return;\n\n const [datePart, timePart] = time.split(' ');\n const [year, month, day] = datePart.split('-').map(Number);\n const [hour, minute, second] = timePart.split(':').map(Number);\n\n list[4] = this.getBcdValue(year - 2000);\n list[5] = this.getBcdValue(month);\n list[6] = this.getBcdValue(day);\n list[7] = this.getBcdValue(hour);\n list[8] = this.getBcdValue(minute);\n list[9] = this.getBcdValue(second);\n }\n\n ///获得HRV测试数据\n ///mode : 0-读最近的详细数据 2-继续上次读的位置下一段数据 99-删除数据 time: yyyy-MM-dd HH:mm:ss\n ///Get HRV test data\n ///mode : 0-Read the latest detailed data 2-Continue with the next data segment at the last read location 99-Delete data time: yyyy-MM-dd HH:mm:ss\n static getHRVDataWithMode(mode: number, time: string): number[] {\n const value = this.generateInitValue(); // 初始化 buffer\n value[0] = DeviceConst.CMD_Get_HrvTestData;\n if (mode === 99) {\n value[1] = 0x99;\n } else if (mode === 0) {\n value[1] = 0x00;\n } else if (mode === 1) {\n value[1] = 0x01;\n } else {\n value[1] = 0x02;\n }\n this.insertDateValue(value, time);\n this.crcValue(value);\n return value;\n }\n\n ///获取PPI测试数据\n static getPPIDDataWithMode(mode: number): number[] {\n const value = this.generateInitValue(); // 初始化 buffer\n value[0] = DeviceConst.CMD_Get_PPITestData;\n if (mode === 99) {\n value[1] = 0x99;\n } else if (mode === 0) {\n value[1] = 0x00;\n } else if (mode === 1) {\n value[1] = 0x01;\n } else {\n value[1] = 0x02;\n }\n this.crcValue(value);\n return value;\n }\n\n ///获取Hrv测量时长\n static getHrvTestTime(): number[] {\n const value = this.generateInitValue();\n value[0] = DeviceConst.CMD_SETTING_HRV_TIME;\n value[1] = 0x00;\n this.crcValue(value);\n return value;\n }\n\n /// 设置Hrv测试时长\n static setHrvTestTime(time: number): number[] {\n const value = this.generateInitValue();\n value[0] = DeviceConst.CMD_SETTING_HRV_TIME;\n value[1] = 0x01;\n value[2] = time;\n this.crcValue(value);\n return value;\n }\n\n //断开蓝牙\n static closeBlueDevice(): number[] {\n const value = this.generateInitValue();\n value[0] = DeviceConst.CMD_CLOSE_DEVICE;\n this.crcValue(value);\n return value;\n }\n\n ///血糖开始测量\n ///Start measuring blood sugar\n static startBloodSugar(): number[] {\n const value = this.generateInitValue();\n value[0] = DeviceConst.CMD_GET_BLOODSUGAR;\n value[1] = 0x01;\n this.crcValue(value);\n return value;\n }\n\n ///血糖进度设置\n ///Blood glucose progress setting\n static progressBloodSugar(progress: number): number[] {\n const value = this.generateInitValue();\n value[0] = DeviceConst.CMD_GET_BLOODSUGAR;\n value[1] = 0x04;\n value[2] = progress;\n this.crcValue(value);\n return value;\n }\n\n ///结束测量血糖\n ///End measuring blood glucose\n static endBloodSugar(): number[] {\n const value = this.generateInitValue();\n value[0] = DeviceConst.CMD_GET_BLOODSUGAR;\n value[1] = 0x03;\n this.crcValue(value);\n return value;\n }\n\n ///获取某天总数据\n ///0:表⽰是从最新的位置开始读取(最多50组数据) 2:表⽰接着读取(当数据总数⼤于50的时候) 0x99:表⽰删除所有运动数据\n ///Obtain total data for a certain day\n ///0: Table 1 starts reading from the latest position (up to 50 sets of data) 2: Table 2 continues reading (when the total number of data exceeds 50) 0x99: Table 1 deletes all motion data\n static getTotalActivityDataWithMode(mode: number): number[] {\n const value = this.generateInitValue(); // 初始化 buffer\n value[0] = DeviceConst.CMD_Get_TotalData;\n if (mode === 99) {\n value[1] = 0x99;\n } else if (mode === 0) {\n value[1] = 0x00;\n } else if (mode === 1) {\n value[1] = 0x01;\n } else {\n value[1] = 0x02;\n }\n this.crcValue(value);\n return value;\n }\n\n ///根据某个日期获取到最新的总数据\n ///mode: 0-表⽰是从最新的位置开始读取(最多50组数据) 2-表⽰接着读取(当数据总数⼤于50的时候) 99-表⽰删除所有运动数据\n ///time: yyyy-MM-dd HH:mm:ss\n ///Obtain the latest total data based on a certain date\n ///mode: 0-Table 1 starts reading from the latest position (up to 50 sets of data) 2-Table 2 continues reading (when the total number of data exceeds 50) 99-Table 1 deletes all motion data\n ///time: yyyy-MM-dd HH:mm:ss\n static getTotalActivityDataWithModeForTime(mode: number, time: string): number[] {\n const value = this.generateInitValue(); // 初始化 buffer\n value[0] = DeviceConst.CMD_Get_TotalData;\n if (mode === 99) {\n value[1] = 0x99;\n } else if (mode === 0) {\n value[1] = 0x00;\n } else if (mode === 1) {\n value[1] = 0x01;\n } else {\n value[1] = 0x02;\n }\n this.insertDateValue(value, time);\n this.crcValue(value);\n return value;\n }\n ///获得睡眠详细数据\n ///mode : 0-读最近的睡眠详细数据 2-继续上次读的位置下一段数据 99-删除睡眠数据 time: yyyy-MM-dd HH:mm:ss\n ///Obtain detailed sleep data\n ///mode : 0-Read the latest sleep detailed data 2-Continue with the next data segment at the last read location 99-Delete sleep data time: yyyy-MM-dd HH:mm:ss\n static getDetailSleepDataWithModeForTime(mode: number, time: string): number[] {\n const value = this.generateInitValue();\n value[0] = DeviceConst.CMD_Get_SleepData;\n value[1] = mode === 99 ? 0x99 : mode;\n this.insertDateValue(value, time);\n this.crcValue(value);\n return value;\n }\n\n ///获得步数详细数据\n ///mode : 0-读最近的详细数据 2-继续上次读的位置下一段数据 99-删除数据\n ///Obtain detailed step count data\n ///mode : 0-Read the latest detailed data 2-Continue with the next data segment at the last read location 99-Delete data\n static getDetailActivityDataWithModeForTime(mode: number, time: string): number[] {\n const value = this.generateInitValue();\n value[0] = DeviceConst.CMD_Get_DetailData;\n value[1] = mode === 99 ? 0x99 : mode;\n this.insertDateValue(value, time);\n this.crcValue(value);\n return value;\n }\n\n ///自动测试温度数据\n ///mode : 0-读最近的详细数据 2-继续上次读的位置下一段数据 99-删除数据 time : yyyy-MM-dd HH:mm:ss\n ///Automatic testing of temperature data\n ///mode : 0-Read the latest detailed data 2-Continue with the next data segment at the last read location 99-Delete data time : yyyy-MM-dd HH:mm:ss\n static getTemperature_historyDataWithMode(mode: number, time: string): number[] {\n const value = this.generateInitValue();\n value[0] = DeviceConst.Temperature_history;\n value[1] = mode === 99 ? 0x99 : mode;\n this.insertDateValue(value, time);\n this.crcValue(value);\n return value;\n }\n\n ///手动测试温度数据\n ///mode : 0-读最近的详细数据 2-继续上次读的位置下一段数据 99-删除数据 time: yyyy-MM-dd HH:mm:ss\n ///Manual testing of temperature data\n ///mode : 0-Read the latest detailed data 2-Continue with the next data segment at the last read location 99-Delete data time: yyyy-MM-dd HH:mm:ss\n static getAxillaryTemperatureDataWithMode(mode: number, time: string): number[] {\n const value = this.generateInitValue();\n value[0] = DeviceConst.GetAxillaryTemperatureDataWithMode;\n if (mode === 99) {\n value[1] = 0x99;\n } else if (mode === 0) {\n value[1] = 0x00;\n } else if (mode === 1) {\n value[1] = 0x01;\n } else {\n value[1] = 0x02;\n }\n this.insertDateValue(value, time);\n this.crcValue(value);\n return value;\n }\n\n ///运动模式开关\n ///Sport mode switch\n static enterActivityMode(activityMode: number, WorkMode: number): number[] {\n const value = this.generateInitValue();\n value[0] = DeviceConst.CMD_Start_EXERCISE;\n value[1] = WorkMode;\n value[2] = activityMode;\n this.crcValue(value);\n return value;\n }\n\n ///发送运动模式心跳包(配合\"EnterActivityMode\"使用)\n ///当手环是通过APP进入多运动模式后,APP必须每隔1秒发送一个数据给手环,否则手环会退出多运动模式\n ///Send a sports mode heartbeat packet (used in conjunction with 'EnterActivityMode')\n ///When the bracelet enters multi sport mode through the APP, the APP must send data to the bracelet every 1 second, otherwise the bracelet will exit multi sport mode\n static sendHeartPackage(distance: number, space: number, rssi: number): number[] {\n // 1. 初始化数据包(8 字节 + 1 字节 CRC => 总共 9 字节?根据协议可调)\n const value = this.generateInitValue(); // 返回长度为 8 或 9 的数组\n\n // 2. 拆分 space 为 分钟 和 秒\n const min = Math.floor(space / 60) & 0xff;\n const second = (space % 60) & 0xff;\n\n // 3. 使用 DataView 写入 float32(小端序)\n const buffer = new ArrayBuffer(4);\n const dataView = new DataView(buffer);\n dataView.setFloat32(0, distance, true); // true = little endian\n\n const distanceBytes = Array.from(new Uint8Array(buffer)); // 转为 [b0, b1, b2, b3]\n\n // 4. 组装数据包\n value[0] = DeviceConst.CMD_heart_package;\n this.arrayCopy(distanceBytes, 0, value, 1, distanceBytes.length);\n // 将 distanceBytes 复制到 value 的索引 1~4\n // distanceBytes.forEach((byte, i) => {\n // value[1 + i] = byte;\n // });\n value[5] = min;\n value[6] = second;\n value[7] = rssi & 0xff; // 确保是 1 字节\n\n this.crcValue(value);\n return value;\n }\n\n ///开始实时计步\n ///Start real time step\n static RealTimeStep(enable: boolean, tempEnable: boolean): number[] {\n const value = this.generateInitValue();\n value[0] = DeviceConst.CMD_Enable_Activity;\n value[1] = enable ? 1 : 0;\n value[2] = tempEnable ? 1 : 0;\n this.crcValue(value);\n return value;\n }\n ///停止实时计步\n ///Stop real-time step counting\n static stopGo(): number[] {\n const value = this.generateInitValue();\n value[0] = DeviceConst.CMD_Enable_Activity;\n value[1] = 0;\n this.crcValue(value);\n return value;\n }\n ///设置个人信息\n ///Set user profile\n static setPersonalInfo(info: MyPersonalInfo): number[] {\n const value = this.generateInitValue();\n value[0] = DeviceConst.CMD_Set_UseInfo;\n value[1] = info.sex;\n value[2] = info.age;\n value[3] = info.height;\n value[4] = info.weight;\n if (info.stepLength) {\n value[5] = info.stepLength;\n }\n this.crcValue(value);\n return value;\n }\n ///获取个人信息\n ///Get user's personal information\n static getPersonalInfo(): number[] {\n const value = this.generateInitValue(); // 初始化 buffer\n value[0] = DeviceConst.CMD_GET_USERINFO;\n this.crcValue(value);\n return value;\n }\n\n ///进入dfu模式\n ///Entering dfu mode\n static enterOTA(): number[] {\n const value = this.generateInitValue();\n value[0] = DeviceConst.CMD_Start_Ota;\n this.crcValue(value);\n return value;\n }\n\n ///获取设备版本号\n ///Read software version number\n static getDeviceVersion(): number[] {\n const value = this.generateInitValue();\n value[0] = DeviceConst.CMD_Get_Version;\n this.crcValue(value);\n return value;\n }\n\n ///恢复出厂设置\n ///Restore factory settings\n static reset(): number[] {\n const value = this.generateInitValue();\n value[0] = DeviceConst.CMD_Reset;\n this.crcValue(value);\n return value;\n }\n\n ///获取设备mac地址\n ///Read MAC address\n static getDeviceMacAddress(): number[] {\n const value = this.generateInitValue();\n value[0] = DeviceConst.CMD_Get_Address;\n this.crcValue(value);\n return value;\n }\n\n ///获取设备电量\n ///Read device power\n static getDeviceBatteryLevel(): number[] {\n const value = this.generateInitValue();\n value[0] = DeviceConst.CMD_Get_BatteryLevel;\n this.crcValue(value);\n return value;\n }\n\n ///重启设备\n ///MCU soft reset command\n static MCUReset(): number[] {\n const value = this.generateInitValue();\n value[0] = DeviceConst.CMD_Mcu_Reset;\n this.crcValue(value);\n return value;\n }\n\n /**\n * 设置设备名称\n * @param deviceName 设备名称(最多14个ASCII字符)\n * @returns Uint8Array 指令包(7字节)\n */\n static setDeviceName(deviceName: string): number[] {\n const value = this.generateInitValue(); // 初始化7字节数组\n const maxLength = 14;\n const length = Math.min(deviceName.length, maxLength);\n\n value[0] = DeviceConst.CMD_Set_Name;\n\n // 写入设备名称(ASCII 编码)\n for (let i = 0; i < length; i++) {\n value[i + 1] = deviceName.charCodeAt(i); // 相当于 Dart 的 codeUnitAt(i)\n }\n\n // 填充剩余字节为 0(可选,保持干净)\n for (let i = length + 1; i < 6; i++) {\n value[i] = 0;\n }\n\n // 计算 CRC 并写入最后一个字节\n this.crcValue(value);\n\n return value;\n }\n /**\n * 获取设备名称\n * @returns Uint8Array 指令包(7字节)\n */\n static getDeviceName(): number[] {\n const value = this.generateInitValue();\n\n value[0] = DeviceConst.CMD_Get_Name;\n\n // 其余字节保持为 0\n for (let i = 1; i < 6; i++) {\n value[i] = 0;\n }\n\n // 计算 CRC\n this.crcValue(value);\n\n return value\n }\n ///设置设备时间\n ///Set Device Time\n static setDeviceTime(dateTime: Date): number[] {\n const value = this.generateInitValue();\n const year = dateTime.getFullYear();\n const month = dateTime.getMonth() + 1;\n const day = dateTime.getDate();\n const hour = dateTime.getHours();\n const minute = dateTime.getMinutes();\n const second = dateTime.getSeconds();\n\n value[0] = DeviceConst.CMD_SET_TIME;\n value[1] = this.getBcdValue(year);\n value[2] = this.getBcdValue(month);\n value[3] = this.getBcdValue(day);\n value[4] = this.getBcdValue(hour);\n value[5] = this.getBcdValue(minute);\n value[6] = this.getBcdValue(second);\n this.crcValue(value);\n return value;\n }\n\n ///获取设备时间\n ///Get device time\n static getDeviceTime(): number[] {\n const value = this.generateInitValue();\n value[0] = DeviceConst.CMD_GET_TIME;\n this.crcValue(value);\n return value;\n }\n\n ///设置设备信息\n ///Set basic parameters of Bracelet\n static setDeviceInfo(deviceBaseParameter: MyDeviceInfo): number[] {\n const value = this.generateInitValue();\n value[0] = DeviceConst.CMD_Set_DeviceInfo;\n value[1] = deviceBaseParameter.DistanceUnit ? 0x81 : 0x80;\n value[2] = deviceBaseParameter.is12Hour ? 0x81 : 0x80;\n value[3] = deviceBaseParameter.Hand_up_light_screen_switch ? 0x81 : 0x80;\n value[4] = !deviceBaseParameter.Fahrenheit ? 0x81 : 0x80;\n value[5] = deviceBaseParameter.Nightmode ? 0x81 : 0x80;\n value[6] = 0x80;\n value[9] = 0x80 + deviceBaseParameter.baseheart;\n value[11] = 0x80 + deviceBaseParameter.screenBrightness;\n value[12] = 0x80 + deviceBaseParameter.indexDial;\n value[14] = 0x80 + deviceBaseParameter.languages;\n this.crcValue(value);\n return value;\n }\n\n ///健康测量控制\n ///Health measurement control\n static healthMeasurementWithDataType(dataType: number, open: boolean): number[] {\n this.StartDeviceMeasurementWithType = open;\n const value = this.generateInitValue();\n value[0] = DeviceConst.MeasurementWithType;\n value[1] = dataType;\n value[2] = open ? 0x01 : 0x00;\n this.crcValue(value);\n return value;\n }\n\n /**\n * 设置手环表盘模式\n * @param mode 表盘模式(0, 1, 2... 根据设备定义)\n * @returns Uint8Array 指令包(7字节)\n */\n static setBraceletdial(mode: number): number[] {\n // 设置运行状态(可选,用于控制流程)\n this.isRuning = true;\n\n const value = this.generateInitValue(); // 初始化 7 字节数组\n\n value[0] = DeviceConst.Braceletdial; // 命令字\n value[1] = mode; // 模式值\n this.crcValue(value);\n return value;\n }\n\n ///设置自动检测心率时段\n ///Set automatic heart rate detection period\n static setAutomaticHRMonitoring(autoHeart: MyAutomaticHRMonitoring): number[] {\n const value = this.generateInitValue();\n const time = autoHeart.time;\n value[0] = DeviceConst.CMD_Set_AutoHeart;\n value[1] = autoHeart.open;\n value[2] = this.getBcdValue(autoHeart.startHour);\n value[3] = this.getBcdValue(autoHeart.startMinute);\n value[4] = this.getBcdValue(autoHeart.endHour);\n value[5] = this.getBcdValue(autoHeart.endMinute);\n value[6] = autoHeart.week;\n value[7] = (time & 0xff);\n value[8] = ((time >> 8) & 0xff);\n value[9] = autoHeart.type;\n this.crcValue(value);\n return value;\n }\n\n ///读取自动检测心率时段\n ///1 心率 2 血氧 3 温度 4 HRV\n ///Read auto detect heart rate period\n ///1 Heart rate 2 Blood oxygen 3 Temperature 4 HRV\n static getAutomaticHRMonitoring(type: number): number[] {\n const value = this.generateInitValue();\n value[0] = DeviceConst.CMD_Get_AutoHeart;\n value[1] = type;\n this.crcValue(value);\n return value;\n }\n\n ///获取多模式运动数据\n ///mode 0:表⽰是从最新的位置开始读取(最多50组数据) 2:表⽰接着读取(当数据总数⼤于50的时候) 0x99:表⽰删除所有GPS数据\n ///Obtain multimodal motion data\n ///Mode 0: Table 1 starts reading from the latest position (up to 50 sets of data) 2: Table 2 continues reading (when the total number of data exceeds 50) 0x99: Table 1 deletes all GPS data\n static getActivityModeDataWithMode(mode: number): number[] {\n const value = this.generateInitValue();\n value[0] = DeviceConst.CMD_Get_SPORTData;\n value[1] = mode;\n this.crcValue(value);\n return value;\n }\n\n ///获得单次心率数据(间隔测试心率)\n ///mode : 0-读最近的详细数据 2-继续上次读的位置下一段数据 99-删除数据 time: yyyy-MM-dd HH:mm:ss\n ///Obtain single heart rate data (interval test heart rate)\n ///mode : 0-Read the latest detailed data 2-Continue with the next data segment at the last read location 99-Delete data time: yyyy-MM-dd HH:mm:ss\n static getStaticHRWithMode(mode: number, time: string): number[] {\n const value = this.generateInitValue();\n value[0] = DeviceConst.CMD_Get_OnceHeartData;\n value[1] = mode;\n this.insertDateValue(value, time);\n this.crcValue(value);\n return value;\n }\n\n ///获得心率数据\n ///mode : 0-读最近的详细数据 2-继续上次读的位置下一段数据 99-删除数据 time: yyyy-MM-dd HH:mm:ss\n ///Get heart rate data\n ///mode : 0-Read the latest detailed data 2-Continue with the next data segment at the last read location 99-Delete data time: yyyy-MM-dd HH:mm:ss\n static getDynamicHRWithMode(mode: number, time: string): number[] {\n const value = this.generateInitValue();\n value[0] = DeviceConst.CMD_Get_HeartData;\n value[1] = mode;\n this.insertDateValue(value, time);\n this.crcValue(value);\n return value;\n }\n\n ///获得血氧数据\n ///mode : 0-读最近的详细数据 2-继续上次读的位置下一段数据 99-删除数据 time: yyyy-MM-dd HH:mm:ss\n ///Get blood oxygen data\n ///mode : 0-Read the latest detailed data 2-Continue with the next data segment at the last read location 99-Delete data time: yyyy-MM-dd HH:mm:ss\n static getBloodOxygen(mode: number, time: string): number[] {\n const value = this.generateInitValue();\n value[0] = DeviceConst.CMD_Get_Blood_oxygen;\n value[1] = mode;\n this.insertDateValue(value, time);\n this.crcValue(value);\n return value;\n }\n\n ///获得血氧数据(自动测试)\n ///mode : 0-读最近的详细数据 2-继续上次读的位置下一段数据 99-删除数据 time: yyyy-MM-dd HH:mm:ss\n ///Obtain blood oxygen data (automatic testing)\n ///mode : 0-Read the latest detailed data 2-Continue with the next data segment at the last read location 99-Delete data time: yyyy-MM-dd HH:mm:ss\n static getAutoBloodOxygen(mode: number, time: string): number[] {\n const value = this.generateInitValue();\n value[0] = DeviceConst.CMD_Get_Auto_Blood_oxygen;\n value[1] = mode;\n this.insertDateValue(value, time);\n this.crcValue(value);\n return value;\n }\n /**\n * 设置目标步数指令\n * @param stepGoal 步数目标 (int, 4 bytes, Big-Endian)\n * @param targetExecutionTime 目标完成时间(分钟)(int, 2 bytes)\n * @param distance 距离目标(千米)(int, 2 bytes)\n * @param calorie 卡路里目标 (int, 2 bytes)\n * @param sleepTime 睡眠时间目标(分钟)(int, 2 bytes)\n * @returns number[] 指令字节数组(16字节,含CRC)\n */\n static setStepGoal(\n stepGoal: number,\n targetExecutionTime: number,\n distance: number,\n calorie: number,\n sleepTime: number\n ): number[] {\n // 1. 初始化 16 字节数组,填充 0\n const value = this.generateInitValue();\n\n value[0] = DeviceConst.CMD_Set_Goal;;\n\n // 3. 写入 stepGoal (4 bytes, Big-Endian: 高位在后)\n value[4] = (stepGoal >> 24) & 0xff;\n value[3] = (stepGoal >> 16) & 0xff;\n value[2] = (stepGoal >> 8) & 0xff;\n value[1] = stepGoal & 0xff;\n\n // 4. 写入 targetExecutionTime (2 bytes, Big-Endian)\n value[6] = (targetExecutionTime >> 8) & 0xff;\n value[5] = targetExecutionTime & 0xff;\n\n // 5. 写入 distance (2 bytes, Big-Endian)\n value[8] = (distance >> 8) & 0xff;\n value[7] = distance & 0xff;\n\n // 6. 写入 calorie (2 bytes, Big-Endian)\n value[10] = (calorie >> 8) & 0xff;\n value[9] = calorie & 0xff;\n\n // 7. 写入 sleepTime (2 bytes, Big-Endian)\n value[12] = (sleepTime >> 8) & 0xff;\n value[11] = sleepTime & 0xff;\n this.crcValue(value);\n return value;\n }\n\n ///读取目标步数\n ///Read target steps\n static GetStepGoal(): number[] {\n const value = this.generateInitValue();\n value[0] = DeviceConst.CMD_Get_Goal;\n this.crcValue(value);\n return value;\n }\n\n /**\n * 获取手环基本参数(设备信息)\n * @returns Uint8Array 指令包(7字节),用于发送 BLE 请求\n */\n static getDeviceInfo(): number[] {\n const value = this.generateInitValue();\n value[0] = DeviceConst.CMD_Get_DeviceInfo; // 设置命令字\n this.crcValue(value);\n return value;\n }\n\n static sendHex(data: number[], isCrc: boolean): number[] {\n const current = [...data];\n if (isCrc) {\n this.crcDynamicValue(current);\n }\n return current;\n }\n //获取闹钟\n static getAlarmClock(): number[] {\n const value = this.generateInitValue();\n value[0] = DeviceConst.CMD_Get_Clock;\n this.crcValue(value);\n return value;\n }\n\n // 删除所有闹钟\n static deleteAllAlarmClock(): number[] {\n const value = this.generateInitValue();\n value[0] = DeviceConst.CMD_Get_Clock;\n value[1] = 0x99;\n this.crcValue(value);\n return value;\n }\n\n // 设置所有闹钟\n static setAlarmClock(arrayClockAlarm: any[]): number[][] {\n const result: number[][] = [];\n const LENGTH_UNIT = 39;\n const MAX_SEND_BYTES = 128;\n const totalCount = arrayClockAlarm.length * LENGTH_UNIT + 2;\n\n if (totalCount > MAX_SEND_BYTES) {\n // 超过一次发送的长度,需要分包\n const canSendCount = Math.floor(MAX_SEND_BYTES / LENGTH_UNIT);\n const needSendCount = Math.ceil(arrayClockAlarm.length / canSendCount);\n\n for (let i = 0; i < needSendCount; i++) {\n const isLast = i === needSendCount - 1;\n const countInThisPacket = isLast ? arrayClockAlarm.length - canSendCount * i : canSendCount;\n const buffer = new Array(countInThisPacket * LENGTH_UNIT + (isLast ? 2 : 0)).fill(0);\n\n for (let m = 0; m < countInThisPacket; m++) {\n const dicClock = arrayClockAlarm[canSendCount * i + m];\n const { openOrClose, clockType, clockTime, week, textLength, text } = dicClock;\n\n const offset = m * LENGTH_UNIT;\n buffer[offset] = 0x23;\n buffer[offset + 1] = arrayClockAlarm.length;\n buffer[offset + 2] = canSendCount * i + m;\n buffer[offset + 3] = openOrClose;\n buffer[offset + 4] = clockType;\n buffer[offset + 5] = this.getBcdValue(clockTime.substring(0, 2));\n buffer[offset + 6] = this.getBcdValue(clockTime.substring(3, 5));\n buffer[offset + 7] = week;\n buffer[offset + 8] = textLength;\n\n for (let j = 0; j < textLength; j++) {\n buffer[offset + 9 + j] = text.charCodeAt(j) || 0;\n }\n }\n\n if (isLast) {\n buffer[buffer.length - 2] = 0x23;\n buffer[buffer.length - 1] = 0xff;\n }\n result.push(buffer);\n }\n } else {\n const buffer = new Array(totalCount).fill(0);\n arrayClockAlarm.forEach((dicClock, i) => {\n const { openOrClose, clockType, clockTime, week, textLength, text } = dicClock;\n const offset = i * LENGTH_UNIT;\n buffer[offset] = 0x23;\n buffer[offset + 1] = arrayClockAlarm.length;\n buffer[offset + 2] = i;\n buffer[offset + 3] = openOrClose;\n buffer[offset + 4] = clockType;\n buffer[offset + 5] = this.getBcdValue(clockTime.substring(0, 2));\n buffer[offset + 6] = this.getBcdValue(clockTime.substring(3, 5));\n buffer[offset + 7] = week;\n buffer[offset + 8] = textLength;\n\n for (let j = 0; j < textLength; j++) {\n buffer[offset + 9 + j] = text.charCodeAt(j) || 0;\n }\n });\n buffer[totalCount - 2] = 0x23;\n buffer[totalCount - 1] = 0xff;\n result.push(buffer);\n }\n\n return result;\n }\n\n // 获取久坐提醒\n static getSedentaryReminder(): number[] {\n const value = this.generateInitValue();\n value[0] = DeviceConst.CMD_Get_ActivityAlarm;\n this.crcValue(value);\n return value;\n }\n\n // 设置久坐提醒\n static setSedentaryReminder(reminder: MySedentaryReminderV4): number[] {\n const value = this.generateInitValue();\n value[0] = DeviceConst.CMD_Set_ActivityAlarm;\n value[1] = this.getBcdValue(reminder.startTime_Hour);\n value[2] = this.getBcdValue(reminder.startTime_Minutes);\n value[3] = this.getBcdValue(reminder.endTime_Hour);\n value[4] = this.getBcdValue(reminder.endTime_Minutes);\n\n const week =\n (reminder.weeks.sunday ? 1 : 0) +\n (reminder.weeks.monday ? 2 : 0) +\n (reminder.weeks.Tuesday ? 4 : 0) +\n (reminder.weeks.Wednesday ? 8 : 0) +\n (reminder.weeks.Thursday ? 16 : 0) +\n (reminder.weeks.Friday ? 32 : 0) +\n (reminder.weeks.Saturday ? 64 : 0);\n\n value[5] = week;\n value[6] = reminder.intervalTime;\n value[7] = reminder.leastSteps;\n value[8] = reminder.mode;\n\n this.crcValue(value);\n return value;\n }\n}\n\nexport default BleSDK;"]}
|
|
1
|
+
{"version":3,"file":"bleSDK.js","sourceRoot":"","sources":["../../src/sdk/bleSDK.ts"],"names":[],"mappings":"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","sourcesContent":["// BleSDK.ts\nimport { MyPersonalInfo, MyDeviceInfo, MyAutomaticHRMonitoring, MySedentaryReminderV4 } from './models';\nimport { DeviceConst, BleConst } from './bleConst';\n\nimport { ResolveUtil } from './resolveUtil';\n\nexport class BleSDK {\n static DATA_READ_START = 0;\n static DATA_READ_CONTINUE = 2;\n static DATA_DELETE = 99;\n static DistanceMode_MILE = 0x81;\n static DistanceMode_KM = 0x80;\n static TimeMode_12h = 0x81;\n static TimeMode_24h = 0x80;\n static WristOn_Enable = 0x81;\n static WristOn_DisEnable = 0x80;\n static TempUnit_C = 0x80;\n static TempUnit_F = 0x81;\n static TAG = \"BleSDK\";\n static isRuning = false;\n static ecgopen = false;\n static read = false;\n static pregnancyCycleRead = false;\n static isSettingSocial = false;\n static StartDeviceMeasurementWithType = false;\n\n private static generateValue(size: number): number[] {\n return new Array(size).fill(0);\n }\n\n private static hexByte2Int(b: number, count: number): number {\n return (b & 0xff) * Math.pow(256, count);\n }\n\n private static generateInitValue(): number[] {\n return this.generateValue(16);\n }\n\n private static arrayCopy(\n source: number[],\n srcPos: number,\n dest: number[],\n destPos: number,\n length: number\n ): void {\n for (let i = 0; i < length; i++) {\n dest[destPos + i] = source[srcPos + i];\n }\n }\n\n private static crcValue(list: number[]): void {\n let crcValue = 0;\n for (const value of list) {\n crcValue += value;\n }\n list[15] = crcValue & 0xff;\n }\n\n private static crcDynamicValue(list: number[]): void {\n let crcValue = 0;\n for (const value of list) {\n crcValue += value;\n }\n list[list.length - 1] = crcValue & 0xff;\n }\n\n private static getBcdValue(value: number): number {\n return Math.floor(value / 10) * 16 + (value % 10);\n }\n /**\n * 数据解析方法\n * @param 蓝牙返回原始数据\n * @returns 解析后的数据\n */\n static dataParsingWithData(value: number[]): { [key: string]: any } {\n if (!value || value.length === 0) {\n return ResolveUtil.setMethodError('Empty data');\n }\n\n const cmd = value[0];\n\n switch (cmd) {\n case DeviceConst.CMD_Set_Goal:\n return ResolveUtil.setMethodSuccessful(BleConst.SetStepGoal);\n case DeviceConst.CMD_Set_UseInfo:\n return ResolveUtil.setMethodSuccessful(BleConst.SetPersonalInfo);\n case DeviceConst.CMD_Set_Name:\n break;\n case DeviceConst.CMD_Set_MOT_SIGN:\n return ResolveUtil.setMethodSuccessful(BleConst.SetMotorVibrationWithTimes);\n case DeviceConst.CMD_Set_DeviceInfo:\n return ResolveUtil.setMethodSuccessful(BleConst.SetDeviceInfo);\n case DeviceConst.CMD_Set_AutoHeart:\n return ResolveUtil.setMethodSuccessful(BleConst.SetAutomaticHRMonitoring);\n case DeviceConst.CMD_Set_ActivityAlarm://设置 久坐提醒\n return ResolveUtil.setMethodSuccessful(BleConst.SetSedentaryReminder);\n case DeviceConst.CMD_Set_DeviceID:\n return ResolveUtil.setMacSuccessful();\n case DeviceConst.CMD_Start_EXERCISE:\n return ResolveUtil.setMethodSuccessful(BleConst.EnterActivityMode);\n case DeviceConst.CMD_Set_TemperatureCorrection:\n if (value[2] !== 0 && value[3] !== 0) {\n return ResolveUtil.getTemperatureCorrectionValue(value);\n } else {\n return ResolveUtil.setMethodSuccessful(BleConst.CMD_Set_TemperatureCorrection);\n }\n case DeviceConst.CMD_HeartPackageFromDevice:\n return ResolveUtil.getActivityExerciseData(value);\n case DeviceConst.CMD_SET_TIME:\n return ResolveUtil.setTimeSuccessful(value);\n case DeviceConst.CMD_Get_SPORTData:\n return ResolveUtil.getExerciseData(value);\n case DeviceConst.CMD_GET_TIME:\n return ResolveUtil.getDeviceTime(value);\n case DeviceConst.CMD_GET_USERINFO:\n return ResolveUtil.getUserInfo(value);\n case DeviceConst.CMD_Get_DeviceInfo:\n return ResolveUtil.getDeviceInfo(value);\n case DeviceConst.CMD_Enable_Activity:\n return ResolveUtil.getActivityData(value);\n case DeviceConst.CMD_Get_Goal:\n return ResolveUtil.getGoal(value);\n case DeviceConst.CMD_Get_BatteryLevel:\n return ResolveUtil.getDeviceBattery(value);\n case DeviceConst.CMD_Get_Address:\n return ResolveUtil.getDeviceAddress(value);\n case DeviceConst.CMD_Get_Version:\n return ResolveUtil.getDeviceVersion(value);\n case DeviceConst.CMD_Get_Name:\n return ResolveUtil.getDeviceName(value);\n case DeviceConst.CMD_Get_AutoHeart:\n return ResolveUtil.getAutoHeart(value);\n case DeviceConst.CMD_Reset:\n return ResolveUtil.Reset();\n case DeviceConst.CMD_Mcu_Reset:\n return ResolveUtil.MCUReset();\n case DeviceConst.CMD_Notify:\n return ResolveUtil.Notify();\n case DeviceConst.CMD_Get_ActivityAlarm:\n return ResolveUtil.getActivityAlarm(value);\n case DeviceConst.CMD_Get_TotalData:\n return ResolveUtil.getTotalStepData(value);\n case DeviceConst.CMD_Get_DetailData:\n return ResolveUtil.getDetailData(value);\n case DeviceConst.CMD_Get_SleepData:\n return ResolveUtil.getSleepData(value);\n case DeviceConst.CMD_Get_HeartData:\n return ResolveUtil.getHeartData(value);\n case DeviceConst.CMD_Get_OnceHeartData:\n return ResolveUtil.getOnceHeartData(value);\n case DeviceConst.CMD_Get_HrvTestData:\n return ResolveUtil.getHrvTestData(value);\n case DeviceConst.CMD_Get_Clock://获取闹钟数据\n return ResolveUtil.getClockData(value);\n case DeviceConst.CMD_Set_Clock:\n return ResolveUtil.updateClockSuccessful(value);\n case DeviceConst.CMD_Set_NewDeviceInfo:\n return ResolveUtil.setNewDeviceInfo(value);\n case DeviceConst.CMD_Get_NewDeviceInfo:\n return ResolveUtil.getNewDeviceInfo(value);\n case DeviceConst.Enter_photo_modeback:\n return ResolveUtil.enterPhotoModeback(value);\n case DeviceConst.Enter_photo_mode:\n return ResolveUtil.setMethodSuccessful(BleConst.EnterPhotoMode);\n case DeviceConst.Exit_photo_mode:\n return ResolveUtil.setMethodSuccessful(BleConst.BackHomeView);\n case DeviceConst.CMD_ECGQuality:\n return ResolveUtil.eCGQuality(value);\n case DeviceConst.CMD_ECGDATA:\n case DeviceConst.CMD_PPGGDATA:\n break;\n case DeviceConst.Weather:\n return ResolveUtil.setMethodSuccessful(BleConst.Weather);\n case DeviceConst.Braceletdial:\n return ResolveUtil.braceletdial(false, value); // isRunning 暂设为 false\n case DeviceConst.SportMode:\n return ResolveUtil.setMethodSuccessful(BleConst.SportMode);\n case DeviceConst.GetSportMode:\n return ResolveUtil.getSportMode(value);\n case DeviceConst.MeasurementWithType:\n return ResolveUtil.measurementWithType(true, value); // StartDeviceMeasurementWithType 设为 true\n case DeviceConst.GPSControlCommand:\n return ResolveUtil.gPSControlCommand(value);\n case DeviceConst.CMD_Get_GPSDATA:\n return ResolveUtil.getHistoryGpsData(value);\n case DeviceConst.Clear_Bracelet_data:\n return ResolveUtil.setMethodSuccessful(BleConst.Clear_Bracelet_data);\n case DeviceConst.CMD_Get_Auto_Blood_oxygen:\n return ResolveUtil.getAutoBloodOxygen(value);\n case DeviceConst.CMD_Get_Blood_oxygen:\n return ResolveUtil.getBloodoxygen(value);\n case DeviceConst.CMD_SET_SOCIAL:\n return ResolveUtil.setMethodSuccessful(BleConst.SocialdistanceSetting);\n case DeviceConst.Sos:\n return ResolveUtil.setMethodSuccessful(BleConst.Sos);\n case DeviceConst.Temperature_history:\n return ResolveUtil.getTempData(value);\n case DeviceConst.GetAxillaryTemperatureDataWithMode:\n return ResolveUtil.getTempDataer(value);\n case DeviceConst.CMD_QrCode:\n return ResolveUtil.getQrCode(value, false);\n case DeviceConst.CMD_GET_BLOODSUGAR:\n return ResolveUtil.setBoolSugarStatus(value);\n case DeviceConst.CMD_GET_BLOODSUGAR_DATA:\n return ResolveUtil.setBoolSugarValue(value);\n case DeviceConst.GetEcgPpgStatus:\n return ResolveUtil.ecgResult(value);\n case DeviceConst.PregnancyCycle:\n return ResolveUtil.readPregnancyCycle(value);\n case DeviceConst.GetEcgSaveData:\n return ResolveUtil.getEcgHistoryData(value);\n case DeviceConst.WomenHealth:\n if (value[1] === 0) {\n return ResolveUtil.setMethodSuccessful(BleConst.SetWomenHealth);\n } else {\n return ResolveUtil.readWomenHealth(value);\n }\n case DeviceConst.BloodsugarWithMode:\n const ppi2 = this.hexByte2Int(value[2], 0);\n switch (ppi2) {\n case 1:\n return ResolveUtil.setMethodSuccessful(BleConst.ppgStartSucessed);\n case 2:\n return ResolveUtil.setMethodSuccessful(BleConst.ppgResult);\n case 3:\n return ResolveUtil.setMethodSuccessful(BleConst.ppgStop);\n case 4:\n return ResolveUtil.setMethodSuccessful(BleConst.ppgMeasurementProgress);\n case 5:\n return ResolveUtil.setMethodSuccessful(BleConst.ppgQuit);\n default:\n return ResolveUtil.setMethodSuccessful(BleConst.ppgStartFailed);\n }\n case DeviceConst.CMD_Get_PPITestData:\n return ResolveUtil.getPPITestData(value);\n case DeviceConst.CMD_SETTING_HRV_TIME:\n return ResolveUtil.getHrvTimeData(value);\n case DeviceConst.CMD_CLOSE_DEVICE:\n return ResolveUtil.closeDevices(value);\n case DeviceConst.CMD_AUTO_CHECK_STATUS:\n return ResolveUtil.getOffCheckStatus(value);\n }\n\n return ResolveUtil.setMethodError(this.getBcdValue(value[0]).toString());\n }\n /**\n * 血糖\n * @param ppgMode \n * @param ppgStatus \n * @returns \n */\n static bloodsugarWithMode(ppgMode: number, ppgStatus: number): number[] {\n const value = this.generateInitValue();\n value[0] = DeviceConst.BloodsugarWithMode;\n value[1] = ppgMode;\n if (ppgMode === 2 || ppgMode === 4) {\n value[2] = ppgStatus;\n }\n this.crcValue(value);\n return value;\n }\n\n /**\n *\n *获得睡眠详细数据\n * @param {number} mode 0-读最近的睡眠详细数据 2-继续上次读的位置下一段数据 99-删除睡眠数据\n * @return {*} {number[]} detailed sleep data\n */\n static getDetailSleepDataWithMode(mode: number): number[] {\n const value = this.generateInitValue();\n value[0] = DeviceConst.CMD_Get_SleepData;\n value[1] = mode === 99 ? 0x99 : mode;\n this.crcValue(value);\n return value;\n }\n\n private static insertDateValue(list: number[], time: string): void {\n if (!time || time.length <= 0) return;\n\n const [datePart, timePart] = time.split(' ');\n const [year, month, day] = datePart.split('-').map(Number);\n const [hour, minute, second] = timePart.split(':').map(Number);\n\n list[4] = this.getBcdValue(year - 2000);\n list[5] = this.getBcdValue(month);\n list[6] = this.getBcdValue(day);\n list[7] = this.getBcdValue(hour);\n list[8] = this.getBcdValue(minute);\n list[9] = this.getBcdValue(second);\n }\n\n /**\n *\n *获得HRV测试数据\n * @param {number} mode 0-读最近的详细数据 2-继续上次读的位置下一段数据 99-删除数据\n * @param {string} time yyyy-MM-dd HH:mm:ss\n * @return {*} {number[]} 指令包,给固件发生指令\n */\n static getHRVDataWithMode(mode: number, time: string): number[] {\n const value = this.generateInitValue(); // 初始化 buffer\n value[0] = DeviceConst.CMD_Get_HrvTestData;\n if (mode === 99) {\n value[1] = 0x99;\n } else if (mode === 0) {\n value[1] = 0x00;\n } else if (mode === 1) {\n value[1] = 0x01;\n } else {\n value[1] = 0x02;\n }\n this.insertDateValue(value, time);\n this.crcValue(value);\n return value;\n }\n\n /**\n *\n * ppi数据\n * @param {number} mode\n * @return {*} {number[]} 指令包,给固件发生指令\n */\n static getPPIDDataWithMode(mode: number): number[] {\n const value = this.generateInitValue(); // 初始化 buffer\n value[0] = DeviceConst.CMD_Get_PPITestData;\n if (mode === 99) {\n value[1] = 0x99;\n } else if (mode === 0) {\n value[1] = 0x00;\n } else if (mode === 1) {\n value[1] = 0x01;\n } else {\n value[1] = 0x02;\n }\n this.crcValue(value);\n return value;\n }\n\n \n /**\n *\n * hrv测试数据\n * @return {*} {number[]} 指令包,给固件发生指令\n */\n static getHrvTestTime(): number[] {\n const value = this.generateInitValue();\n value[0] = DeviceConst.CMD_SETTING_HRV_TIME;\n value[1] = 0x00;\n this.crcValue(value);\n return value;\n }\n\n /**\n *\n * 设置Hrv测试时长\n * @param {number} time\n * @return {*} {number[]} 指令包,给固件发生指令\n */\n static setHrvTestTime(time: number): number[] {\n const value = this.generateInitValue();\n value[0] = DeviceConst.CMD_SETTING_HRV_TIME;\n value[1] = 0x01;\n value[2] = time;\n this.crcValue(value);\n return value;\n }\n /**\n *\n * 断开蓝牙\n * @return {*} {number[]} 指令包,给固件发生指令\n */\n static closeBlueDevice(): number[] {\n const value = this.generateInitValue();\n value[0] = DeviceConst.CMD_CLOSE_DEVICE;\n this.crcValue(value);\n return value;\n }\n /**\n *\n * 血糖开始测量\n * @return {*} {number[]} 指令包,给固件发生指令\n */\n static startBloodSugar(): number[] {\n const value = this.generateInitValue();\n value[0] = DeviceConst.CMD_GET_BLOODSUGAR;\n value[1] = 0x01;\n this.crcValue(value);\n return value;\n }\n\n /**\n *\n * 血糖进度设置\n * @param {number} progress\n * @return {*} {number[]} 指令包,给固件发生指令\n */\n static progressBloodSugar(progress: number): number[] {\n const value = this.generateInitValue();\n value[0] = DeviceConst.CMD_GET_BLOODSUGAR;\n value[1] = 0x04;\n value[2] = progress;\n this.crcValue(value);\n return value;\n }\n\n /**\n *\n * 结束测量血糖\n * @return {*} {number[]} 指令包,给固件发生指令\n */\n static endBloodSugar(): number[] {\n const value = this.generateInitValue();\n value[0] = DeviceConst.CMD_GET_BLOODSUGAR;\n value[1] = 0x03;\n this.crcValue(value);\n return value;\n }\n\n /**\n *\n * 获取某天总数据\n * @param {number} mode 表⽰是从最新的位置开始读取(最多50组数据) 2:表⽰接着读取(当数据总数⼤于50的时候) 0x99:表⽰删除所有运动数据\n * @return {*} {number[]} 指令包,给固件发生指令\n */\n static getTotalActivityDataWithMode(mode: number): number[] {\n const value = this.generateInitValue(); // 初始化 buffer\n value[0] = DeviceConst.CMD_Get_TotalData;\n if (mode === 99) {\n value[1] = 0x99;\n } else if (mode === 0) {\n value[1] = 0x00;\n } else if (mode === 1) {\n value[1] = 0x01;\n } else {\n value[1] = 0x02;\n }\n this.crcValue(value);\n return value;\n }\n\n /**\n *\n * /根据某个日期获取到最新的总数据\n * @param {number} mode 0-表⽰是从最新的位置开始读取(最多50组数据) 2-表⽰接着读取(当数据总数⼤于50的时候) 99-表⽰删除所有运动数据\n * @param {string} time yyyy-MM-dd HH:mm:ss\n * @return {*} {number[]} 指令包,给固件发生指令\n */\n static getTotalActivityDataWithModeForTime(mode: number, time: string): number[] {\n const value = this.generateInitValue(); // 初始化 buffer\n value[0] = DeviceConst.CMD_Get_TotalData;\n if (mode === 99) {\n value[1] = 0x99;\n } else if (mode === 0) {\n value[1] = 0x00;\n } else if (mode === 1) {\n value[1] = 0x01;\n } else {\n value[1] = 0x02;\n }\n this.insertDateValue(value, time);\n this.crcValue(value);\n return value;\n }\n\n /**\n *\n * 获得睡眠详细数据\n * @param {number} mode 0-读最近的睡眠详细数据 2-继续上次读的位置下一段数据 99-删除睡眠数据\n * @param {string} time yyyy-MM-dd HH:mm:ss\n * @return {*} {number[]} 指令包,给固件发生指令\n */\n static getDetailSleepDataWithModeForTime(mode: number, time: string): number[] {\n const value = this.generateInitValue();\n value[0] = DeviceConst.CMD_Get_SleepData;\n value[1] = mode === 99 ? 0x99 : mode;\n this.insertDateValue(value, time);\n this.crcValue(value);\n return value;\n }\n\n /**\n *\n * 获得步数详细数据\n \n * @param {number} mode 0-读最近的详细数据 2-继续上次读的位置下一段数据 99-删除数据\n * @param {string} time yyyy-MM-dd HH:mm:ss\n * @return {*} {number[]} 指令包,给固件发生指令\n */\n static getDetailActivityDataWithModeForTime(mode: number, time: string): number[] {\n const value = this.generateInitValue();\n value[0] = DeviceConst.CMD_Get_DetailData;\n value[1] = mode === 99 ? 0x99 : mode;\n this.insertDateValue(value, time);\n this.crcValue(value);\n return value;\n }\n /**\n *\n * 自动测试温度数据\n * @param {number} mode 0-读最近的详细数据 2-继续上次读的位置下一段数据 99-删除数据\n * @param {string} time yyyy-MM-dd HH:mm:ss\n * @return {*} {number[]} 指令包,给固件发生指令\n */\n static getTemperature_historyDataWithMode(mode: number, time: string): number[] {\n const value = this.generateInitValue();\n value[0] = DeviceConst.Temperature_history;\n value[1] = mode === 99 ? 0x99 : mode;\n this.insertDateValue(value, time);\n this.crcValue(value);\n return value;\n }\n /**\n *\n * 手动测试温度数据\n * @param {number} mode 0-读最近的详细数据 2-继续上次读的位置下一段数据 99-删除数据\n * @param {string} time yyyy-MM-dd HH:mm:ss\n * @return {*} {number[]} 指令包,给固件发生指令\n */\n static getAxillaryTemperatureDataWithMode(mode: number, time: string): number[] {\n const value = this.generateInitValue();\n value[0] = DeviceConst.GetAxillaryTemperatureDataWithMode;\n if (mode === 99) {\n value[1] = 0x99;\n } else if (mode === 0) {\n value[1] = 0x00;\n } else if (mode === 1) {\n value[1] = 0x01;\n } else {\n value[1] = 0x02;\n }\n this.insertDateValue(value, time);\n this.crcValue(value);\n return value;\n }\n\n /**\n *\n * 运动模式开关\n * @param {number} activityMode 运动模式类型\n * @param {number} WorkMode 1:开始 , 2:暂停, 3:继续, 4结束。5: 查询状态\n * @return {*} {number[]} 指令包,给固件发生指令\n */\n static enterActivityMode(activityMode: number, WorkMode: number): number[] {\n const value = this.generateInitValue();\n value[0] = DeviceConst.CMD_Start_EXERCISE;\n value[1] = WorkMode;\n value[2] = activityMode;\n this.crcValue(value);\n return value;\n }\n\n /**\n * 发送运动模式心跳包(配合\"EnterActivityMode\"使用)\n * 当手环是通过APP进入多运动模式后,APP必须每隔1秒发送一个数据给手环,否则手环会退出多运动模式\n * @param {number} distance 距离,浮点数。单位是KM。\n * @param {number} space 配速度,MM:分钟,SS秒钟\n * @param {number} rssi APPGPS信号强度。范围是:1,2,3\n * @return {*} {number[]} 指令包,给固件发生指令\n */\n static sendHeartPackage(distance: number, space: number, rssi: number): number[] {\n // 1. 初始化数据包(8 字节 + 1 字节 CRC => 总共 9 字节?根据协议可调)\n const value = this.generateInitValue(); // 返回长度为 8 或 9 的数组\n // 2. 拆分 space 为 分钟 和 秒\n const min = Math.floor(space / 60) & 0xff;\n const second = (space % 60) & 0xff;\n // 3. 使用 DataView 写入 float32(小端序)\n const buffer = new ArrayBuffer(4);\n const dataView = new DataView(buffer);\n dataView.setFloat32(0, distance, true); // true = little endian\n\n const distanceBytes = Array.from(new Uint8Array(buffer)); // 转为 [b0, b1, b2, b3]\n // 4. 组装数据包\n value[0] = DeviceConst.CMD_heart_package;\n this.arrayCopy(distanceBytes, 0, value, 1, distanceBytes.length);\n value[5] = min;\n value[6] = second;\n value[7] = rssi & 0xff; // 确保是 1 字节\n\n this.crcValue(value);\n return value;\n }\n /**\n *\n * 启动或关闭实时计步模式\n * @param {boolean} enable 1:启动实时计步,0:关闭实时计步\n * @param {boolean} tempEnable 1:开启实时温度 0:关闭实时温度\n * @return {*} {number[]} 指令包,给固件发生指令\n */\n static realTimeStep(enable: boolean, tempEnable: boolean): number[] {\n const value = this.generateInitValue();\n value[0] = DeviceConst.CMD_Enable_Activity;\n value[1] = enable ? 1 : 0;\n value[2] = tempEnable ? 1 : 0;\n this.crcValue(value);\n return value;\n }\n \n /**\n *\n * 停止实时计步\n * @return {*} {number[]} 指令包,给固件发生指令\n */\n static stopGo(): number[] {\n const value = this.generateInitValue();\n value[0] = DeviceConst.CMD_Enable_Activity;\n value[1] = 0;\n this.crcValue(value);\n return value;\n }\n /**\n * 设置个人信息\n *\n * @param {MyPersonalInfo} info\n * @return {*} {number[]} 指令包,给固件发生指令\n */\n static setPersonalInfo(info: MyPersonalInfo): number[] {\n const value = this.generateInitValue();\n value[0] = DeviceConst.CMD_Set_UseInfo;\n value[1] = info.sex;\n value[2] = info.age;\n value[3] = info.height;\n value[4] = info.weight;\n if (info.stepLength) {\n value[5] = info.stepLength;\n }\n this.crcValue(value);\n return value;\n }\n /**\n *\n * 获取个人信息\n * @return {*} {number[]} 指令包,给固件发生指令\n */\n static getPersonalInfo(): number[] {\n const value = this.generateInitValue(); // 初始化 buffer\n value[0] = DeviceConst.CMD_GET_USERINFO;\n this.crcValue(value);\n return value;\n }\n\n ///进入dfu模式\n ///Entering dfu mode\n static enterOTA(): number[] {\n const value = this.generateInitValue();\n value[0] = DeviceConst.CMD_Start_Ota;\n this.crcValue(value);\n return value;\n }\n\n /**\n *\n * 获取设备版本号\n * @return {*} {number[]} 指令包,给固件发生指令\n */\n static getDeviceVersion(): number[] {\n const value = this.generateInitValue();\n value[0] = DeviceConst.CMD_Get_Version;\n this.crcValue(value);\n return value;\n }\n\n /**\n *\n * 恢复出厂设置\n * @return {*} {number[]} 指令包,给固件发生指令\n */\n static reset(): number[] {\n const value = this.generateInitValue();\n value[0] = DeviceConst.CMD_Reset;\n this.crcValue(value);\n return value;\n }\n\n /**\n *\n * 获取设备mac地址\n * @return {*} {number[]} 指令包,给固件发生指令\n */\n static getDeviceMacAddress(): number[] {\n const value = this.generateInitValue();\n value[0] = DeviceConst.CMD_Get_Address;\n this.crcValue(value);\n return value;\n }\n\n /**\n *\n * 获取设备电量\n * @return {*} {number[]} 指令包,给固件发生指令\n */\n static getDeviceBatteryLevel(): number[] {\n const value = this.generateInitValue();\n value[0] = DeviceConst.CMD_Get_BatteryLevel;\n this.crcValue(value);\n return value;\n }\n\n /**\n *\n * 重启设备\n * @return {*} {number[]} 指令包,给固件发生指令\n */\n static mcuReset(): number[] {\n const value = this.generateInitValue();\n value[0] = DeviceConst.CMD_Mcu_Reset;\n this.crcValue(value);\n return value;\n }\n\n/**\n * 设置设备名称\n *\n * @param {string} deviceName 设备名称(最多14个ASCII字符)\n * @return {*} {number[]} 指令包(7字节)\n */\nstatic setDeviceName(deviceName: string): number[] {\n const value = this.generateInitValue(); // 初始化7字节数组\n const maxLength = 14;\n const length = Math.min(deviceName.length, maxLength);\n value[0] = DeviceConst.CMD_Set_Name;\n // 写入设备名称(ASCII 编码)\n for (let i = 0; i < length; i++) {\n value[i + 1] = deviceName.charCodeAt(i); // 相当于 Dart 的 codeUnitAt(i)\n }\n // 填充剩余字节为 0(可选,保持干净)\n for (let i = length + 1; i < 6; i++) {\n value[i] = 0;\n }\n // 计算 CRC 并写入最后一个字节\n this.crcValue(value);\n\n return value;\n }\n /**\n * 获取设备名称\n * @return {*} {number[]} 指令包(7字节)\n */\n static getDeviceName(): number[] {\n const value = this.generateInitValue();\n value[0] = DeviceConst.CMD_Get_Name;\n // 其余字节保持为 0\n for (let i = 1; i < 6; i++) {\n value[i] = 0;\n }\n // 计算 CRC\n this.crcValue(value);\n return value\n }\n /**\n *\n * 设置设备时间\n * @param {Date} dateTime\n * @return {*} {number[]} 指令包,给固件发生指令\n */\n static setDeviceTime(dateTime: Date): number[] {\n const value = this.generateInitValue();\n const year = dateTime.getFullYear();\n const month = dateTime.getMonth() + 1;\n const day = dateTime.getDate();\n const hour = dateTime.getHours();\n const minute = dateTime.getMinutes();\n const second = dateTime.getSeconds();\n\n value[0] = DeviceConst.CMD_SET_TIME;\n value[1] = this.getBcdValue(year);\n value[2] = this.getBcdValue(month);\n value[3] = this.getBcdValue(day);\n value[4] = this.getBcdValue(hour);\n value[5] = this.getBcdValue(minute);\n value[6] = this.getBcdValue(second);\n this.crcValue(value);\n return value;\n }\n\n /**\n *\n * 获取设备时间\n * @return {*} {number[]}\n */\n static getDeviceTime(): number[] {\n const value = this.generateInitValue();\n value[0] = DeviceConst.CMD_GET_TIME;\n this.crcValue(value);\n return value;\n }\n\n /**\n *\n * 设置设备信息\n * @param {MyDeviceInfo} deviceBaseParameter\n * @return {*} {number[]}\n */\n static setDeviceInfo(deviceBaseParameter: MyDeviceInfo): number[] {\n const value = this.generateInitValue();\n value[0] = DeviceConst.CMD_Set_DeviceInfo;\n value[1] = deviceBaseParameter.DistanceUnit ? 0x81 : 0x80;\n value[2] = deviceBaseParameter.is12Hour ? 0x81 : 0x80;\n value[3] = deviceBaseParameter.Hand_up_light_screen_switch ? 0x81 : 0x80;\n value[4] = !deviceBaseParameter.Fahrenheit ? 0x81 : 0x80;\n value[5] = deviceBaseParameter.Nightmode ? 0x81 : 0x80;\n value[6] = 0x80;\n value[9] = 0x80 + deviceBaseParameter.baseheart;\n value[11] = 0x80 + deviceBaseParameter.screenBrightness;\n value[12] = 0x80 + deviceBaseParameter.indexDial;\n value[14] = 0x80 + deviceBaseParameter.languages;\n this.crcValue(value);\n return value;\n }\n\n /**\n *健康测量控制\n *\n * @param {number} dataType 测试类型 0x01,HRV 0x02,心率测量 0x03,血氧测量\n * @param {boolean} open 1开启测量 0 关闭测量\n * @return {*} {number[]} 指令包,给固件发生指令\n */\n static healthMeasurementWithDataType(dataType: number, open: boolean): number[] {\n this.StartDeviceMeasurementWithType = open;\n const value = this.generateInitValue();\n value[0] = DeviceConst.MeasurementWithType;\n value[1] = dataType;\n value[2] = open ? 0x01 : 0x00;\n this.crcValue(value);\n return value;\n }\n\n/**\n *\n * 设置手环表盘模式\n * @param {number} mode 表盘模式(0, 1, 2... 根据设备定义)\n * @return {*} {number[]} 指令包(7字节)\n */\nstatic setBraceletdial(mode: number): number[] {\n // 设置运行状态(可选,用于控制流程)\n this.isRuning = true;\n const value = this.generateInitValue(); // 初始化 7 字节数组\n value[0] = DeviceConst.Braceletdial; // 命令字\n value[1] = mode; // 模式值\n this.crcValue(value);\n return value;\n }\n\n /**\n *\n * 设置自动检测心率时段\n * @param {MyAutomaticHRMonitoring} autoHeart\n * @return {*} {number[]} 指令包,给固件发生指令\n */\n static setAutomaticHRMonitoring(autoHeart: MyAutomaticHRMonitoring): number[] {\n const value = this.generateInitValue();\n const time = autoHeart.time;\n value[0] = DeviceConst.CMD_Set_AutoHeart;\n value[1] = autoHeart.open;\n value[2] = this.getBcdValue(autoHeart.startHour);\n value[3] = this.getBcdValue(autoHeart.startMinute);\n value[4] = this.getBcdValue(autoHeart.endHour);\n value[5] = this.getBcdValue(autoHeart.endMinute);\n value[6] = autoHeart.week;\n value[7] = (time & 0xff);\n value[8] = ((time >> 8) & 0xff);\n value[9] = autoHeart.type;\n this.crcValue(value);\n return value;\n }\n /**\n *\n * 读取自动检测心率时段\n * @param {number} type 1、读取心率设置时间 2、读取设置血氧时间 4、读取HRV设置时间段\n * @return {*} {number[]} 指令包,给固件发生指令\n */\n static getAutomaticHRMonitoring(type: number): number[] {\n const value = this.generateInitValue();\n value[0] = DeviceConst.CMD_Get_AutoHeart;\n value[1] = type;\n this.crcValue(value);\n return value;\n }\n /**\n *\n *获取多模式运动数据\n * @param {number} mode 0:表⽰是从最新的位置开始读取(最多50组数据) 2:表⽰接着读取(当数据总数⼤于50的时候) 0x99:表⽰删除所有GPS数据\n * @return {*} {number[]} 指令包,给固件发生指令\n */\n static getActivityModeDataWithMode(mode: number): number[] {\n const value = this.generateInitValue();\n value[0] = DeviceConst.CMD_Get_SPORTData;\n value[1] = mode;\n this.crcValue(value);\n return value;\n }\n\n /**\n *\n * 获得单次心率数据(间隔测试心率)\n * @param {number} mode 0-读最近的详细数据 2-继续上次读的位置下一段数据 99-删除数据 \n * @param {string} time yyyy-MM-dd HH:mm:ss\n * @return {*} {number[]} 指令包,给固件发生指令\n */\n static getStaticHRWithMode(mode: number, time: string): number[] {\n const value = this.generateInitValue();\n value[0] = DeviceConst.CMD_Get_OnceHeartData;\n value[1] = mode;\n this.insertDateValue(value, time);\n this.crcValue(value);\n return value;\n }\n\n /**\n *\n * 获得心率数据\n * @param {number} mode 0-读最近的详细数据 2-继续上次读的位置下一段数据 99-删除数据 \n * @param {string} time yyyy-MM-dd HH:mm:ss\n * @return {*} {number[]} 指令包,给固件发生指令\n */\n static getDynamicHRWithMode(mode: number, time: string): number[] {\n const value = this.generateInitValue();\n value[0] = DeviceConst.CMD_Get_HeartData;\n value[1] = mode;\n this.insertDateValue(value, time);\n this.crcValue(value);\n return value;\n }\n\n /**\n *\n * 获得血氧数据\n * @param {number} mode 0-读最近的详细数据 2-继续上次读的位置下一段数据 99-删除数据 \n * @param {string} time yyyy-MM-dd HH:mm:ss\n * @return {*} {number[]} 指令包,给固件发生指令\n */\n static getBloodOxygen(mode: number, time: string): number[] {\n const value = this.generateInitValue();\n value[0] = DeviceConst.CMD_Get_Blood_oxygen;\n value[1] = mode;\n this.insertDateValue(value, time);\n this.crcValue(value);\n return value;\n }\n\n \n /**\n *\n * 获得血氧数据(自动测试)\n * @param {number} mode 0-读最近的详细数据 2-继续上次读的位置下一段数据 99-删除数据\n * @param {string} time yyyy-MM-dd HH:mm:ss\n * @return {*} {number[]}\n */\n static getAutoBloodOxygen(mode: number, time: string): number[] {\n const value = this.generateInitValue();\n value[0] = DeviceConst.CMD_Get_Auto_Blood_oxygen;\n value[1] = mode;\n this.insertDateValue(value, time);\n this.crcValue(value);\n return value;\n }\n /**\n * 设置目标步数指令\n * @param stepGoal 步数目标 (int, 4 bytes, Big-Endian)\n * @param targetExecutionTime 目标完成时间(分钟)(int, 2 bytes)\n * @param distance 距离目标(千米)(int, 2 bytes)\n * @param calorie 卡路里目标 (int, 2 bytes)\n * @param sleepTime 睡眠时间目标(分钟)(int, 2 bytes)\n * @returns number[] 指令字节数组(16字节,含CRC)\n */\n static setStepGoal(\n stepGoal: number,\n targetExecutionTime: number,\n distance: number,\n calorie: number,\n sleepTime: number\n ): number[] {\n // 1. 初始化 16 字节数组,填充 0\n const value = this.generateInitValue();\n\n value[0] = DeviceConst.CMD_Set_Goal;;\n\n // 3. 写入 stepGoal (4 bytes, Big-Endian: 高位在后)\n value[4] = (stepGoal >> 24) & 0xff;\n value[3] = (stepGoal >> 16) & 0xff;\n value[2] = (stepGoal >> 8) & 0xff;\n value[1] = stepGoal & 0xff;\n\n // 4. 写入 targetExecutionTime (2 bytes, Big-Endian)\n value[6] = (targetExecutionTime >> 8) & 0xff;\n value[5] = targetExecutionTime & 0xff;\n\n // 5. 写入 distance (2 bytes, Big-Endian)\n value[8] = (distance >> 8) & 0xff;\n value[7] = distance & 0xff;\n\n // 6. 写入 calorie (2 bytes, Big-Endian)\n value[10] = (calorie >> 8) & 0xff;\n value[9] = calorie & 0xff;\n\n // 7. 写入 sleepTime (2 bytes, Big-Endian)\n value[12] = (sleepTime >> 8) & 0xff;\n value[11] = sleepTime & 0xff;\n this.crcValue(value);\n return value;\n }\n /**\n *\n * 读取目标步数\n * @return {*} {number[]} 指令包,给固件发生指令\n */\n static GetStepGoal(): number[] {\n const value = this.generateInitValue();\n value[0] = DeviceConst.CMD_Get_Goal;\n this.crcValue(value);\n return value;\n }\n\n /**\n * 获取手环基本参数(设备信息)\n * @returns Uint8Array 指令包(7字节),用于发送 BLE 请求\n */\n static getDeviceInfo(): number[] {\n const value = this.generateInitValue();\n value[0] = DeviceConst.CMD_Get_DeviceInfo; // 设置命令字\n this.crcValue(value);\n return value;\n }\n\n static sendHex(data: number[], isCrc: boolean): number[] {\n const current = [...data];\n if (isCrc) {\n this.crcDynamicValue(current);\n }\n return current;\n }\n /**\n *\n * 获取闹钟\n * @return {*} {number[]} 指令包,给固件发生指令\n */\n static getAlarmClock(): number[] {\n const value = this.generateInitValue();\n value[0] = DeviceConst.CMD_Get_Clock;\n this.crcValue(value);\n return value;\n }\n\n /**\n *\n * 删除所有闹钟\n * @return {*} {number[]} 指令包,给固件发生指令\n */\n static deleteAllAlarmClock(): number[] {\n const value = this.generateInitValue();\n value[0] = DeviceConst.CMD_Get_Clock;\n value[1] = 0x99;\n this.crcValue(value);\n return value;\n }\n /**\n *\n *设置所有闹钟\n * @param {any[]} arrayClockAlarm\n * @return {*} {number[][]}\n */\n static setAlarmClock(arrayClockAlarm: any[]): number[][] {\n const result: number[][] = [];\n const LENGTH_UNIT = 39;\n const MAX_SEND_BYTES = 128;\n const totalCount = arrayClockAlarm.length * LENGTH_UNIT + 2;\n\n if (totalCount > MAX_SEND_BYTES) {\n // 超过一次发送的长度,需要分包\n const canSendCount = Math.floor(MAX_SEND_BYTES / LENGTH_UNIT);\n const needSendCount = Math.ceil(arrayClockAlarm.length / canSendCount);\n\n for (let i = 0; i < needSendCount; i++) {\n const isLast = i === needSendCount - 1;\n const countInThisPacket = isLast ? arrayClockAlarm.length - canSendCount * i : canSendCount;\n const buffer = new Array(countInThisPacket * LENGTH_UNIT + (isLast ? 2 : 0)).fill(0);\n\n for (let m = 0; m < countInThisPacket; m++) {\n const dicClock = arrayClockAlarm[canSendCount * i + m];\n const { openOrClose, clockType, clockTime, week, textLength, text } = dicClock;\n\n const offset = m * LENGTH_UNIT;\n buffer[offset] = 0x23;\n buffer[offset + 1] = arrayClockAlarm.length;\n buffer[offset + 2] = canSendCount * i + m;\n buffer[offset + 3] = openOrClose;\n buffer[offset + 4] = clockType;\n buffer[offset + 5] = this.getBcdValue(clockTime.substring(0, 2));\n buffer[offset + 6] = this.getBcdValue(clockTime.substring(3, 5));\n buffer[offset + 7] = week;\n buffer[offset + 8] = textLength;\n\n for (let j = 0; j < textLength; j++) {\n buffer[offset + 9 + j] = text.charCodeAt(j) || 0;\n }\n }\n\n if (isLast) {\n buffer[buffer.length - 2] = 0x23;\n buffer[buffer.length - 1] = 0xff;\n }\n result.push(buffer);\n }\n } else {\n const buffer = new Array(totalCount).fill(0);\n arrayClockAlarm.forEach((dicClock, i) => {\n const { openOrClose, clockType, clockTime, week, textLength, text } = dicClock;\n const offset = i * LENGTH_UNIT;\n buffer[offset] = 0x23;\n buffer[offset + 1] = arrayClockAlarm.length;\n buffer[offset + 2] = i;\n buffer[offset + 3] = openOrClose;\n buffer[offset + 4] = clockType;\n buffer[offset + 5] = this.getBcdValue(clockTime.substring(0, 2));\n buffer[offset + 6] = this.getBcdValue(clockTime.substring(3, 5));\n buffer[offset + 7] = week;\n buffer[offset + 8] = textLength;\n\n for (let j = 0; j < textLength; j++) {\n buffer[offset + 9 + j] = text.charCodeAt(j) || 0;\n }\n });\n buffer[totalCount - 2] = 0x23;\n buffer[totalCount - 1] = 0xff;\n result.push(buffer);\n }\n\n return result;\n }\n /**\n *\n * 获取久坐提醒\n * @return {*} {number[]} 指令包,给固件发生指令\n */\n static getSedentaryReminder(): number[] {\n const value = this.generateInitValue();\n value[0] = DeviceConst.CMD_Get_ActivityAlarm;\n this.crcValue(value);\n return value;\n }\n\n /**\n * 设置久坐提醒\n *\n * @param {MySedentaryReminderV4} reminder\n * @return {*} {number[]} 指令包,给固件发生指令\n */\n static setSedentaryReminder(reminder: MySedentaryReminderV4): number[] {\n const value = this.generateInitValue();\n value[0] = DeviceConst.CMD_Set_ActivityAlarm;\n value[1] = this.getBcdValue(reminder.startTime_Hour);\n value[2] = this.getBcdValue(reminder.startTime_Minutes);\n value[3] = this.getBcdValue(reminder.endTime_Hour);\n value[4] = this.getBcdValue(reminder.endTime_Minutes);\n\n const week =\n (reminder.weeks.sunday ? 1 : 0) +\n (reminder.weeks.monday ? 2 : 0) +\n (reminder.weeks.Tuesday ? 4 : 0) +\n (reminder.weeks.Wednesday ? 8 : 0) +\n (reminder.weeks.Thursday ? 16 : 0) +\n (reminder.weeks.Friday ? 32 : 0) +\n (reminder.weeks.Saturday ? 64 : 0);\n\n value[5] = week;\n value[6] = reminder.intervalTime;\n value[7] = reminder.leastSteps;\n value[8] = reminder.mode;\n\n this.crcValue(value);\n return value;\n }\n}\n\nexport default BleSDK;"]}
|
package/build/sdk/models.d.ts
CHANGED
|
@@ -16,14 +16,54 @@ export interface MyDeviceInfo {
|
|
|
16
16
|
indexDial: number;
|
|
17
17
|
languages: number;
|
|
18
18
|
}
|
|
19
|
+
/**
|
|
20
|
+
* 自动心率监测配置
|
|
21
|
+
*
|
|
22
|
+
* 用于定义用户在一周内自动心率监测的时间段、周期和类型。
|
|
23
|
+
*/
|
|
19
24
|
export interface MyAutomaticHRMonitoring {
|
|
25
|
+
/**
|
|
26
|
+
* 是否开启监测
|
|
27
|
+
* - 0 = 关闭
|
|
28
|
+
* - 1 = 开启
|
|
29
|
+
*/
|
|
20
30
|
open: number;
|
|
31
|
+
/**
|
|
32
|
+
* 开始监测的小时数(0-23)
|
|
33
|
+
*/
|
|
21
34
|
startHour: number;
|
|
35
|
+
/**
|
|
36
|
+
* 开始监测的分钟数(0-59)
|
|
37
|
+
*/
|
|
22
38
|
startMinute: number;
|
|
39
|
+
/**
|
|
40
|
+
* 结束监测的小时数(0-23)
|
|
41
|
+
*/
|
|
23
42
|
endHour: number;
|
|
43
|
+
/**
|
|
44
|
+
* 结束监测的分钟数(0-59)
|
|
45
|
+
*/
|
|
24
46
|
endMinute: number;
|
|
47
|
+
/**
|
|
48
|
+
* 星期设置(按位表示)
|
|
49
|
+
* - 1 = 周一
|
|
50
|
+
* - 2 = 周二
|
|
51
|
+
* - 4 = 周三
|
|
52
|
+
* - 8 = 周四
|
|
53
|
+
* - 16 = 周五
|
|
54
|
+
* - 32 = 周六
|
|
55
|
+
* - 64 = 周日
|
|
56
|
+
*
|
|
57
|
+
* 可组合,例如:`1 + 2 + 4 = 7` 表示周一到周三
|
|
58
|
+
*/
|
|
25
59
|
week: number;
|
|
60
|
+
/**
|
|
61
|
+
* 采样时间间隔(秒)
|
|
62
|
+
*/
|
|
26
63
|
time: number;
|
|
64
|
+
/**
|
|
65
|
+
* 1、设置心率 2、设置血氧 4、设置HRV
|
|
66
|
+
*/
|
|
27
67
|
type: number;
|
|
28
68
|
}
|
|
29
69
|
export interface MyWeeksV4 {
|
|
@@ -35,14 +75,49 @@ export interface MyWeeksV4 {
|
|
|
35
75
|
Friday: boolean;
|
|
36
76
|
Saturday: boolean;
|
|
37
77
|
}
|
|
78
|
+
/**
|
|
79
|
+
* 久坐提醒配置(V4)
|
|
80
|
+
*
|
|
81
|
+
* 用于定义用户在一天内的久坐提醒时间段、周期和规则。
|
|
82
|
+
*/
|
|
38
83
|
export interface MySedentaryReminderV4 {
|
|
84
|
+
/**
|
|
85
|
+
* 开始提醒的小时数(0–23)
|
|
86
|
+
*/
|
|
39
87
|
startTime_Hour: number;
|
|
88
|
+
/**
|
|
89
|
+
* 开始提醒的分钟数(0–59)
|
|
90
|
+
*/
|
|
40
91
|
startTime_Minutes: number;
|
|
92
|
+
/**
|
|
93
|
+
* 结束提醒的小时数(0–23)
|
|
94
|
+
*/
|
|
41
95
|
endTime_Hour: number;
|
|
96
|
+
/**
|
|
97
|
+
* 结束提醒的分钟数(0–59)
|
|
98
|
+
*/
|
|
42
99
|
endTime_Minutes: number;
|
|
100
|
+
/**
|
|
101
|
+
* 一周中的提醒天数配置
|
|
102
|
+
*
|
|
103
|
+
*/
|
|
43
104
|
weeks: MyWeeksV4;
|
|
105
|
+
/**
|
|
106
|
+
* 提醒间隔时间(分钟)
|
|
107
|
+
*/
|
|
44
108
|
intervalTime: number;
|
|
109
|
+
/**
|
|
110
|
+
* 最低步数门槛
|
|
111
|
+
*
|
|
112
|
+
* 如果在间隔时间内步数少于此值,则触发久坐提醒。
|
|
113
|
+
*/
|
|
45
114
|
leastSteps: number;
|
|
115
|
+
/**
|
|
116
|
+
* 提醒模式
|
|
117
|
+
* - 0 = 震动
|
|
118
|
+
* - 1 = 声音
|
|
119
|
+
* - 2 = 混合提醒
|
|
120
|
+
*/
|
|
46
121
|
mode: number;
|
|
47
122
|
}
|
|
48
123
|
export interface MyAlarmClockV4 {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../src/sdk/models.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,YAAY,EAAE,OAAO,CAAC;IACtB,QAAQ,EAAE,OAAO,CAAC;IAClB,2BAA2B,EAAE,OAAO,CAAC;IACrC,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;
|
|
1
|
+
{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../src/sdk/models.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,YAAY,EAAE,OAAO,CAAC;IACtB,QAAQ,EAAE,OAAO,CAAC;IAClB,2BAA2B,EAAE,OAAO,CAAC;IACrC,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AACD;;;;GAIG;AACH,MAAM,WAAW,uBAAuB;IACtC;;;;OAIG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;;;;;;;;;;OAWG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;CACd;AAID,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;;;GAIG;AACH,MAAM,WAAW,qBAAqB;IACpC;;OAEG;IACH,cAAc,EAAE,MAAM,CAAC;IAEvB;;OAEG;IACH,iBAAiB,EAAE,MAAM,CAAC;IAE1B;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,eAAe,EAAE,MAAM,CAAC;IAExB;;;OAGG;IACH,KAAK,EAAE,SAAS,CAAC;IAEjB;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;IAErB;;;;OAIG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB;;;;;OAKG;IACH,IAAI,EAAE,MAAM,CAAC;CACd;AAID,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CACd"}
|
package/build/sdk/models.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/sdk/models.ts"],"names":[],"mappings":"","sourcesContent":["export interface MyPersonalInfo {\n sex: number;\n age: number;\n height: number;\n weight: number;\n stepLength?: number;\n}\n\nexport interface MyDeviceInfo {\n DistanceUnit: boolean;\n is12Hour: boolean;\n Hand_up_light_screen_switch: boolean;\n Fahrenheit: boolean;\n Nightmode: boolean;\n baseheart: number;\n screenBrightness: number;\n indexDial: number;\n languages: number;\n}\n\nexport interface MyAutomaticHRMonitoring {\n open: number;\n startHour: number;\n startMinute: number;\n endHour: number;\n endMinute: number;\n week: number;\n time: number;\n type: number;\n}\n\n// 周信息\nexport interface MyWeeksV4 {\n sunday: boolean;\n monday: boolean;\n Tuesday: boolean;\n Wednesday: boolean;\n Thursday: boolean;\n Friday: boolean;\n Saturday: boolean;\n}\n\n
|
|
1
|
+
{"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/sdk/models.ts"],"names":[],"mappings":"","sourcesContent":["export interface MyPersonalInfo {\n sex: number;\n age: number;\n height: number;\n weight: number;\n stepLength?: number;\n}\n\nexport interface MyDeviceInfo {\n DistanceUnit: boolean;\n is12Hour: boolean;\n Hand_up_light_screen_switch: boolean;\n Fahrenheit: boolean;\n Nightmode: boolean;\n baseheart: number;\n screenBrightness: number;\n indexDial: number;\n languages: number;\n}\n/**\n * 自动心率监测配置\n * \n * 用于定义用户在一周内自动心率监测的时间段、周期和类型。\n */\nexport interface MyAutomaticHRMonitoring {\n /**\n * 是否开启监测\n * - 0 = 关闭\n * - 1 = 开启\n */\n open: number;\n\n /**\n * 开始监测的小时数(0-23)\n */\n startHour: number;\n\n /**\n * 开始监测的分钟数(0-59)\n */\n startMinute: number;\n\n /**\n * 结束监测的小时数(0-23)\n */\n endHour: number;\n\n /**\n * 结束监测的分钟数(0-59)\n */\n endMinute: number;\n\n /**\n * 星期设置(按位表示)\n * - 1 = 周一\n * - 2 = 周二\n * - 4 = 周三\n * - 8 = 周四\n * - 16 = 周五\n * - 32 = 周六\n * - 64 = 周日\n * \n * 可组合,例如:`1 + 2 + 4 = 7` 表示周一到周三\n */\n week: number;\n\n /**\n * 采样时间间隔(秒)\n */\n time: number;\n\n /**\n * 1、设置心率 2、设置血氧 4、设置HRV\n */\n type: number;\n}\n\n\n// 周信息\nexport interface MyWeeksV4 {\n sunday: boolean;\n monday: boolean;\n Tuesday: boolean;\n Wednesday: boolean;\n Thursday: boolean;\n Friday: boolean;\n Saturday: boolean;\n}\n\n/**\n * 久坐提醒配置(V4)\n * \n * 用于定义用户在一天内的久坐提醒时间段、周期和规则。\n */\nexport interface MySedentaryReminderV4 {\n /**\n * 开始提醒的小时数(0–23)\n */\n startTime_Hour: number;\n\n /**\n * 开始提醒的分钟数(0–59)\n */\n startTime_Minutes: number;\n\n /**\n * 结束提醒的小时数(0–23)\n */\n endTime_Hour: number;\n\n /**\n * 结束提醒的分钟数(0–59)\n */\n endTime_Minutes: number;\n\n /**\n * 一周中的提醒天数配置\n * \n */\n weeks: MyWeeksV4;\n\n /**\n * 提醒间隔时间(分钟)\n */\n intervalTime: number;\n\n /**\n * 最低步数门槛\n * \n * 如果在间隔时间内步数少于此值,则触发久坐提醒。\n */\n leastSteps: number;\n\n /**\n * 提醒模式\n * - 0 = 震动\n * - 1 = 声音\n * - 2 = 混合提醒\n */\n mode: number;\n}\n\n\n// 闹钟\nexport interface MyAlarmClockV4 {\n openOrClose: number;\n clockType: number;\n endTime_Hour: number;\n endTime_Minutes: number;\n weeks: number;\n intervalTime: number;\n leastSteps: number;\n mode: number;\n}"]}
|
|
@@ -84,8 +84,8 @@ export declare class ResolveUtil {
|
|
|
84
84
|
static getEcgHistoryData(value: number[]): any;
|
|
85
85
|
private static getEcgDataString;
|
|
86
86
|
static ecgData(value: number[]): any;
|
|
87
|
-
static
|
|
88
|
-
static
|
|
87
|
+
static ppgData(value: number[]): any;
|
|
88
|
+
static ecgResult(value: number[]): any;
|
|
89
89
|
static enterEcg(value: number[]): any;
|
|
90
90
|
static measurementWithType(flag: boolean, value: number[]): any;
|
|
91
91
|
static braceletdial(isruning: boolean, value: number[]): any;
|
package/build/sdk/resolveUtil.js
CHANGED
|
@@ -997,7 +997,7 @@ export class ResolveUtil {
|
|
|
997
997
|
};
|
|
998
998
|
}
|
|
999
999
|
// PPG数据解析
|
|
1000
|
-
static
|
|
1000
|
+
static ppgData(value) {
|
|
1001
1001
|
return {
|
|
1002
1002
|
[DeviceKey.DataType]: BleConst.EcgppGstatus,
|
|
1003
1003
|
[DeviceKey.End]: true,
|
|
@@ -1007,7 +1007,7 @@ export class ResolveUtil {
|
|
|
1007
1007
|
};
|
|
1008
1008
|
}
|
|
1009
1009
|
// ECG结果解析
|
|
1010
|
-
static
|
|
1010
|
+
static ecgResult(value) {
|
|
1011
1011
|
const result = {
|
|
1012
1012
|
[DeviceKey.DataType]: BleConst.GetEcgPpgStatus,
|
|
1013
1013
|
[DeviceKey.End]: true,
|