Socket
Socket
Sign inDemoInstall

qcloud-iotexplorer-bluetooth-adapter-llsync

Package Overview
Dependencies
Maintainers
5
Versions
127
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

qcloud-iotexplorer-bluetooth-adapter-llsync - npm Package Compare versions

Comparing version 1.7.4 to 1.7.5-beta

55

lib/base/LLSync/LLSyncDeviceAdapter.d.ts
import { DeviceFilterFunction } from 'qcloud-iotexplorer-bluetooth-adapter';
import { ProductUIDevConfig } from 'iotexplorer-ui-dev-config';
import { AppDevSdk, Reporter } from 'qcloud-iotexplorer-appdev-sdk';
import { Action } from '../../libs';
import { Models } from './Models';

@@ -10,2 +11,5 @@ import { LLSyncDeviceAdapterBase } from '../LLSyncDeviceAdapterBase';

}
interface EncryptConfig {
contentType?: 'hex';
}
export declare class LLSyncDeviceAdapter extends LLSyncDeviceAdapterBase {

@@ -19,3 +23,2 @@ static options: LLSyncDeviceAdapterOptions;

otaProcessor: LLSyncOtaProcessor;
authorized: boolean;
reporter: Reporter;

@@ -33,2 +36,4 @@ _initPromise: any;

mtu: number;
secretKey: string;
disableWsEventHandle: boolean;
_enableWsEventHandle: boolean;

@@ -60,2 +65,32 @@ _enableLLEventHandle: boolean;

}): Promise<string>;
bindDeviceEncrypted({ isDynamicRegister }: {
isDynamicRegister: boolean;
}): Promise<{
sign: string;
timestamp: number;
nonce: string;
secretKey: string;
deviceName: any;
}>;
requestBindEncrypted(sign: string, timestamp: string): Promise<{
ack: number;
timestamp: string;
R2: string;
deviceSign: string;
}>;
verifyDeviceSign(R1: string, R2: string, sign: string): Promise<string>;
getDeviceNameWithRegister(): Promise<{
deviceName: any;
nonce: string;
}>;
getDeviceNameEncrypted(): Promise<{
nonce: any;
deviceName: any;
}>;
encrypt(content: string, secretKey: any, config?: EncryptConfig): string;
encrypt(content: string[], secretKey: any, config?: EncryptConfig): string[];
notifyBindDevice(secretKey: string): Promise<{
ack: number;
sign: string;
}>;
unbindDevice({ familyId, deviceName, }: {

@@ -65,2 +100,3 @@ familyId: any;

}): Promise<never>;
unbindDeviceEncrypted(): Promise<boolean>;
controlDevice({ deviceData }: {

@@ -70,3 +106,3 @@ deviceData: any;

controlAction({ actionData }: {
actionData: any;
actionData: Action;
}): Promise<never>;

@@ -76,4 +112,19 @@ authenticateConnection({ deviceName, }?: {

}): Promise<never>;
authConnectionEncrypted({ deviceName, }: {
deviceName: any;
}): Promise<{
version: number;
mtu: number;
needSetMtu: boolean;
otaVersion: any;
}>;
/**
* @param data 要发送的hexdata string
* @param mode 绑定,解绑等类型常数
* @returns {Promise}
*/
sendBleData(data: string, mode: string): Promise<string[]>;
toString(): string;
}
export declare const StandardDeviceAdapter: typeof LLSyncDeviceAdapter;
export {};

2

lib/base/LLSync/LLSyncDeviceAdapter.js

@@ -1,2 +0,2 @@

"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.StandardDeviceAdapter=exports.LLSyncDeviceAdapter=void 0;var tslib_1=require("tslib"),constants=tslib_1.__importStar(require("../../constants")),qcloud_iotexplorer_appdev_sdk_1=require("qcloud-iotexplorer-appdev-sdk"),constants_1=require("../../constants"),libs_1=require("../../libs"),utils=tslib_1.__importStar(require("../../libs")),Models_1=require("./Models"),LLSyncDeviceAdapterBase_1=require("../LLSyncDeviceAdapterBase"),LLSyncOtaProcessor_1=require("./LLSyncOtaProcessor"),LLSyncProtocol_1=require("./LLSyncProtocol"),arrayBufferToHexStringArray=qcloud_iotexplorer_appdev_sdk_1.AppDevSdk.utils.arrayBufferToHexStringArray,convertToMs=function(e){if("number"!=typeof e)throw new Error("timestamp should be a number");return e.toString().length>=13?e:1e3*e},LLSyncDeviceAdapter=function(e){function t(r){var o=e.call(this,r)||this;o._enableWsEventHandle=!0,o._enableLLEventHandle=!0;var n=function(e){return function(){for(var t=[],r=0;r<arguments.length;r++)t[r]=arguments[r];return tslib_1.__awaiter(o,void 0,void 0,(function(){return tslib_1.__generator(this,(function(r){switch(r.label){case 0:return[4,this.init()];case 1:return r.sent(),[2,e.apply(void 0,tslib_1.__spread(t))]}}))}))}};o.models=new Models_1.Models(t.options.appDevSdk),o.userIdentify=t.getUserIdentify(),o.on("disconnect",(function(){o.authorized=!1})),o.appDevSdk=t.options.appDevSdk,o.protocol=new LLSyncProtocol_1.LLSyncProtocol(o),o.otaProcessor=new LLSyncOtaProcessor_1.LLSyncOtaProcessor(o),Object.assign(o,{bindDevice:n(o.bindDevice.bind(o)),unbindDevice:n(o.unbindDevice.bind(o)),controlDevice:n(o.controlDevice.bind(o)),controlAction:n(o.controlAction.bind(o)),authenticateConnection:n(o.authenticateConnection.bind(o)),reconnectDevice:n(o.authenticateConnection.bind(o)),startOta:n(o.startOta.bind(o)),cancelOta:n(o.cancelOta.bind(o)),userCancelBindDevice:n(o.protocol.cancelUserCheck.bind(o.protocol,"cancel"))}),o.init(),o.reporter={info:function(e,r){void 0===e&&(e=""),void 0===r&&(r={});var n=r.message,s=void 0===n?"":n,i=r.serviceId,c=tslib_1.__rest(r,["message","serviceId"]),a=o,d=a.explorerDeviceId,l=a.deviceId,u=a.isConnected;t.options.appDevSdk.reporter.info(constants_1.REPORT_EVENT_TYPE,{serviceId:i||t.serviceId,message:s||(e&&constants.ACTION_DESC[e]?e+"("+constants.ACTION_DESC[e]+")":e),timeCost:c.timeCost||0,action:e,data:tslib_1.__assign({deviceId:d,bleDeviceId:l,isConnected:u},c)})},error:function(e,r){void 0===e&&(e=""),void 0===r&&(r={});var n=r.error,s=tslib_1.__rest(r,["error"]),i=o,c=i.explorerDeviceId,a=i.deviceId,d=i.isConnected;n.code&&constants.ERROR_MESSAGES[n.code]&&(n.msg=constants.ERROR_MESSAGES[n.code]),t.options.appDevSdk.reporter.error(constants_1.REPORT_EVENT_TYPE,{message:constants.ERROR_MESSAGES[e]?e+"("+constants.ERROR_MESSAGES[e]+":"+(n&&(n.message||n.errMsg||n.msg||n.code))+")":"",timeCost:s.timeCost||0,action:e,error:n,data:tslib_1.__assign(tslib_1.__assign({deviceId:c,bleDeviceId:a,isConnected:d},s),n)})}};var s=function(e){var t=e.deviceId,r=e.deviceData;if(o._enableWsEventHandle&&(console.log("llsync receive onControl",t,r,o.ready,o.explorerDeviceId),o.ready&&t===o.explorerDeviceId)){var n={};Object.keys(r).forEach((function(e){n[e]=r[e].Value})),o.controlDevice({deviceData:n})}},i=function(e){var t=e.deviceId,r=e.Payload;o._enableWsEventHandle&&o.ready&&t===o.explorerDeviceId&&o.controlAction({actionData:r})};return o.on("authorized",(function(){o.init(!0),o.appDevSdk.on(qcloud_iotexplorer_appdev_sdk_1.AppDevSdk.constants.EventTypes.WsControl,s),o.appDevSdk.on(qcloud_iotexplorer_appdev_sdk_1.AppDevSdk.constants.EventTypes.WsActionPush,i)})).on("disconnect",(function(){o.appDevSdk.off(qcloud_iotexplorer_appdev_sdk_1.AppDevSdk.constants.EventTypes.WsControl,s),o.appDevSdk.off(qcloud_iotexplorer_appdev_sdk_1.AppDevSdk.constants.EventTypes.WsActionPush,i)})),o}return tslib_1.__extends(t,e),t.getUserIdentify=function(){var e,r,o,n;return libs_1.getUserIdentify(null===(n=null===(o=null===(r=null===(e=t.options)||void 0===e?void 0:e.appDevSdk)||void 0===r?void 0:r.loginManager)||void 0===o?void 0:o.userInfo)||void 0===n?void 0:n.UserID)},t.injectOptions=function(e){t.options=e},Object.defineProperty(t.prototype,"ready",{get:function(){return console.log("isConnected",this.isConnected,"isAuthorized",this.authorized),this.isConnected&&this.authorized},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"needUserCheck",{get:function(){var e,t,r;try{return!!parseInt((null===(r=null===(t=null===(e=null==this?void 0:this.productConfig)||void 0===e?void 0:e.BleConfig)||void 0===t?void 0:t.bindingBootConfig)||void 0===r?void 0:r.confirmRequired)||"0")}catch(e){return console.warn("LLSync check confirmRequired fail",e),!1}},enumerable:!1,configurable:!0}),t.prototype.normalizeError=function(t){return!(t=e.prototype._normalizeError.call(this,t)).msg&&t.code&&constants.ERROR_MESSAGES[t.code]&&(t.msg=constants.ERROR_MESSAGES[t.code]),t},t.prototype.init=function(r){return tslib_1.__awaiter(this,void 0,void 0,(function(){var o=this;return tslib_1.__generator(this,(function(n){switch(n.label){case 0:if(!t.options)throw"标准蓝牙适配器未初始化Options";return[4,e.prototype.init.call(this)];case 1:return n.sent(),r&&(this.productInfo=this.productConfig=this._initPromise=null),[2,this._initPromise||(this._initPromise=new Promise((function(e,t){return tslib_1.__awaiter(o,void 0,void 0,(function(){var r,o,n,s,i,c,a;return tslib_1.__generator(this,(function(d){switch(d.label){case 0:return d.trys.push([0,2,,3]),o=(r=this).productConfig,n=r.productInfo,[4,Promise.all([o?Promise.resolve(o):this.models.getProduct({ProductId:this.productId}),n?Promise.resolve(n):this.models.getProductConfig({ProductId:this.productId})])];case 1:return s=tslib_1.__read.apply(void 0,[d.sent(),2]),i=s[0],c=s[1],this.dataTemplate=libs_1.getProductDateTemplate(i),this.productInfo=i,this.productConfig=c,console.log("init llsync done",{productInfo:this.productInfo,productConfig:this.productConfig,dataTemplate:this.dataTemplate}),e(),[3,3];case 2:return a=d.sent(),console.error("init standard device adapter fail",a),t(a),this._initPromise=null,[3,3];case 3:return[2]}}))}))})))]}}))}))},t.prototype.getDevicePsk=function(e){return tslib_1.__awaiter(this,void 0,void 0,(function(){var t,r,o,n,s,i;return tslib_1.__generator(this,(function(c){switch(c.label){case 0:return t={DeviceId:this.productId+"/"+(e||this.deviceName),DeviceKey:LLSyncProtocol_1.LLSyncConfig.BLE_PSK_DEVICE_KEY},[4,Promise.all([this.models.getDeviceConfig(tslib_1.__assign(tslib_1.__assign({},t),{isUserConfig:!0})),this.models.getDeviceConfig(t)])];case 1:if(r=tslib_1.__read.apply(void 0,[c.sent(),2]),o=r[0],n=r[1],!o||n)return[3,5];c.label=2;case 2:return c.trys.push([2,4,,5]),[4,this.models.setDeviceConfig({DeviceId:t.DeviceId,DeviceKey:t.DeviceKey,DeviceValue:o})];case 3:return c.sent(),[3,5];case 4:return s=c.sent(),console.error("update psk to DeviceConfig fail",s),[3,5];case 5:if(!(i=n||o))throw{code:constants.PSK_GET_ERROR};return[2,i]}}))}))},t.prototype.startOta=function(e){var t=e.onProgress;return this.otaProcessor.startOta({onProgress:t})},t.prototype.cancelOta=function(){return this.otaProcessor.cancelOta()},t.prototype.startListenLLEvents=function(){this.on(constants.PROPERTY_REPORT,utils.wrapEventHandler(this.onPropertyReport.bind(this),constants.PROPERTY_REPORT)),this.on(constants.GET_STATUS,this.onGetStatus.bind(this)),this.on(constants.EVENT_REPORT,utils.wrapEventHandler(this.onEventReport.bind(this),constants.EVENT_REPORT))},t.prototype.stopListenLLEvents=function(){this.off(constants.PROPERTY_REPORT),this.off(constants.GET_STATUS),this.off(constants.EVENT_REPORT)},t.prototype.setWsEventHandleEnabled=function(e){this._enableWsEventHandle=e},t.prototype.setLLEventHandleEnabled=function(e){this._enableLLEventHandle=e},t.prototype.onPropertyReport=function(e){return tslib_1.__awaiter(this,void 0,void 0,(function(){var t,r,o,n,s;return tslib_1.__generator(this,(function(i){switch(i.label){case 0:if(!this._enableLLEventHandle)return[2];i.label=1;case 1:return i.trys.push([1,3,,4]),console.log("onPropertyReport check this",this),t=utils.convertPropertiesTlvToJsObject(e.slice(2),this.dataTemplate),this.reporter.info(constants.REPORT_RESULT,{data:utils.formatArrayToReportString(e),jsObj:t}),r=t["_sys _timestamp"],[4,this.models.reportBlueToothDeviceData({ProductId:this.productId,DeviceName:this.deviceName,Data:t,DataTimeStamp:r?convertToMs(r):Date.now()})];case 2:return(o=i.sent().Data)&&(n=JSON.parse(o),this.protocol.reportPropertyReportResult(n.code)),[3,4];case 3:return s=i.sent(),this.reporter.error(constants.REPORT_RESULT_ERROR,{error:s}),this.protocol.reportPropertyReportResult(-1),[3,4];case 4:return[2]}}))}))},t.prototype.onGetStatus=function(){return tslib_1.__awaiter(this,void 0,void 0,(function(){var e,t,r,o,n,s;return tslib_1.__generator(this,(function(i){switch(i.label){case 0:if(!this._enableLLEventHandle)return[2];i.label=1;case 1:return i.trys.push([1,3,,4]),[4,this.models.getDeviceData({ProductId:this.productId,DeviceName:this.deviceName})];case 2:return e=i.sent(),t={},Object.keys(e).forEach((function(r){t[r]=e[r].Value})),r=utils.convertPropertiesChangeToTlv(t,this.dataTemplate),o=r.tlvData,n=r.tmpData,this.reporter.info(constants.GET_STATUS,{properties:t,tlvData:utils.formatArrayToReportString(o),tmpData:n}),this.protocol.reportGetStatusResult(0,o,n),[3,4];case 3:return s=i.sent(),this.reporter.error(constants.GET_STATUS_ERROR,{error:s}),this.protocol.reportGetStatusResult(-1),[2,Promise.reject(this.normalizeError(s))];case 4:return[2]}}))}))},t.prototype.onEventReport=function(e){return tslib_1.__awaiter(this,void 0,void 0,(function(){var t,r,o,n,s,i,c,a;return tslib_1.__generator(this,(function(d){switch(d.label){case 0:if(!this._enableLLEventHandle)return[2];d.label=1;case 1:d.trys.push([1,9,,10]),console.log("onEventReport check this",this),t=utils.getStrLength(e),r=utils.convertEventTlvToJsObject(e.slice(2,2+t),this.dataTemplate),o=r.eventId,n=r.params,s=r.eventIndex,i={DeviceId:this.explorerDeviceId,EventId:o,Params:JSON.stringify(n)},this.reporter.info(constants.EVENT_REPLY,tslib_1.__assign(tslib_1.__assign({},i),{eventIndex:s})),d.label=2;case 2:return d.trys.push([2,7,,8]),[4,this.models.reportDeviceEvent(i)];case 3:return d.sent(),console.log("reportDeviceEvent success"),e.length-2>t?(console.log("have more event data to report",e.length,t),[4,this.onEventReport({data:e.slice(t+2+1)})]):[3,5];case 4:return d.sent(),[3,6];case 5:this.protocol.reportEventReportResult(0,s),d.label=6;case 6:return[3,8];case 7:throw c=d.sent(),console.error({error:c,eventIndex:s}),this.protocol.reportEventReportResult(-1,s),c;case 8:return[3,10];case 9:return a=d.sent(),this.reporter.error(constants.EVENT_REPLY_ERROR,{error:a}),[2,Promise.reject(this.normalizeError(a))];case 10:return[2]}}))}))},t.prototype.bindDevice=function(e){var t=e.familyId,r=e.roomId;return tslib_1.__awaiter(this,void 0,void 0,(function(){var e,o,n,s,i,c,a,d,l,u,p;return tslib_1.__generator(this,(function(v){switch(v.label){case 0:return v.trys.push([0,7,,8]),this.reporter.info(constants.BIND_AUTH),e=Date.now(),[4,this.protocol.requestBindDevice({needUserCheck:this.needUserCheck,isDynamicRegister:this.extendInfo.isDynamicRegister})];case 1:o=v.sent(),n=o.sign,s=o.timestamp,i=o.nonce,c=o.deviceName,this.deviceName=c,v.label=2;case 2:return v.trys.push([2,4,,5]),a={Signature:n,DeviceTimestamp:s,DeviceId:this.explorerDeviceId,ConnId:""+i,FamilyId:t,RoomId:r,BindType:"bluetooth_sign"},this.reporter.info(constants.BIND_AUTH_DETAIL,a),[4,this.models.addDeviceBySigInFamily(a)];case 3:return v.sent(),[3,5];case 4:return d=v.sent(),this.protocol.reportBindError(d.code),[2,Promise.reject(this.normalizeError(d))];case 5:return l=this,[4,this.protocol.reportBindSuccess(e)];case 6:l.localPsk=v.sent();try{if(this.reporter.info(constants.BIND_AUTH_DETAIL,tslib_1.__assign({},this.extendInfo)),!this.extendInfo.macStr)return[2];u={productId:this.productId,deviceName:c,deviceInfo:{mac:this.extendInfo.macStr}},this.reporter.info(constants.BIND_AUTH_DETAIL,tslib_1.__assign({msg:"START_REPORT_DEVICE_INFO"},u)),this.models.reportDeviceInfo(u)}catch(e){}return[2,this.explorerDeviceId];case 7:return p=v.sent(),console.log(p),console.log("error in bindDevice",p),this.reporter.error(constants.BIND_AUTH_FAIL,{error:p}),[2,Promise.reject(this.normalizeError(p))];case 8:return[2]}}))}))},t.prototype.unbindDevice=function(e){var t=e.familyId,r=e.deviceName;return tslib_1.__awaiter(this,void 0,void 0,(function(){var e,o,n,s,i;return tslib_1.__generator(this,(function(c){switch(c.label){case 0:if(c.trys.push([0,5,,6]),!r)throw{code:constants.DEVICE_NAME_IS_EMPTY};return e=Date.now(),[4,this.getDevicePsk(r)];case 1:return o=c.sent(),this.reporter.info(constants.UNBIND_AUTH,{localPsk:o}),[4,this.protocol.getUnbindAuthSign()];case 2:if(n=c.sent().sign,s=utils.encrypt(constants.UNBIND_RESPONSE,o),n!==s)throw{code:constants.UNBIND_REPLY_ERROR};return this.localPsk=o,this.deviceName=r,[4,this.models.deleteDeviceFromFamily({FamilyId:t,DeviceId:this.explorerDeviceId})];case 3:return c.sent(),this.reporter.info(constants.UNBIND_RESULT_AUTH_SUCCESS,{timeCost:Date.now()-e}),[4,this.protocol.reportUnbindResult("success")];case 4:return c.sent(),this.stopListenLLEvents(),this.authorized=!1,this.disconnectDevice(),[3,6];case 5:return i=c.sent(),this.protocol.reportUnbindResult("fail"),this.reporter.error(constants.UNBIND_RESULT_AUTH_FAIL,{error:i}),[2,Promise.reject(this.normalizeError(i))];case 6:return[2]}}))}))},t.prototype.controlDevice=function(e){var t=e.deviceData;return tslib_1.__awaiter(this,void 0,void 0,(function(){var e;return tslib_1.__generator(this,(function(r){switch(r.label){case 0:return r.trys.push([0,3,,4]),console.log("controlDevice check this",this),this.reporter.info(constants.CONTROL_DEVICE,{deviceData:t}),[4,this.protocol.controlDeviceProperty(t)];case 1:return r.sent(),[4,this.models.reportBlueToothDeviceData({ProductId:this.productId,DeviceName:this.deviceName,Data:t,DataTimeStamp:Date.now()})];case 2:return r.sent(),[3,4];case 3:return e=r.sent(),this.reporter.error(constants.CONTROL_DEVICE_REPLY_ERROR,{error:e}),[2,Promise.reject(this.normalizeError(e))];case 4:return[2]}}))}))},t.prototype.controlAction=function(e){var t=e.actionData;return tslib_1.__awaiter(this,void 0,void 0,(function(){var e,r,o,n,s,i;return tslib_1.__generator(this,(function(c){switch(c.label){case 0:return c.trys.push([0,4,,5]),console.log("controlAction check this",this),[4,this.protocol.controlDeviceAction(t)];case 1:return e=c.sent().output,[4,utils.convertActionOutputTlvToJsObject(e,this.dataTemplate)];case 2:return r=c.sent(),o=r.outputParams,n=r.actionIndex,s=r.actionId,[4,this.models.publishDeviceActionMessage({deviceName:this.deviceName,productId:this.productId,actionId:s,clientToken:t.clientToken,output:o})];case 3:return c.sent(),this.reporter.info(constants.CONTROL_ACTION_SUCCESS,{outputParams:o,actionIndex:n,actionId:s}),[3,5];case 4:return i=c.sent(),this.reporter.error(constants.CONTROL_ACTION_ERROR,{error:i}),[2,Promise.reject(this.normalizeError(i))];case 5:return[2]}}))}))},t.prototype.authenticateConnection=function(e){var t=(void 0===e?{}:e).deviceName;return tslib_1.__awaiter(this,void 0,void 0,(function(){var e,r,o,n,s,i,c,a,d,l,u,p;return tslib_1.__generator(this,(function(v){switch(v.label){case 0:if(v.trys.push([0,8,,9]),console.log("start authenticate connection",t),!t)throw{code:constants.DEVICE_NAME_IS_EMPTY};return e=Date.now(),[4,this.getDevicePsk(t)];case 1:return r=v.sent(),this.localPsk=r,this.reporter.info(constants.CONNECT_AUTH,{localPsk:r}),[4,this.protocol.getDeviceAuthInfo()];case 2:if(o=v.sent(),n=o.sign,s=o.timestamp,i=utils.encrypt(""+(s+60)+this.productId+t,r),n!==i)throw{code:constants.CONNECT_SIGN_AUTH_ERROR};return[4,this.protocol.getDeviceInfo()];case 3:if(c=v.sent(),a=c.version,d=c.mtu,l=c.needSetMtu,u=c.otaVersion,this.deviceName=t,this.bleVersion=a,this.mtu=d,!l)return[3,7];v.label=4;case 4:return v.trys.push([4,6,,7]),[4,this.setMtu(this.mtu)];case 5:return v.sent(),this.writeMtuResult("success"),[3,7];case 6:return v.sent(),this.writeMtuResult("fail"),[3,7];case 7:return this.otaVersion=u,u&&this.models.reportOTAVersion({Version:u,DeviceId:this.explorerDeviceId}),this.reporter.info(constants.CONNECT_RESULT_WRITE_SUCCESS,{timeCost:Date.now()-e,version:a,mtu:d,otaVersion:u}),this.authorized=!0,this.emit("authorized",{version:a,mtu:d,otaVersion:u}),this.stopListenLLEvents(),this.startListenLLEvents(),[3,9];case 8:return p=v.sent(),this.protocol.reportConnectError(),this.reporter.error(constants.CONNECT_RESULT_WRITE_FAIL,{error:p}),[2,Promise.reject(this.normalizeError(p))];case 9:return[2]}}))}))},t.prototype.toString=function(){return"[LLSyncDeviceAdapter]"},t.serviceId16="0000FFE0-0000-1000-8000-00805F9B34FB",t.serviceId="0000FFE0-65D0-4E20-B56A-E493541BA4E2",t.deviceFilter=function(e,r){if(!e.advertisServiceUUIDs||!e.advertisServiceUUIDs.find((function(e){return e===t.serviceId16}))||!e.advertisData)return null;var o=t.options.appDevSdk.reporter;try{var n=Math.floor(10*Math.random())%10==1||!0,s=arrayBufferToHexStringArray(e.advertisData);n&&o.info(constants_1.REPORT_EVENT_TYPE,{message:"收到广播",serviceId:t.serviceId,hexArr:s.join(",")});var i=parseInt(s[2],16)-(parseInt(s[2],16)>>2<<2),c=parseInt(s[2],16)>>4,a=parseInt(s[2],16)>>2&1,d=r.productId&&r.deviceName?r.productId+"/"+r.deviceName:"",l=d?utils.get8ByteFromStr(""+d.replace("/","")):"",u=!!d,p="",v="",_="",h=constants.DEVICE_STATE_MAP[i],E=[constants.DEVICE_HAS_BINDED,constants.DEVICE_HAS_CONNECTED].indexOf(h)>-1;if(E)_=s.slice(3,11).join("").toLocaleLowerCase(),v=s.slice(11).join("").toLocaleLowerCase(),p=r.productId;else{var f=s.slice(3,9);e.name&&-1===e.name.indexOf("_")&&(e.name=e.name+"_"+f.slice(0,2).join("")),p=libs_1.hex2str(s.slice(9))}n&&o.info(constants_1.REPORT_EVENT_TYPE,{message:"解析广播",serviceId:t.serviceId,data:{bindState:h||"x",targetDeviceId:d,targetDeviceIdentify:l,deviceUserIdentify:v||"x",deviceProductId:p||"x",deviceIdentify:_||"x",isDynamicRegister:!!a,macStr:E?"":s.slice(3,9).join(":")}});var D=function(){var o=tslib_1.__assign(tslib_1.__assign({},e),{serviceId:t.serviceId,deviceName:r.deviceName||"",productId:p,extendInfo:{bindState:constants.DEVICE_STATE_MAP[h],moduleVersion:c,isDynamicRegister:!!a,standard:!0,macStr:E?"":s.slice(3,9).join(":")}});return console.log("---设备匹配成功---",o),o};return u&&E&&_===l?D():u||E?null:D()}catch(e){console.error("llsync device filter error",e),o.error(constants_1.REPORT_EVENT_TYPE,{message:"协议广播出错",error:e})}},t}(LLSyncDeviceAdapterBase_1.LLSyncDeviceAdapterBase);exports.LLSyncDeviceAdapter=LLSyncDeviceAdapter,exports.StandardDeviceAdapter=LLSyncDeviceAdapter;
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.StandardDeviceAdapter=exports.LLSyncDeviceAdapter=void 0;var tslib_1=require("tslib"),constants=tslib_1.__importStar(require("../../constants")),qcloud_iotexplorer_appdev_sdk_1=require("qcloud-iotexplorer-appdev-sdk"),constants_1=require("../../constants"),libs_1=require("../../libs"),utils=tslib_1.__importStar(require("../../libs")),Models_1=require("./Models"),LLSyncDeviceAdapterBase_1=require("../LLSyncDeviceAdapterBase"),LLSyncOtaProcessor_1=require("./LLSyncOtaProcessor"),LLSyncProtocol_1=require("./LLSyncProtocol"),arrayBufferToHexStringArray=qcloud_iotexplorer_appdev_sdk_1.AppDevSdk.utils.arrayBufferToHexStringArray,convertToMs=function(e){if("number"!=typeof e)throw new Error("timestamp should be a number");return e.toString().length>=13?e:1e3*e},WRITE_TO_DEVICE_CONF={timeout:LLSyncProtocol_1.LLSyncConfig.waitGetRegisterDeviceInfo,timeoutCode:constants.WAIT_REGISTER_DEVICE_INFO_REPLY_TIMEOUT,writeId:constants.DEVICE_INFO_WRITE_ID},LLSyncDeviceAdapter=function(e){function t(r){var n=e.call(this,r)||this;n._enableWsEventHandle=!0,n._enableLLEventHandle=!0;var s=function(e){return function(){for(var t=[],r=0;r<arguments.length;r++)t[r]=arguments[r];return tslib_1.__awaiter(n,void 0,void 0,(function(){return tslib_1.__generator(this,(function(r){switch(r.label){case 0:return[4,this.init()];case 1:return r.sent(),[2,e.apply(void 0,tslib_1.__spread(t))]}}))}))}};n.models=new Models_1.Models(t.options.appDevSdk),n.userIdentify=t.getUserIdentify(),n.on("disconnect",(function(){n.authorized=!1})),n.appDevSdk=t.options.appDevSdk,n.protocol=new LLSyncProtocol_1.LLSyncProtocol(n),n.otaProcessor=new LLSyncOtaProcessor_1.LLSyncOtaProcessor(n),Object.assign(n,{bindDevice:s(n.bindDevice.bind(n)),unbindDevice:s(n.unbindDevice.bind(n)),controlDevice:s(n.controlDevice.bind(n)),controlAction:s(n.controlAction.bind(n)),authenticateConnection:s(n.authenticateConnection.bind(n)),reconnectDevice:s(n.authenticateConnection.bind(n)),startOta:s(n.startOta.bind(n)),cancelOta:s(n.cancelOta.bind(n)),userCancelBindDevice:s(n.protocol.cancelUserCheck.bind(n.protocol,"cancel"))}),n.init(),n.reporter={info:function(e,r){void 0===e&&(e=""),void 0===r&&(r={});var s=r.message,i=void 0===s?"":s,o=r.serviceId,c=tslib_1.__rest(r,["message","serviceId"]),a=n,d=a.explorerDeviceId,l=a.deviceId,u=a.isConnected;t.options.appDevSdk.reporter.info(constants_1.REPORT_EVENT_TYPE,{serviceId:o||t.serviceId,message:i||(e&&constants.ACTION_DESC[e]?e+"("+constants.ACTION_DESC[e]+")":e),timeCost:c.timeCost||0,action:e,data:tslib_1.__assign({deviceId:d,bleDeviceId:l,isConnected:u},c)})},error:function(e,r){void 0===e&&(e=""),void 0===r&&(r={});var s=r.error,i=tslib_1.__rest(r,["error"]),o=n,c=o.explorerDeviceId,a=o.deviceId,d=o.isConnected;s.code&&constants.ERROR_MESSAGES[s.code]&&(s.msg=constants.ERROR_MESSAGES[s.code]),t.options.appDevSdk.reporter.error(constants_1.REPORT_EVENT_TYPE,{message:constants.ERROR_MESSAGES[e]?e+"("+constants.ERROR_MESSAGES[e]+":"+(s&&(s.message||s.errMsg||s.msg||s.code))+")":"",timeCost:i.timeCost||0,action:e,error:s,data:tslib_1.__assign(tslib_1.__assign({deviceId:c,bleDeviceId:a,isConnected:d},i),s)})}};var i=function(e){var t=e.deviceId,r=e.deviceData;if(n._enableWsEventHandle&&(console.log("llsync receive onControl",t,r,n.ready,n.explorerDeviceId),n.ready&&t===n.explorerDeviceId)){var s={};Object.keys(r).forEach((function(e){s[e]=r[e].Value})),n.controlDevice({deviceData:s})}},o=function(e){var t=e.deviceId,r=e.Payload;n._enableWsEventHandle&&n.ready&&t===n.explorerDeviceId&&n.controlAction({actionData:r})};return n.on("authorized",(function(){n.init(!0),n.appDevSdk.on(qcloud_iotexplorer_appdev_sdk_1.AppDevSdk.constants.EventTypes.WsControl,i),n.appDevSdk.on(qcloud_iotexplorer_appdev_sdk_1.AppDevSdk.constants.EventTypes.WsActionPush,o)})).on("disconnect",(function(){n.appDevSdk.off(qcloud_iotexplorer_appdev_sdk_1.AppDevSdk.constants.EventTypes.WsControl,i),n.appDevSdk.off(qcloud_iotexplorer_appdev_sdk_1.AppDevSdk.constants.EventTypes.WsActionPush,o)})),n}return tslib_1.__extends(t,e),t.getUserIdentify=function(){var e,r,n,s;return libs_1.getUserIdentify(null===(s=null===(n=null===(r=null===(e=t.options)||void 0===e?void 0:e.appDevSdk)||void 0===r?void 0:r.loginManager)||void 0===n?void 0:n.userInfo)||void 0===s?void 0:s.UserID)},t.injectOptions=function(e){e.appDevSdk.reporter&&e.appDevSdk.requestApi||console.warn("invalid appDevSdk",e.appDevSdk),t.options=e},Object.defineProperty(t.prototype,"ready",{get:function(){return console.log("isConnected",this.isConnected,"isAuthorized",this.authorized),this.isConnected&&this.authorized},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"needUserCheck",{get:function(){var e,t,r;try{return!!parseInt((null===(r=null===(t=null===(e=null==this?void 0:this.productConfig)||void 0===e?void 0:e.BleConfig)||void 0===t?void 0:t.bindingBootConfig)||void 0===r?void 0:r.confirmRequired)||"0")}catch(e){return console.warn("LLSync check confirmRequired fail",e),!1}},enumerable:!1,configurable:!0}),t.prototype.normalizeError=function(t){return!(t=e.prototype._normalizeError.call(this,t)).msg&&t.code&&constants.ERROR_MESSAGES[t.code]&&(t.msg=constants.ERROR_MESSAGES[t.code]),t},t.prototype.init=function(r){return tslib_1.__awaiter(this,void 0,void 0,(function(){var n=this;return tslib_1.__generator(this,(function(s){switch(s.label){case 0:if(!t.options)throw"标准蓝牙适配器未初始化Options";return[4,e.prototype.init.call(this)];case 1:return s.sent(),r&&(this.productInfo=this.productConfig=this._initPromise=null),[2,this._initPromise||(this._initPromise=new Promise((function(e,t){return tslib_1.__awaiter(n,void 0,void 0,(function(){var r,n,s,i,o,c,a;return tslib_1.__generator(this,(function(d){switch(d.label){case 0:return d.trys.push([0,2,,3]),n=(r=this).productConfig,s=r.productInfo,[4,Promise.all([n?Promise.resolve(n):this.models.getProduct({ProductId:this.productId}),s?Promise.resolve(s):this.models.getProductConfig({ProductId:this.productId})])];case 1:return i=tslib_1.__read.apply(void 0,[d.sent(),2]),o=i[0],c=i[1],this.dataTemplate=libs_1.getProductDateTemplate(o),this.productInfo=o,this.productConfig=c,console.log("init llsync done",{productInfo:this.productInfo,productConfig:this.productConfig,dataTemplate:this.dataTemplate}),e(),[3,3];case 2:return a=d.sent(),console.error("init standard device adapter fail",a),t(a),this._initPromise=null,[3,3];case 3:return[2]}}))}))})))]}}))}))},t.prototype.getDevicePsk=function(e){return tslib_1.__awaiter(this,void 0,void 0,(function(){var t,r,n,s,i,o;return tslib_1.__generator(this,(function(c){switch(c.label){case 0:return t={DeviceId:this.productId+"/"+(e||this.deviceName),DeviceKey:LLSyncProtocol_1.LLSyncConfig.BLE_PSK_DEVICE_KEY},[4,Promise.all([this.models.getDeviceConfig(tslib_1.__assign(tslib_1.__assign({},t),{isUserConfig:!0})),this.models.getDeviceConfig(t)])];case 1:if(r=tslib_1.__read.apply(void 0,[c.sent(),2]),n=r[0],s=r[1],!n||s)return[3,5];c.label=2;case 2:return c.trys.push([2,4,,5]),[4,this.models.setDeviceConfig({DeviceId:t.DeviceId,DeviceKey:t.DeviceKey,DeviceValue:n})];case 3:return c.sent(),[3,5];case 4:return i=c.sent(),console.error("update psk to DeviceConfig fail",i),[3,5];case 5:if(!(o=s||n))throw{code:constants.PSK_GET_ERROR};return[2,o]}}))}))},t.prototype.startOta=function(e){var t=e.onProgress;return this.otaProcessor.startOta({onProgress:t})},t.prototype.cancelOta=function(){return this.otaProcessor.cancelOta()},t.prototype.startListenLLEvents=function(){this.on(constants.PROPERTY_REPORT,utils.wrapEventHandler(this.onPropertyReport.bind(this),constants.PROPERTY_REPORT)),this.on(constants.GET_STATUS,this.onGetStatus.bind(this)),this.on(constants.EVENT_REPORT,utils.wrapEventHandler(this.onEventReport.bind(this),constants.EVENT_REPORT))},t.prototype.stopListenLLEvents=function(){this.off(constants.PROPERTY_REPORT),this.off(constants.GET_STATUS),this.off(constants.EVENT_REPORT)},t.prototype.setWsEventHandleEnabled=function(e){this._enableWsEventHandle=e},t.prototype.setLLEventHandleEnabled=function(e){this._enableLLEventHandle=e},t.prototype.onPropertyReport=function(e){return tslib_1.__awaiter(this,void 0,void 0,(function(){var t,r,n,s,i;return tslib_1.__generator(this,(function(o){switch(o.label){case 0:if(!this._enableLLEventHandle)return[2];o.label=1;case 1:return o.trys.push([1,3,,4]),console.log("onPropertyReport check this",this),t=utils.convertPropertiesTlvToJsObject(e.slice(2),this.dataTemplate),this.reporter.info(constants.REPORT_RESULT,{data:utils.formatArrayToReportString(e),jsObj:t}),r=t["_sys _timestamp"],[4,this.models.reportBlueToothDeviceData({ProductId:this.productId,DeviceName:this.deviceName,Data:t,DataTimeStamp:r?convertToMs(r):Date.now()})];case 2:return(n=o.sent().Data)&&(s=JSON.parse(n),this.protocol.reportPropertyReportResult(s.code)),[3,4];case 3:return i=o.sent(),this.reporter.error(constants.REPORT_RESULT_ERROR,{error:i}),this.protocol.reportPropertyReportResult(-1),[3,4];case 4:return[2]}}))}))},t.prototype.onGetStatus=function(){return tslib_1.__awaiter(this,void 0,void 0,(function(){var e,t,r,n,s,i;return tslib_1.__generator(this,(function(o){switch(o.label){case 0:if(!this._enableLLEventHandle)return[2];o.label=1;case 1:return o.trys.push([1,3,,4]),[4,this.models.getDeviceData({ProductId:this.productId,DeviceName:this.deviceName})];case 2:return e=o.sent(),t={},Object.keys(e).forEach((function(r){t[r]=e[r].Value})),r=utils.convertPropertiesChangeToTlv(t,this.dataTemplate),n=r.tlvData,s=r.tmpData,this.reporter.info(constants.GET_STATUS,{properties:t,tlvData:utils.formatArrayToReportString(n),tmpData:s}),this.protocol.reportGetStatusResult(0,n,s),[3,4];case 3:return i=o.sent(),this.reporter.error(constants.GET_STATUS_ERROR,{error:i}),this.protocol.reportGetStatusResult(-1),[2,Promise.reject(this.normalizeError(i))];case 4:return[2]}}))}))},t.prototype.onEventReport=function(e){return tslib_1.__awaiter(this,void 0,void 0,(function(){var t,r,n,s,i,o,c,a;return tslib_1.__generator(this,(function(d){switch(d.label){case 0:if(!this._enableLLEventHandle)return[2];d.label=1;case 1:d.trys.push([1,9,,10]),console.log("onEventReport check this",this),t=utils.getStrLength(e),r=utils.convertEventTlvToJsObject(e.slice(2,2+t),this.dataTemplate),n=r.eventId,s=r.params,i=r.eventIndex,o={DeviceId:this.explorerDeviceId,EventId:n,Params:JSON.stringify(s)},this.reporter.info(constants.EVENT_REPLY,tslib_1.__assign(tslib_1.__assign({},o),{eventIndex:i})),d.label=2;case 2:return d.trys.push([2,7,,8]),[4,this.models.reportDeviceEvent(o)];case 3:return d.sent(),console.log("reportDeviceEvent success"),e.length-2>t?(console.log("have more event data to report",e.length,t),[4,this.onEventReport({data:e.slice(t+2+1)})]):[3,5];case 4:return d.sent(),[3,6];case 5:this.protocol.reportEventReportResult(0,i),d.label=6;case 6:return[3,8];case 7:throw c=d.sent(),console.error({error:c,eventIndex:i}),this.protocol.reportEventReportResult(-1,i),c;case 8:return[3,10];case 9:return a=d.sent(),this.reporter.error(constants.EVENT_REPLY_ERROR,{error:a}),[2,Promise.reject(this.normalizeError(a))];case 10:return[2]}}))}))},t.prototype.bindDevice=function(e){var t=e.familyId,r=e.roomId;return tslib_1.__awaiter(this,void 0,void 0,(function(){var e,n,s,i,o,c,a,d,l,u,_,p,v,h,E,I,D,f;return tslib_1.__generator(this,(function(g){switch(g.label){case 0:e=this.extendInfo,n=e.isDynamicRegister,s=e.isEncrypted,libs_1.log("bindDevice isEncrypted:",{isEncrypted:s,isDynamicRegister:n}),this.isEncrypted=s,g.label=1;case 1:return g.trys.push([1,6,,7]),s?[4,this.bindDeviceEncrypted({isDynamicRegister:n})]:[3,3];case 2:return D=g.sent(),i=D.sign,o=D.timestamp,c=D.nonce,a=D.deviceName,d=D.secretKey,[3,5];case 3:return[4,this.protocol.requestBindDevice({needUserCheck:this.needUserCheck,isDynamicRegister:n})];case 4:f=g.sent(),i=f.sign,o=f.timestamp,c=f.nonce,a=f.deviceName,g.label=5;case 5:return[3,7];case 6:return l=g.sent(),libs_1.log("get bind sign failed, isEncrypted:",s,l),!s&&this.protocol.reportBindError(l.code),[2,Promise.reject(this.normalizeError(l))];case 7:g.trys.push([7,17,,18]),this.reporter.info(constants.BIND_AUTH),u=Date.now(),this.deviceName=a,g.label=8;case 8:return g.trys.push([8,10,,11]),_={Signature:i,DeviceTimestamp:o,DeviceId:this.explorerDeviceId,ConnId:""+c,FamilyId:t,RoomId:r,BindType:"bluetooth_sign",SignMethod:s?"hmacsha256":"hmacsha1"},this.reporter.info(constants.BIND_AUTH_DETAIL,_),[4,this.models.addDeviceBySigInFamily(_)];case 9:return g.sent(),[3,11];case 10:return p=g.sent(),s?this.protocol.reportBindEncryptedError(d):this.protocol.reportBindError(p.code),[2,Promise.reject(this.normalizeError(p))];case 11:return s?[4,this.protocol.reportBindEncryptedSuccess(u,d)]:[3,13];case 12:return g.sent(),[3,15];case 13:return v=this,[4,this.protocol.reportBindSuccess(u)];case 14:v.localPsk=g.sent(),g.label=15;case 15:return h=this,[4,this.protocol.reportBindSuccess(u)];case 16:h.localPsk=g.sent();try{if(this.reporter.info(constants.BIND_AUTH_DETAIL,tslib_1.__assign({},this.extendInfo)),!this.extendInfo.macStr)return[2];E={productId:this.productId,deviceName:a,deviceInfo:{mac:this.extendInfo.macStr}},this.reporter.info(constants.BIND_AUTH_DETAIL,tslib_1.__assign({msg:"START_REPORT_DEVICE_INFO"},E)),this.models.reportDeviceInfo(E)}catch(e){}return[2,this.explorerDeviceId];case 17:return I=g.sent(),console.log(I),console.log("error in bindDevice",I),this.reporter.error(constants.BIND_AUTH_FAIL,{error:I}),[2,Promise.reject(this.normalizeError(I))];case 18:return[2]}}))}))},t.prototype.bindDeviceEncrypted=function(e){var t=e.isDynamicRegister,r=void 0!==t&&t;return tslib_1.__awaiter(this,void 0,void 0,(function(){var e,t,n,s,i,o,c,a,d,l,u,_,p,v;return tslib_1.__generator(this,(function(h){switch(h.label){case 0:return h.trys.push([0,9,,10]),e=void 0,t=void 0,r?[4,this.getDeviceNameWithRegister()]:[3,2];case 1:return p=h.sent(),e=p.deviceName,t=p.nonce,[3,4];case 2:return[4,this.getDeviceNameEncrypted()];case 3:v=h.sent(),e=v.deviceName,t=v.nonce,h.label=4;case 4:return this.deviceName=e,[4,this.models.getDeviceSignAgitated({DeviceId:this.productId+"/"+e,Content:t})];case 5:return n=h.sent(),libs_1.log("get device sign response: ",n),s=n.AgitatedSignature,i=n.Timestamp,o=n.AgitatedContent,[4,this.requestBindEncrypted(s,i)];case 6:return c=h.sent(),a=c.deviceSign,d=c.R2,[4,this.verifyDeviceSign(o,d,a)];case 7:return l=h.sent(),libs_1.log("ks:",l),[4,this.notifyBindDevice(l)];case 8:return u=h.sent(),this.secretKey=l,libs_1.log("get notifyRes:",u),[2,{sign:u.sign,timestamp:Number(i),nonce:libs_1.hex2Base64(t),secretKey:l,deviceName:e}];case 9:return _=h.sent(),console.warn("bind device encrypted failed",_),[2,Promise.reject(_)];case 10:return[2]}}))}))},t.prototype.requestBindEncrypted=function(e,t){return tslib_1.__awaiter(this,void 0,void 0,(function(){var r,n,s,i,o,c,a,d,l,u=this;return tslib_1.__generator(this,(function(_){switch(_.label){case 0:return r=constants.DEVICE_INFO_WRITE_PREFIX,n=constants.REQUEST_BIND,s=r[n],i=Number(t).toString(16),o=libs_1.base64toHEX(e),c=libs_1.randomBytesHex(16),a=""+s+c+i+o,libs_1.log("REQUEST_BIND_PAYLOAD: ",s+"/"+c+"/"+i+"/"+o),[4,this.sendBleData(a,n).then((function(e){var t=parseInt(e.slice(2,3).join(""),16);if(1===t)throw{code:constants.REQUEST_BIND_FAILED};var r=e.slice(3,19).join("").toLowerCase(),n=parseInt(e.slice(19,23).join(""),16).toString(),s=e.slice(23).join("").toLowerCase(),i="/".charCodeAt(0).toString(16),o=""+r+i+libs_1.str2hexStr(n)+i;return libs_1.log("bind request response",{nonce:r,timestamp:n,sign:s,R2:o}),u.reporter.info(constants.REQUEST_BIND_SUCCESS,{nonce:r,timestamp:n,sign:s,R2:o}),{ack:t,timestamp:n,R2:o,deviceSign:s}}))];case 1:return d=_.sent(),l=d.deviceSign,libs_1.log("verify sign succeed",l),[2,d]}}))}))},t.prototype.verifyDeviceSign=function(e,t,r){return tslib_1.__awaiter(this,void 0,void 0,(function(){return tslib_1.__generator(this,(function(n){switch(n.label){case 0:return[4,this.models.getDeviceSecret({DeviceId:this.productId+"/"+this.deviceName,AppNonce:e,DeviceNonce:t,DeviceNonceSign:r})];case 1:return[2,n.sent()]}}))}))},t.prototype.getDeviceNameWithRegister=function(){return tslib_1.__awaiter(this,void 0,void 0,(function(){var e,t,r,n,s,i,o,c,a=this;return tslib_1.__generator(this,(function(d){switch(d.label){case 0:return e=constants.DEVICE_INFO_WRITE_PREFIX[constants.GET_DEVICE_NAME],t=Math.floor(Date.now()/1e3),r=parseInt(utils.gen4BytesIntHex(),16),n=""+e+r.toString(16)+t.toString(16),[4,this.sendBleData(n,constants.GET_DEVICE_NAME_WITH_REGISTER).then((function(e){var t=parseInt(e[2],16);if(1===t)throw libs_1.log("get register data failed",{ack:t,data:e}),{code:constants.GET_DEVICE_NAME_WITH_REGISTER_FAILED};var r=parseInt(e.slice(3,4).join(""),16),n=libs_1.hex2str(e.slice(4,4+r)),s=libs_1.hex2str(e.slice(4+r));return libs_1.log("register data",{bleData:e,sign:s,deviceName:n}),{deviceName:n,sign:s}}))];case 1:return s=d.sent(),i=s.deviceName,o=s.sign,[4,this.models.dynamicRegisterDevice({deviceName:i,sign:o,productId:this.productId,timestamp:t,nonce:r})];case 2:return c=d.sent().payload,libs_1.log("dynamic register payload",c),[4,this.sendBleData(""+constants.DEVICE_INFO_WRITE_PREFIX[constants.GET_DEVICE_NAME_WITH_REGISTER]+libs_1.str2hexStr(c),constants.GET_DEVICE_NAME).then((function(e){var t=parseInt(e[2],16);if(1===t)throw a.reporter.error(constants.REGISTER_DEVICE_INFO_REPLY_INVALID,{ack:t,data:e}),{code:constants.REGISTER_DEVICE_INFO_REPLY_INVALID};var r=e.slice(3,19).join(""),n=libs_1.hex2str(e.slice(19));return libs_1.log("dyna register res",{deviceName:n,sign:r}),{deviceName:n,nonce:r}}))];case 3:return[2,d.sent()]}}))}))},t.prototype.getDeviceNameEncrypted=function(){return tslib_1.__awaiter(this,void 0,void 0,(function(){var e,t,r=this;return tslib_1.__generator(this,(function(n){switch(n.label){case 0:return e=constants.DEVICE_INFO_WRITE_PREFIX[constants.GET_DEVICE_NAME],[4,this.writeAndWait4Response([e],constants.GET_DEVICE_NAME,(function(e){if(!e.length)throw{code:constants.REGISTER_DEVICE_INFO_REPLY_INVALID};var t=libs_1.getStrLength(e),n=parseInt(e.slice(2,3).join(""),16),s=e.slice(3,19).join(""),i=libs_1.hex2str(e.slice(19));return r.reporter.info(constants.GET_DEVICE_NAME,{allLength:t,nonce:s,ack:n,deviceName:i}),{nonce:s,deviceName:i}}),WRITE_TO_DEVICE_CONF)];case 1:return t=n.sent(),libs_1.log("getDeviceName res",t),[2,t]}}))}))},t.prototype.encrypt=function(e,t,r){void 0===r&&(r={}),libs_1.log("start to encrypt data",e);var n=this.appDevSdk.utils.CryptoJS,s=function(e){"hex"===r.contentType&&(e=n.enc.Hex.parse(e));var s=n.AES.encrypt(e,n.enc.Hex.parse(t),{mode:n.mode.ECB,padding:n.pad.Pkcs7});return libs_1.base64toHEX(s.toString())};return"string"==typeof e?s(e):e.map(s)},t.prototype.notifyBindDevice=function(e){return tslib_1.__awaiter(this,void 0,void 0,(function(){var t,r,n=this;return tslib_1.__generator(this,(function(s){switch(s.label){case 0:return t=constants.DEVICE_INFO_WRITE_PREFIX[constants.NOTIFY_BIND],"BindRequest",r=this.encrypt("BindRequest",e),[4,this.sendBleData(""+t+r,constants.NOTIFY_BIND).then((function(t){var r=parseInt(t.slice(2,3).join(""),16);if(1===r)throw n.reporter.error(constants.NOTIFY_BIND_FAILED,{res:t,ack:r}),{code:constants.NOTIFY_BIND_FAILED};var s=t.slice(3).join(""),i=utils.decrypt(s,e);return libs_1.log("bind decrypted sign:",i),n.reporter.info(constants.NOTIFY_BIND_SUCCESS,{ack:r,sign:i}),{ack:r,sign:i}}))];case 1:return[2,s.sent()]}}))}))},t.prototype.unbindDevice=function(e){var t=e.familyId,r=e.deviceName;return tslib_1.__awaiter(this,void 0,void 0,(function(){var e,n,s,i,o;return tslib_1.__generator(this,(function(c){switch(c.label){case 0:e=Date.now(),c.label=1;case 1:return c.trys.push([1,9,,10]),this.isEncrypted?[4,this.unbindDeviceEncrypted()]:[3,3];case 2:return c.sent(),[3,6];case 3:if(!r)throw{code:constants.DEVICE_NAME_IS_EMPTY};return[4,this.getDevicePsk(r)];case 4:return n=c.sent(),this.reporter.info(constants.UNBIND_AUTH,{localPsk:n}),[4,this.protocol.getUnbindAuthSign()];case 5:if(s=c.sent().sign,i=utils.encrypt(constants.UNBIND_RESPONSE,n),s!==i)throw{code:constants.UNBIND_REPLY_ERROR};this.localPsk=n,this.deviceName=r,c.label=6;case 6:return[4,this.models.deleteDeviceFromFamily({FamilyId:t,DeviceId:this.explorerDeviceId})];case 7:return c.sent(),this.reporter.info(constants.UNBIND_RESULT_AUTH_SUCCESS,{timeCost:Date.now()-e}),[4,this.protocol.reportUnbindResult("success")];case 8:return c.sent(),this.stopListenLLEvents(),this.authorized=!1,this.disconnectDevice(),[3,10];case 9:return o=c.sent(),this.protocol.reportUnbindResult("fail"),this.reporter.error(constants.UNBIND_RESULT_AUTH_FAIL,{error:o}),[2,Promise.reject(this.normalizeError(o))];case 10:return[2]}}))}))},t.prototype.unbindDeviceEncrypted=function(){return tslib_1.__awaiter(this,void 0,void 0,(function(){var e,t,r=this;return tslib_1.__generator(this,(function(n){switch(n.label){case 0:return e=constants.DEVICE_INFO_WRITE_PREFIX[constants.UNBIND_REQUEST],"UnbindRequest",t=this.encrypt("UnbindRequest",this.sessionKey),[4,this.sendBleData(""+e+t,constants.UNBIND_REQUEST).then((function(e){if(libs_1.log("unbind res encrypted data",e),1===parseInt(e[2],16))throw{code:constants.UNBIND_REPLY_INVALID};var t=utils.decrypt(e.slice(3).join(""),r.sessionKey);if(libs_1.log("unbind payload",libs_1.hex2str(t)),"UnbindResponse"===libs_1.hex2str(t))return!0;throw{code:constants.UNBIND_REPLY_ERROR}}))];case 1:return[2,n.sent()]}}))}))},t.prototype.controlDevice=function(e){var t=e.deviceData;return tslib_1.__awaiter(this,void 0,void 0,(function(){var e;return tslib_1.__generator(this,(function(r){switch(r.label){case 0:return r.trys.push([0,3,,4]),console.log("controlDevice check this",this),this.reporter.info(constants.CONTROL_DEVICE,{deviceData:t}),[4,this.protocol.controlDeviceProperty(t)];case 1:return r.sent(),[4,this.models.reportBlueToothDeviceData({ProductId:this.productId,DeviceName:this.deviceName,Data:t,DataTimeStamp:Date.now()})];case 2:return r.sent(),[3,4];case 3:return e=r.sent(),this.reporter.error(constants.CONTROL_DEVICE_REPLY_ERROR,{error:e}),[2,Promise.reject(this.normalizeError(e))];case 4:return[2]}}))}))},t.prototype.controlAction=function(e){var t=e.actionData;return tslib_1.__awaiter(this,void 0,void 0,(function(){var e,r,n,s,i,o;return tslib_1.__generator(this,(function(c){switch(c.label){case 0:return c.trys.push([0,4,,5]),console.log("controlAction check this",this),[4,this.protocol.controlDeviceAction(t)];case 1:return e=c.sent().output,[4,utils.convertActionOutputTlvToJsObject(e,this.dataTemplate)];case 2:return r=c.sent(),n=r.outputParams,s=r.actionIndex,i=r.actionId,[4,this.models.publishDeviceActionMessage({deviceName:this.deviceName,productId:this.productId,actionId:i,clientToken:t.clientToken,output:n})];case 3:return c.sent(),this.reporter.info(constants.CONTROL_ACTION_SUCCESS,{outputParams:n,actionIndex:s,actionId:i}),[3,5];case 4:return o=c.sent(),this.reporter.error(constants.CONTROL_ACTION_ERROR,{error:o}),[2,Promise.reject(this.normalizeError(o))];case 5:return[2]}}))}))},t.prototype.authenticateConnection=function(e){var t=(void 0===e?{}:e).deviceName;return tslib_1.__awaiter(this,void 0,void 0,(function(){var e,r,n,s,i,o,c,a,d,l,u,_,p,v,h;return tslib_1.__generator(this,(function(E){switch(E.label){case 0:if(E.trys.push([0,15,,16]),console.log("start authenticate connection",t),!t)throw{code:constants.DEVICE_NAME_IS_EMPTY};return[4,this.models.getDeviceConfig({DeviceId:this.productId+"/"+t,DeviceKey:LLSyncProtocol_1.LLSyncConfig.Secret_Encrypt_Key})];case 1:if(e=E.sent(),r=void 0,n=void 0,s=void 0,i=void 0,o=Date.now(),!e)return[3,6];this.isEncrypted=!0,this.secretKey=e,E.label=2;case 2:return E.trys.push([2,4,,5]),[4,this.authConnectionEncrypted({deviceName:t})];case 3:return v=E.sent(),r=v.version,n=v.mtu,s=v.needSetMtu,i=v.otaVersion,[3,5];case 4:return c=E.sent(),libs_1.log("auth connection encrypted faild",c),[2,Promise.reject(c)];case 5:return[3,10];case 6:return[4,this.getDevicePsk(t)];case 7:return a=E.sent(),this.localPsk=a,this.reporter.info(constants.CONNECT_AUTH,{localPsk:a}),[4,this.protocol.getDeviceAuthInfo()];case 8:if(d=E.sent(),l=d.sign,u=d.timestamp,_=utils.encrypt(""+(u+60)+this.productId+t,a),l!==_)throw{code:constants.CONNECT_SIGN_AUTH_ERROR};return[4,this.protocol.getDeviceInfo()];case 9:h=E.sent(),r=h.version,n=h.mtu,s=h.needSetMtu,i=h.otaVersion,E.label=10;case 10:if(this.deviceName=t,this.bleVersion=r,this.mtu=n,!s)return[3,14];E.label=11;case 11:return E.trys.push([11,13,,14]),[4,this.setMtu(this.mtu)];case 12:return E.sent(),this.writeMtuResult("success"),[3,14];case 13:return E.sent(),this.writeMtuResult("fail"),[3,14];case 14:return this.otaVersion=i,i&&this.models.reportOTAVersion({Version:i,DeviceId:this.explorerDeviceId}),this.reporter.info(constants.CONNECT_RESULT_WRITE_SUCCESS,{timeCost:Date.now()-o,version:r,mtu:n,otaVersion:i}),this.authorized=!0,this.emit("authorized",{version:r,mtu:n,otaVersion:i}),this.stopListenLLEvents(),this.startListenLLEvents(),[3,16];case 15:return p=E.sent(),this.protocol.reportConnectError(),this.reporter.error(constants.CONNECT_RESULT_WRITE_FAIL,{error:p}),[2,Promise.reject(this.normalizeError(p))];case 16:return[2]}}))}))},t.prototype.authConnectionEncrypted=function(e){var t=e.deviceName;return tslib_1.__awaiter(this,void 0,void 0,(function(){var e,r,n,s,i,o,c,a,d,l,u,_=this;return tslib_1.__generator(this,(function(p){switch(p.label){case 0:return e=constants.DEVICE_INFO_WRITE_PREFIX,r=constants.CONNECT_REQUEST,n=constants.CONNECT_ACK,s=""+e[r]+this.encrypt("ConnectRequest",this.secretKey),[4,this.sendBleData(s,r).then((function(e){libs_1.log("connect res",e);var t=parseInt(e[2],16),r=e.slice(3,19).join(""),n=e.slice(19).join("");if(1===t)throw{code:constants.CONNECT_SIGN_AUTH_ERROR};return{ack:t,R3:r,sign:n}}))];case 1:return i=p.sent(),o=i.R3,c=i.sign,[4,this.models.getDeviceSign({DeviceId:this.productId+"/"+(t||this.deviceName),Content:""+o+";".charCodeAt(0).toString(16)+this.secretKey,ContentType:"hex"})];case 2:if(a=p.sent(),libs_1.log("get sessionKey",a),d=this.encrypt(o,a,{contentType:"hex"}),libs_1.log("verify sign:",d,c),d.toLowerCase()!==c.toLowerCase())throw{code:constants.CONNECT_SIGN_VERIFY_ERROR};return this.sessionKey=a,l=""+e[n]+this.encrypt("ConnectResult",this.sessionKey),[4,this.sendBleData(l,n).then((function(e){if(1===parseInt(e[2],16))throw{code:constants.CONNECT_SIGN_VERIFY_ERROR};var t=e.slice(3,19).join(""),r=utils.decrypt(t,_.sessionKey);libs_1.log("decrypted data",r,t);var n=_.appDevSdk.utils.byteUtil.hexString2hexArray(r),s=parseInt(n[0],16),i=parseInt(n.slice(1,3).join(""),16),o=n.slice(4).join("");return{version:s,mtu:8191&i,needSetMtu:!!(i>>15),otaVersion:o?libs_1.hex2str(o):o}}))];case 3:return u=p.sent(),libs_1.log("connect ack res",u),[2,u]}}))}))},t.prototype.sendBleData=function(e,t){return tslib_1.__awaiter(this,void 0,void 0,(function(){var r;return tslib_1.__generator(this,(function(n){return r=this.protocol._parseDataBeforeConnect(e,t),[2,this.writeAndWait4Response(r,t,(function(e){return e}),WRITE_TO_DEVICE_CONF)]}))}))},t.prototype.toString=function(){return"[LLSyncDeviceAdapter]"},t.serviceId16="0000FFE0-0000-1000-8000-00805F9B34FB",t.serviceId="0000FFE0-65D0-4E20-B56A-E493541BA4E2",t.deviceFilter=function(e,r){if(!e.advertisServiceUUIDs||!e.advertisServiceUUIDs.find((function(e){return e===t.serviceId16}))||!e.advertisData)return null;var n=t.options.appDevSdk.reporter;try{var s=Math.floor(10*Math.random())%10==1||!0,i=arrayBufferToHexStringArray(e.advertisData);s&&n.info(constants_1.REPORT_EVENT_TYPE,{message:"收到广播",serviceId:t.serviceId,hexArr:i.join(",")});var o=parseInt(i[2],16),c=o-(o>>2<<2),a=o>>4,d=o>>2&1,l=o>>3&1,u=r.productId&&r.deviceName?r.productId+"/"+r.deviceName:"",_=u?utils.get8ByteFromStr(""+u.replace("/","")):"",p=!!u,v="",h="",E="",I=constants.DEVICE_STATE_MAP[c],D=[constants.DEVICE_HAS_BINDED,constants.DEVICE_HAS_CONNECTED].indexOf(I)>-1;if(D)E=i.slice(3,11).join("").toLocaleLowerCase(),h=i.slice(11).join("").toLocaleLowerCase(),v=r.productId;else{var f=i.slice(3,9);e.name&&-1===e.name.indexOf("_")&&(e.name=e.name+"_"+f.slice(0,2).join("")),v=libs_1.hex2str(i.slice(9))}s&&n.info(constants_1.REPORT_EVENT_TYPE,{message:"解析广播",serviceId:t.serviceId,data:{bindState:I||"x",targetDeviceId:u,targetDeviceIdentify:_,deviceUserIdentify:h||"x",deviceProductId:v||"x",deviceIdentify:E||"x",isDynamicRegister:!!d,isEncrypted:!!l,macStr:D?"":i.slice(3,9).join(":")}});var g=function(){var n=tslib_1.__assign(tslib_1.__assign({},e),{serviceId:t.serviceId,deviceName:r.deviceName||"",productId:v,extendInfo:{bindState:constants.DEVICE_STATE_MAP[I],moduleVersion:a,isDynamicRegister:!!d,isEncrypted:!!l,standard:!0,macStr:D?"":i.slice(3,9).join(":")}});return console.log("---设备匹配成功---",n),n};return p&&D&&E===_?g():p||D?null:g()}catch(e){console.error("llsync device filter error",e),n.error(constants_1.REPORT_EVENT_TYPE,{message:"协议广播出错",error:e})}},t}(LLSyncDeviceAdapterBase_1.LLSyncDeviceAdapterBase);exports.LLSyncDeviceAdapter=LLSyncDeviceAdapter,exports.StandardDeviceAdapter=LLSyncDeviceAdapter;
//# sourceMappingURL=LLSyncDeviceAdapter.js.map

@@ -1,2 +0,2 @@

"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.LLSyncOtaProcessor=exports.getPackageDataToSend=exports.generateFileChunks=void 0;var tslib_1=require("tslib"),qcloud_iotexplorer_appdev_sdk_1=require("qcloud-iotexplorer-appdev-sdk"),qcloud_iotexplorer_bluetooth_adapter_1=require("qcloud-iotexplorer-bluetooth-adapter"),constants=tslib_1.__importStar(require("../../constants")),libs_1=require("../../libs"),LLSyncProtocol_1=require("./LLSyncProtocol"),arrayBufferToHexStringArray=qcloud_iotexplorer_bluetooth_adapter_1.blueToothHelper.arrayBufferToHexStringArray,_a=qcloud_iotexplorer_appdev_sdk_1.AppDevSdk.utils,genPromise=_a.genPromise,delay=_a.delay,byteUtil=_a.byteUtil;exports.generateFileChunks=function(e,t){for(var r=t.alreadyReceiveSize,o=[],n=t.maxLengthPerPackage-3,s=Math.min(Math.ceil((e.fileSize-r)/n),t.maxPackageNumPerCircle),i=0;i<s;i++){var a=Math.min(r+n,e.fileSize),c=e.fileBuffer.slice(r,a);o.push(c),r=a}return o},exports.getPackageDataToSend=function(e,t){for(var r=[],o=parseInt(constants.LL_OTA_WRITE_PREFIX[constants.OTA_UPDATE_DATA],16),n=t;n<e.length;n++){var s=e[n].byteLength+1;r.push(tslib_1.__spread([libs_1.U8ToHexString(o),libs_1.U8ToHexString(s),libs_1.U8ToHexString(n)],arrayBufferToHexStringArray(e[n])).join(""))}return r};var LLSyncOtaProcessor=function(){function e(e){this.otaInProgress=!1,this.deviceAdapter=e}return Object.defineProperty(e.prototype,"reporter",{get:function(){return this.deviceAdapter.reporter},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"otaVersion",{get:function(){return this.deviceAdapter.otaVersion},enumerable:!1,configurable:!0}),e.prototype.onProgress=function(e,t){void 0===t&&(t={});var r=constants.OTA_UPDATE_STEPS_MESSAGE[e];this.reporter.info(e,tslib_1.__assign({message:r},t)),"function"==typeof this._onProgressCb&&this._onProgressCb({code:e,msg:r,detail:t})},e.prototype.cancelOta=function(){this.otaInProgress&&this.processPromise.reject({code:"USER_CANCEL_OTA_UPDATE"})},e.prototype.startOta=function(e){var t=e.onProgress;return tslib_1.__awaiter(this,void 0,void 0,(function(){var e,r,o,n,s,i,a,c,_,l;return tslib_1.__generator(this,(function(d){switch(d.label){case 0:if(this.otaInProgress)throw{code:"OTA_UPDATE_IN_PROGRESS",msg:"OTA升级进行中,请勿重复操作"};this.otaInProgress=!0,this.processPromise=genPromise(),this._onProgressCb=t,d.label=1;case 1:return d.trys.push([1,8,9,10]),this.onProgress(constants.OTA_UPDATE_STEPS.GET_OTA_UPDATE_INFO),[4,this.getOtaUpdateInfo()];case 2:if(e=d.sent(),this.onProgress(constants.OTA_UPDATE_STEPS.GET_OTA_UPDATE_INFO_SUCCESS,{otaUpdateInfo:e}),!e.needUpdate)throw{code:this.otaVersion?"MODULE_VERSION_IS_UPDATED":"MODULE_DONNOT_SUPPORT"};return this.onProgress(constants.OTA_UPDATE_STEPS.DOWNLOADING_OTA_FILE),[4,this.downloadOtaFile(e)];case 3:return r=d.sent(),this.onProgress(constants.OTA_UPDATE_STEPS.DOWNLOAD_OTA_FILE_SUCCESS,{fileInfo:r}),this.onProgress(constants.OTA_UPDATE_STEPS.REQUEST_MODULE_UPDATE_START),[4,this.sendOTARequest({fileInfo:r,otaUpdateInfo:e})];case 4:return o=d.sent(),n=o.supportUploadFromBreak,s=o.otaUpdateProgressInfo,this.onProgress(constants.OTA_UPDATE_STEPS.REQUEST_MODULE_UPDATE_SUCCESS,{supportUploadFromBreak:n,otaUpdateProgressInfo:s}),this.onProgress(constants.OTA_UPDATE_STEPS.SEND_UPDATE_DATA_START),i=Date.now(),[4,this.sendOtaFile({fileInfo:r,otaUpdateProgressInfo:s})];case 5:return d.sent(),[4,this.reportAndConfirmUpdateStatus({otaUpdateProgressInfo:s})];case 6:return a=d.sent(),this.onProgress(constants.OTA_UPDATE_STEPS.SEND_UPDATE_DATA_SUCCESS,{timeCost:Date.now()-i,response:a}),this.onProgress(constants.OTA_UPDATE_STEPS.WAITING_MODULE_UPDATE),c=Date.now(),[4,this.checkRebootStatus({otaUpdateInfo:e,rebootMaxTime:s.rebootMaxTime})];case 7:return d.sent(),this.onProgress(constants.OTA_UPDATE_STEPS.MODULE_UPDATE_SUCCESS,{timeCost:Date.now()-c}),this.processPromise=null,[2,{code:constants.OTA_UPDATE_STEPS.MODULE_UPDATE_SUCCESS,msg:constants.OTA_UPDATE_STEPS_MESSAGE[constants.OTA_UPDATE_STEPS.MODULE_UPDATE_SUCCESS]}];case 8:throw _=d.sent(),console.log("---ota fail---",_),_||(_={}),_.code&&constants.OTA_UPDATE_ERRORS[_.code]?_.msg=constants.OTA_UPDATE_ERRORS[_.code]+":"+_.code:(l="MODULE_DONNOT_SUPPORT",_.msg=l+":"+constants.OTA_UPDATE_ERRORS[l]+":"+_.code+":"+(_.msg||_.errMsg||""),_.code=l),this.reporter.error("MODULE_UPDATE_FAIL",{error:_}),_;case 9:return this.otaInProgress=!1,[7];case 10:return[2]}}))}))},e.prototype.reportAndConfirmUpdateStatus=function(e){var t=e.otaUpdateProgressInfo;return tslib_1.__awaiter(this,void 0,void 0,(function(){var e;return tslib_1.__generator(this,(function(r){return e=""+constants.LL_OTA_WRITE_PREFIX[constants.OTA_UPDATE_DATA_END],[2,this.deviceAdapter.writeAndWait4Response(e,constants.UPDATE_DATA_CHECK_REPLY,(function(e){var t=e.data;if(console.log("---checkUpdateState---",t),!t.length)throw{code:constants.UPDATE_REPLY_INVALID};var r=parseInt(t.slice(2).join(""),16),o=constants.MODULE_UPDATE_DATA_REPLAY_CODE_MAP[r>>7];o=void 0===o?"MODULE_UPDATE_CHECK_FILE_FAIL":o;var n=(r<<1&255)>>1;if(console.log("------UPDATE_DATA_CHECK_REPLY——code----",o,n),o===constants.OTA_UPDATE_STEPS.MODULE_UPDATE_CHECK_FILE_SUCCESS)return{code:o};throw{code:o,msg:constants.MODULE_UPDATE_REPLAY_DATA_CODE_MAP[n]}}),{timeout:t.retryTimeGap*t.retryTimes,timeoutCode:"UPDATE_DATA_REPLAY_TIMEOUT",writeId:constants.LL_OTA_WRITE_ID,shouldWrapSplitDataFn:!1})]}))}))},e.prototype.getOtaUpdateInfo=function(){return tslib_1.__awaiter(this,void 0,void 0,(function(){var e,t,r,o;return tslib_1.__generator(this,(function(n){switch(n.label){case 0:return n.trys.push([0,2,,3]),[4,this.deviceAdapter.models.getDeviceOTAInfo({DeviceId:this.deviceAdapter.explorerDeviceId})];case 1:return e=n.sent(),t=e.FirmwareURL,r=e.TargetVersion,console.log("----",r,t,this.otaVersion),o={needUpdate:!1,targetVersion:r,otaUrl:t},this.otaVersion&&r!==this.otaVersion&&(o.needUpdate=!0),[2,o];case 2:return n.sent(),[2,Promise.reject({code:"GET_OTA_INFO_FAIL"})];case 3:return[2]}}))}))},e.prototype.sendOTARequest=function(e){var t=this,r=e.fileInfo,o=e.otaUpdateInfo,n=byteUtil.hexString2hexArray(libs_1.str2hexStr(o.targetVersion)),s=byteUtil.hexString2hexArray(libs_1.U32ToHexString(r.fileSize)+""+libs_1.U32ToHexString(r.fileCrc)+libs_1.U8ToHexString(n.length)+n.join("")),i=this.deviceAdapter.sliceData(tslib_1.__spread([""+constants.LL_OTA_WRITE_PREFIX[constants.OTA_UPDATE_REQUEST],libs_1.U16ToHexString(s.length)],s),[s],constants.UPDATE_REPLY);return this.deviceAdapter.writeAndWait4Response(i,constants.UPDATE_REPLY,(function(e){if(console.log("receive send OTA request",e),!e.length)throw{code:constants.UPDATE_REPLY_INVALID};var r=parseInt(e.slice(2,3).join(""),16),o=!!(1&r),n=!!(r>>1&1),s=e.slice(3);if(!o){var i=parseInt(s.slice(0,1),16);throw{code:"MODULE_DONNOT_ALLOW",detail:{code:i,msg:constants.MODULE_UPDATE_REPLAY_CODE_MAP[i]}}}var a={maxPackageNumPerCircle:parseInt(s.slice(0,1).join(""),16),maxLengthPerPackage:parseInt(s.slice(1,2).join(""),16),retryTimeGap:1e3*parseInt(s.slice(2,3).join(""),16),retryTimes:5,rebootMaxTime:1e3*parseInt(s.slice(3,4).join(""),16),alreadyReceiveSize:parseInt(s.slice(4,8).join(""),16),sendWaitGap:parseInt(s.slice(8,9).join("")||0,16)};return a.maxLengthPerPackage=Math.min(a.maxLengthPerPackage,t.deviceAdapter.mtu),{supportUploadFromBreak:n,otaUpdateProgressInfo:a}}),{timeout:LLSyncProtocol_1.LLSyncConfig.waitUpdateReplyInt,timeoutCode:constants.WAIT_GET_UPDATE_INFO_TIMEOUT,writeId:constants.LL_OTA_WRITE_ID})},e.prototype.reportSendOtaDataSuccess=function(){var e=""+constants.LL_OTA_WRITE_PREFIX[constants.OTA_UPDATE_DATA_END];return this.deviceAdapter.write(e,{writeId:constants.LL_OTA_WRITE_ID})},e.prototype.sendOtaFile=function(e){var t=e.fileInfo,r=e.otaUpdateProgressInfo;return tslib_1.__awaiter(this,void 0,void 0,(function(){var e,o,n,s;return tslib_1.__generator(this,(function(i){switch(i.label){case 0:return this.onProgress(constants.OTA_UPDATE_STEPS.SEND_UPDATE_DATA_DETAIL,{progress:Math.ceil(r.alreadyReceiveSize/t.fileSize*100)}),e=exports.generateFileChunks(t,r),o=genPromise(),n=function(){console.log("disconnect while send data"),o.reject({code:"BLE_CONNECTION_BREAK"})},this.deviceAdapter.once("disconnect",n),[4,Promise.race([this.processPromise.promise,o.promise,this.sendFileChunks({fileChunks:e,otaUpdateProgressInfo:r})])];case 1:return s=i.sent().fileSize,console.log("----on--update---data-reply---then",s),r.alreadyReceiveSize=s,r.alreadyReceiveSize!==t.fileSize?[2,this.sendOtaFile({fileInfo:t,otaUpdateProgressInfo:r})]:[2]}}))}))},e.prototype.sendFileChunks=function(e){var t=e.fileChunks,r=e.otaUpdateProgressInfo,o=e.seq,n=void 0===o?0:o,s=e.retryTime,i=void 0===s?0:s;return tslib_1.__awaiter(this,void 0,void 0,(function(){var e,o,s,a,c,_,l,d;return tslib_1.__generator(this,(function(T){switch(T.label){case 0:if(console.log("----send file chunks",t,r,n,i),i>r.retryTimes)throw console.log("----UPDATE_DATA_REPLAY_TIMEOUT---reject---",i),{code:"UPDATE_DATA_REPLAY_TIMEOUT"};T.label=1;case 1:T.trys.push([1,11,,12]),e=exports.getPackageDataToSend(t,n),o=constants.UPDATE_WRITE_ERROR_TIMES_PER_CIRCLE,T.label=2;case 2:if(!(o>0))return[3,7];T.label=3;case 3:return T.trys.push([3,5,,6]),[4,this.deviceAdapter.writeData(e,{writeId:constants.LL_OTA_WRITE_ID,waitGap:r.sendWaitGap||10})];case 4:return T.sent(),[3,7];case 5:if(s=T.sent(),console.log("---write error, retry time:---",constants.UPDATE_WRITE_ERROR_TIMES_PER_CIRCLE-o,s),!--o)throw s;return[3,6];case 6:return[3,2];case 7:return T.trys.push([7,9,,10]),[4,this.confirmFileChunkReceived({otaUpdateProgressInfo:r})];case 8:return a=T.sent(),c=a.seq,_=a.fileSize,console.log("---receive update reply",c,_,t.length),c!==t.length?(console.log("---confirmFileChunkSendStatus fail---","seqReceived and fileSended not match, resend file",c,t.length),[2,this.sendFileChunks({fileChunks:t,otaUpdateProgressInfo:r,seq:c||n,retryTime:i+1})]):[2,{fileSize:_}];case 9:return l=T.sent(),console.log("---confirmFileChunkSendStatus fail---",l),[2,Promise.reject(l)];case 10:return[3,12];case 11:return d=T.sent(),[2,Promise.reject(tslib_1.__assign({code:"BLE_WRITE_ERROR"},d))];case 12:return[2]}}))}))},e.prototype.confirmFileChunkReceived=function(e){var t,r=this,o=e.otaUpdateProgressInfo,n=genPromise(),s=function(e){var r=e.data;if(clearTimeout(t),!r.length)return n.reject({code:constants.UPDATE_REPLY_INVALID});var o=parseInt(r.slice(2,3).join(""),16),s=parseInt(r.slice(3,7).join(""),16);return n.resolve({seq:o,fileSize:s})};return console.log("---confirmFileChunkReceived---:listen data"),this.deviceAdapter.once(constants.UPDATE_DATA_REPLY,s),Promise.race([n.promise,new Promise((function(e,n){t=setTimeout((function(){r.deviceAdapter.off(constants.UPDATE_DATA_REPLY,s),n({code:"UPDATE_DATA_REPLAY_TIMEOUT"})}),o.retryTimeGap*o.retryTimes)}))])},e.prototype.checkRebootStatus=function(e){var t=e.otaUpdateInfo,r=e.rebootMaxTime;return tslib_1.__awaiter(this,void 0,void 0,(function(){var e,o,n,s,i,a,c,_=this;return tslib_1.__generator(this,(function(l){switch(l.label){case 0:return e=genPromise(),o=!1,n=0,s=function(r){var s=(void 0===r?{}:r).allowSkipConnect,i=void 0!==s&&s;return tslib_1.__awaiter(_,void 0,void 0,(function(){var r;return tslib_1.__generator(this,(function(s){switch(s.label){case 0:if(!(n<=constants.WAIT_MODULE_UPDATE_CONNECT_TIMES)||o)return[3,9];r=this.deviceAdapter.deviceName,s.label=1;case 1:return s.trys.push([1,6,,8]),i&&this.deviceAdapter.isConnected&&this.deviceAdapter.authorized?(console.log("llsync ota connectAndCheckVersion: already connected to device"),[3,5]):[3,2];case 2:return console.log("--try connect--",o,n,r),[4,this.deviceAdapter.connectDevice()];case 3:return s.sent(),[4,this.deviceAdapter.authenticateConnection({deviceName:r})];case 4:s.sent(),s.label=5;case 5:return this.otaVersion!==t.targetVersion?[2,e.reject({code:"MODULE_UPDATE_FAIL"})]:[2,e.resolve({code:constants.OTA_UPDATE_STEPS.MODULE_UPDATE_SUCCESS})];case 6:return s.sent(),n+=1,[4,delay(constants.WAIT_MODULE_UPDATE_CONNECT_TIME_GAP)];case 7:return s.sent(),[3,8];case 8:return[3,0];case 9:return[2,e.reject({code:"MODULE_UPDATE_CONNECT_TIMEOUT"})]}}))}))},i=function(){_.deviceAdapter.off("disconnect",a),_.deviceAdapter.off("authorized",c)},a=function(){return tslib_1.__awaiter(_,void 0,void 0,(function(){return tslib_1.__generator(this,(function(e){return console.log("--on/disconnect--"),i(),s(),[2]}))}))},this.deviceAdapter.once("disconnect",a),c=function(){return tslib_1.__awaiter(_,void 0,void 0,(function(){return tslib_1.__generator(this,(function(e){return i(),s({allowSkipConnect:!0}),[2]}))}))},this.deviceAdapter.once("authorized",c),[4,Promise.race([e.promise,new Promise((function(e,t){setTimeout((function(){o=!0,i(),t({code:constants.WAIT_MODULE_UPDATE_TIMEOUT})}),10*r)}))])];case 1:return[2,l.sent()]}}))}))},e.prototype.downloadOtaFile=function(e){return tslib_1.__awaiter(this,void 0,void 0,(function(){var t,r,o,n,s,i=this;return tslib_1.__generator(this,(function(a){switch(a.label){case 0:return[4,libs_1.downloadFile(e.otaUrl,{onProgress:function(e){i.onProgress(constants.OTA_UPDATE_STEPS.DOWNLOADING_OTA_FILE_DETAIL,e)}})];case 1:return t=a.sent(),r=t.fileSize,o=t.fileBuffer,console.log(r,o),(n=new libs_1.CRC32).update(new Int8Array(o)),s=n.getValue(),[2,{fileSize:r,fileCrc:s,fileBuffer:o}]}}))}))},e}();exports.LLSyncOtaProcessor=LLSyncOtaProcessor;
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.LLSyncOtaProcessor=exports.getPackageDataToSend=exports.generateFileChunks=void 0;var tslib_1=require("tslib"),qcloud_iotexplorer_appdev_sdk_1=require("qcloud-iotexplorer-appdev-sdk"),qcloud_iotexplorer_bluetooth_adapter_1=require("qcloud-iotexplorer-bluetooth-adapter"),constants=tslib_1.__importStar(require("../../constants")),libs_1=require("../../libs"),LLSyncProtocol_1=require("./LLSyncProtocol"),arrayBufferToHexStringArray=qcloud_iotexplorer_bluetooth_adapter_1.blueToothHelper.arrayBufferToHexStringArray,_a=qcloud_iotexplorer_appdev_sdk_1.AppDevSdk.utils,genPromise=_a.genPromise,delay=_a.delay,byteUtil=_a.byteUtil;exports.generateFileChunks=function(e,t){for(var r=t.alreadyReceiveSize,s=[],o=t.maxLengthPerPackage-3,n=Math.min(Math.ceil((e.fileSize-r)/o),t.maxPackageNumPerCircle),i=0;i<n;i++){var a=Math.min(r+o,e.fileSize),c=e.fileBuffer.slice(r,a);s.push(c),r=a}return s},exports.getPackageDataToSend=function(e,t){for(var r=[],s=parseInt(constants.LL_OTA_WRITE_PREFIX[constants.OTA_UPDATE_DATA],16),o=t;o<e.length;o++){var n=e[o].byteLength+1;r.push(tslib_1.__spread([libs_1.U8ToHexString(s),libs_1.U8ToHexString(n),libs_1.U8ToHexString(o)],arrayBufferToHexStringArray(e[o])).join(""))}return r};var LLSyncOtaProcessor=function(){function e(e){this.otaInProgress=!1,this.deviceAdapter=e}return Object.defineProperty(e.prototype,"reporter",{get:function(){return this.deviceAdapter.reporter},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"otaVersion",{get:function(){return this.deviceAdapter.otaVersion},enumerable:!1,configurable:!0}),e.prototype.onProgress=function(e,t){void 0===t&&(t={});var r=constants.OTA_UPDATE_STEPS_MESSAGE[e];this.reporter.info(e,tslib_1.__assign({message:r},t)),"function"==typeof this._onProgressCb&&this._onProgressCb({code:e,msg:r,detail:t})},e.prototype.cancelOta=function(){this.otaInProgress&&this.processPromise.reject({code:"USER_CANCEL_OTA_UPDATE"})},e.prototype.startOta=function(e){var t=e.onProgress;return tslib_1.__awaiter(this,void 0,void 0,(function(){var e,r,s,o,n,i,a,c,_,d;return tslib_1.__generator(this,(function(l){switch(l.label){case 0:if(this.otaInProgress)throw{code:"OTA_UPDATE_IN_PROGRESS",msg:"OTA升级进行中,请勿重复操作"};this.otaInProgress=!0,this.processPromise=genPromise(),this._onProgressCb=t,l.label=1;case 1:return l.trys.push([1,8,9,10]),this.onProgress(constants.OTA_UPDATE_STEPS.GET_OTA_UPDATE_INFO),[4,this.getOtaUpdateInfo()];case 2:if(e=l.sent(),this.onProgress(constants.OTA_UPDATE_STEPS.GET_OTA_UPDATE_INFO_SUCCESS,{otaUpdateInfo:e}),!e.needUpdate)throw{code:this.otaVersion?"MODULE_VERSION_IS_UPDATED":"MODULE_DONNOT_SUPPORT"};return this.onProgress(constants.OTA_UPDATE_STEPS.DOWNLOADING_OTA_FILE),[4,this.downloadOtaFile(e)];case 3:return r=l.sent(),this.onProgress(constants.OTA_UPDATE_STEPS.DOWNLOAD_OTA_FILE_SUCCESS,{fileInfo:r}),this.onProgress(constants.OTA_UPDATE_STEPS.REQUEST_MODULE_UPDATE_START),[4,this.sendOTARequest({fileInfo:r,otaUpdateInfo:e})];case 4:return s=l.sent(),o=s.supportUploadFromBreak,n=s.otaUpdateProgressInfo,this.onProgress(constants.OTA_UPDATE_STEPS.REQUEST_MODULE_UPDATE_SUCCESS,{supportUploadFromBreak:o,otaUpdateProgressInfo:n}),this.onProgress(constants.OTA_UPDATE_STEPS.SEND_UPDATE_DATA_START),i=Date.now(),[4,this.sendOtaFile({fileInfo:r,otaUpdateProgressInfo:n})];case 5:return l.sent(),[4,this.reportAndConfirmUpdateStatus({otaUpdateProgressInfo:n})];case 6:return a=l.sent(),this.onProgress(constants.OTA_UPDATE_STEPS.SEND_UPDATE_DATA_SUCCESS,{timeCost:Date.now()-i,response:a}),this.onProgress(constants.OTA_UPDATE_STEPS.WAITING_MODULE_UPDATE),c=Date.now(),[4,this.checkRebootStatus({otaUpdateInfo:e,rebootMaxTime:n.rebootMaxTime})];case 7:return l.sent(),this.onProgress(constants.OTA_UPDATE_STEPS.MODULE_UPDATE_SUCCESS,{timeCost:Date.now()-c}),this.processPromise=null,[2,{code:constants.OTA_UPDATE_STEPS.MODULE_UPDATE_SUCCESS,msg:constants.OTA_UPDATE_STEPS_MESSAGE[constants.OTA_UPDATE_STEPS.MODULE_UPDATE_SUCCESS]}];case 8:throw _=l.sent(),console.log("---ota fail---",_),_||(_={}),_.code&&constants.OTA_UPDATE_ERRORS[_.code]?_.msg=constants.OTA_UPDATE_ERRORS[_.code]+":"+_.code:(d="MODULE_DONNOT_SUPPORT",_.msg=d+":"+constants.OTA_UPDATE_ERRORS[d]+":"+_.code+":"+(_.msg||_.errMsg||""),_.code=d),this.reporter.error("MODULE_UPDATE_FAIL",{error:_}),_;case 9:return this.otaInProgress=!1,[7];case 10:return[2]}}))}))},e.prototype.reportAndConfirmUpdateStatus=function(e){var t=e.otaUpdateProgressInfo;return tslib_1.__awaiter(this,void 0,void 0,(function(){var e;return tslib_1.__generator(this,(function(r){return e=""+constants.LL_OTA_WRITE_PREFIX[constants.OTA_UPDATE_DATA_END],this.deviceAdapter.isEncrypted&&(e=this.deviceAdapter.encrypt(e,this.deviceAdapter.sessionKey,{contentType:"hex"})),[2,this.deviceAdapter.writeAndWait4Response(e,constants.UPDATE_DATA_CHECK_REPLY,(function(e){var t=e.data;if(console.log("---checkUpdateState---",t),!t.length)throw{code:constants.UPDATE_REPLY_INVALID};var r=parseInt(t.slice(2).join(""),16),s=constants.MODULE_UPDATE_DATA_REPLAY_CODE_MAP[r>>7];s=void 0===s?"MODULE_UPDATE_CHECK_FILE_FAIL":s;var o=(r<<1&255)>>1;if(console.log("------UPDATE_DATA_CHECK_REPLY——code----",s,o),s===constants.OTA_UPDATE_STEPS.MODULE_UPDATE_CHECK_FILE_SUCCESS)return{code:s};throw{code:s,msg:constants.MODULE_UPDATE_REPLAY_DATA_CODE_MAP[o]}}),{timeout:t.retryTimeGap*t.retryTimes,timeoutCode:"UPDATE_DATA_REPLAY_TIMEOUT",writeId:constants.LL_OTA_WRITE_ID,shouldWrapSplitDataFn:!1})]}))}))},e.prototype.getOtaUpdateInfo=function(){return tslib_1.__awaiter(this,void 0,void 0,(function(){var e,t,r,s;return tslib_1.__generator(this,(function(o){switch(o.label){case 0:return o.trys.push([0,2,,3]),[4,this.deviceAdapter.models.getDeviceOTAInfo({DeviceId:this.deviceAdapter.explorerDeviceId})];case 1:return e=o.sent(),t=e.FirmwareURL,r=e.TargetVersion,console.log("----",r,t,this.otaVersion),s={needUpdate:!1,targetVersion:r,otaUrl:t},this.otaVersion&&r!==this.otaVersion&&(s.needUpdate=!0),[2,s];case 2:return o.sent(),[2,Promise.reject({code:"GET_OTA_INFO_FAIL"})];case 3:return[2]}}))}))},e.prototype.sendOTARequest=function(e){var t=this,r=e.fileInfo,s=e.otaUpdateInfo,o=byteUtil.hexString2hexArray(libs_1.str2hexStr(s.targetVersion)),n=byteUtil.hexString2hexArray(libs_1.U32ToHexString(r.fileSize)+""+libs_1.U32ToHexString(r.fileCrc)+libs_1.U8ToHexString(o.length)+o.join("")),i=this.deviceAdapter.sliceData(tslib_1.__spread([""+constants.LL_OTA_WRITE_PREFIX[constants.OTA_UPDATE_REQUEST],libs_1.U16ToHexString(n.length)],n),[n],constants.UPDATE_REPLY);return this.deviceAdapter.isEncrypted&&(i=this.deviceAdapter.encrypt(i,this.deviceAdapter.sessionKey,{contentType:"hex"})),this.deviceAdapter.writeAndWait4Response(i,constants.UPDATE_REPLY,(function(e){if(console.log("receive send OTA request",e),!e.length)throw{code:constants.UPDATE_REPLY_INVALID};var r=parseInt(e.slice(2,3).join(""),16),s=!!(1&r),o=!!(r>>1&1),n=e.slice(3);if(!s){var i=parseInt(n.slice(0,1),16);throw{code:"MODULE_DONNOT_ALLOW",detail:{code:i,msg:constants.MODULE_UPDATE_REPLAY_CODE_MAP[i]}}}libs_1.log("ota config",n);var a={maxPackageNumPerCircle:parseInt(n.slice(0,1).join(""),16),maxLengthPerPackage:parseInt(n.slice(1,2).join(""),16),retryTimeGap:1e3*parseInt(n.slice(2,3).join(""),16),retryTimes:5,rebootMaxTime:1e3*parseInt(n.slice(3,4).join(""),16),alreadyReceiveSize:parseInt(n.slice(4,8).join(""),16),sendWaitGap:parseInt(n.slice(8,9).join("")||0,16)};return libs_1.log("final mtu",a.maxLengthPerPackage,t.deviceAdapter.mtu),a.maxLengthPerPackage=Math.min(a.maxLengthPerPackage,t.deviceAdapter.mtu),t.deviceAdapter.isEncrypted&&(a.maxLengthPerPackage=libs_1.getMtuEncrypted(a.maxLengthPerPackage)),{supportUploadFromBreak:o,otaUpdateProgressInfo:a}}),{timeout:LLSyncProtocol_1.LLSyncConfig.waitUpdateReplyInt,timeoutCode:constants.WAIT_GET_UPDATE_INFO_TIMEOUT,writeId:constants.LL_OTA_WRITE_ID})},e.prototype.reportSendOtaDataSuccess=function(){var e=""+constants.LL_OTA_WRITE_PREFIX[constants.OTA_UPDATE_DATA_END];return this.deviceAdapter.isEncrypted&&(e=this.deviceAdapter.encrypt(e,this.deviceAdapter.sessionKey,{contentType:"hex"})),this.deviceAdapter.write(e,{writeId:constants.LL_OTA_WRITE_ID})},e.prototype.sendOtaFile=function(e){var t=e.fileInfo,r=e.otaUpdateProgressInfo;return tslib_1.__awaiter(this,void 0,void 0,(function(){var e,s,o,n;return tslib_1.__generator(this,(function(i){switch(i.label){case 0:return this.onProgress(constants.OTA_UPDATE_STEPS.SEND_UPDATE_DATA_DETAIL,{progress:Math.ceil(r.alreadyReceiveSize/t.fileSize*100)}),e=exports.generateFileChunks(t,r),s=genPromise(),o=function(){console.log("disconnect while send data"),s.reject({code:"BLE_CONNECTION_BREAK"})},this.deviceAdapter.once("disconnect",o),[4,Promise.race([this.processPromise.promise,s.promise,this.sendFileChunks({fileChunks:e,otaUpdateProgressInfo:r})])];case 1:return n=i.sent().fileSize,console.log("----on--update---data-reply---then",n),r.alreadyReceiveSize=n,r.alreadyReceiveSize!==t.fileSize?[2,this.sendOtaFile({fileInfo:t,otaUpdateProgressInfo:r})]:[2]}}))}))},e.prototype.sendFileChunks=function(e){var t=e.fileChunks,r=e.otaUpdateProgressInfo,s=e.seq,o=void 0===s?0:s,n=e.retryTime,i=void 0===n?0:n;return tslib_1.__awaiter(this,void 0,void 0,(function(){var e,s,n,a,c,_,d,l;return tslib_1.__generator(this,(function(T){switch(T.label){case 0:if(console.log("----send file chunks",t,r,o,i),i>r.retryTimes)throw console.log("----UPDATE_DATA_REPLAY_TIMEOUT---reject---",i),{code:"UPDATE_DATA_REPLAY_TIMEOUT"};T.label=1;case 1:T.trys.push([1,11,,12]),e=exports.getPackageDataToSend(t,o),s=constants.UPDATE_WRITE_ERROR_TIMES_PER_CIRCLE,this.deviceAdapter.isEncrypted&&(e=this.deviceAdapter.encrypt(e,this.deviceAdapter.sessionKey,{contentType:"hex"})),T.label=2;case 2:if(!(s>0))return[3,7];T.label=3;case 3:return T.trys.push([3,5,,6]),[4,this.deviceAdapter.writeData(e,{writeId:constants.LL_OTA_WRITE_ID,waitGap:r.sendWaitGap||10})];case 4:return T.sent(),[3,7];case 5:if(n=T.sent(),console.log("---write error, retry time:---",constants.UPDATE_WRITE_ERROR_TIMES_PER_CIRCLE-s,n),!--s)throw n;return[3,6];case 6:return[3,2];case 7:return T.trys.push([7,9,,10]),[4,this.confirmFileChunkReceived({otaUpdateProgressInfo:r})];case 8:return a=T.sent(),c=a.seq,_=a.fileSize,console.log("---receive update reply",c,_,t.length),c!==t.length?(console.log("---confirmFileChunkSendStatus fail---","seqReceived and fileSended not match, resend file",c,t.length),[2,this.sendFileChunks({fileChunks:t,otaUpdateProgressInfo:r,seq:c||o,retryTime:i+1})]):[2,{fileSize:_}];case 9:return d=T.sent(),console.log("---confirmFileChunkSendStatus fail---",d),[2,Promise.reject(d)];case 10:return[3,12];case 11:return l=T.sent(),[2,Promise.reject(tslib_1.__assign({code:"BLE_WRITE_ERROR"},l))];case 12:return[2]}}))}))},e.prototype.confirmFileChunkReceived=function(e){var t,r=this,s=e.otaUpdateProgressInfo,o=genPromise(),n=function(e){var r=e.data;if(clearTimeout(t),!r.length)return o.reject({code:constants.UPDATE_REPLY_INVALID});var s=parseInt(r.slice(2,3).join(""),16),n=parseInt(r.slice(3,7).join(""),16);return o.resolve({seq:s,fileSize:n})};return console.log("---confirmFileChunkReceived---:listen data"),this.deviceAdapter.once(constants.UPDATE_DATA_REPLY,n),Promise.race([o.promise,new Promise((function(e,o){t=setTimeout((function(){r.deviceAdapter.off(constants.UPDATE_DATA_REPLY,n),o({code:"UPDATE_DATA_REPLAY_TIMEOUT"})}),s.retryTimeGap*s.retryTimes)}))])},e.prototype.checkRebootStatus=function(e){var t=e.otaUpdateInfo,r=e.rebootMaxTime;return tslib_1.__awaiter(this,void 0,void 0,(function(){var e,s,o,n,i,a,c,_=this;return tslib_1.__generator(this,(function(d){switch(d.label){case 0:return e=genPromise(),s=!1,o=0,n=function(r){var n=(void 0===r?{}:r).allowSkipConnect,i=void 0!==n&&n;return tslib_1.__awaiter(_,void 0,void 0,(function(){var r;return tslib_1.__generator(this,(function(n){switch(n.label){case 0:if(!(o<=constants.WAIT_MODULE_UPDATE_CONNECT_TIMES)||s)return[3,9];r=this.deviceAdapter.deviceName,n.label=1;case 1:return n.trys.push([1,6,,8]),i&&this.deviceAdapter.isConnected&&this.deviceAdapter.authorized?(console.log("llsync ota connectAndCheckVersion: already connected to device"),[3,5]):[3,2];case 2:return console.log("--try connect--",s,o,r),[4,this.deviceAdapter.connectDevice()];case 3:return n.sent(),[4,this.deviceAdapter.authenticateConnection({deviceName:r})];case 4:n.sent(),n.label=5;case 5:return this.otaVersion!==t.targetVersion?[2,e.reject({code:"MODULE_UPDATE_FAIL"})]:[2,e.resolve({code:constants.OTA_UPDATE_STEPS.MODULE_UPDATE_SUCCESS})];case 6:return n.sent(),o+=1,[4,delay(constants.WAIT_MODULE_UPDATE_CONNECT_TIME_GAP)];case 7:return n.sent(),[3,8];case 8:return[3,0];case 9:return[2,e.reject({code:"MODULE_UPDATE_CONNECT_TIMEOUT"})]}}))}))},i=function(){_.deviceAdapter.off("disconnect",a),_.deviceAdapter.off("authorized",c)},a=function(){return tslib_1.__awaiter(_,void 0,void 0,(function(){return tslib_1.__generator(this,(function(e){return console.log("--on/disconnect--"),i(),n(),[2]}))}))},this.deviceAdapter.once("disconnect",a),c=function(){return tslib_1.__awaiter(_,void 0,void 0,(function(){return tslib_1.__generator(this,(function(e){return i(),n({allowSkipConnect:!0}),[2]}))}))},this.deviceAdapter.once("authorized",c),[4,Promise.race([e.promise,new Promise((function(e,t){setTimeout((function(){s=!0,i(),t({code:constants.WAIT_MODULE_UPDATE_TIMEOUT})}),10*r)}))])];case 1:return[2,d.sent()]}}))}))},e.prototype.downloadOtaFile=function(e){return tslib_1.__awaiter(this,void 0,void 0,(function(){var t,r,s,o,n,i=this;return tslib_1.__generator(this,(function(a){switch(a.label){case 0:return[4,libs_1.downloadFile(e.otaUrl,{onProgress:function(e){i.onProgress(constants.OTA_UPDATE_STEPS.DOWNLOADING_OTA_FILE_DETAIL,e)}})];case 1:return t=a.sent(),r=t.fileSize,s=t.fileBuffer,console.log(r,s),(o=new libs_1.CRC32).update(new Int8Array(s)),n=o.getValue(),[2,{fileSize:r,fileCrc:n,fileBuffer:s}]}}))}))},e}();exports.LLSyncOtaProcessor=LLSyncOtaProcessor;
//# sourceMappingURL=LLSyncOtaProcessor.js.map
import { LLSyncDeviceAdapter } from './LLSyncDeviceAdapter';
import { Action } from '../../libs';
export interface WriteStampResult {

@@ -19,2 +20,3 @@ sign: string;

BLE_PSK_DEVICE_KEY: string;
Secret_Encrypt_Key: string;
waitConnectReplyTime: number;

@@ -87,3 +89,3 @@ waitBindReplyTime: number;

}>;
controlDeviceAction(action: any): Promise<{
controlDeviceAction(action: Action): Promise<{
success: boolean;

@@ -99,3 +101,8 @@ output: string[];

reportBindSuccess(bindStartTime: any): Promise<string>;
reportBindError(code: any): void;
reportBindEncryptedSuccess(bindStartTime: any, secretkey: any): Promise<{
ack: number;
errCode: any;
}>;
reportBindError(code?: string): void;
reportBindEncryptedError(secretkey: any): void;
reportConnectError(): void;

@@ -105,3 +112,3 @@ reportPropertyReportResult(code?: number): void;

reportGetStatusResult(code?: number, tlvData?: any, tmpData?: any): void;
reportUnbindResult(mode: any): Promise<void>;
reportUnbindResult(mode: 'success' | 'fail'): Promise<void>;
/**

@@ -108,0 +115,0 @@ * Helpers

@@ -1,2 +0,2 @@

"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.LLSyncProtocol=exports.LLSyncConfig=void 0;var tslib_1=require("tslib"),constants=tslib_1.__importStar(require("../../constants")),qcloud_iotexplorer_appdev_sdk_1=require("qcloud-iotexplorer-appdev-sdk"),libs_1=require("../../libs"),_a=qcloud_iotexplorer_appdev_sdk_1.AppDevSdk.utils,noop=_a.noop,genPromise=_a.genPromise,byteUtil=_a.byteUtil;exports.LLSyncConfig={BLE_PSK_DEVICE_KEY:"ble_psk_device_ket",waitConnectReplyTime:1e4,waitBindReplyTime:1e4,waitGetRegisterDeviceInfo:1e4,waitGetCheckTimeoutReplyTime:1e4,waitGetCheckTimeoutDefaultReplyTime:6e4,waitControlReplyTime:1e4,waitGetDeviceInfoTime:1e4,waitUpdateReplyInt:1e4,mtuDefaultMap:{0:void 0,1:20,2:20}};var LLSyncProtocol=function(){function t(t){this._cleanupUserCheckHandleAfterCancel=noop,this.deviceAdapter=t}return Object.defineProperty(t.prototype,"reporter",{get:function(){return this.deviceAdapter.reporter},enumerable:!1,configurable:!0}),t.prototype.requestBindDevice=function(t){var e=t.needUserCheck,n=void 0!==e&&e,o=t.isDynamicRegister,i=void 0!==o&&o;return tslib_1.__awaiter(this,void 0,void 0,(function(){var t,e,o,s,r,a=this;return tslib_1.__generator(this,(function(c){switch(c.label){case 0:return t=Math.floor(Date.now()/1e3),e=parseInt(libs_1.gen4BytesIntHex(),16),o=this._parseDataBeforeConnect(""+constants.DEVICE_INFO_WRITE_PREFIX[constants.TIME_SYNC]+e.toString(16)+t.toString(16),constants.TIME_SYNC),this.reporter.info(constants.TIME_SYNC,{timestamp:t,nonce:e,bindDeviceData:o,needUserCheck:n,isDynamicRegister:i}),i?[4,this.registerDevice({timestamp:t,bindDeviceData:o,nonce:e})]:[3,2];case 1:s=c.sent(),o=s.bleData,t=s.timestamp,c.label=2;case 2:return r={bindDeviceData:o,dataHandler:function(o){if(!o.length)throw{code:constants.CONNECT_REPLY_INVALID};if(n){var i=!(libs_1.getStrLength(o)>>15);if(console.log("bind auth response userCheckResult",i),!i)throw{code:constants.GET_USER_CHECK_REJECT}}var s=o.slice(2,22).join(""),r=libs_1.hex2str(o.slice(22)),c={sign:s.toLocaleLowerCase(),deviceName:r,nonce:e,timestamp:t+60};return a.reporter.info(constants.TIME_SYNC,c),c}},this.reporter.info(constants.TIME_SYNC,r),[2,n?this.waitUserCheckAndBindDevice(r):this.bindDeviceDirectly(r)]}}))}))},t.prototype.registerDevice=function(t){var e=t.timestamp,n=t.nonce,o=t.bindDeviceData;return tslib_1.__awaiter(this,void 0,void 0,(function(){var t,i,s,r,a,c,_,E,I=this;return tslib_1.__generator(this,(function(d){switch(d.label){case 0:return[4,this.deviceAdapter.writeAndWait4Response(o,constants.REGISTER_DEVICE_INFO_REPLY,(function(t){if(!t.length)throw{code:constants.REGISTER_DEVICE_INFO_REPLY_INVALID};var e=libs_1.getStrLength(t),n=parseInt(t.slice(2,3).join(""),16),o=libs_1.hex2str(t.slice(3,3+n)),i=libs_1.hex2str(t.slice(3+n,3+e));return I.reporter.info(constants.REGISTER_DEVICE_INFO_REPLY,{allLength:e,deviceNameLength:n,deviceName:o,sign:i}),{sign:i,deviceName:o}}),{timeout:exports.LLSyncConfig.waitGetRegisterDeviceInfo,timeoutCode:constants.WAIT_REGISTER_DEVICE_INFO_REPLY_TIMEOUT,writeId:constants.DEVICE_INFO_WRITE_ID})];case 1:t=d.sent(),i=t.deviceName,s=t.sign,this.reporter.info(constants.TIME_SYNC,{deviceName:i,sign:s}),r=0,d.label=2;case 2:return d.trys.push([2,4,,5]),[4,this.deviceAdapter.models.dynamicRegisterDevice({deviceName:i,sign:s,productId:this.deviceAdapter.productId,timestamp:e,nonce:n})];case 3:return a=d.sent().payload,c=Math.floor(Date.now()/1e3),r=1,_=this._parseDataBeforeConnect(constants.DEVICE_INFO_WRITE_PREFIX[constants.SEND_REGISTER_DEVICE_PAYLOAD]+""+libs_1.U8ToHexString(r)+libs_1.U8ToHexString(a.length)+libs_1.str2hexStr(a)+n.toString(16)+c.toString(16),constants.SEND_REGISTER_DEVICE_PAYLOAD),this.reporter.info(constants.REGISTER_DEVICE_SUCCESS,{payload:a,bleData:_}),[2,{bleData:_,timestamp:c}];case 4:throw E=d.sent(),tslib_1.__assign(tslib_1.__assign({},E),{code:constants.REGISTER_DEVICE_ERROR});case 5:return[2]}}))}))},t.prototype.bindDeviceDirectly=function(t){var e=t.bindDeviceData,n=t.dataHandler;return tslib_1.__awaiter(this,void 0,void 0,(function(){return tslib_1.__generator(this,(function(t){return[2,this.deviceAdapter.writeAndWait4Response(e,constants.BIND_AUTH,n,{timeout:exports.LLSyncConfig.waitBindReplyTime,timeoutCode:constants.WAIT_CONNECT_REPLY_TIMEOUT,writeId:constants.DEVICE_INFO_WRITE_ID})]}))}))},t.prototype.waitUserCheckAndBindDevice=function(t){var e=t.bindDeviceData,n=t.dataHandler;return tslib_1.__awaiter(this,void 0,void 0,(function(){var t,o,i,s=this;return tslib_1.__generator(this,(function(r){switch(r.label){case 0:return t=genPromise(),i=function(e){clearTimeout(o),console.log("registerUserCheckTimer",e),o=setTimeout((function(){console.log("user check timeout",e),s.cancelUserCheck("timeout"),t.reject({code:constants.WAIT_USER_CHECK_TIMEOUT})}),e)},this.deviceAdapter.wait4EventResponse(constants.USER_CHECK_TIMEOUT_CALLBACK,(function(t){if(!t.length)return console.log("get user check timeout duration fail, trigger default timeout timer"),s.reporter.info(constants.GET_USER_CHECK_TIMEOUT_ERROR),i(exports.LLSyncConfig.waitGetCheckTimeoutDefaultReplyTime);var e=1e3*parseInt(t.slice(2).join(""),16);s.reporter.info(constants.GET_USER_CHECK_TIMEOUT_SUCCESS,{timeoutDuration:e}),i(e)}),{timeout:exports.LLSyncConfig.waitGetCheckTimeoutReplyTime,timeoutHandler:function(){s.reporter.info(constants.GET_USER_CHECK_TIMEOUT_TIMEOUT),i(exports.LLSyncConfig.waitGetCheckTimeoutDefaultReplyTime-exports.LLSyncConfig.waitGetCheckTimeoutReplyTime)}}),this._cleanupUserCheckHandleAfterCancel=function(){console.log("process cleanup user check handler"),t.reject(null),s.deviceAdapter.off(constants.BIND_AUTH),s._cleanupUserCheckHandleAfterCancel=noop},[4,Promise.race([t.promise,this.deviceAdapter.writeAndWait4Response(e,constants.BIND_AUTH,n,{timeout:exports.LLSyncConfig.waitBindReplyTime,timeoutCode:constants.WAIT_CONNECT_REPLY_TIMEOUT,writeId:constants.DEVICE_INFO_WRITE_ID})])];case 1:return[2,r.sent()]}}))}))},t.prototype.cancelUserCheck=function(t){void 0===t&&(t="timeout"),console.log("cancel user check, reason: ",t),"cancel"===t&&this._cleanupUserCheckHandleAfterCancel();var e=""+constants.DEVICE_INFO_WRITE_PREFIX[constants.USER_CHECK_TIMEOUT]+libs_1.U8ToHexString("timeout"===t?constants.WRITE_USER_CHECK_TIMEOUT:constants.WRITE_USER_CHECK_CANCEL);this.deviceAdapter.write(e,{writeId:constants.DEVICE_INFO_WRITE_ID})},t.prototype.getDeviceAuthInfo=function(){var t=Math.floor(Date.now()/1e3),e=this._parseDataBeforeConnect(""+constants.DEVICE_INFO_WRITE_PREFIX[constants.CONNECT_AUTH]+t.toString(16)+libs_1.encrypt(t,this.deviceAdapter.localPsk),constants.CONNECT_AUTH);return console.log("[LLsyncProtocol] auth data:",{data:e,moduleVersion:this.deviceAdapter.extendInfo.moduleVersion,localPsk:this.deviceAdapter.localPsk,dataStr:""+constants.DEVICE_INFO_WRITE_PREFIX[constants.CONNECT_AUTH]+t.toString(16)+libs_1.encrypt(t,this.deviceAdapter.localPsk)}),this.deviceAdapter.writeAndWait4Response(e,constants.CONNECT_AUTH,(function(e){if(!e.length)throw{code:constants.CONNECT_REPLY_INVALID};return{sign:e.slice(2,22).join("").toLocaleLowerCase(),timestamp:t}}),{timeout:exports.LLSyncConfig.waitConnectReplyTime,timeoutCode:constants.WAIT_CONNECT_REPLY_TIMEOUT,writeId:constants.DEVICE_INFO_WRITE_ID})},t.prototype.getDeviceInfo=function(){return tslib_1.__awaiter(this,void 0,void 0,(function(){return tslib_1.__generator(this,(function(t){return[2,this.deviceAdapter.writeAndWait4Response(constants.DEVICE_INFO_WRITE_PREFIX[constants.CONNECT_RESULT_WRITE_SUCCESS],constants.DEVICE_INFO,(function(t){if(!t.length)throw{code:constants.DEVICE_INFO_INVALID};var e=parseInt(t.slice(2,3).join(""),16),n=parseInt(t.slice(3,5).join(""),16),o=!!(n>>15),i=8191&n,s=t.slice(6).join("");return{version:e,mtu:i,needSetMtu:o,otaVersion:s?libs_1.hex2str(s):s}}),{timeout:exports.LLSyncConfig.waitGetDeviceInfoTime,timeoutCode:constants.WAIT_GET_DEVICE_INFO_TIMEOUT,writeId:constants.DEVICE_INFO_WRITE_ID})]}))}))},t.prototype.getUnbindAuthSign=function(){var t=this._parseDataBeforeConnect(""+constants.DEVICE_INFO_WRITE_PREFIX[constants.UNBIND_AUTH]+libs_1.encrypt(constants.UNBIND_REQUEST,this.deviceAdapter.localPsk),constants.UNBIND_AUTH);return this.deviceAdapter.writeAndWait4Response(t,constants.UNBIND_AUTH,(function(t){if(!t.length)throw{code:constants.UNBIND_REPLY_INVALID};return{sign:t.slice(2,22).join("").toLocaleLowerCase()}}),{timeout:exports.LLSyncConfig.waitConnectReplyTime,timeoutCode:constants.WAIT_UNBIND_REPLY_TIMEOUT,writeId:constants.DEVICE_INFO_WRITE_ID})},t.prototype.controlDeviceAction=function(t){var e=libs_1.convertActionControlToTlv(t,this.deviceAdapter.dataTemplate),n=e.actionIndex,o=e.tlvData,i=e.tmpData,s=this.deviceAdapter.sliceData(tslib_1.__spread([libs_1.getTypeHead(constants.DEVICE_DATA_WRITE_HEAD[constants.CONTROL_ACTION],n),libs_1.U16ToHexString(o.length)],o),i,constants.CONTROL_ACTION);return this.deviceAdapter.writeAndWait4Response(s,constants.ACTION_REPLY,(function(t){if(!t.length)throw{code:constants.CONTROL_REPLY_INVALID};var e=parseInt(t.slice(2,3).join(""),16),n=t.slice(3);if(0===e)return{success:!0,output:n};throw{code:constants.CONTROL_REPLY_CODE_INVALID,errCode:e}}),{timeout:exports.LLSyncConfig.waitControlReplyTime,timeoutCode:constants.WAIT_CONTROL_ACTION_REPLY_TIMEOUT,writeId:constants.DEVICE_DATA_WRITE_ID,wrapSplitDataMode:constants.ACTION_REPLY})},t.prototype.controlDeviceProperty=function(t){var e=libs_1.convertPropertiesChangeToTlv(t,this.deviceAdapter.dataTemplate),n=e.tlvData,o=e.tmpData,i=this.deviceAdapter.sliceData(tslib_1.__spread([libs_1.getTypeHead(constants.DEVICE_DATA_WRITE_HEAD[constants.CONTROL_DEVICE],constants.DEVICE_DATA_WRITE_SUFFIX[constants.CONTROL_DEVICE]),libs_1.U16ToHexString(n.length)],n),o,constants.CONTROL_DEVICE);return this.deviceAdapter.writeAndWait4Response(i,constants.CONTROL_REPLY,(function(t){if(!t.length)throw{code:constants.CONTROL_REPLY_INVALID};var e=parseInt(t.slice(2).join(""),16);if(0===e)return{code:0};throw{code:constants.CONTROL_REPLY_CODE_INVALID,errCode:e}}),{timeout:exports.LLSyncConfig.waitControlReplyTime,timeoutCode:constants.WAIT_CONTROL_DEVICE_REPLY_TIMEOUT,writeId:constants.DEVICE_DATA_WRITE_ID})},t.prototype.reportBindSuccess=function(t){return tslib_1.__awaiter(this,void 0,void 0,(function(){var e,n;return tslib_1.__generator(this,(function(o){switch(o.label){case 0:return e=libs_1.gen4BytesIntHex(),this.reporter.info(constants.BIND_AUTH_SUCCESS,{identify:this.deviceAdapter.userIdentify,localPsk:e,timeCost:Date.now()-t}),n=""+constants.DEVICE_INFO_WRITE_PREFIX[constants.BIND_AUTH_SUCCESS]+constants.DEVICE_INFO_WRITE_PREFIX[constants.BIND_AUTH_SUCCESS]+e+this.deviceAdapter.userIdentify,this.deviceAdapter.writeData(this._parseDataBeforeConnect(n,constants.BIND_AUTH_SUCCESS),{writeId:constants.DEVICE_INFO_WRITE_ID}),[4,this.deviceAdapter.models.setDeviceConfig({DeviceId:this.deviceAdapter.explorerDeviceId,DeviceKey:exports.LLSyncConfig.BLE_PSK_DEVICE_KEY,DeviceValue:e})];case 1:return o.sent(),[2,e]}}))}))},t.prototype.reportBindError=function(t){var e=""+constants.DEVICE_INFO_WRITE_PREFIX[constants.BIND_AUTH_FAIL]+libs_1.str2hexStr(t);this.deviceAdapter.write(e,{writeId:constants.DEVICE_INFO_WRITE_ID})},t.prototype.reportConnectError=function(){var t=constants.DEVICE_INFO_WRITE_PREFIX[constants.CONNECT_RESULT_WRITE_FAIL];this.deviceAdapter.write(t,{writeId:constants.DEVICE_INFO_WRITE_ID})},t.prototype.reportPropertyReportResult=function(t){void 0===t&&(t=0);var e=constants.DEVICE_DATA_WRITE_HEAD,n=constants.DEVICE_DATA_WRITE_SUFFIX,o=constants.REPORT_RESULT,i=constants.DEVICE_DATA_WRITE_ID,s=""+libs_1.getTypeHead(e[o],n[o])+byteUtil.byteToHex(byteUtil.convertNumberToByte(t));this.deviceAdapter.write(s,{writeId:i})},t.prototype.reportEventReportResult=function(t,e){void 0===t&&(t=0);var n=constants.DEVICE_DATA_WRITE_HEAD,o=constants.EVENT_REPLY,i=constants.DEVICE_DATA_WRITE_ID,s=""+libs_1.getTypeHead(n[o],e)+byteUtil.byteToHex(byteUtil.convertNumberToByte(t));this.deviceAdapter.write(s,{writeId:i})},t.prototype.reportGetStatusResult=function(t,e,n){void 0===t&&(t=0);var o=constants.DEVICE_DATA_WRITE_HEAD,i=constants.DEVICE_DATA_WRITE_SUFFIX,s=constants.GET_STATUS,r=constants.DEVICE_DATA_WRITE_ID,a=[""+libs_1.getTypeHead(o[s],i[s]),byteUtil.byteToHex(byteUtil.convertNumberToByte(t))];e&&(a=this.deviceAdapter.sliceData(a.concat(tslib_1.__spread([libs_1.U16ToHexString(e.length)],e)),n,constants.GET_STATUS)),this.deviceAdapter.writeData(a,{writeId:r})},t.prototype.reportUnbindResult=function(t){var e=constants.DEVICE_INFO_WRITE_PREFIX[constants.UNBIND_RESULT_AUTH_SUCCESS];return"fail"===t&&(e=constants.DEVICE_INFO_WRITE_PREFIX[constants.UNBIND_RESULT_AUTH_FAIL]),this.deviceAdapter.write(e,{writeId:constants.DEVICE_INFO_WRITE_ID})},t.prototype._parseDataBeforeConnect=function(t,e){void 0===this.deviceAdapter.extendInfo.moduleVersion&&console.warn("[LLsyncProtocol] invalid moduleVersion:",this.deviceAdapter.extendInfo.moduleVersion);var n,o=this.deviceAdapter.extendInfo.moduleVersion||2;o&&(n=exports.LLSyncConfig.mtuDefaultMap[o],o>=2&&(n=exports.LLSyncConfig.mtuDefaultMap[2])),this.reporter.info(constants.SET_MTU_BEFORE_CONNECT,{version:o,mtuLength:n}),this.deviceAdapter.bleVersion=o,this.deviceAdapter.mtu=n;var i=byteUtil.hexString2hexArray(t.slice(2)),s=[i],r=[t.slice(0,2)];return o>0&&r.push(libs_1.U16ToHexString(i.length)),r=r.concat(i),this.deviceAdapter.sliceData(r,s,e)},t}();exports.LLSyncProtocol=LLSyncProtocol;
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.LLSyncProtocol=exports.LLSyncConfig=void 0;var tslib_1=require("tslib"),constants=tslib_1.__importStar(require("../../constants")),qcloud_iotexplorer_appdev_sdk_1=require("qcloud-iotexplorer-appdev-sdk"),libs_1=require("../../libs"),_a=qcloud_iotexplorer_appdev_sdk_1.AppDevSdk.utils,noop=_a.noop,genPromise=_a.genPromise,byteUtil=_a.byteUtil;exports.LLSyncConfig={BLE_PSK_DEVICE_KEY:"ble_psk_device_ket",Secret_Encrypt_Key:"secret_encrypt_key",waitConnectReplyTime:1e4,waitBindReplyTime:1e4,waitGetRegisterDeviceInfo:1e4,waitGetCheckTimeoutReplyTime:1e4,waitGetCheckTimeoutDefaultReplyTime:6e4,waitControlReplyTime:1e4,waitGetDeviceInfoTime:1e4,waitUpdateReplyInt:1e4,mtuDefaultMap:{0:void 0,1:20,2:20}};var LLSyncProtocol=function(){function t(t){this._cleanupUserCheckHandleAfterCancel=noop,this.deviceAdapter=t,this._parseDataBeforeConnect=this._parseDataBeforeConnect.bind(this)}return Object.defineProperty(t.prototype,"reporter",{get:function(){return this.deviceAdapter.reporter},enumerable:!1,configurable:!0}),t.prototype.requestBindDevice=function(t){var e=t.needUserCheck,n=void 0!==e&&e,i=t.isDynamicRegister,s=void 0!==i&&i;return tslib_1.__awaiter(this,void 0,void 0,(function(){var t,e,i,o,r,a=this;return tslib_1.__generator(this,(function(c){switch(c.label){case 0:return t=Math.floor(Date.now()/1e3),e=parseInt(libs_1.gen4BytesIntHex(),16),i=this._parseDataBeforeConnect(""+constants.DEVICE_INFO_WRITE_PREFIX[constants.TIME_SYNC]+e.toString(16)+t.toString(16),constants.TIME_SYNC),this.reporter.info(constants.TIME_SYNC,{timestamp:t,nonce:e,bindDeviceData:i,needUserCheck:n,isDynamicRegister:s}),s?[4,this.registerDevice({timestamp:t,bindDeviceData:i,nonce:e})]:[3,2];case 1:o=c.sent(),i=o.bleData,t=o.timestamp,c.label=2;case 2:return r={bindDeviceData:i,dataHandler:function(i){if(!i.length)throw{code:constants.CONNECT_REPLY_INVALID};if(n){var s=!(libs_1.getStrLength(i)>>15);if(console.log("bind auth response userCheckResult",s),!s)throw{code:constants.GET_USER_CHECK_REJECT}}var o=i.slice(2,22).join(""),r=libs_1.hex2str(i.slice(22)),c={sign:o.toLocaleLowerCase(),deviceName:r,nonce:e,timestamp:t+60};return a.reporter.info(constants.TIME_SYNC,c),c}},this.reporter.info(constants.TIME_SYNC,r),[2,n?this.waitUserCheckAndBindDevice(r):this.bindDeviceDirectly(r)]}}))}))},t.prototype.registerDevice=function(t){var e=t.timestamp,n=t.nonce,i=t.bindDeviceData;return tslib_1.__awaiter(this,void 0,void 0,(function(){var t,s,o,r,a,c,_,E,d=this;return tslib_1.__generator(this,(function(I){switch(I.label){case 0:return[4,this.deviceAdapter.writeAndWait4Response(i,constants.REGISTER_DEVICE_INFO_REPLY,(function(t){if(!t.length)throw{code:constants.REGISTER_DEVICE_INFO_REPLY_INVALID};var e=libs_1.getStrLength(t),n=parseInt(t.slice(2,3).join(""),16),i=libs_1.hex2str(t.slice(3,3+n)),s=libs_1.hex2str(t.slice(3+n,3+e));return d.reporter.info(constants.REGISTER_DEVICE_INFO_REPLY,{allLength:e,deviceNameLength:n,deviceName:i,sign:s}),{sign:s,deviceName:i}}),{timeout:exports.LLSyncConfig.waitGetRegisterDeviceInfo,timeoutCode:constants.WAIT_REGISTER_DEVICE_INFO_REPLY_TIMEOUT,writeId:constants.DEVICE_INFO_WRITE_ID})];case 1:t=I.sent(),s=t.deviceName,o=t.sign,this.reporter.info(constants.TIME_SYNC,{deviceName:s,sign:o}),r=0,I.label=2;case 2:return I.trys.push([2,4,,5]),[4,this.deviceAdapter.models.dynamicRegisterDevice({deviceName:s,sign:o,productId:this.deviceAdapter.productId,timestamp:e,nonce:n})];case 3:return a=I.sent().payload,c=Math.floor(Date.now()/1e3),r=1,_=this._parseDataBeforeConnect(constants.DEVICE_INFO_WRITE_PREFIX[constants.SEND_REGISTER_DEVICE_PAYLOAD]+""+libs_1.U8ToHexString(r)+libs_1.U8ToHexString(a.length)+libs_1.str2hexStr(a)+n.toString(16)+c.toString(16),constants.SEND_REGISTER_DEVICE_PAYLOAD),this.reporter.info(constants.REGISTER_DEVICE_SUCCESS,{payload:a,bleData:_}),[2,{bleData:_,timestamp:c}];case 4:throw E=I.sent(),tslib_1.__assign(tslib_1.__assign({},E),{code:constants.REGISTER_DEVICE_ERROR});case 5:return[2]}}))}))},t.prototype.bindDeviceDirectly=function(t){var e=t.bindDeviceData,n=t.dataHandler;return tslib_1.__awaiter(this,void 0,void 0,(function(){return tslib_1.__generator(this,(function(t){return[2,this.deviceAdapter.writeAndWait4Response(e,constants.BIND_AUTH,n,{timeout:exports.LLSyncConfig.waitBindReplyTime,timeoutCode:constants.WAIT_CONNECT_REPLY_TIMEOUT,writeId:constants.DEVICE_INFO_WRITE_ID})]}))}))},t.prototype.waitUserCheckAndBindDevice=function(t){var e=t.bindDeviceData,n=t.dataHandler;return tslib_1.__awaiter(this,void 0,void 0,(function(){var t,i,s,o=this;return tslib_1.__generator(this,(function(r){switch(r.label){case 0:return t=genPromise(),s=function(e){clearTimeout(i),console.log("registerUserCheckTimer",e),i=setTimeout((function(){console.log("user check timeout",e),o.cancelUserCheck("timeout"),t.reject({code:constants.WAIT_USER_CHECK_TIMEOUT})}),e)},this.deviceAdapter.wait4EventResponse(constants.USER_CHECK_TIMEOUT_CALLBACK,(function(t){if(!t.length)return console.log("get user check timeout duration fail, trigger default timeout timer"),o.reporter.info(constants.GET_USER_CHECK_TIMEOUT_ERROR),s(exports.LLSyncConfig.waitGetCheckTimeoutDefaultReplyTime);var e=1e3*parseInt(t.slice(2).join(""),16);o.reporter.info(constants.GET_USER_CHECK_TIMEOUT_SUCCESS,{timeoutDuration:e}),s(e)}),{timeout:exports.LLSyncConfig.waitGetCheckTimeoutReplyTime,timeoutHandler:function(){o.reporter.info(constants.GET_USER_CHECK_TIMEOUT_TIMEOUT),s(exports.LLSyncConfig.waitGetCheckTimeoutDefaultReplyTime-exports.LLSyncConfig.waitGetCheckTimeoutReplyTime)}}),this._cleanupUserCheckHandleAfterCancel=function(){console.log("process cleanup user check handler"),t.reject(null),o.deviceAdapter.off(constants.BIND_AUTH),o._cleanupUserCheckHandleAfterCancel=noop},[4,Promise.race([t.promise,this.deviceAdapter.writeAndWait4Response(e,constants.BIND_AUTH,n,{timeout:exports.LLSyncConfig.waitBindReplyTime,timeoutCode:constants.WAIT_CONNECT_REPLY_TIMEOUT,writeId:constants.DEVICE_INFO_WRITE_ID})])];case 1:return[2,r.sent()]}}))}))},t.prototype.cancelUserCheck=function(t){void 0===t&&(t="timeout"),console.log("cancel user check, reason: ",t),"cancel"===t&&this._cleanupUserCheckHandleAfterCancel();var e=""+constants.DEVICE_INFO_WRITE_PREFIX[constants.USER_CHECK_TIMEOUT]+libs_1.U8ToHexString("timeout"===t?constants.WRITE_USER_CHECK_TIMEOUT:constants.WRITE_USER_CHECK_CANCEL);this.deviceAdapter.write(e,{writeId:constants.DEVICE_INFO_WRITE_ID})},t.prototype.getDeviceAuthInfo=function(){var t=Math.floor(Date.now()/1e3),e=this._parseDataBeforeConnect(""+constants.DEVICE_INFO_WRITE_PREFIX[constants.CONNECT_AUTH]+t.toString(16)+libs_1.encrypt(t,this.deviceAdapter.localPsk),constants.CONNECT_AUTH);return console.log("[LLsyncProtocol] auth data:",{data:e,moduleVersion:this.deviceAdapter.extendInfo.moduleVersion,localPsk:this.deviceAdapter.localPsk,dataStr:""+constants.DEVICE_INFO_WRITE_PREFIX[constants.CONNECT_AUTH]+t.toString(16)+libs_1.encrypt(t,this.deviceAdapter.localPsk)}),this.deviceAdapter.writeAndWait4Response(e,constants.CONNECT_AUTH,(function(e){if(!e.length)throw{code:constants.CONNECT_REPLY_INVALID};return{sign:e.slice(2,22).join("").toLocaleLowerCase(),timestamp:t}}),{timeout:exports.LLSyncConfig.waitConnectReplyTime,timeoutCode:constants.WAIT_CONNECT_REPLY_TIMEOUT,writeId:constants.DEVICE_INFO_WRITE_ID})},t.prototype.getDeviceInfo=function(){return tslib_1.__awaiter(this,void 0,void 0,(function(){return tslib_1.__generator(this,(function(t){return[2,this.deviceAdapter.writeAndWait4Response(constants.DEVICE_INFO_WRITE_PREFIX[constants.CONNECT_RESULT_WRITE_SUCCESS],constants.DEVICE_INFO,(function(t){if(!t.length)throw{code:constants.DEVICE_INFO_INVALID};var e=parseInt(t.slice(2,3).join(""),16),n=parseInt(t.slice(3,5).join(""),16),i=!!(n>>15),s=8191&n,o=t.slice(6).join("");return{version:e,mtu:s,needSetMtu:i,otaVersion:o?libs_1.hex2str(o):o}}),{timeout:exports.LLSyncConfig.waitGetDeviceInfoTime,timeoutCode:constants.WAIT_GET_DEVICE_INFO_TIMEOUT,writeId:constants.DEVICE_INFO_WRITE_ID})]}))}))},t.prototype.getUnbindAuthSign=function(){var t=this._parseDataBeforeConnect(""+constants.DEVICE_INFO_WRITE_PREFIX[constants.UNBIND_AUTH]+libs_1.encrypt(constants.UNBIND_REQUEST,this.deviceAdapter.localPsk),constants.UNBIND_AUTH);return this.deviceAdapter.writeAndWait4Response(t,constants.UNBIND_AUTH,(function(t){if(!t.length)throw{code:constants.UNBIND_REPLY_INVALID};return{sign:t.slice(2,22).join("").toLocaleLowerCase()}}),{timeout:exports.LLSyncConfig.waitConnectReplyTime,timeoutCode:constants.WAIT_UNBIND_REPLY_TIMEOUT,writeId:constants.DEVICE_INFO_WRITE_ID})},t.prototype.controlDeviceAction=function(t){var e=libs_1.convertActionControlToTlv(t,this.deviceAdapter.dataTemplate),n=e.actionIndex,i=e.tlvData,s=e.tmpData,o=this.deviceAdapter.sliceData(tslib_1.__spread([libs_1.getTypeHead(constants.DEVICE_DATA_WRITE_HEAD[constants.CONTROL_ACTION],n),libs_1.U16ToHexString(i.length)],i),s,constants.CONTROL_ACTION);return this.deviceAdapter.isEncrypted&&(o=this.deviceAdapter.encrypt(o,this.deviceAdapter.sessionKey,{contentType:"hex"})),this.deviceAdapter.writeAndWait4Response(o,constants.ACTION_REPLY,(function(t){if(!t.length)throw{code:constants.CONTROL_REPLY_INVALID};var e=parseInt(t.slice(2,3).join(""),16),n=t.slice(3);if(0===e)return{success:!0,output:n};throw{code:constants.CONTROL_REPLY_CODE_INVALID,errCode:e}}),{timeout:exports.LLSyncConfig.waitControlReplyTime,timeoutCode:constants.WAIT_CONTROL_ACTION_REPLY_TIMEOUT,writeId:constants.DEVICE_DATA_WRITE_ID,wrapSplitDataMode:constants.ACTION_REPLY})},t.prototype.controlDeviceProperty=function(t){var e=libs_1.convertPropertiesChangeToTlv(t,this.deviceAdapter.dataTemplate),n=e.tlvData,i=e.tmpData,s=this.deviceAdapter.sliceData(tslib_1.__spread([libs_1.getTypeHead(constants.DEVICE_DATA_WRITE_HEAD[constants.CONTROL_DEVICE],constants.DEVICE_DATA_WRITE_SUFFIX[constants.CONTROL_DEVICE]),libs_1.U16ToHexString(n.length)],n),i,constants.CONTROL_DEVICE);return this.deviceAdapter.isEncrypted&&(s=this.deviceAdapter.encrypt(s,this.deviceAdapter.sessionKey,{contentType:"hex"})),this.deviceAdapter.writeAndWait4Response(s,constants.CONTROL_REPLY,(function(t){if(!t.length)throw{code:constants.CONTROL_REPLY_INVALID};var e=parseInt(t.slice(2).join(""),16);if(0===e)return{code:0};throw{code:constants.CONTROL_REPLY_CODE_INVALID,errCode:e}}),{timeout:exports.LLSyncConfig.waitControlReplyTime,timeoutCode:constants.WAIT_CONTROL_DEVICE_REPLY_TIMEOUT,writeId:constants.DEVICE_DATA_WRITE_ID})},t.prototype.reportBindSuccess=function(t){return tslib_1.__awaiter(this,void 0,void 0,(function(){var e,n;return tslib_1.__generator(this,(function(i){switch(i.label){case 0:return e=libs_1.gen4BytesIntHex(),this.reporter.info(constants.BIND_AUTH_SUCCESS,{identify:this.deviceAdapter.userIdentify,localPsk:e,timeCost:Date.now()-t}),n=""+constants.DEVICE_INFO_WRITE_PREFIX[constants.BIND_AUTH_SUCCESS]+constants.DEVICE_INFO_WRITE_PREFIX[constants.BIND_AUTH_SUCCESS]+e+this.deviceAdapter.userIdentify,this.deviceAdapter.writeData(this._parseDataBeforeConnect(n,constants.BIND_AUTH_SUCCESS),{writeId:constants.DEVICE_INFO_WRITE_ID}),[4,this.deviceAdapter.models.setDeviceConfig({DeviceId:this.deviceAdapter.explorerDeviceId,DeviceKey:exports.LLSyncConfig.BLE_PSK_DEVICE_KEY,DeviceValue:e})];case 1:return i.sent(),[2,e]}}))}))},t.prototype.reportBindEncryptedSuccess=function(t,e){return tslib_1.__awaiter(this,void 0,void 0,(function(){var n,i;return tslib_1.__generator(this,(function(s){switch(s.label){case 0:return this.reporter.info(constants.BIND_AUTH_SUCCESS,{identify:this.deviceAdapter.userIdentify,timeCost:Date.now()-t,secretkey:e}),n=this.deviceAdapter.encrypt("BindResult0",e),libs_1.log("bind result encrypted",n),[4,this.deviceAdapter.writeAndWait4Response(this._parseDataBeforeConnect(""+constants.DEVICE_INFO_WRITE_PREFIX[constants.RESPONSE_BIND]+n,constants.BIND_AUTH_SUCCESS),constants.RESPONSE_BIND,(function(t){return libs_1.log("result res data",t),{ack:parseInt(t[2],16),errCode:constants.BleErrorMsg[t[3]]}}),{writeId:constants.DEVICE_INFO_WRITE_ID,timeout:exports.LLSyncConfig.waitGetRegisterDeviceInfo,timeoutCode:constants.WAIT_REGISTER_DEVICE_INFO_REPLY_TIMEOUT})];case 1:if(1===(i=s.sent()).ack)throw{code:i.errCode};return[4,this.deviceAdapter.models.setDeviceConfig({DeviceId:this.deviceAdapter.explorerDeviceId,DeviceKey:exports.LLSyncConfig.Secret_Encrypt_Key,DeviceValue:e})];case 2:return s.sent(),[2,i]}}))}))},t.prototype.reportBindError=function(t){void 0===t&&(t="");var e=""+constants.DEVICE_INFO_WRITE_PREFIX[constants.BIND_AUTH_FAIL]+libs_1.str2hexStr(t);this.deviceAdapter.write(e,{writeId:constants.DEVICE_INFO_WRITE_ID})},t.prototype.reportBindEncryptedError=function(t){var e=this.deviceAdapter.encrypt("BindResult1",t);this.deviceAdapter.write(""+constants.DEVICE_INFO_WRITE_PREFIX[constants.RESPONSE_BIND]+e,{writeId:constants.DEVICE_INFO_WRITE_ID})},t.prototype.reportConnectError=function(){var t=constants.DEVICE_INFO_WRITE_PREFIX[constants.CONNECT_RESULT_WRITE_FAIL];this.deviceAdapter.write(t,{writeId:constants.DEVICE_INFO_WRITE_ID})},t.prototype.reportPropertyReportResult=function(t){void 0===t&&(t=0);var e=constants.DEVICE_DATA_WRITE_HEAD,n=constants.DEVICE_DATA_WRITE_SUFFIX,i=constants.REPORT_RESULT,s=constants.DEVICE_DATA_WRITE_ID,o=""+libs_1.getTypeHead(e[i],n[i])+byteUtil.byteToHex(byteUtil.convertNumberToByte(t));this.deviceAdapter.isEncrypted&&(o=this.deviceAdapter.encrypt(o,this.deviceAdapter.sessionKey,{contentType:"hex"})),this.deviceAdapter.write(o,{writeId:s})},t.prototype.reportEventReportResult=function(t,e){void 0===t&&(t=0);var n=constants.DEVICE_DATA_WRITE_HEAD,i=constants.EVENT_REPLY,s=constants.DEVICE_DATA_WRITE_ID,o=""+libs_1.getTypeHead(n[i],e)+byteUtil.byteToHex(byteUtil.convertNumberToByte(t));this.deviceAdapter.isEncrypted&&(o=this.deviceAdapter.encrypt(o,this.deviceAdapter.sessionKey,{contentType:"hex"})),this.deviceAdapter.writeData(o,{writeId:s})},t.prototype.reportGetStatusResult=function(t,e,n){void 0===t&&(t=0);var i=constants.DEVICE_DATA_WRITE_HEAD,s=constants.DEVICE_DATA_WRITE_SUFFIX,o=constants.GET_STATUS,r=constants.DEVICE_DATA_WRITE_ID,a=[""+libs_1.getTypeHead(i[o],s[o]),byteUtil.byteToHex(byteUtil.convertNumberToByte(t))];e&&(a=this.deviceAdapter.sliceData(a.concat(tslib_1.__spread([libs_1.U16ToHexString(e.length)],e)),n,constants.GET_STATUS)),this.deviceAdapter.isEncrypted&&(a=this.deviceAdapter.encrypt(a,this.deviceAdapter.sessionKey,{contentType:"hex"})),this.deviceAdapter.writeData(a,{writeId:r})},t.prototype.reportUnbindResult=function(t){if(this.deviceAdapter.isEncrypted){var e=this.deviceAdapter.encrypt("fail"===t?"UnbindFail":"UnbindOk",this.deviceAdapter.sessionKey);libs_1.log("unbind send payload",e);var n=""+constants.DEVICE_INFO_WRITE_PREFIX[constants.UNBIND_RESPONSE]+e,i=this._parseDataBeforeConnect(n,constants.UNBIND_RESPONSE);return this.deviceAdapter.writeData(i,{writeId:constants.DEVICE_INFO_WRITE_ID})}i=constants.DEVICE_INFO_WRITE_PREFIX[constants.UNBIND_RESULT_AUTH_SUCCESS];return"fail"===t&&(i=constants.DEVICE_INFO_WRITE_PREFIX[constants.UNBIND_RESULT_AUTH_FAIL]),this.deviceAdapter.write(i,{writeId:constants.DEVICE_INFO_WRITE_ID})},t.prototype._parseDataBeforeConnect=function(t,e){void 0===this.deviceAdapter.extendInfo.moduleVersion&&console.warn("[LLsyncProtocol] invalid moduleVersion:",this.deviceAdapter.extendInfo.moduleVersion);var n,i=this.deviceAdapter.extendInfo.moduleVersion||2;i&&(n=exports.LLSyncConfig.mtuDefaultMap[i],i>=2&&(n=exports.LLSyncConfig.mtuDefaultMap[2])),this.reporter.info(constants.SET_MTU_BEFORE_CONNECT,{version:i,mtuLength:n}),this.deviceAdapter.bleVersion=i,this.deviceAdapter.mtu=n;var s=byteUtil.hexString2hexArray(t.slice(2)),o=[s],r=[t.slice(0,2)];return i>0&&r.push(libs_1.U16ToHexString(s.length)),r=r.concat(s),this.deviceAdapter.sliceData(r,o,e)},t}();exports.LLSyncProtocol=LLSyncProtocol;
//# sourceMappingURL=LLSyncProtocol.js.map
import { AppDevSdk } from 'qcloud-iotexplorer-appdev-sdk';
interface DeviceSignResp {
AgitatedContent: string;
Timestamp: string;
AgitatedSignature: string;
Content: string;
RequestId: string;
SignMethod: string;
}
export declare class Models {

@@ -10,2 +18,27 @@ appDevSdk: AppDevSdk;

}): Promise<any>;
getDeviceSignAgitated({ DeviceId, Content, SignMethod, ContentType, }: {
DeviceId: any;
Content: any;
SignMethod?: string;
ContentType?: string;
}): Promise<DeviceSignResp>;
getDeviceSign({ DeviceId, Content, SignMethod, ContentType, }: {
DeviceId: any;
Content: any;
SignMethod?: string;
ContentType: any;
}): Promise<string>;
getDeviceSecret({ DeviceId, AppNonce, DeviceNonce, DeviceNonceSign, }: {
DeviceId: any;
AppNonce: any;
DeviceNonce: any;
DeviceNonceSign: any;
}): Promise<string>;
getLLsyncSecretEncryptKey({ AppNonce, // APP 的随机数,这里是 R1
DeviceNonce, // 设备的随机数,这里是 R2
DeviceNonceSign, }: {
AppNonce: any;
DeviceNonce: any;
DeviceNonceSign: any;
}): Promise<any>;
setDeviceConfig({ DeviceId, DeviceKey, DeviceValue, isUserConfig, }: {

@@ -95,1 +128,2 @@ DeviceId?: string;

}
export {};

@@ -1,2 +0,2 @@

"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.Models=void 0;var tslib_1=require("tslib"),iotexplorer_ui_dev_config_1=require("iotexplorer-ui-dev-config"),shortid_for_miniprogram_1=tslib_1.__importDefault(require("shortid-for-miniprogram")),Models=function(){function e(e){this.appDevSdk=e}return e.prototype.getDeviceConfig=function(e){var t=e.DeviceId,i=e.DeviceKey,r=void 0===i?"*":i,o=e.isUserConfig,n=void 0!==o&&o;return tslib_1.__awaiter(this,void 0,void 0,(function(){var e,i,o,a;return tslib_1.__generator(this,(function(s){switch(s.label){case 0:e={},s.label=1;case 1:return s.trys.push([1,3,,4]),[4,this.appDevSdk.requestApi(n?"AppGetUserDeviceConfig":"AppGetDeviceConfig",{DeviceId:t,DeviceKey:r})];case 2:return i=s.sent(),e=i.Configs,[3,4];case 3:return o=s.sent(),console.warn("AppGetDeviceConfig fail",o),[3,4];case 4:if("*"===r)return[2,e];if("string"==typeof(a=e[r])&&~a.indexOf("{"))try{a=JSON.parse(a)}catch(e){console.warn("parse device value fail",e)}return[2,a]}}))}))},e.prototype.setDeviceConfig=function(e){var t=e.DeviceId,i=e.DeviceKey,r=e.DeviceValue,o=e.isUserConfig,n=void 0!==o&&o;return"string"!=typeof r&&(r=JSON.stringify(r)),this.appDevSdk.requestApi(n?"AppSetUserDeviceConfig":"AppSetDeviceConfig",{DeviceId:t,DeviceKey:i,DeviceValue:r})},e.prototype.reportBlueToothDeviceData=function(e){var t=e.ProductId,i=e.DeviceName,r=e.Data,o=e.DataTimeStamp;return tslib_1.__awaiter(this,void 0,void 0,(function(){return tslib_1.__generator(this,(function(e){return r||(r={}),"string"!=typeof r&&(r=JSON.stringify(r)),[2,this.appDevSdk.requestApi("AppReportDataAsDevice",{ProductId:t,DeviceName:i,Data:r,DataTimeStamp:o})]}))}))},e.prototype.getDeviceData=function(e){var t=e.ProductId,i=e.DeviceName;return tslib_1.__awaiter(this,void 0,void 0,(function(){var e;return tslib_1.__generator(this,(function(r){switch(r.label){case 0:return[4,this.appDevSdk.requestApi("AppGetDeviceData",{ProductId:t,DeviceName:i})];case 1:e=r.sent().Data;try{return"string"==typeof e&&(e=JSON.parse(e)),[2,e]}catch(e){return console.error("parse json fail",{ProductId:t,DeviceName:i},e),[2,{}]}return[2]}}))}))},e.prototype.reportDeviceEvent=function(e){var t=e.DeviceId,i=e.EventId,r=e.Params;return tslib_1.__awaiter(this,void 0,void 0,(function(){return tslib_1.__generator(this,(function(e){return[2,this.appDevSdk.requestApi("AppReportDeviceEvent",{DeviceId:t,EventId:i,Params:r,Method:"ReportEventAsDevice"})]}))}))},e.prototype.addDeviceBySigInFamily=function(e){var t=e.Signature,i=e.DeviceTimestamp,r=e.ProductId,o=e.DeviceName,n=e.DeviceId,a=e.ConnId,s=e.FamilyId,c=e.RoomId,p=e.SignMethod,u=void 0===p?"hmacsha1":p,d=e.BindType,v=void 0===d?"other_sign":d;return tslib_1.__awaiter(this,void 0,void 0,(function(){return tslib_1.__generator(this,(function(e){switch(e.label){case 0:return[4,this.appDevSdk.requestApi("AppSigBindDeviceInFamily",{Signature:t,DeviceTimestamp:i,ProductId:r,DeviceName:o,DeviceId:n,ConnId:a,FamilyId:s,RoomId:c,BindType:v,SignMethod:u})];case 1:return[2,e.sent().Data.AppDeviceInfo]}}))}))},e.prototype.deleteDeviceFromFamily=function(e){var t=e.FamilyId,i=e.DeviceId;return tslib_1.__awaiter(this,void 0,void 0,(function(){return tslib_1.__generator(this,(function(e){return[2,this.appDevSdk.requestApi("AppDeleteDeviceInFamily",{FamilyId:t,DeviceId:i})]}))}))},e.prototype.reportDeviceInfo=function(e){var t=e.productId,i=e.deviceName,r=e.deviceInfo;return tslib_1.__awaiter(this,void 0,void 0,(function(){var e,o;return tslib_1.__generator(this,(function(n){return e={method:"report_info",clientToken:t+"/"+i+"-"+shortid_for_miniprogram_1.default(),params:r},o={ProductId:t,DeviceName:i,Topic:"$thing/up/property/"+t+"/"+i,Payload:JSON.stringify(e)},[2,this.appDevSdk.requestApi("AppPublishMsgAsDevice",o)]}))}))},e.prototype.publishDeviceActionMessage=function(e){var t=e.productId,i=e.deviceName,r=e.clientToken,o=e.actionId,n=e.output;return tslib_1.__awaiter(this,void 0,void 0,(function(){var e,a;return tslib_1.__generator(this,(function(s){return e={method:"action_reply",clientToken:r,ActionId:o,timestamp:Math.floor(Date.now()/1e3),response:n,code:0,status:"action execute success!"},a={ProductId:t,DeviceName:i,Topic:"$thing/up/action/"+t+"/"+i,Payload:JSON.stringify(e)},console.log("---reply action---",a),[2,this.appDevSdk.requestApi("AppPublishMsgAsDevice",a)]}))}))},e.prototype.reportOTAVersion=function(e){var t=e.Version,i=e.DeviceId;return tslib_1.__awaiter(this,void 0,void 0,(function(){return tslib_1.__generator(this,(function(e){return[2,this.appDevSdk.requestApi("AppReportFirmwareVersion",{Version:t,DeviceId:i})]}))}))},e.prototype.getDeviceOTAInfo=function(e){var t=e.DeviceId;return tslib_1.__awaiter(this,void 0,void 0,(function(){return tslib_1.__generator(this,(function(e){return[2,this.appDevSdk.requestApi("AppGetDeviceOTAInfo",{DeviceId:t})]}))}))},e.prototype.getProduct=function(e){var t=e.ProductId;return tslib_1.__awaiter(this,void 0,void 0,(function(){return tslib_1.__generator(this,(function(e){switch(e.label){case 0:return[4,this.appDevSdk.requestApi("AppGetProducts",{ProductIds:[t]})];case 1:return[2,e.sent().Products[0]]}}))}))},e.prototype.getProductConfig=function(e){var t=e.ProductId;return tslib_1.__awaiter(this,void 0,void 0,(function(){var e,i;return tslib_1.__generator(this,(function(r){switch(r.label){case 0:return[4,this.appDevSdk.requestApi("AppGetProductsConfig",{ProductIds:[t]})];case 1:return e=r.sent().Data,i={},e.forEach((function(e){try{e.Config=JSON.parse(e.Config)}catch(t){e.Config={}}i[e.ProductId]=iotexplorer_ui_dev_config_1.initializeUIDevConfig(e.Config)})),[2,i[t]]}}))}))},e.prototype.dynamicRegisterDevice=function(e){var t=e.deviceName,i=e.productId,r=e.timestamp,o=e.nonce,n=e.sign;return tslib_1.__awaiter(this,void 0,void 0,(function(){return tslib_1.__generator(this,(function(e){switch(e.label){case 0:return[4,this.appDevSdk.requestApi("AppDeviceDynamicRegister",{DeviceId:i+"/"+t,DeviceTimestamp:r,Nonce:o,Signature:n})];case 1:return[2,{payload:e.sent().Payload}]}}))}))},e}();exports.Models=Models;
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.Models=void 0;var tslib_1=require("tslib"),qcloud_iotexplorer_appdev_sdk_1=require("qcloud-iotexplorer-appdev-sdk"),iotexplorer_ui_dev_config_1=require("iotexplorer-ui-dev-config"),libs_1=require("../../libs"),shortid_for_miniprogram_1=tslib_1.__importDefault(require("shortid-for-miniprogram")),Models=function(){function e(e){this.appDevSdk=e}return e.prototype.getDeviceConfig=function(e){var t=e.DeviceId,i=e.DeviceKey,r=void 0===i?"*":i,n=e.isUserConfig,o=void 0!==n&&n;return tslib_1.__awaiter(this,void 0,void 0,(function(){var e,i,n,s;return tslib_1.__generator(this,(function(c){switch(c.label){case 0:e={},c.label=1;case 1:return c.trys.push([1,3,,4]),[4,this.appDevSdk.requestApi(o?"AppGetUserDeviceConfig":"AppGetDeviceConfig",{DeviceId:t,DeviceKey:r})];case 2:return i=c.sent(),e=i.Configs,[3,4];case 3:return n=c.sent(),console.warn("AppGetDeviceConfig fail",n),[3,4];case 4:if("*"===r)return[2,e];if("string"==typeof(s=e[r])&&~s.indexOf("{"))try{s=JSON.parse(s)}catch(e){console.warn("parse device value fail",e)}return[2,s]}}))}))},e.prototype.getDeviceSignAgitated=function(e){var t=e.DeviceId,i=e.Content,r=e.SignMethod,n=void 0===r?"hmacsha256":r,o=e.ContentType,s=void 0===o?"hex":o;return tslib_1.__awaiter(this,void 0,void 0,(function(){var e,r,o,c;return tslib_1.__generator(this,(function(a){switch(a.label){case 0:return a.trys.push([0,2,,3]),[4,this.appDevSdk.requestApi("AppDeviceCustomSignatureAgitated",{DeviceId:t,Content:i,SignMethod:n,ContentType:s})];case 1:return e=a.sent(),r=e.AgitatedContent,o=qcloud_iotexplorer_appdev_sdk_1.AppDevSdk.utils.hexToStr(r.slice(32)).replace(/\//g,""),[2,tslib_1.__assign(tslib_1.__assign({},e),{Timestamp:Number(o)})];case 2:return c=a.sent(),console.warn("get signAgitated failed",c),[2,Promise.reject(c)];case 3:return[2]}}))}))},e.prototype.getDeviceSign=function(e){var t=e.DeviceId,i=e.Content,r=e.SignMethod,n=void 0===r?"hmacsha256":r,o=e.ContentType;return tslib_1.__awaiter(this,void 0,void 0,(function(){var e,r,s;return tslib_1.__generator(this,(function(c){switch(c.label){case 0:return c.trys.push([0,2,,3]),[4,this.appDevSdk.requestApi("AppDeviceCustomSignature",{DeviceId:t,Content:i,SignMethod:n,ContentType:o})];case 1:return e=c.sent(),r=e.Signature,[2,libs_1.xorHalf(libs_1.base64toHEX(r))];case 2:return s=c.sent(),console.warn("get device sign failed",s),[2,Promise.reject(s)];case 3:return[2]}}))}))},e.prototype.getDeviceSecret=function(e){var t=e.DeviceId,i=e.AppNonce,r=e.DeviceNonce,n=e.DeviceNonceSign;return tslib_1.__awaiter(this,void 0,void 0,(function(){var e,o,s;return tslib_1.__generator(this,(function(c){switch(c.label){case 0:return c.trys.push([0,2,,3]),[4,this.appDevSdk.requestApi("AppGetLLsyncSecretEncryptKey",{DeviceId:t,AppNonce:i,DeviceNonce:r,DeviceNonceSign:n})];case 1:return e=c.sent(),o=e.SecretEncryptKeyHex,[2,libs_1.xorHalf(o)];case 2:return s=c.sent(),console.warn("get sign failed",s),[2,Promise.reject(s)];case 3:return[2]}}))}))},e.prototype.getLLsyncSecretEncryptKey=function(e){var t=e.AppNonce,i=e.DeviceNonce,r=e.DeviceNonceSign;return tslib_1.__awaiter(this,void 0,void 0,(function(){return tslib_1.__generator(this,(function(e){return[2,this.appDevSdk.requestApi("AppGetLLsyncSecretEncryptKey",{AppNonce:t,DeviceNonce:i,DeviceNonceSign:r})]}))}))},e.prototype.setDeviceConfig=function(e){var t=e.DeviceId,i=e.DeviceKey,r=e.DeviceValue,n=e.isUserConfig,o=void 0!==n&&n;return"string"!=typeof r&&(r=JSON.stringify(r)),this.appDevSdk.requestApi(o?"AppSetUserDeviceConfig":"AppSetDeviceConfig",{DeviceId:t,DeviceKey:i,DeviceValue:r})},e.prototype.reportBlueToothDeviceData=function(e){var t=e.ProductId,i=e.DeviceName,r=e.Data,n=e.DataTimeStamp;return tslib_1.__awaiter(this,void 0,void 0,(function(){return tslib_1.__generator(this,(function(e){return r||(r={}),"string"!=typeof r&&(r=JSON.stringify(r)),[2,this.appDevSdk.requestApi("AppReportDataAsDevice",{ProductId:t,DeviceName:i,Data:r,DataTimeStamp:n})]}))}))},e.prototype.getDeviceData=function(e){var t=e.ProductId,i=e.DeviceName;return tslib_1.__awaiter(this,void 0,void 0,(function(){var e;return tslib_1.__generator(this,(function(r){switch(r.label){case 0:return[4,this.appDevSdk.requestApi("AppGetDeviceData",{ProductId:t,DeviceName:i})];case 1:e=r.sent().Data;try{return"string"==typeof e&&(e=JSON.parse(e)),[2,e]}catch(e){return console.error("parse json fail",{ProductId:t,DeviceName:i},e),[2,{}]}return[2]}}))}))},e.prototype.reportDeviceEvent=function(e){var t=e.DeviceId,i=e.EventId,r=e.Params;return tslib_1.__awaiter(this,void 0,void 0,(function(){return tslib_1.__generator(this,(function(e){return[2,this.appDevSdk.requestApi("AppReportDeviceEvent",{DeviceId:t,EventId:i,Params:r,Method:"ReportEventAsDevice"})]}))}))},e.prototype.addDeviceBySigInFamily=function(e){var t=e.Signature,i=e.DeviceTimestamp,r=e.ProductId,n=e.DeviceName,o=e.DeviceId,s=e.ConnId,c=e.FamilyId,a=e.RoomId,p=e.SignMethod,u=void 0===p?"hmacsha1":p,d=e.BindType,v=void 0===d?"other_sign":d;return tslib_1.__awaiter(this,void 0,void 0,(function(){return tslib_1.__generator(this,(function(e){switch(e.label){case 0:return[4,this.appDevSdk.requestApi("AppSigBindDeviceInFamily",{Signature:t,DeviceTimestamp:i,ProductId:r,DeviceName:n,DeviceId:o,ConnId:s,FamilyId:c,RoomId:a,BindType:v,SignMethod:u})];case 1:return[2,e.sent().Data.AppDeviceInfo]}}))}))},e.prototype.deleteDeviceFromFamily=function(e){var t=e.FamilyId,i=e.DeviceId;return tslib_1.__awaiter(this,void 0,void 0,(function(){return tslib_1.__generator(this,(function(e){return[2,this.appDevSdk.requestApi("AppDeleteDeviceInFamily",{FamilyId:t,DeviceId:i})]}))}))},e.prototype.reportDeviceInfo=function(e){var t=e.productId,i=e.deviceName,r=e.deviceInfo;return tslib_1.__awaiter(this,void 0,void 0,(function(){var e,n;return tslib_1.__generator(this,(function(o){return e={method:"report_info",clientToken:t+"/"+i+"-"+shortid_for_miniprogram_1.default(),params:r},n={ProductId:t,DeviceName:i,Topic:"$thing/up/property/"+t+"/"+i,Payload:JSON.stringify(e)},[2,this.appDevSdk.requestApi("AppPublishMsgAsDevice",n)]}))}))},e.prototype.publishDeviceActionMessage=function(e){var t=e.productId,i=e.deviceName,r=e.clientToken,n=e.actionId,o=e.output;return tslib_1.__awaiter(this,void 0,void 0,(function(){var e,s;return tslib_1.__generator(this,(function(c){return e={method:"action_reply",clientToken:r,ActionId:n,timestamp:Math.floor(Date.now()/1e3),response:o,code:0,status:"action execute success!"},s={ProductId:t,DeviceName:i,Topic:"$thing/up/action/"+t+"/"+i,Payload:JSON.stringify(e)},console.log("---reply action---",s),[2,this.appDevSdk.requestApi("AppPublishMsgAsDevice",s)]}))}))},e.prototype.reportOTAVersion=function(e){var t=e.Version,i=e.DeviceId;return tslib_1.__awaiter(this,void 0,void 0,(function(){return tslib_1.__generator(this,(function(e){return[2,this.appDevSdk.requestApi("AppReportFirmwareVersion",{Version:t,DeviceId:i})]}))}))},e.prototype.getDeviceOTAInfo=function(e){var t=e.DeviceId;return tslib_1.__awaiter(this,void 0,void 0,(function(){return tslib_1.__generator(this,(function(e){return[2,this.appDevSdk.requestApi("AppGetDeviceOTAInfo",{DeviceId:t})]}))}))},e.prototype.getProduct=function(e){var t=e.ProductId;return tslib_1.__awaiter(this,void 0,void 0,(function(){return tslib_1.__generator(this,(function(e){switch(e.label){case 0:return[4,this.appDevSdk.requestApi("AppGetProducts",{ProductIds:[t]})];case 1:return[2,e.sent().Products[0]]}}))}))},e.prototype.getProductConfig=function(e){var t=e.ProductId;return tslib_1.__awaiter(this,void 0,void 0,(function(){var e,i;return tslib_1.__generator(this,(function(r){switch(r.label){case 0:return[4,this.appDevSdk.requestApi("AppGetProductsConfig",{ProductIds:[t]})];case 1:return e=r.sent().Data,i={},e.forEach((function(e){try{e.Config=JSON.parse(e.Config)}catch(t){e.Config={}}i[e.ProductId]=iotexplorer_ui_dev_config_1.initializeUIDevConfig(e.Config)})),[2,i[t]]}}))}))},e.prototype.dynamicRegisterDevice=function(e){var t=e.deviceName,i=e.productId,r=e.timestamp,n=e.nonce,o=e.sign;return tslib_1.__awaiter(this,void 0,void 0,(function(){return tslib_1.__generator(this,(function(e){switch(e.label){case 0:return[4,this.appDevSdk.requestApi("AppDeviceDynamicRegister",{DeviceId:i+"/"+t,DeviceTimestamp:r,Nonce:n,Signature:o})];case 1:return[2,{payload:e.sent().Payload}]}}))}))},e}();exports.Models=Models;
//# sourceMappingURL=Models.js.map

@@ -29,8 +29,14 @@ import { Reporter } from 'qcloud-iotexplorer-appdev-sdk';

protocol: LLSyncProtocol;
isEncrypted: boolean;
authorized: boolean;
/**
* 连接后加密数据使用的密钥
*/
sessionKey: string;
private writeDataQueue;
constructor(props: any);
notifyMessage({ type, data }?: any): Promise<any>;
handleBLEMessage(hex: any): {
handleBLEMessage(hex: string[]): {
type: any;
data: any;
data: string[];
};

@@ -37,0 +43,0 @@ wait4EventResponse<T>(eventName: string, handler: (data: any) => T, { timeout, timeoutCode, timeoutHandler, wrapSplitDataMode, shouldWrapSplitDataFn, afterBindEvent, }?: Wait4EventResponseOptions): Promise<T>;

@@ -1,2 +0,2 @@

"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.LLSyncDeviceAdapterBase=void 0;var tslib_1=require("tslib"),qcloud_iotexplorer_appdev_sdk_1=require("qcloud-iotexplorer-appdev-sdk"),utils=tslib_1.__importStar(require("../libs")),constants=tslib_1.__importStar(require("../constants")),qcloud_iotexplorer_bluetooth_adapter_1=require("qcloud-iotexplorer-bluetooth-adapter"),qcloud_iotexplorer_common_libs_1=require("qcloud-iotexplorer-common-libs"),libs_1=require("../libs"),_a=qcloud_iotexplorer_appdev_sdk_1.AppDevSdk.utils,genPromise=_a.genPromise,delay=_a.delay,envDetect=_a.envDetect,LLSyncDeviceAdapterBase=function(t){function e(e){var r=t.call(this,e)||this;return r.on("message",r.notifyMessage.bind(r)),r.writeDataQueue=new qcloud_iotexplorer_common_libs_1.SimpleQueue({autoStart:!0,handler:function(t){var e=t.businessData;return r.writeDataInternal(e)},onTaskSuccess:function(t){var e=t.businessData;return"function"==typeof e.onSuccess&&e.onSuccess()},onTaskError:function(t,e){var r=e.businessData;return"function"==typeof r.onError&&r.onError(t)}}),r}return tslib_1.__extends(e,t),e.prototype.notifyMessage=function(t){var e=void 0===t?{}:t,r=e.type,n=e.data;if("unknown"!==r)return console.log("check this in notifyMessage",this,{type:r,data:n}),this.emit(r,{type:r,data:n})},e.prototype.handleBLEMessage=function(t){var e=parseInt(t.slice(0,1),16),r={type:constants.INDICATE_TYPE_MAP[e]||"unknown",data:t.splice(1)};return console.log("Message(hex)",r),r},e.prototype.wait4EventResponse=function(t,e,r){var n=void 0===r?{}:r,o=n.timeout,i=n.timeoutCode,s=n.timeoutHandler,a=n.wrapSplitDataMode,u=n.shouldWrapSplitDataFn,c=void 0===u||u,l=n.afterBindEvent;return tslib_1.__awaiter(this,void 0,void 0,(function(){var r,n,u,_,d,p=this;return tslib_1.__generator(this,(function(v){switch(v.label){case 0:r=genPromise(),console.log("wait4EventResponse",{eventName:t}),n=!1,u=function(o){return tslib_1.__awaiter(p,void 0,void 0,(function(){return tslib_1.__generator(this,(function(i){try{n?console.log("Target event: "+t+" triggered, but is already timeout"):(r.resolve(e(o)),n=!0)}catch(t){r.reject(t)}finally{this.off(t,_)}return[2]}))}))},_=c?utils.wrapEventHandler(u,a):u,this.on(t,_),v.label=1;case 1:return v.trys.push([1,5,,6]),"function"!=typeof l?[3,3]:[4,l()];case 2:v.sent(),v.label=3;case 3:return[4,Promise.race([r.promise,new Promise((function(e,r){o&&o>0&&setTimeout((function(){n||(console.log("Wait for target event: "+t+" timeout"),n=!0,p.off(t,_),"function"==typeof s?(console.log("trigger timeout handler"),e(s())):r({code:i}))}),o)}))])];case 4:return[2,v.sent()];case 5:return d=v.sent(),this.off(t,_),[2,Promise.reject(d)];case 6:return[2]}}))}))},e.prototype.writeAndWait4Response=function(t,e,r,n){var o=void 0===n?{}:n,i=o.timeout,s=o.timeoutCode,a=o.timeoutHandler,u=o.writeId,c=o.wrapSplitDataMode,l=o.shouldWrapSplitDataFn,_=void 0===l||l;return tslib_1.__awaiter(this,void 0,void 0,(function(){var n=this;return tslib_1.__generator(this,(function(o){return[2,this.wait4EventResponse(e,r,{timeout:i,timeoutCode:s,timeoutHandler:a,wrapSplitDataMode:c,shouldWrapSplitDataFn:_,afterBindEvent:function(){return n.writeData(t,{writeId:u}).catch((function(t){return Promise.reject(tslib_1.__assign({code:constants.BLE_WRITE_ERROR},t))}))}})]}))}))},e.prototype.writeMtuResult=function(t){var e="success"===t?0:65535,r=""+constants.DEVICE_INFO_WRITE_PREFIX[constants.WRITE_MTU_RESULT]+libs_1.U16ToHexString(e);this.write(r,{writeId:constants.DEVICE_INFO_WRITE_ID})},e.prototype.sliceData=function(t,e,r){if(!this.mtu||t.join("").length<=2*this.mtu)return[t.join("")];var n=t.slice(0,r===constants.GET_STATUS?2:1);return console.log("---head----",n),utils.sliceData(e,{mtu:this.mtu,head:n,mode:r})},e.prototype.writeData=function(t,e){var r=this;return void 0===e&&(e={}),new Promise((function(n,o){r.writeDataQueue.push(tslib_1.__assign({data:t,onSuccess:n,onError:o},e))}))},e.prototype.setMtu=function(t){return tslib_1.__awaiter(this,void 0,void 0,(function(){var e;return tslib_1.__generator(this,(function(r){switch(r.label){case 0:return envDetect.isIOS?[2]:[4,this.setBLEMTU({deviceId:this.deviceId,mtu:t})];case 1:return e=r.sent(),this.reporter.info(constants.ANDROID_SET_MTU,{mtu:t,ret:e}),[2,e]}}))}))},e.prototype.writeDataInternal=function(t){var e=t.data,r=t.writeId,n=t.waitGap,o=void 0===n?100:n,i=t.retryTime,s=void 0===i?5:i;return tslib_1.__awaiter(this,void 0,void 0,(function(){var t,n,i,a,u,c,l,_;return tslib_1.__generator(this,(function(d){switch(d.label){case 0:Array.isArray(e)||(e=[e]),d.label=1;case 1:d.trys.push([1,10,11,12]),t=tslib_1.__values(e),n=t.next(),d.label=2;case 2:if(n.done)return[3,9];i=n.value,a=s,d.label=3;case 3:return d.trys.push([3,5,,7]),[4,this.write(i,{writeId:r})];case 4:return d.sent(),[3,8];case 5:if(u=d.sent(),console.log("--- LLSync core writeData error ---- retry time "+a,u),--a<=0)throw u;return[4,delay(Math.min(10*o*(s-a),constants.MAX_WRITE_DATA_WAIT_GAP))];case 6:return d.sent(),[3,7];case 7:if(a>0)return[3,3];d.label=8;case 8:return n=t.next(),[3,2];case 9:return[3,12];case 10:return c=d.sent(),l={error:c},[3,12];case 11:try{n&&!n.done&&(_=t.return)&&_.call(t)}finally{if(l)throw l.error}return[7];case 12:return[2]}}))}))},e}(qcloud_iotexplorer_bluetooth_adapter_1.DeviceAdapter);exports.LLSyncDeviceAdapterBase=LLSyncDeviceAdapterBase;
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.LLSyncDeviceAdapterBase=void 0;var tslib_1=require("tslib"),qcloud_iotexplorer_appdev_sdk_1=require("qcloud-iotexplorer-appdev-sdk"),utils=tslib_1.__importStar(require("../libs")),constants=tslib_1.__importStar(require("../constants")),qcloud_iotexplorer_bluetooth_adapter_1=require("qcloud-iotexplorer-bluetooth-adapter"),qcloud_iotexplorer_common_libs_1=require("qcloud-iotexplorer-common-libs"),libs_1=require("../libs"),_a=qcloud_iotexplorer_appdev_sdk_1.AppDevSdk.utils,genPromise=_a.genPromise,delay=_a.delay,envDetect=_a.envDetect,LLSyncDeviceAdapterBase=function(t){function e(e){var r=t.call(this,e)||this;return r.on("message",r.notifyMessage.bind(r)),r.writeDataQueue=new qcloud_iotexplorer_common_libs_1.SimpleQueue({autoStart:!0,handler:function(t){var e=t.businessData;return r.writeDataInternal(e)},onTaskSuccess:function(t){var e=t.businessData;return"function"==typeof e.onSuccess&&e.onSuccess()},onTaskError:function(t,e){var r=e.businessData;return"function"==typeof r.onError&&r.onError(t)}}),r}return tslib_1.__extends(e,t),e.prototype.notifyMessage=function(t){var e=void 0===t?{}:t,r=e.type,i=e.data;if("unknown"!==r)return console.log("check this in notifyMessage",this,{type:r,data:i}),this.emit(r,{type:r,data:i})},e.prototype.handleBLEMessage=function(t){this.isEncrypted&&this.authorized&&((t=utils.decrypt(t.join(""),this.sessionKey).match(/[\da-f]{2}/gi))||libs_1.log("decrypt ble message fail",t));var e=parseInt(t[0],16),r={type:constants.INDICATE_TYPE_MAP[e]||"unknown",data:t.splice(1)};return console.log("Message(hex)",r),r},e.prototype.wait4EventResponse=function(t,e,r){var i=void 0===r?{}:r,n=i.timeout,o=i.timeoutCode,s=i.timeoutHandler,a=i.wrapSplitDataMode,u=i.shouldWrapSplitDataFn,c=void 0===u||u,l=i.afterBindEvent;return tslib_1.__awaiter(this,void 0,void 0,(function(){var r,i,u,_,d,p=this;return tslib_1.__generator(this,(function(v){switch(v.label){case 0:r=genPromise(),console.log("wait4EventResponse",{eventName:t}),i=!1,u=function(n){return tslib_1.__awaiter(p,void 0,void 0,(function(){return tslib_1.__generator(this,(function(o){try{i?console.log("Target event: "+t+" triggered, but is already timeout"):(r.resolve(e(n)),i=!0)}catch(t){r.reject(t)}finally{this.off(t,_)}return[2]}))}))},_=c?utils.wrapEventHandler(u,a):u,this.on(t,_),v.label=1;case 1:return v.trys.push([1,5,,6]),"function"!=typeof l?[3,3]:[4,l()];case 2:v.sent(),v.label=3;case 3:return[4,Promise.race([r.promise,new Promise((function(e,r){n&&n>0&&setTimeout((function(){i||(libs_1.log("Wait for target event: "+t+" timeout"),i=!0,p.off(t,_),"function"==typeof s?(console.log("trigger timeout handler"),e(s())):r({code:o}))}),n)}))])];case 4:return[2,v.sent()];case 5:return d=v.sent(),this.off(t,_),[2,Promise.reject(d)];case 6:return[2]}}))}))},e.prototype.writeAndWait4Response=function(t,e,r,i){var n=void 0===i?{}:i,o=n.timeout,s=n.timeoutCode,a=n.timeoutHandler,u=n.writeId,c=n.wrapSplitDataMode,l=n.shouldWrapSplitDataFn,_=void 0===l||l;return tslib_1.__awaiter(this,void 0,void 0,(function(){var i=this;return tslib_1.__generator(this,(function(n){return libs_1.log("data2Write:",t),[2,this.wait4EventResponse(e,r,{timeout:o,timeoutCode:s,timeoutHandler:a,wrapSplitDataMode:c,shouldWrapSplitDataFn:_,afterBindEvent:function(){return i.writeData(t,{writeId:u}).catch((function(t){return Promise.reject(tslib_1.__assign({code:constants.BLE_WRITE_ERROR},t))}))}})]}))}))},e.prototype.writeMtuResult=function(t){var e="success"===t?0:65535,r=""+constants.DEVICE_INFO_WRITE_PREFIX[constants.WRITE_MTU_RESULT]+libs_1.U16ToHexString(e);this.write(r,{writeId:constants.DEVICE_INFO_WRITE_ID})},e.prototype.sliceData=function(t,e,r){var i=this.mtu;if(this.isEncrypted&&(i=libs_1.getMtuEncrypted(this.mtu)),!this.mtu||t.join("").length<=2*i)return[t.join("")];var n=t.slice(0,r===constants.GET_STATUS?2:1);return console.log("---head----",n),utils.sliceData(e,{mtu:i,head:n,mode:r})},e.prototype.writeData=function(t,e){var r=this;return void 0===e&&(e={}),new Promise((function(i,n){r.writeDataQueue.push(tslib_1.__assign({data:t,onSuccess:i,onError:n},e))}))},e.prototype.setMtu=function(t){return tslib_1.__awaiter(this,void 0,void 0,(function(){var e;return tslib_1.__generator(this,(function(r){switch(r.label){case 0:return envDetect.isIOS?[2]:[4,this.setBLEMTU({deviceId:this.deviceId,mtu:t})];case 1:return e=r.sent(),this.reporter.info(constants.ANDROID_SET_MTU,{mtu:t,ret:e}),[2,e]}}))}))},e.prototype.writeDataInternal=function(t){var e=t.data,r=t.writeId,i=t.waitGap,n=void 0===i?100:i,o=t.retryTime,s=void 0===o?5:o;return tslib_1.__awaiter(this,void 0,void 0,(function(){var t,i,o,a,u,c,l,_;return tslib_1.__generator(this,(function(d){switch(d.label){case 0:Array.isArray(e)||(e=[e]),d.label=1;case 1:d.trys.push([1,10,11,12]),t=tslib_1.__values(e),i=t.next(),d.label=2;case 2:if(i.done)return[3,9];o=i.value,a=s,d.label=3;case 3:return d.trys.push([3,5,,7]),[4,this.write(o,{writeId:r})];case 4:return d.sent(),[3,8];case 5:if(u=d.sent(),console.log("--- LLSync core writeData error ---- retry time "+a,u),--a<=0)throw u;return[4,delay(Math.min(10*n*(s-a),constants.MAX_WRITE_DATA_WAIT_GAP))];case 6:return d.sent(),[3,7];case 7:if(a>0)return[3,3];d.label=8;case 8:return i=t.next(),[3,2];case 9:return[3,12];case 10:return c=d.sent(),l={error:c},[3,12];case 11:try{i&&!i.done&&(_=t.return)&&_.call(t)}finally{if(l)throw l.error}return[7];case 12:return[2]}}))}))},e}(qcloud_iotexplorer_bluetooth_adapter_1.DeviceAdapter);exports.LLSyncDeviceAdapterBase=LLSyncDeviceAdapterBase;
//# sourceMappingURL=LLSyncDeviceAdapterBase.js.map

@@ -46,2 +46,3 @@ export declare const REPORT_EVENT_TYPE = "standard-ble";

export declare const MTU_MODULE_CALLBACK = "MTU_MODULE_CALLBACK";
export declare const VERIFY_SIGN_FAIL = "VERIFY_SIGN_FAIL";
export declare const GET_DEVICE_INFO = "GET_DEVICE_INFO";

@@ -78,2 +79,14 @@ export declare const SET_WIFI_MODE = "SET_WIFI_MODE";

export declare const UNBIND_RESPONSE = "UnbindResponse";
export declare const GET_DEVICE_NAME = "GET_DEVICE_NAME";
export declare const GET_DEVICE_NAME_WITH_REGISTER = "GET_DEVICE_NAME_WITH_REGISTER";
export declare const GET_DEVICE_NAME_WITH_REGISTER_FAILED = "GET_DEVICE_NAME_WITH_REGISTER_FAILED";
export declare const REQUEST_BIND = "REQUEST_BIND";
export declare const REQUEST_BIND_FAILED = "REQUEST_BIND_FAILED";
export declare const REQUEST_BIND_SUCCESS = "REQUEST_BIND_SUCCESS";
export declare const NOTIFY_BIND = "NOTIFY_BIND";
export declare const RESPONSE_BIND = "RESPONSE_BIND";
export declare const CONNECT_REQUEST = "CONNECT_REQUEST";
export declare const CONNECT_ACK = "CONNECT_ACK";
export declare const NOTIFY_BIND_FAILED = "NOTIFY_BIND_FAILED";
export declare const NOTIFY_BIND_SUCCESS = "NOTIFY_BIND_SUCCESS";
export declare const INDICATE_TYPE_MAP: {

@@ -95,2 +108,11 @@ 0: string;

14: string;
17: string;
18: string;
19: string;
20: string;
21: string;
22: string;
23: string;
24: string;
25: string;
224: string;

@@ -102,2 +124,8 @@ 225: string;

};
export declare const BleErrorMsg: {
1: string;
2: string;
3: string;
4: string;
};
export declare const DEVICE_INFO_WRITE_PREFIX: {

@@ -122,2 +150,11 @@ TIME_SYNC: string;

GET_DEV_LOG: string;
GET_DEVICE_NAME: string;
REQUEST_BIND: string;
NOTIFY_BIND: string;
RESPONSE_BIND: string;
CONNECT_REQUEST: string;
CONNECT_ACK: string;
UnbindRequest: string;
UnbindResponse: string;
GET_DEVICE_NAME_WITH_REGISTER: string;
};

@@ -190,2 +227,3 @@ export declare const DEVICE_DATA_WRITE_HEAD: {

export declare const CONNECT_SIGN_AUTH_ERROR = "CONNECT_SIGN_AUTH_ERROR";
export declare const CONNECT_SIGN_VERIFY_ERROR = "CONNECT_SIGN_VERIFY_ERROR";
export declare const UNBIND_REPLY_ERROR = "UNBIND_REPLY_ERROR";

@@ -192,0 +230,0 @@ export declare const CONTROL_REPLY_CODE_INVALID = "CONTROL_REPLY_CODE_INVALID";

@@ -1,2 +0,2 @@

"use strict";var _a,_b,_c,_d,_e,_f,_g,_h,_j,_k,_l;Object.defineProperty(exports,"__esModule",{value:!0}),exports.ERROR_MESSAGES=exports.MAX_WRITE_DATA_WAIT_GAP=exports.UPDATE_WRITE_ERROR_TIMES_PER_CIRCLE=exports.WAIT_MODULE_UPDATE_CONNECT_TIME_GAP=exports.WAIT_MODULE_UPDATE_CONNECT_TIMES=exports.MODULE_UPDATE_REPLAY_DATA_CODE_MAP=exports.MODULE_UPDATE_DATA_REPLAY_CODE_MAP=exports.MODULE_UPDATE_REPLAY_CODE_MAP=exports.BLE_COMBO_ERRORS=exports.OTA_UPDATE_ERRORS=exports.OTA_UPDATE_STEPS_MESSAGE=exports.OTA_UPDATE_STEPS=exports.GET_DEV_LOG_INFO_TIMEOUT=exports.GET_DEV_LOG_INFO_INVALID=exports.SET_WIFI_TOKEN_RESULT_TIMEOUT=exports.SET_WIFI_TOKEN_RESULT_INVALID=exports.SET_WIFI_CONNECT_RESULT_TIMEOUT=exports.SET_WIFI_CONNECT_RESULT_INVALID=exports.SET_WIFI_INFO_RESULT_TIMEOUT=exports.SET_WIFI_INFO_RESULT_INVALID=exports.SET_WIFI_MODE_RESULT_TIMEOUT=exports.SET_WIFI_MODE_RESULT_INVALID=exports.WAIT_MODULE_UPDATE_TIMEOUT=exports.WAIT_GET_UPDATE_INFO_TIMEOUT=exports.DEVICE_INFO_INVALID=exports.WAIT_GET_DEVICE_INFO_TIMEOUT=exports.BLE_WRITE_ERROR=exports.EVENT_REPLY_ERROR=exports.GET_STATUS_ERROR=exports.REPORT_RESULT_ERROR=exports.CONTROL_DEVICE_REPLY_ERROR=exports.CONTROL_REPLY_CODE_INVALID=exports.UNBIND_REPLY_ERROR=exports.CONNECT_SIGN_AUTH_ERROR=exports.PSK_GET_ERROR=exports.DEVICE_NAME_IS_EMPTY=exports.CANNOT_FIND_DEVICE=exports.CONNECT_DEVICE_ERROR=exports.CONTROL_ACTION_ERROR=exports.CONTROL_REPLY_INVALID=exports.UNBIND_REPLY_INVALID=exports.WAIT_CONTROL_ACTION_REPLY_TIMEOUT=exports.WAIT_CONTROL_DEVICE_REPLY_TIMEOUT=exports.WAIT_UNBIND_REPLY_TIMEOUT=exports.CONNECT_REPLY_INVALID=exports.WAIT_CONNECT_REPLY_TIMEOUT=exports.USER_NEED_LOGIN=exports.LL_OTA_WRITE_PREFIX=exports.OTA_UPDATE_DATA_END=exports.OTA_UPDATE_DATA=exports.OTA_UPDATE_REQUEST=exports.BLE_IOT_DATA_TYPE_ARRAY=exports.BLE_IOT_DATA_TYPE_STRUCT=exports.BLE_IOT_DATA_TYPE_TIME=exports.BLE_IOT_DATA_TYPE_ENUM=exports.BLE_IOT_DATA_TYPE_FLOAT=exports.BLE_IOT_DATA_TYPE_STRING=exports.BLE_IOT_DATA_TYPE_INT=exports.BLE_IOT_DATA_TYPE_BOOL=exports.ACTION_DESC=exports.WIFI_LOG_TYPE_MAP=exports.WIFI_MODE_MAP=exports.DEVICE_DATA_WRITE_SUFFIX=exports.DEVICE_DATA_WRITE_HEAD=exports.DEVICE_INFO_WRITE_PREFIX=exports.INDICATE_TYPE_MAP=exports.UNBIND_RESPONSE=exports.UNBIND_REQUEST=exports.REGISTER_DEVICE_SUCCESS=exports.REGISTER_DEVICE_ERROR=exports.REGISTER_DEVICE_INFO_REPLY_INVALID=exports.WAIT_REGISTER_DEVICE_INFO_REPLY_TIMEOUT=exports.SEND_REGISTER_DEVICE_PAYLOAD=exports.REGISTER_DEVICE_INFO_REPLY=exports.WRITE_USER_CHECK_CANCEL=exports.WRITE_USER_CHECK_TIMEOUT=exports.GET_USER_CHECK_TIMEOUT_SUCCESS=exports.GET_USER_CHECK_TIMEOUT_ERROR=exports.GET_USER_CHECK_TIMEOUT_TIMEOUT=exports.USER_CHECK_TIMEOUT_CALLBACK=exports.USER_CHECK_TIMEOUT=exports.GET_USER_CHECK_REJECT=exports.GET_USER_CHECK_APPROVE=exports.WAIT_USER_CHECK_TIMEOUT=exports.NULL_WIFI_MODE=exports.STA_WIFI_MODE=exports.GET_DEV_LOG_INFO=exports.SET_WIFI_TOKEN_RESULT=exports.SET_WIFI_CONNECT_RESULT=exports.SET_WIFI_INFO_RESULT=exports.SET_WIFI_MODE_RESULT=exports.GET_DEV_LOG=exports.SET_WIFI_TOKEN=exports.SET_WIFI_CONNECT=exports.SET_WIFI_INFO=exports.SET_WIFI_MODE=exports.GET_DEVICE_INFO=exports.MTU_MODULE_CALLBACK=exports.WRITE_MTU_RESULT=exports.CONTROL_ACTION_SUCCESS=exports.TIME_SYNC=exports.UNBIND_AUTH=exports.UNBIND_RESULT_AUTH_FAIL=exports.UNBIND_RESULT_AUTH_SUCCESS=exports.CONNECT_RESULT_WRITE_FAIL=exports.CONNECT_RESULT_WRITE_SUCCESS=exports.ANDROID_SET_MTU=exports.DEVICE_INFO=exports.CONNECT_AUTH=exports.BIND_AUTH_FAIL=exports.BIND_AUTH_SUCCESS=exports.BIND_AUTH_DETAIL=exports.SET_MTU_BEFORE_CONNECT=exports.BIND_AUTH=exports.UPDATE_REPLY_INVALID=exports.UPDATE_DATA_CHECK_REPLY=exports.UPDATE_DATA_REPLY=exports.UPDATE_REPLY=exports.ACTION_REPLY=exports.EVENT_REPLY=exports.EVENT_REPORT=exports.GET_STATUS=exports.CONTROL_REPLY=exports.REPORT_RESULT=exports.CONTROL_ACTION=exports.CONTROL_DEVICE=exports.PROPERTY_REPORT=exports.LL_OTA_WRITE_ID=exports.DEVICE_EVENT_WRITE_ID=exports.DEVICE_DATA_WRITE_ID=exports.DEVICE_INFO_WRITE_ID=exports.DEVICE_STATE_MAP=exports.DEVICE_HAS_CONNECTED=exports.DEVICE_WAITING_BIND=exports.DEVICE_NOT_BIND=exports.DEVICE_HAS_BINDED=exports.REPORT_EVENT_TYPE=void 0;var tslib_1=require("tslib");exports.REPORT_EVENT_TYPE="standard-ble",exports.DEVICE_HAS_BINDED="DEVICE_HAS_BINDED",exports.DEVICE_NOT_BIND="DEVICE_NOT_BIND",exports.DEVICE_WAITING_BIND="DEVICE_WAITING_BIND",exports.DEVICE_HAS_CONNECTED="DEVICE_HAS_CONNECTED",exports.DEVICE_STATE_MAP={0:exports.DEVICE_NOT_BIND,1:exports.DEVICE_WAITING_BIND,2:exports.DEVICE_HAS_BINDED,3:exports.DEVICE_HAS_CONNECTED},exports.DEVICE_INFO_WRITE_ID="0000FFE1-65D0-4E20-B56A-E493541BA4E2",exports.DEVICE_DATA_WRITE_ID="0000FFE2-65D0-4E20-B56A-E493541BA4E2",exports.DEVICE_EVENT_WRITE_ID="0000FFE3-65D0-4E20-B56A-E493541BA4E2",exports.LL_OTA_WRITE_ID="0000FFE4-65D0-4E20-B56A-E493541BA4E2",exports.PROPERTY_REPORT="PROPERTY_REPORT",exports.CONTROL_DEVICE="CONTROL_DEVICE",exports.CONTROL_ACTION="CONTROL_ACTION",exports.REPORT_RESULT="REPORT_RESULT",exports.CONTROL_REPLY="CONTROL_REPLY",exports.GET_STATUS="GET_STATUS",exports.EVENT_REPORT="EVENT_REPORT",exports.EVENT_REPLY="EVENT_REPLY",exports.ACTION_REPLY="ACTION_REPLY",exports.UPDATE_REPLY="UPDATE_REPLY",exports.UPDATE_DATA_REPLY="UPDATE_DATA_REPLY",exports.UPDATE_DATA_CHECK_REPLY="UPDATE_DATA_CHECK_REPLY",exports.UPDATE_REPLY_INVALID="UPDATE_REPLY_INVALID",exports.BIND_AUTH="BIND_AUTH",exports.SET_MTU_BEFORE_CONNECT="SET_MTU_BEFORE_CONNECT",exports.BIND_AUTH_DETAIL="BIND_AUTH_DETAIL",exports.BIND_AUTH_SUCCESS="BIND_AUTH_SUCCESS",exports.BIND_AUTH_FAIL="BIND_AUTH_FAIL",exports.CONNECT_AUTH="CONNECT_AUTH",exports.DEVICE_INFO="DEVICE_INFO",exports.ANDROID_SET_MTU="ANDROID_SET_MTU",exports.CONNECT_RESULT_WRITE_SUCCESS="CONNECT_RESULT_WRITE_SUCCESS",exports.CONNECT_RESULT_WRITE_FAIL="CONNECT_RESULT_WRITE_FAIL",exports.UNBIND_RESULT_AUTH_SUCCESS="UNBIND_RESULT_AUTH_SUCCESS",exports.UNBIND_RESULT_AUTH_FAIL="UNBIND_RESULT_AUTH_FAIL",exports.UNBIND_AUTH="UNBIND_AUTH",exports.TIME_SYNC="TIME_SYNC",exports.CONTROL_ACTION_SUCCESS="CONTROL_ACTION_SUCCESS",exports.WRITE_MTU_RESULT="WRITE_MTU_RESULT",exports.MTU_MODULE_CALLBACK="MTU_MODULE_CALLBACK",exports.GET_DEVICE_INFO="GET_DEVICE_INFO",exports.SET_WIFI_MODE="SET_WIFI_MODE",exports.SET_WIFI_INFO="SET_WIFI_INFO",exports.SET_WIFI_CONNECT="SET_WIFI_CONNECT",exports.SET_WIFI_TOKEN="SET_WIFI_TOKEN",exports.GET_DEV_LOG="GET_DEV_LOG",exports.SET_WIFI_MODE_RESULT="SET_WIFI_MODE_RESULT",exports.SET_WIFI_INFO_RESULT="SET_WIFI_INFO_RESULT",exports.SET_WIFI_CONNECT_RESULT="SET_WIFI_CONNECT_RESULT",exports.SET_WIFI_TOKEN_RESULT="SET_WIFI_TOKEN_RESULT",exports.GET_DEV_LOG_INFO="GET_DEV_LOG_INFO",exports.STA_WIFI_MODE="STA_WIFI_MODE",exports.NULL_WIFI_MODE="NULL_WIFI_MODE",exports.WAIT_USER_CHECK_TIMEOUT="WAIT_USER_CHECK_TIMEOUT",exports.GET_USER_CHECK_APPROVE="GET_USER_CHECK_APPROVE",exports.GET_USER_CHECK_REJECT="GET_USER_CHECK_REJECT",exports.USER_CHECK_TIMEOUT="USER_CHECK_TIMEOUT",exports.USER_CHECK_TIMEOUT_CALLBACK="USER_CHECK_TIMEOUT_CALLBACK",exports.GET_USER_CHECK_TIMEOUT_TIMEOUT="GET_USER_CHECK_TIMEOUT_TIMEOUT",exports.GET_USER_CHECK_TIMEOUT_ERROR="GET_USER_CHECK_TIMEOUT_ERROR",exports.GET_USER_CHECK_TIMEOUT_SUCCESS="GET_USER_CHECK_TIMEOUT_SUCCESS",exports.WRITE_USER_CHECK_TIMEOUT=1,exports.WRITE_USER_CHECK_CANCEL=0,exports.REGISTER_DEVICE_INFO_REPLY="REGISTER_DEVICE_INFO_REPLY",exports.SEND_REGISTER_DEVICE_PAYLOAD="SEND_REGISTER_DEVICE_PAYLOAD",exports.WAIT_REGISTER_DEVICE_INFO_REPLY_TIMEOUT="WAIT_REGISTER_DEVICE_INFO_REPLY_TIMEOUT",exports.REGISTER_DEVICE_INFO_REPLY_INVALID="REGISTER_DEVICE_INFO_REPLY_INVALID",exports.REGISTER_DEVICE_ERROR="REGISTER_DEVICE_ERROR",exports.REGISTER_DEVICE_SUCCESS="REGISTER_DEVICE_SUCCESS",exports.UNBIND_REQUEST="UnbindRequest",exports.UNBIND_RESPONSE="UnbindResponse",exports.INDICATE_TYPE_MAP={0:exports.PROPERTY_REPORT,1:exports.CONTROL_REPLY,2:exports.GET_STATUS,3:exports.EVENT_REPORT,4:exports.ACTION_REPLY,5:exports.BIND_AUTH,6:exports.CONNECT_AUTH,7:exports.UNBIND_AUTH,8:exports.DEVICE_INFO,9:exports.UPDATE_REPLY,10:exports.UPDATE_DATA_REPLY,11:exports.UPDATE_DATA_CHECK_REPLY,12:exports.MTU_MODULE_CALLBACK,13:exports.USER_CHECK_TIMEOUT_CALLBACK,14:exports.REGISTER_DEVICE_INFO_REPLY,224:exports.SET_WIFI_MODE_RESULT,225:exports.SET_WIFI_INFO_RESULT,226:exports.SET_WIFI_CONNECT_RESULT,227:exports.SET_WIFI_TOKEN_RESULT,228:exports.GET_DEV_LOG_INFO},exports.DEVICE_INFO_WRITE_PREFIX=((_a={})[exports.TIME_SYNC]="00",_a[exports.CONNECT_AUTH]="01",_a[exports.BIND_AUTH_SUCCESS]="02",_a[exports.BIND_AUTH_FAIL]="03",_a[exports.UNBIND_AUTH]="04",_a[exports.CONNECT_RESULT_WRITE_SUCCESS]="05",_a[exports.CONNECT_RESULT_WRITE_FAIL]="06",_a[exports.UNBIND_RESULT_AUTH_SUCCESS]="07",_a[exports.UNBIND_RESULT_AUTH_FAIL]="08",_a[exports.WRITE_MTU_RESULT]="09",_a[exports.USER_CHECK_TIMEOUT]="0A",_a[exports.SEND_REGISTER_DEVICE_PAYLOAD]="0B",_a[exports.GET_DEVICE_INFO]="E0",_a[exports.SET_WIFI_MODE]="E1",_a[exports.SET_WIFI_INFO]="E2",_a[exports.SET_WIFI_CONNECT]="E3",_a[exports.SET_WIFI_TOKEN]="E4",_a[exports.GET_DEV_LOG]="E5",_a),exports.DEVICE_DATA_WRITE_HEAD=((_b={})[exports.CONTROL_DEVICE]="000",_b[exports.REPORT_RESULT]="001",_b[exports.GET_STATUS]="001",_b[exports.EVENT_REPLY]="011",_b[exports.CONTROL_ACTION]="100",_b),exports.DEVICE_DATA_WRITE_SUFFIX=((_c={})[exports.CONTROL_DEVICE]="00000",_c[exports.REPORT_RESULT]="00000",_c[exports.GET_STATUS]="00010",_c),exports.WIFI_MODE_MAP=((_d={})[exports.NULL_WIFI_MODE]=0,_d[exports.STA_WIFI_MODE]=1,_d),exports.WIFI_LOG_TYPE_MAP={ERROR_LOG:0,NORMAL_LOG:1},exports.ACTION_DESC=((_e={})[exports.CONTROL_DEVICE]="远程控制",_e[exports.REPORT_RESULT]="属性上报结果通知",_e[exports.GET_STATUS]="写入设备最新状态",_e[exports.EVENT_REPLY]="处理设备端事件上报",_e[exports.CONTROL_ACTION]="对设备进行行为调用",_e[exports.CONTROL_ACTION_SUCCESS]="对设备进行行为调用成功",_e[exports.TIME_SYNC]="时间同步",_e[exports.CONNECT_AUTH]="连接鉴权",_e[exports.BIND_AUTH]="绑定鉴权",_e[exports.BIND_AUTH_DETAIL]="绑定鉴权详情",_e[exports.BIND_AUTH_SUCCESS]="绑定鉴权成功",_e[exports.UNBIND_AUTH]="解绑鉴权",_e[exports.CONNECT_RESULT_WRITE_SUCCESS]="连接小程序端鉴权成功",_e[exports.UNBIND_RESULT_AUTH_SUCCESS]="解绑小程序端鉴权成功",_e),exports.BLE_IOT_DATA_TYPE_BOOL="bool",exports.BLE_IOT_DATA_TYPE_INT="int",exports.BLE_IOT_DATA_TYPE_STRING="string",exports.BLE_IOT_DATA_TYPE_FLOAT="float",exports.BLE_IOT_DATA_TYPE_ENUM="enum",exports.BLE_IOT_DATA_TYPE_TIME="timestamp",exports.BLE_IOT_DATA_TYPE_STRUCT="struct",exports.BLE_IOT_DATA_TYPE_ARRAY="array",exports.OTA_UPDATE_REQUEST="OTA_UPDATE_REQUEST",exports.OTA_UPDATE_DATA="OTA_UPDATE_DATA",exports.OTA_UPDATE_DATA_END="OTA_UPDATE_DATA_END",exports.LL_OTA_WRITE_PREFIX=((_f={})[exports.OTA_UPDATE_REQUEST]="00",_f[exports.OTA_UPDATE_DATA]="01",_f[exports.OTA_UPDATE_DATA_END]="02",_f),exports.USER_NEED_LOGIN="USER_NEED_LOGIN",exports.WAIT_CONNECT_REPLY_TIMEOUT="WAIT_CONNECT_REPLY_TIMEOUT",exports.CONNECT_REPLY_INVALID="CONNECT_REPLY_INVALID",exports.WAIT_UNBIND_REPLY_TIMEOUT="WAIT_UNBIND_REPLY_TIMEOUT",exports.WAIT_CONTROL_DEVICE_REPLY_TIMEOUT="WAIT_CONTROL_DEVICE_REPLY_TIMEOUT",exports.WAIT_CONTROL_ACTION_REPLY_TIMEOUT="WAIT_CONTROL_ACTION_REPLY_TIMEOUT",exports.UNBIND_REPLY_INVALID="UNBIND_REPLY_INVALID",exports.CONTROL_REPLY_INVALID="CONTROL_REPLY_INVALID",exports.CONTROL_ACTION_ERROR="CONTROL_ACTION_ERROR",exports.CONNECT_DEVICE_ERROR="CONNECT_DEVICE_ERROR",exports.CANNOT_FIND_DEVICE="CANNOT_FIND_DEVICE",exports.DEVICE_NAME_IS_EMPTY="DEVICE_NAME_IS_EMPTY",exports.PSK_GET_ERROR="PSK_GET_ERROR",exports.CONNECT_SIGN_AUTH_ERROR="CONNECT_SIGN_AUTH_ERROR",exports.UNBIND_REPLY_ERROR="UNBIND_REPLY_ERROR",exports.CONTROL_REPLY_CODE_INVALID="CONTROL_REPLY_CODE_INVALID",exports.CONTROL_DEVICE_REPLY_ERROR="CONTROL_DEVICE_REPLY_ERROR",exports.REPORT_RESULT_ERROR="REPORT_RESULT_ERROR",exports.GET_STATUS_ERROR="GET_STATUS_ERROR",exports.EVENT_REPLY_ERROR="EVENT_REPLY_ERROR",exports.BLE_WRITE_ERROR="BLE_WRITE_ERROR",exports.WAIT_GET_DEVICE_INFO_TIMEOUT="WAIT_GET_DEVICE_INFO_TIMEOUT",exports.DEVICE_INFO_INVALID="DEVICE_INFO_INVALID",exports.WAIT_GET_UPDATE_INFO_TIMEOUT="WAIT_GET_UPDATE_INFO_TIMEOUT",exports.WAIT_MODULE_UPDATE_TIMEOUT="WAIT_MODULE_UPDATE_TIMEOUT",exports.SET_WIFI_MODE_RESULT_INVALID="SET_WIFI_MODE_RESULT_INVALID",exports.SET_WIFI_MODE_RESULT_TIMEOUT="SET_WIFI_MODE_RESULT_TIMEOUT",exports.SET_WIFI_INFO_RESULT_INVALID="SET_WIFI_INFO_INVALID",exports.SET_WIFI_INFO_RESULT_TIMEOUT="SET_WIFI_INFO_TIMEOUT",exports.SET_WIFI_CONNECT_RESULT_INVALID="SET_WIFI_CONNECT_RESULT_INVALID",exports.SET_WIFI_CONNECT_RESULT_TIMEOUT="SET_WIFI_CONNECT_RESULT_TIMEOUT",exports.SET_WIFI_TOKEN_RESULT_INVALID="SET_WIFI_TOKEN_RESULT_INVALID",exports.SET_WIFI_TOKEN_RESULT_TIMEOUT="SET_WIFI_TOKEN_RESULT_TIMEOUT",exports.GET_DEV_LOG_INFO_INVALID="GET_DEV_LOG_INFO_INVALID",exports.GET_DEV_LOG_INFO_TIMEOUT="GET_DEV_LOG_INFO_TIMEOUT",exports.OTA_UPDATE_STEPS={GET_OTA_UPDATE_INFO:"GET_OTA_UPDATE_INFO",GET_OTA_UPDATE_INFO_SUCCESS:"GET_OTA_UPDATE_INFO_SUCCESS",DOWNLOADING_OTA_FILE:"DOWNLOADING_OTA_FILE",DOWNLOADING_OTA_FILE_DETAIL:"DOWNLOADING_OTA_FILE_DETAIL",DOWNLOAD_OTA_FILE_SUCCESS:"DOWNLOAD_OTA_FILE_SUCCESS",REQUEST_MODULE_UPDATE_START:"REQUEST_MODULE_UPDATE",REQUEST_MODULE_UPDATE_SUCCESS:"REQUEST_MODULE_UPDATE_SUCCESS",MODULE_UPDATE_CHECK_FILE_SUCCESS:"MODULE_UPDATE_CHECK_FILE_SUCCESS",SEND_UPDATE_DATA_START:"SEND_UPDATE_DATA_START",SEND_UPDATE_DATA_DETAIL:"SEND_UPDATE_DATA_DETAIL",SEND_UPDATE_DATA_SUCCESS:"SEND_UPDATE_DATA_SUCCESS",WAITING_MODULE_UPDATE:"WAITING_MODULE_UPDATE",MODULE_UPDATE_SUCCESS:"MODULE_UPDATE_SUCCESS"},exports.OTA_UPDATE_STEPS_MESSAGE=((_g={})[exports.OTA_UPDATE_STEPS.GET_OTA_UPDATE_INFO]="获取固件版本信息",_g[exports.OTA_UPDATE_STEPS.GET_OTA_UPDATE_INFO_SUCCESS]="获取固件版本信息成功",_g[exports.OTA_UPDATE_STEPS.DOWNLOADING_OTA_FILE]="正在下载OTA文件",_g[exports.OTA_UPDATE_STEPS.DOWNLOADING_OTA_FILE_DETAIL]="正在下载OTA文件详情",_g[exports.OTA_UPDATE_STEPS.DOWNLOAD_OTA_FILE_SUCCESS]="下载OTA文件成功",_g[exports.OTA_UPDATE_STEPS.REQUEST_MODULE_UPDATE_START]="开始检查设备端固件升级支持情况",_g[exports.OTA_UPDATE_STEPS.REQUEST_MODULE_UPDATE_SUCCESS]="检查设备端固件升级支持情况成功",_g[exports.OTA_UPDATE_STEPS.SEND_UPDATE_DATA_START]="开始发送固件升级文件",_g[exports.OTA_UPDATE_STEPS.SEND_UPDATE_DATA_DETAIL]="固件升级文件详情",_g[exports.OTA_UPDATE_STEPS.SEND_UPDATE_DATA_SUCCESS]="固件升级文件发送成功",_g[exports.OTA_UPDATE_STEPS.WAITING_MODULE_UPDATE]="开始烧录固件升级文件",_g[exports.OTA_UPDATE_STEPS.MODULE_UPDATE_SUCCESS]="设备端固件升级成功",_g),exports.OTA_UPDATE_ERRORS=((_h={GET_OTA_INFO_FAIL:"获取OTA升级信息失败",MODULE_VERSION_IS_UPDATED:"设备端固件已经是最新版",MODULE_DONNOT_SUPPORT:"设备端固件不支持",USER_CANCEL_OTA_UPDATE:"用户取消固件升级",MODULE_DONNOT_ALLOW:"设备端固件不允许,可能是当前状态不允许",MODULE_UPDATE_CHECK_FILE_FAIL:"升级文件校验失败",GET_FILE_CRC_ERROR:"获取文件和crc错误"})[exports.WAIT_GET_UPDATE_INFO_TIMEOUT]="获取设备端分片包回包超时",_h[exports.WAIT_MODULE_UPDATE_TIMEOUT]="等待设备端升级超时",_h.UPDATE_DATA_REPLAY_TIMEOUT="发送固件升级文件超时",_h.MODULE_UPDATE_FAIL="设备端固件升级失败",_h.MODULE_UPDATE_CONNECT_TIMEOUT="设备端固件升级连接设备超时",_h.BLE_CONNECTION_BREAK="蓝牙连接断开",_h),exports.BLE_COMBO_ERRORS=((_j={})[exports.SET_WIFI_MODE_RESULT_INVALID]="设置WiFi模式返回格式错误",_j[exports.SET_WIFI_MODE_RESULT_TIMEOUT]="设置WiFi模式返回超时,请稍后再试",_j[exports.SET_WIFI_INFO_RESULT_INVALID]="WiFi信息传输返回格式错误",_j[exports.SET_WIFI_INFO_RESULT_TIMEOUT]="WiFi信息传输返回超时,请稍后再试",_j[exports.SET_WIFI_CONNECT_RESULT_INVALID]="WiFi连接失败",_j[exports.SET_WIFI_CONNECT_RESULT_TIMEOUT]="获取WiFi连接状态超时",_j[exports.SET_WIFI_TOKEN_RESULT_INVALID]="发送配网token结果非法",_j[exports.SET_WIFI_TOKEN_RESULT_TIMEOUT]="发送配网token结果超时,请稍后再试",_j[exports.GET_DEV_LOG_INFO_INVALID]="获取配网日志格式错误",_j[exports.GET_DEV_LOG_INFO_TIMEOUT]="获取配网日志超时,请稍后再试",_j),exports.MODULE_UPDATE_REPLAY_CODE_MAP={0:"设备电量不足",1:"版本号错误"},exports.MODULE_UPDATE_DATA_REPLAY_CODE_MAP={1:exports.OTA_UPDATE_STEPS.MODULE_UPDATE_CHECK_FILE_SUCCESS,0:"MODULE_UPDATE_CHECK_FILE_FAIL"},exports.MODULE_UPDATE_REPLAY_DATA_CODE_MAP={0:"CRC错误",1:"文件读取失败",2:"文件错误"},exports.WAIT_MODULE_UPDATE_CONNECT_TIMES=5,exports.WAIT_MODULE_UPDATE_CONNECT_TIME_GAP=2e3,exports.UPDATE_WRITE_ERROR_TIMES_PER_CIRCLE=5,exports.MAX_WRITE_DATA_WAIT_GAP=200,exports.ERROR_MESSAGES=tslib_1.__assign(tslib_1.__assign(((_k={})[exports.USER_NEED_LOGIN]="用户未登录,不能连接蓝牙",_k[exports.CONTROL_ACTION_ERROR]="行为调用失败",_k[exports.CONNECT_DEVICE_ERROR]="连接设备失败",_k[exports.CANNOT_FIND_DEVICE]="无法找到设备",_k[exports.USER_NEED_LOGIN]="请重新登录",_k[exports.WAIT_CONNECT_REPLY_TIMEOUT]="等待连接回复超时",_k[exports.CONNECT_REPLY_INVALID]="等待连接回复非法",_k[exports.GET_USER_CHECK_REJECT]="用户端确认拒绝",_k[exports.WAIT_USER_CHECK_TIMEOUT]="等待用户确认超时",_k[exports.GET_USER_CHECK_TIMEOUT_TIMEOUT]="获取设备端用户确认超时时间超时,使用默认超时时间",_k[exports.GET_USER_CHECK_TIMEOUT_ERROR]="获取设备端用户确认超时时间失败,使用默认超时时间",_k[exports.DEVICE_NAME_IS_EMPTY]="设备名称非法",_k[exports.PSK_GET_ERROR]="获取local psk失败",_k[exports.CONNECT_SIGN_AUTH_ERROR]="获取连接认证失败",_k[exports.WAIT_UNBIND_REPLY_TIMEOUT]="获取解绑回复超时",_k[exports.UNBIND_REPLY_INVALID]="解绑回复非法",_k[exports.UNBIND_REPLY_ERROR]="解绑回复失败",_k[exports.WAIT_CONTROL_DEVICE_REPLY_TIMEOUT]="等待控制设备回复超时",_k[exports.CONTROL_DEVICE_REPLY_ERROR]="控制设备失败",_k[exports.CONTROL_REPLY_INVALID]="等待控制设备回复非法",_k[exports.BIND_AUTH_FAIL]="绑定鉴权失败",_k[exports.UNBIND_RESULT_AUTH_FAIL]="解绑小程序端鉴权失败",_k[exports.CONNECT_RESULT_WRITE_FAIL]="连接小程序端鉴权失败",_k[exports.CONTROL_REPLY_CODE_INVALID]="设备端控制回包code非0",_k[exports.REPORT_RESULT_ERROR]="上报设备最新状态失败",_k[exports.GET_STATUS_ERROR]="获取最新状态失败",_k[exports.EVENT_REPLY_ERROR]="EVENT_REPLY_ERROR",_k[exports.BLE_WRITE_ERROR]="设备写入失败",_k[exports.WAIT_GET_DEVICE_INFO_TIMEOUT]="获取设备信息超时",_k[exports.DEVICE_INFO_INVALID]="设备版本和MTU信息非法",_k.ID_TEMPLATE_IS_NOT_EXIT="设备端传的id在物模型里面不存在",_k.TYPE_IN_MODULE_IS_WRONG="设备端的type和后台的不一致",_k),exports.OTA_UPDATE_ERRORS),((_l={})[exports.REGISTER_DEVICE_ERROR]="从云端动态注册失败",_l[exports.REGISTER_DEVICE_INFO_REPLY_INVALID]="设备端回复的云端注册信息非法",_l[exports.WAIT_REGISTER_DEVICE_INFO_REPLY_TIMEOUT]="等待设备端回复的云端注册信息超时",_l));
"use strict";var _a,_b,_c,_d,_e,_f,_g,_h,_j,_k,_l;Object.defineProperty(exports,"__esModule",{value:!0}),exports.ERROR_MESSAGES=exports.MAX_WRITE_DATA_WAIT_GAP=exports.UPDATE_WRITE_ERROR_TIMES_PER_CIRCLE=exports.WAIT_MODULE_UPDATE_CONNECT_TIME_GAP=exports.WAIT_MODULE_UPDATE_CONNECT_TIMES=exports.MODULE_UPDATE_REPLAY_DATA_CODE_MAP=exports.MODULE_UPDATE_DATA_REPLAY_CODE_MAP=exports.MODULE_UPDATE_REPLAY_CODE_MAP=exports.BLE_COMBO_ERRORS=exports.OTA_UPDATE_ERRORS=exports.OTA_UPDATE_STEPS_MESSAGE=exports.OTA_UPDATE_STEPS=exports.GET_DEV_LOG_INFO_TIMEOUT=exports.GET_DEV_LOG_INFO_INVALID=exports.SET_WIFI_TOKEN_RESULT_TIMEOUT=exports.SET_WIFI_TOKEN_RESULT_INVALID=exports.SET_WIFI_CONNECT_RESULT_TIMEOUT=exports.SET_WIFI_CONNECT_RESULT_INVALID=exports.SET_WIFI_INFO_RESULT_TIMEOUT=exports.SET_WIFI_INFO_RESULT_INVALID=exports.SET_WIFI_MODE_RESULT_TIMEOUT=exports.SET_WIFI_MODE_RESULT_INVALID=exports.WAIT_MODULE_UPDATE_TIMEOUT=exports.WAIT_GET_UPDATE_INFO_TIMEOUT=exports.DEVICE_INFO_INVALID=exports.WAIT_GET_DEVICE_INFO_TIMEOUT=exports.BLE_WRITE_ERROR=exports.EVENT_REPLY_ERROR=exports.GET_STATUS_ERROR=exports.REPORT_RESULT_ERROR=exports.CONTROL_DEVICE_REPLY_ERROR=exports.CONTROL_REPLY_CODE_INVALID=exports.UNBIND_REPLY_ERROR=exports.CONNECT_SIGN_VERIFY_ERROR=exports.CONNECT_SIGN_AUTH_ERROR=exports.PSK_GET_ERROR=exports.DEVICE_NAME_IS_EMPTY=exports.CANNOT_FIND_DEVICE=exports.CONNECT_DEVICE_ERROR=exports.CONTROL_ACTION_ERROR=exports.CONTROL_REPLY_INVALID=exports.UNBIND_REPLY_INVALID=exports.WAIT_CONTROL_ACTION_REPLY_TIMEOUT=exports.WAIT_CONTROL_DEVICE_REPLY_TIMEOUT=exports.WAIT_UNBIND_REPLY_TIMEOUT=exports.CONNECT_REPLY_INVALID=exports.WAIT_CONNECT_REPLY_TIMEOUT=exports.USER_NEED_LOGIN=exports.LL_OTA_WRITE_PREFIX=exports.OTA_UPDATE_DATA_END=exports.OTA_UPDATE_DATA=exports.OTA_UPDATE_REQUEST=exports.BLE_IOT_DATA_TYPE_ARRAY=exports.BLE_IOT_DATA_TYPE_STRUCT=exports.BLE_IOT_DATA_TYPE_TIME=exports.BLE_IOT_DATA_TYPE_ENUM=exports.BLE_IOT_DATA_TYPE_FLOAT=exports.BLE_IOT_DATA_TYPE_STRING=exports.BLE_IOT_DATA_TYPE_INT=exports.BLE_IOT_DATA_TYPE_BOOL=exports.ACTION_DESC=exports.WIFI_LOG_TYPE_MAP=exports.WIFI_MODE_MAP=exports.DEVICE_DATA_WRITE_SUFFIX=exports.DEVICE_DATA_WRITE_HEAD=exports.DEVICE_INFO_WRITE_PREFIX=exports.BleErrorMsg=exports.INDICATE_TYPE_MAP=exports.NOTIFY_BIND_SUCCESS=exports.NOTIFY_BIND_FAILED=exports.CONNECT_ACK=exports.CONNECT_REQUEST=exports.RESPONSE_BIND=exports.NOTIFY_BIND=exports.REQUEST_BIND_SUCCESS=exports.REQUEST_BIND_FAILED=exports.REQUEST_BIND=exports.GET_DEVICE_NAME_WITH_REGISTER_FAILED=exports.GET_DEVICE_NAME_WITH_REGISTER=exports.GET_DEVICE_NAME=exports.UNBIND_RESPONSE=exports.UNBIND_REQUEST=exports.REGISTER_DEVICE_SUCCESS=exports.REGISTER_DEVICE_ERROR=exports.REGISTER_DEVICE_INFO_REPLY_INVALID=exports.WAIT_REGISTER_DEVICE_INFO_REPLY_TIMEOUT=exports.SEND_REGISTER_DEVICE_PAYLOAD=exports.REGISTER_DEVICE_INFO_REPLY=exports.WRITE_USER_CHECK_CANCEL=exports.WRITE_USER_CHECK_TIMEOUT=exports.GET_USER_CHECK_TIMEOUT_SUCCESS=exports.GET_USER_CHECK_TIMEOUT_ERROR=exports.GET_USER_CHECK_TIMEOUT_TIMEOUT=exports.USER_CHECK_TIMEOUT_CALLBACK=exports.USER_CHECK_TIMEOUT=exports.GET_USER_CHECK_REJECT=exports.GET_USER_CHECK_APPROVE=exports.WAIT_USER_CHECK_TIMEOUT=exports.NULL_WIFI_MODE=exports.STA_WIFI_MODE=exports.GET_DEV_LOG_INFO=exports.SET_WIFI_TOKEN_RESULT=exports.SET_WIFI_CONNECT_RESULT=exports.SET_WIFI_INFO_RESULT=exports.SET_WIFI_MODE_RESULT=exports.GET_DEV_LOG=exports.SET_WIFI_TOKEN=exports.SET_WIFI_CONNECT=exports.SET_WIFI_INFO=exports.SET_WIFI_MODE=exports.GET_DEVICE_INFO=exports.VERIFY_SIGN_FAIL=exports.MTU_MODULE_CALLBACK=exports.WRITE_MTU_RESULT=exports.CONTROL_ACTION_SUCCESS=exports.TIME_SYNC=exports.UNBIND_AUTH=exports.UNBIND_RESULT_AUTH_FAIL=exports.UNBIND_RESULT_AUTH_SUCCESS=exports.CONNECT_RESULT_WRITE_FAIL=exports.CONNECT_RESULT_WRITE_SUCCESS=exports.ANDROID_SET_MTU=exports.DEVICE_INFO=exports.CONNECT_AUTH=exports.BIND_AUTH_FAIL=exports.BIND_AUTH_SUCCESS=exports.BIND_AUTH_DETAIL=exports.SET_MTU_BEFORE_CONNECT=exports.BIND_AUTH=exports.UPDATE_REPLY_INVALID=exports.UPDATE_DATA_CHECK_REPLY=exports.UPDATE_DATA_REPLY=exports.UPDATE_REPLY=exports.ACTION_REPLY=exports.EVENT_REPLY=exports.EVENT_REPORT=exports.GET_STATUS=exports.CONTROL_REPLY=exports.REPORT_RESULT=exports.CONTROL_ACTION=exports.CONTROL_DEVICE=exports.PROPERTY_REPORT=exports.LL_OTA_WRITE_ID=exports.DEVICE_EVENT_WRITE_ID=exports.DEVICE_DATA_WRITE_ID=exports.DEVICE_INFO_WRITE_ID=exports.DEVICE_STATE_MAP=exports.DEVICE_HAS_CONNECTED=exports.DEVICE_WAITING_BIND=exports.DEVICE_NOT_BIND=exports.DEVICE_HAS_BINDED=exports.REPORT_EVENT_TYPE=void 0;var tslib_1=require("tslib");exports.REPORT_EVENT_TYPE="standard-ble",exports.DEVICE_HAS_BINDED="DEVICE_HAS_BINDED",exports.DEVICE_NOT_BIND="DEVICE_NOT_BIND",exports.DEVICE_WAITING_BIND="DEVICE_WAITING_BIND",exports.DEVICE_HAS_CONNECTED="DEVICE_HAS_CONNECTED",exports.DEVICE_STATE_MAP={0:exports.DEVICE_NOT_BIND,1:exports.DEVICE_WAITING_BIND,2:exports.DEVICE_HAS_BINDED,3:exports.DEVICE_HAS_CONNECTED},exports.DEVICE_INFO_WRITE_ID="0000FFE1-65D0-4E20-B56A-E493541BA4E2",exports.DEVICE_DATA_WRITE_ID="0000FFE2-65D0-4E20-B56A-E493541BA4E2",exports.DEVICE_EVENT_WRITE_ID="0000FFE3-65D0-4E20-B56A-E493541BA4E2",exports.LL_OTA_WRITE_ID="0000FFE4-65D0-4E20-B56A-E493541BA4E2",exports.PROPERTY_REPORT="PROPERTY_REPORT",exports.CONTROL_DEVICE="CONTROL_DEVICE",exports.CONTROL_ACTION="CONTROL_ACTION",exports.REPORT_RESULT="REPORT_RESULT",exports.CONTROL_REPLY="CONTROL_REPLY",exports.GET_STATUS="GET_STATUS",exports.EVENT_REPORT="EVENT_REPORT",exports.EVENT_REPLY="EVENT_REPLY",exports.ACTION_REPLY="ACTION_REPLY",exports.UPDATE_REPLY="UPDATE_REPLY",exports.UPDATE_DATA_REPLY="UPDATE_DATA_REPLY",exports.UPDATE_DATA_CHECK_REPLY="UPDATE_DATA_CHECK_REPLY",exports.UPDATE_REPLY_INVALID="UPDATE_REPLY_INVALID",exports.BIND_AUTH="BIND_AUTH",exports.SET_MTU_BEFORE_CONNECT="SET_MTU_BEFORE_CONNECT",exports.BIND_AUTH_DETAIL="BIND_AUTH_DETAIL",exports.BIND_AUTH_SUCCESS="BIND_AUTH_SUCCESS",exports.BIND_AUTH_FAIL="BIND_AUTH_FAIL",exports.CONNECT_AUTH="CONNECT_AUTH",exports.DEVICE_INFO="DEVICE_INFO",exports.ANDROID_SET_MTU="ANDROID_SET_MTU",exports.CONNECT_RESULT_WRITE_SUCCESS="CONNECT_RESULT_WRITE_SUCCESS",exports.CONNECT_RESULT_WRITE_FAIL="CONNECT_RESULT_WRITE_FAIL",exports.UNBIND_RESULT_AUTH_SUCCESS="UNBIND_RESULT_AUTH_SUCCESS",exports.UNBIND_RESULT_AUTH_FAIL="UNBIND_RESULT_AUTH_FAIL",exports.UNBIND_AUTH="UNBIND_AUTH",exports.TIME_SYNC="TIME_SYNC",exports.CONTROL_ACTION_SUCCESS="CONTROL_ACTION_SUCCESS",exports.WRITE_MTU_RESULT="WRITE_MTU_RESULT",exports.MTU_MODULE_CALLBACK="MTU_MODULE_CALLBACK",exports.VERIFY_SIGN_FAIL="VERIFY_SIGN_FAIL",exports.GET_DEVICE_INFO="GET_DEVICE_INFO",exports.SET_WIFI_MODE="SET_WIFI_MODE",exports.SET_WIFI_INFO="SET_WIFI_INFO",exports.SET_WIFI_CONNECT="SET_WIFI_CONNECT",exports.SET_WIFI_TOKEN="SET_WIFI_TOKEN",exports.GET_DEV_LOG="GET_DEV_LOG",exports.SET_WIFI_MODE_RESULT="SET_WIFI_MODE_RESULT",exports.SET_WIFI_INFO_RESULT="SET_WIFI_INFO_RESULT",exports.SET_WIFI_CONNECT_RESULT="SET_WIFI_CONNECT_RESULT",exports.SET_WIFI_TOKEN_RESULT="SET_WIFI_TOKEN_RESULT",exports.GET_DEV_LOG_INFO="GET_DEV_LOG_INFO",exports.STA_WIFI_MODE="STA_WIFI_MODE",exports.NULL_WIFI_MODE="NULL_WIFI_MODE",exports.WAIT_USER_CHECK_TIMEOUT="WAIT_USER_CHECK_TIMEOUT",exports.GET_USER_CHECK_APPROVE="GET_USER_CHECK_APPROVE",exports.GET_USER_CHECK_REJECT="GET_USER_CHECK_REJECT",exports.USER_CHECK_TIMEOUT="USER_CHECK_TIMEOUT",exports.USER_CHECK_TIMEOUT_CALLBACK="USER_CHECK_TIMEOUT_CALLBACK",exports.GET_USER_CHECK_TIMEOUT_TIMEOUT="GET_USER_CHECK_TIMEOUT_TIMEOUT",exports.GET_USER_CHECK_TIMEOUT_ERROR="GET_USER_CHECK_TIMEOUT_ERROR",exports.GET_USER_CHECK_TIMEOUT_SUCCESS="GET_USER_CHECK_TIMEOUT_SUCCESS",exports.WRITE_USER_CHECK_TIMEOUT=1,exports.WRITE_USER_CHECK_CANCEL=0,exports.REGISTER_DEVICE_INFO_REPLY="REGISTER_DEVICE_INFO_REPLY",exports.SEND_REGISTER_DEVICE_PAYLOAD="SEND_REGISTER_DEVICE_PAYLOAD",exports.WAIT_REGISTER_DEVICE_INFO_REPLY_TIMEOUT="WAIT_REGISTER_DEVICE_INFO_REPLY_TIMEOUT",exports.REGISTER_DEVICE_INFO_REPLY_INVALID="REGISTER_DEVICE_INFO_REPLY_INVALID",exports.REGISTER_DEVICE_ERROR="REGISTER_DEVICE_ERROR",exports.REGISTER_DEVICE_SUCCESS="REGISTER_DEVICE_SUCCESS",exports.UNBIND_REQUEST="UnbindRequest",exports.UNBIND_RESPONSE="UnbindResponse",exports.GET_DEVICE_NAME="GET_DEVICE_NAME",exports.GET_DEVICE_NAME_WITH_REGISTER="GET_DEVICE_NAME_WITH_REGISTER",exports.GET_DEVICE_NAME_WITH_REGISTER_FAILED="GET_DEVICE_NAME_WITH_REGISTER_FAILED",exports.REQUEST_BIND="REQUEST_BIND",exports.REQUEST_BIND_FAILED="REQUEST_BIND_FAILED",exports.REQUEST_BIND_SUCCESS="REQUEST_BIND_SUCCESS",exports.NOTIFY_BIND="NOTIFY_BIND",exports.RESPONSE_BIND="RESPONSE_BIND",exports.CONNECT_REQUEST="CONNECT_REQUEST",exports.CONNECT_ACK="CONNECT_ACK",exports.NOTIFY_BIND_FAILED="NOTIFY_BIND_FAILED",exports.NOTIFY_BIND_SUCCESS="NOTIFY_BIND_SUCCESS",exports.INDICATE_TYPE_MAP={0:exports.PROPERTY_REPORT,1:exports.CONTROL_REPLY,2:exports.GET_STATUS,3:exports.EVENT_REPORT,4:exports.ACTION_REPLY,5:exports.BIND_AUTH,6:exports.CONNECT_AUTH,7:exports.UNBIND_AUTH,8:exports.DEVICE_INFO,9:exports.UPDATE_REPLY,10:exports.UPDATE_DATA_REPLY,11:exports.UPDATE_DATA_CHECK_REPLY,12:exports.MTU_MODULE_CALLBACK,13:exports.USER_CHECK_TIMEOUT_CALLBACK,14:exports.REGISTER_DEVICE_INFO_REPLY,17:exports.GET_DEVICE_NAME,18:exports.REQUEST_BIND,19:exports.NOTIFY_BIND,20:exports.RESPONSE_BIND,21:exports.CONNECT_REQUEST,22:exports.CONNECT_ACK,23:exports.UNBIND_REQUEST,24:exports.UNBIND_RESPONSE,25:exports.GET_DEVICE_NAME_WITH_REGISTER,224:exports.SET_WIFI_MODE_RESULT,225:exports.SET_WIFI_INFO_RESULT,226:exports.SET_WIFI_CONNECT_RESULT,227:exports.SET_WIFI_TOKEN_RESULT,228:exports.GET_DEV_LOG_INFO},exports.BleErrorMsg={1:"BLE_QIOT_SIGN_ERR",2:"BLE_QIOT_BIND_ERR",3:"BLE_QIOT_CONN_ERR",4:"BLE_QIOT_UNBIND_ERR"},exports.DEVICE_INFO_WRITE_PREFIX=((_a={})[exports.TIME_SYNC]="00",_a[exports.CONNECT_AUTH]="01",_a[exports.BIND_AUTH_SUCCESS]="02",_a[exports.BIND_AUTH_FAIL]="03",_a[exports.UNBIND_AUTH]="04",_a[exports.CONNECT_RESULT_WRITE_SUCCESS]="05",_a[exports.CONNECT_RESULT_WRITE_FAIL]="06",_a[exports.UNBIND_RESULT_AUTH_SUCCESS]="07",_a[exports.UNBIND_RESULT_AUTH_FAIL]="08",_a[exports.WRITE_MTU_RESULT]="09",_a[exports.USER_CHECK_TIMEOUT]="0A",_a[exports.SEND_REGISTER_DEVICE_PAYLOAD]="0B",_a[exports.GET_DEVICE_INFO]="E0",_a[exports.SET_WIFI_MODE]="E1",_a[exports.SET_WIFI_INFO]="E2",_a[exports.SET_WIFI_CONNECT]="E3",_a[exports.SET_WIFI_TOKEN]="E4",_a[exports.GET_DEV_LOG]="E5",_a[exports.GET_DEVICE_NAME]="11",_a[exports.REQUEST_BIND]="12",_a[exports.NOTIFY_BIND]="13",_a[exports.RESPONSE_BIND]="14",_a[exports.CONNECT_REQUEST]="15",_a[exports.CONNECT_ACK]="16",_a[exports.UNBIND_REQUEST]="17",_a[exports.UNBIND_RESPONSE]="18",_a[exports.GET_DEVICE_NAME_WITH_REGISTER]="19",_a),exports.DEVICE_DATA_WRITE_HEAD=((_b={})[exports.CONTROL_DEVICE]="000",_b[exports.REPORT_RESULT]="001",_b[exports.GET_STATUS]="001",_b[exports.EVENT_REPLY]="011",_b[exports.CONTROL_ACTION]="100",_b),exports.DEVICE_DATA_WRITE_SUFFIX=((_c={})[exports.CONTROL_DEVICE]="00000",_c[exports.REPORT_RESULT]="00000",_c[exports.GET_STATUS]="00010",_c),exports.WIFI_MODE_MAP=((_d={})[exports.NULL_WIFI_MODE]=0,_d[exports.STA_WIFI_MODE]=1,_d),exports.WIFI_LOG_TYPE_MAP={ERROR_LOG:0,NORMAL_LOG:1},exports.ACTION_DESC=((_e={})[exports.CONTROL_DEVICE]="远程控制",_e[exports.REPORT_RESULT]="属性上报结果通知",_e[exports.GET_STATUS]="写入设备最新状态",_e[exports.EVENT_REPLY]="处理设备端事件上报",_e[exports.CONTROL_ACTION]="对设备进行行为调用",_e[exports.CONTROL_ACTION_SUCCESS]="对设备进行行为调用成功",_e[exports.TIME_SYNC]="时间同步",_e[exports.CONNECT_AUTH]="连接鉴权",_e[exports.BIND_AUTH]="绑定鉴权",_e[exports.BIND_AUTH_DETAIL]="绑定鉴权详情",_e[exports.BIND_AUTH_SUCCESS]="绑定鉴权成功",_e[exports.UNBIND_AUTH]="解绑鉴权",_e[exports.CONNECT_RESULT_WRITE_SUCCESS]="连接小程序端鉴权成功",_e[exports.UNBIND_RESULT_AUTH_SUCCESS]="解绑小程序端鉴权成功",_e),exports.BLE_IOT_DATA_TYPE_BOOL="bool",exports.BLE_IOT_DATA_TYPE_INT="int",exports.BLE_IOT_DATA_TYPE_STRING="string",exports.BLE_IOT_DATA_TYPE_FLOAT="float",exports.BLE_IOT_DATA_TYPE_ENUM="enum",exports.BLE_IOT_DATA_TYPE_TIME="timestamp",exports.BLE_IOT_DATA_TYPE_STRUCT="struct",exports.BLE_IOT_DATA_TYPE_ARRAY="array",exports.OTA_UPDATE_REQUEST="OTA_UPDATE_REQUEST",exports.OTA_UPDATE_DATA="OTA_UPDATE_DATA",exports.OTA_UPDATE_DATA_END="OTA_UPDATE_DATA_END",exports.LL_OTA_WRITE_PREFIX=((_f={})[exports.OTA_UPDATE_REQUEST]="00",_f[exports.OTA_UPDATE_DATA]="01",_f[exports.OTA_UPDATE_DATA_END]="02",_f),exports.USER_NEED_LOGIN="USER_NEED_LOGIN",exports.WAIT_CONNECT_REPLY_TIMEOUT="WAIT_CONNECT_REPLY_TIMEOUT",exports.CONNECT_REPLY_INVALID="CONNECT_REPLY_INVALID",exports.WAIT_UNBIND_REPLY_TIMEOUT="WAIT_UNBIND_REPLY_TIMEOUT",exports.WAIT_CONTROL_DEVICE_REPLY_TIMEOUT="WAIT_CONTROL_DEVICE_REPLY_TIMEOUT",exports.WAIT_CONTROL_ACTION_REPLY_TIMEOUT="WAIT_CONTROL_ACTION_REPLY_TIMEOUT",exports.UNBIND_REPLY_INVALID="UNBIND_REPLY_INVALID",exports.CONTROL_REPLY_INVALID="CONTROL_REPLY_INVALID",exports.CONTROL_ACTION_ERROR="CONTROL_ACTION_ERROR",exports.CONNECT_DEVICE_ERROR="CONNECT_DEVICE_ERROR",exports.CANNOT_FIND_DEVICE="CANNOT_FIND_DEVICE",exports.DEVICE_NAME_IS_EMPTY="DEVICE_NAME_IS_EMPTY",exports.PSK_GET_ERROR="PSK_GET_ERROR",exports.CONNECT_SIGN_AUTH_ERROR="CONNECT_SIGN_AUTH_ERROR",exports.CONNECT_SIGN_VERIFY_ERROR="CONNECT_SIGN_VERIFY_ERROR",exports.UNBIND_REPLY_ERROR="UNBIND_REPLY_ERROR",exports.CONTROL_REPLY_CODE_INVALID="CONTROL_REPLY_CODE_INVALID",exports.CONTROL_DEVICE_REPLY_ERROR="CONTROL_DEVICE_REPLY_ERROR",exports.REPORT_RESULT_ERROR="REPORT_RESULT_ERROR",exports.GET_STATUS_ERROR="GET_STATUS_ERROR",exports.EVENT_REPLY_ERROR="EVENT_REPLY_ERROR",exports.BLE_WRITE_ERROR="BLE_WRITE_ERROR",exports.WAIT_GET_DEVICE_INFO_TIMEOUT="WAIT_GET_DEVICE_INFO_TIMEOUT",exports.DEVICE_INFO_INVALID="DEVICE_INFO_INVALID",exports.WAIT_GET_UPDATE_INFO_TIMEOUT="WAIT_GET_UPDATE_INFO_TIMEOUT",exports.WAIT_MODULE_UPDATE_TIMEOUT="WAIT_MODULE_UPDATE_TIMEOUT",exports.SET_WIFI_MODE_RESULT_INVALID="SET_WIFI_MODE_RESULT_INVALID",exports.SET_WIFI_MODE_RESULT_TIMEOUT="SET_WIFI_MODE_RESULT_TIMEOUT",exports.SET_WIFI_INFO_RESULT_INVALID="SET_WIFI_INFO_INVALID",exports.SET_WIFI_INFO_RESULT_TIMEOUT="SET_WIFI_INFO_TIMEOUT",exports.SET_WIFI_CONNECT_RESULT_INVALID="SET_WIFI_CONNECT_RESULT_INVALID",exports.SET_WIFI_CONNECT_RESULT_TIMEOUT="SET_WIFI_CONNECT_RESULT_TIMEOUT",exports.SET_WIFI_TOKEN_RESULT_INVALID="SET_WIFI_TOKEN_RESULT_INVALID",exports.SET_WIFI_TOKEN_RESULT_TIMEOUT="SET_WIFI_TOKEN_RESULT_TIMEOUT",exports.GET_DEV_LOG_INFO_INVALID="GET_DEV_LOG_INFO_INVALID",exports.GET_DEV_LOG_INFO_TIMEOUT="GET_DEV_LOG_INFO_TIMEOUT",exports.OTA_UPDATE_STEPS={GET_OTA_UPDATE_INFO:"GET_OTA_UPDATE_INFO",GET_OTA_UPDATE_INFO_SUCCESS:"GET_OTA_UPDATE_INFO_SUCCESS",DOWNLOADING_OTA_FILE:"DOWNLOADING_OTA_FILE",DOWNLOADING_OTA_FILE_DETAIL:"DOWNLOADING_OTA_FILE_DETAIL",DOWNLOAD_OTA_FILE_SUCCESS:"DOWNLOAD_OTA_FILE_SUCCESS",REQUEST_MODULE_UPDATE_START:"REQUEST_MODULE_UPDATE",REQUEST_MODULE_UPDATE_SUCCESS:"REQUEST_MODULE_UPDATE_SUCCESS",MODULE_UPDATE_CHECK_FILE_SUCCESS:"MODULE_UPDATE_CHECK_FILE_SUCCESS",SEND_UPDATE_DATA_START:"SEND_UPDATE_DATA_START",SEND_UPDATE_DATA_DETAIL:"SEND_UPDATE_DATA_DETAIL",SEND_UPDATE_DATA_SUCCESS:"SEND_UPDATE_DATA_SUCCESS",WAITING_MODULE_UPDATE:"WAITING_MODULE_UPDATE",MODULE_UPDATE_SUCCESS:"MODULE_UPDATE_SUCCESS"},exports.OTA_UPDATE_STEPS_MESSAGE=((_g={})[exports.OTA_UPDATE_STEPS.GET_OTA_UPDATE_INFO]="获取固件版本信息",_g[exports.OTA_UPDATE_STEPS.GET_OTA_UPDATE_INFO_SUCCESS]="获取固件版本信息成功",_g[exports.OTA_UPDATE_STEPS.DOWNLOADING_OTA_FILE]="正在下载OTA文件",_g[exports.OTA_UPDATE_STEPS.DOWNLOADING_OTA_FILE_DETAIL]="正在下载OTA文件详情",_g[exports.OTA_UPDATE_STEPS.DOWNLOAD_OTA_FILE_SUCCESS]="下载OTA文件成功",_g[exports.OTA_UPDATE_STEPS.REQUEST_MODULE_UPDATE_START]="开始检查设备端固件升级支持情况",_g[exports.OTA_UPDATE_STEPS.REQUEST_MODULE_UPDATE_SUCCESS]="检查设备端固件升级支持情况成功",_g[exports.OTA_UPDATE_STEPS.SEND_UPDATE_DATA_START]="开始发送固件升级文件",_g[exports.OTA_UPDATE_STEPS.SEND_UPDATE_DATA_DETAIL]="固件升级文件详情",_g[exports.OTA_UPDATE_STEPS.SEND_UPDATE_DATA_SUCCESS]="固件升级文件发送成功",_g[exports.OTA_UPDATE_STEPS.WAITING_MODULE_UPDATE]="开始烧录固件升级文件",_g[exports.OTA_UPDATE_STEPS.MODULE_UPDATE_SUCCESS]="设备端固件升级成功",_g),exports.OTA_UPDATE_ERRORS=((_h={GET_OTA_INFO_FAIL:"获取OTA升级信息失败",MODULE_VERSION_IS_UPDATED:"设备端固件已经是最新版",MODULE_DONNOT_SUPPORT:"设备端固件不支持",USER_CANCEL_OTA_UPDATE:"用户取消固件升级",MODULE_DONNOT_ALLOW:"设备端固件不允许,可能是当前状态不允许",MODULE_UPDATE_CHECK_FILE_FAIL:"升级文件校验失败",GET_FILE_CRC_ERROR:"获取文件和crc错误"})[exports.WAIT_GET_UPDATE_INFO_TIMEOUT]="获取设备端分片包回包超时",_h[exports.WAIT_MODULE_UPDATE_TIMEOUT]="等待设备端升级超时",_h.UPDATE_DATA_REPLAY_TIMEOUT="发送固件升级文件超时",_h.MODULE_UPDATE_FAIL="设备端固件升级失败",_h.MODULE_UPDATE_CONNECT_TIMEOUT="设备端固件升级连接设备超时",_h.BLE_CONNECTION_BREAK="蓝牙连接断开",_h),exports.BLE_COMBO_ERRORS=((_j={})[exports.SET_WIFI_MODE_RESULT_INVALID]="设置WiFi模式返回格式错误",_j[exports.SET_WIFI_MODE_RESULT_TIMEOUT]="设置WiFi模式返回超时,请稍后再试",_j[exports.SET_WIFI_INFO_RESULT_INVALID]="WiFi信息传输返回格式错误",_j[exports.SET_WIFI_INFO_RESULT_TIMEOUT]="WiFi信息传输返回超时,请稍后再试",_j[exports.SET_WIFI_CONNECT_RESULT_INVALID]="WiFi连接失败",_j[exports.SET_WIFI_CONNECT_RESULT_TIMEOUT]="获取WiFi连接状态超时",_j[exports.SET_WIFI_TOKEN_RESULT_INVALID]="发送配网token结果非法",_j[exports.SET_WIFI_TOKEN_RESULT_TIMEOUT]="发送配网token结果超时,请稍后再试",_j[exports.GET_DEV_LOG_INFO_INVALID]="获取配网日志格式错误",_j[exports.GET_DEV_LOG_INFO_TIMEOUT]="获取配网日志超时,请稍后再试",_j),exports.MODULE_UPDATE_REPLAY_CODE_MAP={0:"设备电量不足",1:"版本号错误"},exports.MODULE_UPDATE_DATA_REPLAY_CODE_MAP={1:exports.OTA_UPDATE_STEPS.MODULE_UPDATE_CHECK_FILE_SUCCESS,0:"MODULE_UPDATE_CHECK_FILE_FAIL"},exports.MODULE_UPDATE_REPLAY_DATA_CODE_MAP={0:"CRC错误",1:"文件读取失败",2:"文件错误"},exports.WAIT_MODULE_UPDATE_CONNECT_TIMES=5,exports.WAIT_MODULE_UPDATE_CONNECT_TIME_GAP=2e3,exports.UPDATE_WRITE_ERROR_TIMES_PER_CIRCLE=5,exports.MAX_WRITE_DATA_WAIT_GAP=200,exports.ERROR_MESSAGES=tslib_1.__assign(tslib_1.__assign(((_k={})[exports.USER_NEED_LOGIN]="用户未登录,不能连接蓝牙",_k[exports.CONTROL_ACTION_ERROR]="行为调用失败",_k[exports.CONNECT_DEVICE_ERROR]="连接设备失败",_k[exports.CANNOT_FIND_DEVICE]="无法找到设备",_k[exports.USER_NEED_LOGIN]="请重新登录",_k[exports.WAIT_CONNECT_REPLY_TIMEOUT]="等待连接回复超时",_k[exports.CONNECT_REPLY_INVALID]="等待连接回复非法",_k[exports.GET_USER_CHECK_REJECT]="用户端确认拒绝",_k[exports.WAIT_USER_CHECK_TIMEOUT]="等待用户确认超时",_k[exports.GET_USER_CHECK_TIMEOUT_TIMEOUT]="获取设备端用户确认超时时间超时,使用默认超时时间",_k[exports.GET_USER_CHECK_TIMEOUT_ERROR]="获取设备端用户确认超时时间失败,使用默认超时时间",_k[exports.DEVICE_NAME_IS_EMPTY]="设备名称非法",_k[exports.PSK_GET_ERROR]="获取local psk失败",_k[exports.CONNECT_SIGN_AUTH_ERROR]="获取连接认证失败",_k[exports.WAIT_UNBIND_REPLY_TIMEOUT]="获取解绑回复超时",_k[exports.UNBIND_REPLY_INVALID]="解绑回复非法",_k[exports.UNBIND_REPLY_ERROR]="解绑回复失败",_k[exports.WAIT_CONTROL_DEVICE_REPLY_TIMEOUT]="等待控制设备回复超时",_k[exports.CONTROL_DEVICE_REPLY_ERROR]="控制设备失败",_k[exports.CONTROL_REPLY_INVALID]="等待控制设备回复非法",_k[exports.BIND_AUTH_FAIL]="绑定鉴权失败",_k[exports.UNBIND_RESULT_AUTH_FAIL]="解绑小程序端鉴权失败",_k[exports.CONNECT_RESULT_WRITE_FAIL]="连接小程序端鉴权失败",_k[exports.CONTROL_REPLY_CODE_INVALID]="设备端控制回包code非0",_k[exports.REPORT_RESULT_ERROR]="上报设备最新状态失败",_k[exports.GET_STATUS_ERROR]="获取最新状态失败",_k[exports.EVENT_REPLY_ERROR]="EVENT_REPLY_ERROR",_k[exports.BLE_WRITE_ERROR]="设备写入失败",_k[exports.WAIT_GET_DEVICE_INFO_TIMEOUT]="获取设备信息超时",_k[exports.DEVICE_INFO_INVALID]="设备版本和MTU信息非法",_k.ID_TEMPLATE_IS_NOT_EXIT="设备端传的id在物模型里面不存在",_k.TYPE_IN_MODULE_IS_WRONG="设备端的type和后台的不一致",_k),exports.OTA_UPDATE_ERRORS),((_l={})[exports.REGISTER_DEVICE_ERROR]="从云端动态注册失败",_l[exports.REGISTER_DEVICE_INFO_REPLY_INVALID]="设备端回复的云端注册信息非法",_l[exports.WAIT_REGISTER_DEVICE_INFO_REPLY_TIMEOUT]="等待设备端回复的云端注册信息超时",_l));
//# sourceMappingURL=constants.js.map

@@ -18,5 +18,4 @@ import { StandardDeviceAdapter } from '../base';

characteristicsMap: {};
_actions: Pick<import("qcloud-iotexplorer-bluetooth-adapter").BlueToothActions, "registerDevice" | "bindDevice" | "reportDeviceData">;
_actions: Pick<import("qcloud-iotexplorer-bluetooth-adapter/lib/base/types").BlueToothActions, "registerDevice" | "bindDevice" | "reportDeviceData">;
_bluetoothApi: any;
communicationMode: import("qcloud-iotexplorer-bluetooth-adapter").CommunicationMode;
_getNotifyId({ serviceId }?: {

@@ -86,4 +85,2 @@ serviceId?: string;

destroy(): void;
advertFilter(advert: any): any;
onScanAdvert(params: any): void;
_cleanupMap: {};

@@ -90,0 +87,0 @@ _normalizeError(error: any): any;

import { TlvDataType } from 'qcloud-iotexplorer-common-libs';
/**
* @description 对一个hex串前一半和后一半进行异或操作
* @param hexStr {string}
*/
export declare const xorHalf: (hexStr: string) => string;
export declare const log: any;
export declare function hex2Base64(hex: string): string;
export declare function base64toHEX(base64: string): any;
export declare const getUserIdentify: (userId: string) => string;

@@ -6,3 +14,7 @@ export declare const wrapEventHandler: (cb: any, dataType?: TlvDataType) => ({ data }: {

}) => void;
export declare const encrypt: (str: any, psk: any) => any;
export declare const encrypt: (str: any, psk: any) => string;
export declare function decrypt(encrypted: string, secret: string): string;
export declare const formatArrayToReportString: (data: any) => any;
export declare function randomBytes(length: number): number[];
export declare function randomBytesHex(length: number): string;
export declare function getMtuEncrypted(mtu: number): number;

@@ -1,2 +0,2 @@

"use strict";var _this=this;Object.defineProperty(exports,"__esModule",{value:!0}),exports.formatArrayToReportString=exports.encrypt=exports.wrapEventHandler=exports.getUserIdentify=void 0;var qcloud_iotexplorer_common_libs_1=require("qcloud-iotexplorer-common-libs");exports.getUserIdentify=function(r){return qcloud_iotexplorer_common_libs_1.get8ByteFromStr(qcloud_iotexplorer_common_libs_1.md5(r))},exports.wrapEventHandler=function(r,o){void 0===o&&(o="default");var e=qcloud_iotexplorer_common_libs_1.getTlvDataParser(o);return function(o){var t=o.data;console.log("event triggered",t);var n=e(t);console.log("----result",n,_this),null!==n&&r(n)}},exports.encrypt=qcloud_iotexplorer_common_libs_1.hmacSHA1,exports.formatArrayToReportString=function(r){return r.join(",")};
"use strict";var _this=this;Object.defineProperty(exports,"__esModule",{value:!0}),exports.getMtuEncrypted=exports.randomBytesHex=exports.randomBytes=exports.formatArrayToReportString=exports.decrypt=exports.encrypt=exports.wrapEventHandler=exports.getUserIdentify=exports.base64toHEX=exports.hex2Base64=exports.log=exports.xorHalf=void 0;var tslib_1=require("tslib"),qcloud_iotexplorer_appdev_sdk_1=require("qcloud-iotexplorer-appdev-sdk"),qcloud_iotexplorer_common_libs_1=require("qcloud-iotexplorer-common-libs"),mp_debug_1=tslib_1.__importDefault(require("mp-debug")),_a=qcloud_iotexplorer_appdev_sdk_1.AppDevSdk.utils,noop=_a.noop,byteUtil=_a.byteUtil,CryptoJS=_a.CryptoJS;function hex2Base64(e){return CryptoJS.enc.Hex.parse(e).toString(CryptoJS.enc.Base64)}function base64toHEX(e){return CryptoJS.enc.Base64.parse(e).toString(CryptoJS.enc.Hex)}function decrypt(e,r){var t=qcloud_iotexplorer_appdev_sdk_1.AppDevSdk.utils.CryptoJS;return t.AES.decrypt(t.enc.Base64.stringify(t.enc.Hex.parse(e)),t.enc.Hex.parse(r),{mode:t.mode.ECB,padding:t.pad.Pkcs7}).toString(t.enc.Hex)}function randomBytes(e){for(var r=[],t=0;t<e;t++)r.push(Math.floor(256*Math.random()));return r}function randomBytesHex(e){var r=randomBytes(e);return byteUtil.byteArrayToHex(r)}function getMtuEncrypted(e){return Math.max(16*Math.floor(e/16)-1,15)}exports.xorHalf=function(e){if(e.length%2!=0)throw new Error("invalid hexStr");var r=e.length/2,t=byteUtil.hexString2hexArray(e.slice(0,r)),o=byteUtil.hexString2hexArray(e.slice(r));return t.map((function(e,r){return byteUtil.byteToHex(parseInt(e,16)^parseInt(o[r],16))})).join("")},exports.log=mp_debug_1.default("adapter:llsync"),exports.hex2Base64=hex2Base64,exports.base64toHEX=base64toHEX,exports.getUserIdentify=function(e){return qcloud_iotexplorer_common_libs_1.get8ByteFromStr(qcloud_iotexplorer_common_libs_1.md5(e))},exports.wrapEventHandler=function(e,r){void 0===r&&(r="default");var t=qcloud_iotexplorer_common_libs_1.getTlvDataParser(r);return function(r){var o=r.data;console.log("event triggered",o);var n=t(o);console.log("----result",n,_this),null!==n&&e(n)}},exports.encrypt=qcloud_iotexplorer_common_libs_1.hmacSHA1,exports.decrypt=decrypt,exports.formatArrayToReportString=function(e){return e.join(",")},exports.randomBytes=randomBytes,exports.randomBytesHex=randomBytesHex,exports.getMtuEncrypted=getMtuEncrypted;
//# sourceMappingURL=util.js.map

@@ -13,5 +13,4 @@ export declare const StandardDeviceAdapter4Mp: (new (...args: any[]) => {

characteristicsMap: {};
_actions: Pick<import("qcloud-iotexplorer-bluetooth-adapter").BlueToothActions, "registerDevice" | "bindDevice" | "reportDeviceData">;
_actions: Pick<import("qcloud-iotexplorer-bluetooth-adapter/lib/base/types").BlueToothActions, "registerDevice" | "bindDevice" | "reportDeviceData">;
_bluetoothApi: any;
communicationMode: import("qcloud-iotexplorer-bluetooth-adapter").CommunicationMode;
_getNotifyId({ serviceId }?: {

@@ -85,4 +84,2 @@ serviceId?: string;

destroy(): void;
advertFilter(advert: any): any;
onScanAdvert(params: any): void;
_cleanupMap: {};

@@ -89,0 +86,0 @@ _normalizeError(error: any): any;

{
"name": "qcloud-iotexplorer-bluetooth-adapter-llsync",
"version": "1.7.4",
"version": "1.7.5-beta",
"description": "",

@@ -17,2 +17,3 @@ "main": "lib/index.js",

"dependencies": {
"mp-debug": "^0.1.1",
"event-emitter-for-miniprogram": "^0.6.4",

@@ -30,3 +31,3 @@ "iotexplorer-ui-dev-config": "^1.6.4",

},
"gitHead": "1c09d413c86f6e2089017267260533452fc8cf2e"
"gitHead": "682bf8b265220b7203d0edb078513a4a869d9c95"
}

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc