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 2.3.24 to 2.3.25

31

lib/base/LLSync/LLSyncDeviceAdapter.d.ts
import { ProductUIDevConfig } from 'iotexplorer-ui-dev-config';
import { AppDevSdk, Reporter } from 'qcloud-iotexplorer-appdev-sdk';
import { AppDevSdk } from 'qcloud-iotexplorer-appdev-sdk';
import { DeviceFilterFunction } from 'qcloud-iotexplorer-bluetooth-adapter';
import type { FlowLogger } from 'qcloud-iotexplorer-common-libs';
import * as constants from '../../constants';

@@ -23,3 +24,2 @@ import { Action } from '../../libs';

otaProcessor: LLSyncOtaProcessor;
reporter: Reporter;
_initPromise: any;

@@ -35,5 +35,3 @@ productConfig: ProductUIDevConfig;

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

@@ -70,5 +68,5 @@ _enableLLEventHandle: boolean;

}): Promise<string>;
bindDeviceEncrypted({ secureBindInfo, }: {
isDynamicRegister?: boolean;
bindDeviceEncrypted({ secureBindInfo, bindLogger, }: {
secureBindInfo?: constants.LLSyncSecureBindInfo;
bindLogger: FlowLogger;
}): Promise<{

@@ -81,3 +79,3 @@ sign: string;

}>;
requestBindEncrypted(sign: string, timestamp: string): Promise<{
requestBindEncrypted(r1SignBase64: string, r1Timestamp: string, logger: FlowLogger): Promise<{
ack: number;

@@ -88,11 +86,11 @@ timestamp: string;

}>;
verifyDeviceSign(R1: string, R2: string, sign: string): Promise<string>;
verifyDeviceSign(r1Content: string, r2Content: string, r2Sign: string): Promise<string>;
/** 加密协议设备绑定请求(同时支持动态注册与非动态注册) */
getDeviceNameForEncryptedBind(): Promise<{
getDeviceNameForEncryptedBind(logger: FlowLogger): Promise<{
deviceName: string;
nonce: string;
}>;
encrypt(content: string, secretKey: any, config?: EncryptConfig): string;
encrypt(content: string[], secretKey: any, config?: EncryptConfig): string[];
notifyBindDevice(secretKey: string): Promise<{
encrypt(content: string | ArrayBuffer, secretKey: any, config?: EncryptConfig): string;
encrypt(content: Array<string | ArrayBuffer>, secretKey: any, config?: EncryptConfig): string[];
notifyBindDevice(secretKey: string, logger: FlowLogger): Promise<{
ack: number;

@@ -105,5 +103,5 @@ sign: string;

}): Promise<never>;
unbindDeviceEncrypted(): Promise<boolean>;
unbindDeviceEncrypted(unbindLogger: FlowLogger): Promise<boolean>;
controlDevice({ deviceData }: {
deviceData: any;
deviceData: Record<string, unknown>;
}): Promise<never>;

@@ -116,4 +114,5 @@ controlAction({ actionData }: {

}): Promise<never>;
authConnectionEncrypted({ deviceName, }: {
deviceName: any;
authConnectionEncrypted({ deviceName, authLogger, }: {
deviceName: string;
authLogger: FlowLogger;
}): Promise<{

@@ -120,0 +119,0 @@ version: number;

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

"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.StandardDeviceAdapter=exports.LLSyncDeviceAdapter=void 0;var tslib_1=require("tslib"),qcloud_iotexplorer_appdev_sdk_1=require("qcloud-iotexplorer-appdev-sdk"),constants=tslib_1.__importStar(require("../../constants")),constants_1=require("../../constants"),utils=tslib_1.__importStar(require("../../libs")),libs_1=require("../../libs"),LLSyncDeviceAdapterBase_1=require("../LLSyncDeviceAdapterBase"),LLSyncOtaProcessor_1=require("./LLSyncOtaProcessor"),LLSyncProtocol_1=require("./LLSyncProtocol"),Models_1=require("./Models"),_a=qcloud_iotexplorer_appdev_sdk_1.AppDevSdk.utils,arrayBufferToHexStringArray=_a.arrayBufferToHexStringArray,envDetect=_a.envDetect,delay=_a.delay,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 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,l=tslib_1.__assign({},s);(null==l?void 0:l.code)&&constants.ERROR_MESSAGES[String(l.code)]&&(l.msg=constants.ERROR_MESSAGES[String(l.code)]),t.options.appDevSdk.reporter.error(constants_1.REPORT_EVENT_TYPE,{message:constants.ERROR_MESSAGES[e]?e+"("+constants.ERROR_MESSAGES[e]+":"+(l&&(l.message||l.errMsg||l.msg||l.code))+")":"",timeCost:i.timeCost||0,action:e,error:l,data:tslib_1.__assign(tslib_1.__assign({deviceId:c,bleDeviceId:a,isConnected:d},i),l)})}};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){var t=e.data;return tslib_1.__awaiter(this,void 0,void 0,(function(){var e,r,n,s,i;return tslib_1.__generator(this,(function(o){switch(o.label){case 0:if(!this._enableLLEventHandle)return[2];try{console.log("onPropertyReport check this",this),e=utils.convertPropertiesTlvToJsObject(t.slice(2),this.dataTemplate),this.reporter.info(constants.REPORT_RESULT,{data:utils.formatArrayToReportString(t),jsObj:e}),this.emit("propertyReport",{deviceData:e})}catch(e){return this.reporter.error(constants.REPORT_RESULT_ERROR,{error:e}),this.protocol.reportPropertyReportResult(constants.PropertyReportReplyResult.ParseDataFail),[2]}o.label=1;case 1:return o.trys.push([1,3,,4]),r=e["_sys _timestamp"],[4,this.models.reportBlueToothDeviceData({ProductId:this.productId,DeviceName:this.deviceName,Data:e,DataTimeStamp:r?convertToMs(r):Date.now()})];case 2:if(n=o.sent().Data){if((s=JSON.parse(n)).code)throw{code:constants.PROPERTY_REPORT_API_FAIL,reportReplyCode:s.code};this.protocol.reportPropertyReportResult(constants.PropertyReportReplyResult.Success)}return[3,4];case 3:return i=o.sent(),this.reporter.error(constants.REPORT_RESULT_ERROR,{error:i}),this.protocol.reportPropertyReportResult(constants.PropertyReportReplyResult.Fail),[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){var t=e.data;return tslib_1.__awaiter(this,void 0,void 0,(function(){var e,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),e=utils.getStrLength(t),r=utils.convertEventTlvToJsObject(t.slice(2,2+e),this.dataTemplate),n=r.eventId,s=r.params,i=r.eventIndex,o={DeviceId:this.explorerDeviceId,EventId:n,Params:JSON.stringify(s)},this.emit("eventReport",{eventIndex:i,params: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"),t.length-2>e?(console.log("have more event data to report",t.length,e),[4,this.onEventReport({data:t.slice(e+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,n=e.secureBindInfo;return tslib_1.__awaiter(this,void 0,void 0,(function(){var e,s,i,o,c,a,d,l,u,_,p,v,h,E,I,D,f,y,R,b,g;return tslib_1.__generator(this,(function(m){switch(m.label){case 0:e=this.extendInfo,s=e.isDynamicRegister,i=e.isEncrypted,libs_1.log("bindDevice isEncrypted:",{isEncrypted:i,isDynamicRegister:s}),this.isEncrypted=i,this.authorized=!1,m.label=1;case 1:return m.trys.push([1,6,,7]),i?[4,this.bindDeviceEncrypted({isDynamicRegister:s,secureBindInfo:n})]:[3,3];case 2:return b=m.sent(),o=b.sign,c=b.timestamp,a=b.nonce,d=b.deviceName,l=b.secretKey,[3,5];case 3:return[4,this.protocol.requestBindDevice({needUserCheck:this.needUserCheck,isDynamicRegister:s})];case 4:g=m.sent(),o=g.sign,c=g.timestamp,a=g.nonce,d=g.deviceName,m.label=5;case 5:return[3,7];case 6:return u=m.sent(),libs_1.log("get bind sign failed, isEncrypted:",i,u),!i&&this.protocol.reportBindError(u.code),[2,Promise.reject(this.normalizeError(u))];case 7:this.deviceName=d,_=!1,p=!1,m.label=8;case 8:return m.trys.push([8,10,,11]),[4,this.models.getDevice({DeviceId:this.explorerDeviceId})];case 9:return v=m.sent(),p="shared"!==v.OwnerType,[3,11];case 10:return"InvalidParameterValue.NoPermission"!==(null==(h=m.sent())?void 0:h.code)&&console.error("[LLSyncDeviceAdapter.bindDevice] checkDevice fail",h),[3,11];case 11:m.trys.push([11,20,,23]),this.reporter.info(constants.BIND_AUTH),E=Date.now(),m.label=12;case 12:return m.trys.push([12,14,,15]),I={Signature:o,DeviceTimestamp:c,DeviceId:this.explorerDeviceId,ConnId:""+a,FamilyId:t,RoomId:r,BindType:"bluetooth_sign",SignMethod:i?"hmacsha256":"hmacsha1"},this.reporter.info(constants.BIND_AUTH_DETAIL,I),[4,this.models.addDeviceBySigInFamily(I)];case 13:return m.sent(),[3,15];case 14:return"UnsupportedOperation.CannotBindSameFamily"!==(null==(D=m.sent())?void 0:D.code)?(i?this.protocol.reportBindEncryptedError(l):this.protocol.reportBindError(D.code),[2,Promise.reject(this.normalizeError(D))]):[3,15];case 15:return _=!0,i?[4,this.protocol.reportBindEncryptedSuccess(E,l)]:[3,17];case 16:return m.sent(),[3,19];case 17:return f=this,[4,this.protocol.reportBindSuccess(E)];case 18:f.localPsk=m.sent(),m.label=19;case 19:try{if(this.reporter.info(constants.BIND_AUTH_DETAIL,tslib_1.__assign({},this.extendInfo)),!this.extendInfo.macStr)return[2];y={productId:this.productId,deviceName:d,deviceInfo:{mac:this.extendInfo.macStr}},this.reporter.info(constants.BIND_AUTH_DETAIL,tslib_1.__assign({msg:"START_REPORT_DEVICE_INFO"},y)),this.models.reportDeviceInfo(y)}catch(e){}return[2,this.explorerDeviceId];case 20:return R=m.sent(),console.log(R),console.log("error in bindDevice",R),this.reporter.error(constants.BIND_AUTH_FAIL,{error:R,deviceAddedToFamily:_,userOwnDeviceBeforeBind:p}),!_||p?[3,22]:[4,this.models.deleteDeviceFromFamily({DeviceId:this.explorerDeviceId,FamilyId:t}).catch((function(e){console.error("[LLSyncDeviceAdapter.bindDevice] deleteDevice for failed-bind fail",e)}))];case 21:m.sent(),m.label=22;case 22:return[2,Promise.reject(this.normalizeError(R))];case 23:return[2]}}))}))},t.prototype.bindDeviceEncrypted=function(e){var t=e.secureBindInfo;return tslib_1.__awaiter(this,void 0,void 0,(function(){var e,r,n,s,i,o,c,a,d,l,u,_,p;return tslib_1.__generator(this,(function(v){switch(v.label){case 0:return v.trys.push([0,8,,9]),t?[4,this.protocol.checkSecureBindInfo(t)]:[3,2];case 1:v.sent(),v.label=2;case 2:return[4,this.getDeviceNameForEncryptedBind()];case 3:return e=v.sent(),r=e.deviceName,n=e.nonce,this.deviceName=r,[4,this.models.getDeviceSignAgitated({DeviceId:this.productId+"/"+r,Content:n})];case 4:return s=v.sent(),libs_1.log("get device sign response: ",s),i=s.AgitatedSignature,o=s.Timestamp,c=s.AgitatedContent,[4,this.requestBindEncrypted(i,o)];case 5:return a=v.sent(),d=a.deviceSign,l=a.R2,[4,this.verifyDeviceSign(c,l,d)];case 6:return u=v.sent(),libs_1.log("ks:",u),[4,this.notifyBindDevice(u)];case 7:return _=v.sent(),this.secretKey=u,libs_1.log("get notifyRes:",_),[2,{sign:_.sign,timestamp:Number(o),nonce:libs_1.hex2Base64(n),secretKey:u,deviceName:r}];case 8:return p=v.sent(),console.warn("bind device encrypted failed",p),[2,Promise.reject(p)];case 9: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.getDeviceNameForEncryptedBind=function(){return tslib_1.__awaiter(this,void 0,void 0,(function(){var e,t,r,n,s,i,o,c,a,d=this;return tslib_1.__generator(this,(function(l){switch(l.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),s=function(){var e=d.protocol._parseDataBeforeConnect(n,constants.GET_DEVICE_NAME);return d.writeAndWait4Response(e,[constants.GET_DEVICE_NAME,constants.DEV_REQUEST_ENCRYPTED_DYNREG,constants.CHECK_SECURE_BIND_INFO_REPLY],(function(e,t){return{payload:e,type:t.type}}),{timeout:LLSyncProtocol_1.LLSyncConfig.waitGetRegisterDeviceInfo,timeoutCode:constants.WAIT_GET_DEVICE_NAME_REPLY_TIMEOUT,writeId:constants.DEVICE_INFO_WRITE_ID})},i=function(e){var t=libs_1.getStrLength(e);if(1===parseInt(e.slice(2,3).join(""),16))throw{code:constants.GET_DEVICE_NAME_FAILED};var r=e.slice(3,19).join(""),n=libs_1.hex2str(e.slice(19));return d.reporter.info(constants.GET_DEVICE_NAME,{allLength:t,devNonce:r,deviceName:n}),{deviceName:n,nonce:r}},o=function(e){return tslib_1.__awaiter(d,void 0,void 0,(function(){var n,s,o,c,a,d;return tslib_1.__generator(this,(function(l){switch(l.label){case 0:if(1===(n=parseInt(e[2],16)))throw libs_1.log("get register data failed",{ack:n,data:e}),{code:constants.GET_DEVICE_NAME_FOR_DYNREG_FAILED};return s=parseInt(e.slice(3,4).join(""),16),o=libs_1.hex2str(e.slice(4,4+s)),c=libs_1.hex2str(e.slice(4+s)),this.reporter.info(constants.DEV_REQUEST_ENCRYPTED_DYNREG,{deviceName:o,appNonce:r,sign:c}),[4,this.models.dynamicRegisterDevice({deviceName:o,sign:c,productId:this.productId,timestamp:t,nonce:r})];case 1:return a=l.sent().payload,libs_1.log("dynamic register payload",e),[4,this.sendBleData([constants.DEVICE_INFO_WRITE_PREFIX[constants.DEV_RECEIVE_ENCRYPTED_DYNREG_RESULT],libs_1.str2hexStr(a)].join(""),constants.GET_DEVICE_NAME)];case 2:if(d=l.sent(),1===parseInt(d[2],16))throw this.reporter.error(constants.REGISTER_DEVICE_INFO_REPLY_INVALID,{ack:n,data:e}),{code:constants.REGISTER_DEVICE_INFO_REPLY_INVALID};return[2,i(d)]}}))}))},c=function(e){if(e.length<4)throw{code:constants.CHECK_SECURE_BIND_INFO_REPLY_INVALID};if(1!==parseInt(e[2],10))throw{code:constants.CHECK_SECURE_BIND_INFO_REPLY_INVALID};throw{code:constants.CHECK_SECURE_BIND_INFO_REQUIRED}},[4,s()];case 1:switch(a=l.sent(),a.type){case constants.GET_DEVICE_NAME:return[3,2];case constants.DEV_REQUEST_ENCRYPTED_DYNREG:return[3,3];case constants.CHECK_SECURE_BIND_INFO_REPLY:return[3,5]}return[3,6];case 2:return[2,i(a.payload)];case 3:return[4,o(a.payload)];case 4:return[2,l.sent()];case 5:return[2,c(a.payload)];case 6:return[2]}}))}))},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){var s={code:constants.NOTIFY_BIND_FAILED};throw n.reporter.error(constants.NOTIFY_BIND_FAILED,{ack:r,error:s,res:t}),s}var i=t.slice(3).join(""),o=utils.decrypt(i,e);return libs_1.log("bind decrypted sign:",o),n.reporter.info(constants.NOTIFY_BIND_SUCCESS,{ack:r,sign:o}),{ack:r,sign:o}}))];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(),this.emit("controlPropertySuccess",{deviceData:t}),[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}),[2,n];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,18,,19]),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,strict:!0})];case 1:return e=E.sent(),envDetect.isIOS&&this.extendInfo.moduleVersion>=2?[4,this.protocol.notifyAppOnIOSDevice()]:[3,4];case 2:return E.sent(),[4,delay(100)];case 3:E.sent(),E.label=4;case 4:if(r=void 0,n=void 0,s=void 0,i=void 0,o=Date.now(),!e)return[3,9];this.isEncrypted=!0,this.authorized=!1,this.secretKey=e,E.label=5;case 5:return E.trys.push([5,7,,8]),[4,this.authConnectionEncrypted({deviceName:t})];case 6:return v=E.sent(),r=v.version,n=v.mtu,s=v.needSetMtu,i=v.otaVersion,[3,8];case 7:return c=E.sent(),libs_1.log("auth connection encrypted faild",c),[2,Promise.reject(c)];case 8:return[3,13];case 9:return[4,this.getDevicePsk(t)];case 10:return a=E.sent(),this.localPsk=a,this.reporter.info(constants.CONNECT_AUTH,{localPsk:a}),[4,this.protocol.getDeviceAuthInfo()];case 11: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 12:h=E.sent(),r=h.version,n=h.mtu,s=h.needSetMtu,i=h.otaVersion,E.label=13;case 13:if(this.deviceName=t,this.bleVersion=r,this.mtu=Math.max(constants.MIN_ATT_MTU,n)-constants.ATT_MTU_TO_LLSYNC_MTU_DELTA,!s)return[3,17];E.label=14;case 14:return E.trys.push([14,16,,17]),[4,this.setMtu(n)];case 15:return E.sent(),this.writeMtuResult("success"),[3,17];case 16:return E.sent(),this.writeMtuResult("fail"),[3,17];case 17: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(),this.extendInfo.moduleVersion>=2&&this.protocol.notifyAppReady(),[3,19];case 18:return p=E.sent(),this.protocol.reportConnectError(),this.reporter.error(constants.CONNECT_RESULT_WRITE_FAIL,{error:p}),[2,Promise.reject(this.normalizeError(p))];case 19: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.getAdvertisingData=function(){var e,t;return tslib_1.__awaiter(this,void 0,void 0,(function(){var r;return tslib_1.__generator(this,(function(n){if(!(r=null===(e=this.extendInfo)||void 0===e?void 0:e.moduleVersion)||r<3)throw{code:"MODULE_VERSION_NOT_SUPPORT_GET_ADV_DATA",msg:"LLSync 版本 "+r+" 不支持 getAdvertisingData"};if((null===(t=this.extendInfo)||void 0===t?void 0:t.isEncrypted)&&this.authorized)throw{code:"GET_ADV_DATA_NOT_SUPPORTED_IN_CURRENT_STATE",msg:"LLSync 加密协议连接鉴权完成后暂不支持获取广播信息"};return[2,this.protocol.getAdvertisingData()]}))}))},t.prototype.sendHeartbeat=function(){var e;return tslib_1.__awaiter(this,void 0,void 0,(function(){var t;return tslib_1.__generator(this,(function(r){return!(t=null===(e=this.extendInfo)||void 0===e?void 0:e.moduleVersion)||t<3?(console.warn("LLSyncDeviceAdapter.sendHeartbeat noop: moduleVersion "+t+" not support heartbeat"),[2]):[2,this.protocol.sendHeartbeat()]}))}))},t.prototype.notifyLocalRssi=function(e){var t=e.rssi;return tslib_1.__awaiter(this,void 0,void 0,(function(){var e;return tslib_1.__generator(this,(function(r){return(e=Math.round(t))<-255&&(e=-255),e>0&&(e=0),[2,this.protocol.notifyLocalRssi({rssi:e})]}))}))},t.prototype.setEbikeDebugFlag=function(e){var t=e.interval;return tslib_1.__awaiter(this,void 0,void 0,(function(){return tslib_1.__generator(this,(function(e){return!Number.isSafeInteger(t)||t<0||t>50?[2,Promise.reject({code:"INVALID_EBIKE_DEBUG_INTERVAL"})]:[2,this.protocol.setEbikeDebugFlag({interval:t})]}))}))},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}),{timeout:LLSyncProtocol_1.LLSyncConfig.waitGetRegisterDeviceInfo,timeoutHandler:function(){return Promise.reject({code:"WAIT_"+t+"_REPLY_TIMEOUT",msg:"等待设备响应 "+t+" 超时"})},writeId:constants.DEVICE_INFO_WRITE_ID})]}))}))},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;libs_1.log("BLE_STATE =>",o.toString(2));var 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 y=function(){return 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 p&&D&&E===_?y():p||D?null:y()}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;
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.StandardDeviceAdapter=exports.LLSyncDeviceAdapter=void 0;var tslib_1=require("tslib"),qcloud_iotexplorer_appdev_sdk_1=require("qcloud-iotexplorer-appdev-sdk"),constants=tslib_1.__importStar(require("../../constants")),constants_1=require("../../constants"),utils=tslib_1.__importStar(require("../../libs")),libs_1=require("../../libs"),LLSyncDeviceAdapterBase_1=require("../LLSyncDeviceAdapterBase"),LLSyncOtaProcessor_1=require("./LLSyncOtaProcessor"),LLSyncProtocol_1=require("./LLSyncProtocol"),Models_1=require("./Models"),_a=qcloud_iotexplorer_appdev_sdk_1.AppDevSdk.utils,arrayBufferToHexStringArray=_a.arrayBufferToHexStringArray,envDetect=_a.envDetect,delay=_a.delay,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(n){var i=e.call(this,n)||this;i._enableWsEventHandle=!0,i._enableLLEventHandle=!0;var r=function(e){return function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];return tslib_1.__awaiter(i,void 0,void 0,(function(){return tslib_1.__generator(this,(function(n){switch(n.label){case 0:return[4,this.init()];case 1:return n.sent(),[2,e.apply(void 0,tslib_1.__spread(t))]}}))}))}};i.models=new Models_1.Models(t.options.appDevSdk),i.userIdentify=t.getUserIdentify(),i.on("disconnect",(function(){i.authorized=!1})),i.appDevSdk=t.options.appDevSdk,i.protocol=new LLSyncProtocol_1.LLSyncProtocol(i),i.otaProcessor=new LLSyncOtaProcessor_1.LLSyncOtaProcessor(i),Object.assign(i,{bindDevice:r(i.bindDevice.bind(i)),unbindDevice:r(i.unbindDevice.bind(i)),controlDevice:r(i.controlDevice.bind(i)),controlAction:r(i.controlAction.bind(i)),authenticateConnection:r(i.authenticateConnection.bind(i)),reconnectDevice:r(i.authenticateConnection.bind(i)),startOta:r(i.startOta.bind(i)),cancelOta:r(i.cancelOta.bind(i)),userCancelBindDevice:r(i.protocol.cancelUserCheck.bind(i.protocol,"cancel"))}),i.init();var s=function(e){var t=e.deviceId,n=e.deviceData;if(i._enableWsEventHandle&&i.ready&&t===i.explorerDeviceId){var r={};Object.keys(n).forEach((function(e){r[e]=n[e].Value})),i.controlDevice({deviceData:r})}},o=function(e){var t=e.deviceId,n=e.Payload;i._enableWsEventHandle&&i.ready&&t===i.explorerDeviceId&&i.controlAction({actionData:n})};return i.on("authorized",(function(){i.init(!0),i.appDevSdk.on(qcloud_iotexplorer_appdev_sdk_1.AppDevSdk.constants.EventTypes.WsControl,s),i.appDevSdk.on(qcloud_iotexplorer_appdev_sdk_1.AppDevSdk.constants.EventTypes.WsActionPush,o)})).on("disconnect",(function(){i.appDevSdk.off(qcloud_iotexplorer_appdev_sdk_1.AppDevSdk.constants.EventTypes.WsControl,s),i.appDevSdk.off(qcloud_iotexplorer_appdev_sdk_1.AppDevSdk.constants.EventTypes.WsActionPush,o)})),i}return tslib_1.__extends(t,e),t.getUserIdentify=function(){var e,n,i,r;return libs_1.getUserIdentify(null===(r=null===(i=null===(n=null===(e=t.options)||void 0===e?void 0:e.appDevSdk)||void 0===n?void 0:n.loginManager)||void 0===i?void 0:i.userInfo)||void 0===r?void 0:r.UserID)},t.injectOptions=function(e){e.appDevSdk.requestApi||console.error("[LLSyncDeviceAdapter.injectOptions] invalid appDevSdk",e.appDevSdk),t.options=e},Object.defineProperty(t.prototype,"ready",{get:function(){return this.isConnected&&this.authorized},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"needUserCheck",{get:function(){var e,t,n;try{return!!parseInt((null===(n=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===n?void 0:n.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(n){return tslib_1.__awaiter(this,void 0,void 0,(function(){var i,r=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(),n&&(this.productInfo=this.productConfig=this._initPromise=null),this._initPromise||(i=this.llsyncLogger.step("init","LLSync 加载产品 "+this.productId+" 信息",!0),this._initPromise=tslib_1.__awaiter(r,void 0,void 0,(function(){var e,t,n,r,s,o,c;return tslib_1.__generator(this,(function(a){switch(a.label){case 0:return a.trys.push([0,2,,3]),t=(e=this).productConfig,n=e.productInfo,[4,Promise.all([t?Promise.resolve(t):this.models.getProduct({ProductId:this.productId}),n?Promise.resolve(n):this.models.getProductConfig({ProductId:this.productId})])];case 1:return r=tslib_1.__read.apply(void 0,[a.sent(),2]),s=r[0],o=r[1],this.dataTemplate=libs_1.getProductDateTemplate(s),this.productInfo=s,this.productConfig=o,i.success("LLSync 加载产品 "+this.productId+"("+this.productInfo.Name+")信息成功"),[3,3];case 2:return c=a.sent(),i.fail(null,c),this._initPromise=null,[2,Promise.reject(c)];case 3:return[2]}}))}))),[2,this._initPromise]}}))}))},t.prototype.getDevicePsk=function(e){return tslib_1.__awaiter(this,void 0,void 0,(function(){var t,n,i,r,s;return tslib_1.__generator(this,(function(o){switch(o.label){case 0:return t={DeviceId:this.productId+"/"+(e||this.deviceName),DeviceKey:LLSyncProtocol_1.LLSyncConfig.BLE_PSK_DEVICE_KEY,strict:!0},[4,Promise.all([this.models.getDeviceConfig(tslib_1.__assign(tslib_1.__assign({},t),{isUserConfig:!0})),this.models.getDeviceConfig(t)])];case 1:return n=tslib_1.__read.apply(void 0,[o.sent(),2]),i=n[0],r=n[1],!i||r?[3,3]:[4,this.llsyncLogger.flow("migrateLocalPsk","迁移 localPsk 到 DeviceConfig").wrapWithoutRetValue(this.models.setDeviceConfig({DeviceId:t.DeviceId,DeviceKey:t.DeviceKey,DeviceValue:i}))];case 2:o.sent(),o.label=3;case 3:if(!(s=r||i))throw{code:constants.PSK_GET_ERROR};return[2,s]}}))}))},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){var t=e.data;return tslib_1.__awaiter(this,void 0,void 0,(function(){var e,n,i,r,s,o,c,a,d=this;return tslib_1.__generator(this,(function(l){switch(l.label){case 0:if(!this._enableLLEventHandle)return[2];n=this.llsyncLogger.flow("recvPropertyReport","处理设备属性上报"),i=function(e){n.step(0===e?"sendSuccResp":"sendFailResp","[发送] 属性上报"+(0===e?"成功":"失败")+"结果",{result:e}).wrapWithoutRetValue(d.protocol.reportPropertyReportResult(e)).catch((function(){}))},n.start("收到设备物模型属性上报, len="+(t.length-2));try{e=utils.convertPropertiesTlvToJsObject(t.slice(2),this.dataTemplate),n.info("parse","设备属性上报数据: "+Object.keys(e).join(", "),e),this.emit("propertyReport",{deviceData:e})}catch(e){return n.fail("解析设备上报的物模型属性失败",e,{payload:t.slice(2).join("")}),i(2),[2]}l.label=1;case 1:return l.trys.push([1,3,,4]),r=e["_sys _timestamp"],s=r?convertToMs(r):Date.now(),[4,n.step("cgiReportProperty","上报设备物模型属性到云端",{reportTimestamp:s}).wrap(this.models.reportBlueToothDeviceData({ProductId:this.productId,DeviceName:this.deviceName,Data:e,DataTimeStamp:s}))];case 2:if(!(o=l.sent().Data))throw{code:constants.PROPERTY_REPORT_API_FAIL};if((c=JSON.parse(o)).code)throw{code:constants.PROPERTY_REPORT_API_FAIL,reportReplyCode:c.code};return n.success(),i(0),[3,4];case 3:return a=l.sent(),n.fail("上报物模型属性到云端失败",a,{payload:t.slice(2).join("")}),i(1),[3,4];case 4:return[2]}}))}))},t.prototype.onGetStatus=function(){return tslib_1.__awaiter(this,void 0,void 0,(function(){var e,t,n,i,r,s,o,c;return tslib_1.__generator(this,(function(a){switch(a.label){case 0:if(!this._enableLLEventHandle)return[2];e=this.llsyncLogger.flow("recvGetStatusReq","[处理设备请求] get_status"),a.label=1;case 1:return a.trys.push([1,3,,4]),t={ProductId:this.productId,DeviceName:this.deviceName},[4,e.step("cgiGetDeviceData","查询云端物模型属性",!0).wrap(this.models.getDeviceData(t))];case 2:return n=a.sent(),i={},Object.keys(n).forEach((function(e){i[e]=n[e].Value})),r=utils.convertPropertiesChangeToTlv(i,this.dataTemplate),s=r.tlvData,o=r.tmpData,e.step("notifyGetStatusReply","[发送] get_status_reply [succ]",!0).wrapWithoutRetValue(this.protocol.reportGetStatusResult(0,s,o)).catch((function(){})),[3,4];case 3:return c=a.sent(),e.fail("处理 get_status 时发生异常",c),e.step("notifyGetStatusReply","[发送] get_status_reply [fail]",!0).wrapWithoutRetValue(this.protocol.reportGetStatusResult(1)).catch((function(){})),[2,Promise.reject(this.normalizeError(c))];case 4:return[2]}}))}))},t.prototype.onEventReport=function(e){var t=e.data;return tslib_1.__awaiter(this,void 0,void 0,(function(){var e,n,i,r,s,o,c,a,d=this;return tslib_1.__generator(this,(function(l){switch(l.label){case 0:if(!this._enableLLEventHandle)return[2];e=this.llsyncLogger.flow("recvEventReport","处理设备事件上报"),n=t.length>=3?parseInt(t[2],16):-1,s=function(t){-1===n||isNaN(n)||e.step(0===t?"sendSuccResp":"sendFailResp","[发送] 事件上报"+(0===t?"成功":"失败")+"结果",{result:t}).wrapWithoutRetValue(d.protocol.reportEventReportResult(t,n)).catch((function(){}))};try{e.start("接收到设备事件上报, eventIndex="+n),a=utils.convertEventTlvToJsObject(t.slice(2),this.dataTemplate),i=a.eventId,r=a.params,n=a.eventIndex,e.info("parse","设备事件 "+i+" 上报数据",{eventId:i,params:r,eventIndex:n})}catch(t){return s(2),e.fail(null,t),[2,Promise.reject(this.normalizeError(t))]}l.label=1;case 1:return l.trys.push([1,3,,4]),o={DeviceId:this.explorerDeviceId,EventId:i,Params:JSON.stringify(r)},this.emit("eventReport",{eventIndex:n,params:r}),[4,this.models.reportDeviceEvent(o)];case 2:return l.sent(),s(0),e.success(),[3,4];case 3:return c=l.sent(),s(1),e.fail(null,c),[2,Promise.reject(this.normalizeError(c))];case 4:return[2]}}))}))},t.prototype.bindDevice=function(e){var t,n=e.familyId,i=e.roomId,r=e.secureBindInfo;return tslib_1.__awaiter(this,void 0,void 0,(function(){var e,s,o,c,a,d,l,u,p,v,_,h,f,y,E,I,D,m,g,R,b,S,L;return tslib_1.__generator(this,(function(N){switch(N.label){case 0:e=this.needUserCheck,s=this.extendInfo.isEncrypted,(o=this.llsyncLogger.flow("bind","绑定 LLSync 蓝牙设备")).context.deviceName=void 0,o.start(["绑定 LLSync 蓝牙设备","产品 ID="+this.productId,"BLEDeviceId="+this.deviceId,s?"[加密协议]":null,r?"[有一机一密信息]":null,e?"[需要用户确认]":null],{familyId:n,roomId:i,isEncrypted:s,secureBindInfo:r,needUserCheck:e}),this.isEncrypted=s,this.authorized=!1,N.label=1;case 1:return N.trys.push([1,6,,7]),s?[4,this.bindDeviceEncrypted({secureBindInfo:r,bindLogger:o})]:[3,3];case 2:return S=N.sent(),c=S.sign,a=S.timestamp,d=S.nonce,l=S.deviceName,u=S.secretKey,[3,5];case 3:return[4,this.protocol.requestBindDevice({needUserCheck:e,bindLogger:o})];case 4:L=N.sent(),c=L.sign,a=L.timestamp,d=L.nonce,l=L.deviceName,N.label=5;case 5:return[3,7];case 6:return p=N.sent(),o.fail(null,p),!s&&this.protocol.reportBindError(p.code),[2,Promise.reject(this.normalizeError(p))];case 7:this.deviceName=l,o.context.deviceName=l,o.debug("explorerDeviceId","获取到待绑定设备的 DeviceName 为 "+this.deviceName),v=!1,_=!1,h=o.step("cgiGetDevice","检查绑定前用户对该设备的权限",!0),N.label=8;case 8:return N.trys.push([8,10,,11]),[4,this.models.getDevice({DeviceId:this.explorerDeviceId})];case 9:return f=N.sent(),o.info("withPermissionBeforeBind","绑定前用户对设备有 "+(null==f?void 0:f.OwnerType)+" 权限",{ownerType:null!==(t=null==f?void 0:f.OwnerType)&&void 0!==t?t:null}),h.success(),_="shared"!==(null==f?void 0:f.OwnerType),[3,11];case 10:return"InvalidParameterValue.NoPermission"!==(null==(y=N.sent())?void 0:y.code)?h.fail(null,y):(o.info("noPermissionBeforeBind","绑定前用户对设备无权限"),h.success()),[3,11];case 11:N.trys.push([11,20,,23]),E={Signature:c,DeviceTimestamp:a,DeviceId:this.explorerDeviceId,ConnId:""+d,FamilyId:n,RoomId:i,BindType:"bluetooth_sign",SignMethod:s?"hmacsha256":"hmacsha1"},(I=o.step("cgiBindDeviceBySig","绑定设备到家庭")).start("绑定设备 "+this.explorerDeviceId+" 到家庭 "+n+" 开始",E),N.label=12;case 12:return N.trys.push([12,14,,15]),[4,this.models.addDeviceBySigInFamily(E)];case 13:return N.sent(),I.success(),[3,15];case 14:return"UnsupportedOperation.CannotBindSameFamily"!==(null==(D=N.sent())?void 0:D.code)?(I.fail(null,D),s?this.protocol.reportBindEncryptedError(u,o):this.protocol.reportBindError(D.code),[2,Promise.reject(this.normalizeError(D))]):(I.info("bindSameFamily","重复绑定设备到同一个家庭",D),I.success(),[3,15]);case 15:return v=!0,s?[4,this.protocol.reportBindEncryptedSuccess(u,o)]:[3,17];case 16:return N.sent(),[3,19];case 17:return m=this,[4,this.protocol.reportBindSuccess(o)];case 18:m.localPsk=N.sent(),N.label=19;case 19:return this.extendInfo.macStr?(g={productId:this.productId,deviceName:l,deviceInfo:{mac:this.extendInfo.macStr}},o.step("cgiReportDeviceInfo","上报设备信息",{mac:this.extendInfo.macStr}).wrapWithoutRetValue(this.models.reportDeviceInfo(g)).catch((function(){}))):o.info("skipReportDeviceInfo","设备信息缺失,跳过设备信息上报",{extendInfo:tslib_1.__assign({},this.extendInfo)}),o.success(),[2,this.explorerDeviceId];case 20:return R=N.sent(),o.fail(null,R,{deviceAddedToFamily:v,userOwnDeviceBeforeBind:_}),!v||_?[3,22]:(b={DeviceId:this.explorerDeviceId,FamilyId:n},[4,o.step("cgiDeleteDevice","回滚设备绑定关系",b).wrapWithoutRetValue(this.models.deleteDeviceFromFamily(b)).catch((function(){}))]);case 21:N.sent(),N.label=22;case 22:return[2,Promise.reject(this.normalizeError(R))];case 23:return[2]}}))}))},t.prototype.bindDeviceEncrypted=function(e){var t=e.secureBindInfo,n=e.bindLogger;return tslib_1.__awaiter(this,void 0,void 0,(function(){var e,i,r,s,o,c,a,d,l,u,p,v,_,h;return tslib_1.__generator(this,(function(f){switch(f.label){case 0:return f.trys.push([0,8,,9]),t?[4,n.step("checkSecureBindInfo","一机一密验证",t).wrap(this.protocol.checkSecureBindInfo(t))]:[3,2];case 1:f.sent(),f.label=2;case 2:return[4,this.getDeviceNameForEncryptedBind(n)];case 3:return e=f.sent(),i=e.deviceName,r=e.nonce,this.deviceName=i,n.context.deviceName=i,s={DeviceId:this.productId+"/"+i,Content:r},[4,n.step("cgiR1Sign","请求云端计算 R1 签名",s).wrap(this.models.getDeviceSignAgitated(s))];case 4:return o=f.sent(),c=o.AgitatedSignature,a=o.Timestamp,d=o.AgitatedContent,[4,this.requestBindEncrypted(c,a,n)];case 5:return l=f.sent(),u=l.deviceSign,p=l.R2,[4,n.step("cgiGetLLSyncSecretEncryptKey","请求云端校验 R2 签名并生成 SecretEncryptKey",!0).wrap(this.verifyDeviceSign(d,p,u))];case 6:return v=f.sent(),[4,this.notifyBindDevice(v,n)];case 7:return _=f.sent(),this.secretKey=v,[2,{sign:_.sign,timestamp:Number(a),nonce:libs_1.hex2Base64(r),secretKey:v,deviceName:i}];case 8:return h=f.sent(),n.fail(null,h),[2,Promise.reject(h)];case 9:return[2]}}))}))},t.prototype.requestBindEncrypted=function(e,t,n){return tslib_1.__awaiter(this,void 0,void 0,(function(){var i,r,s,o,c,a,d;return tslib_1.__generator(this,(function(l){switch(l.label){case 0:return i=constants.DEVICE_INFO_WRITE_PREFIX,r=constants.REQUEST_BIND,s=Number(t).toString(16),o=libs_1.base64toHEX(e),c=libs_1.randomBytesHex(16),n.info("sendSessionRequestBind","[发送] 下发绑定请求",{r2Nonce:c,r1Timestamp:t,r1Sign:o}),a=i[r],d=""+a+c+s+o,[4,this.sendBleData(d,r).then((function(e){var t=parseInt(e.slice(2,3).join(""),16);if(1===t){var i={code:constants.REQUEST_BIND_FAILED};throw n.error("recvSessionRequestBindResp","[收到设备回复] 绑定请求回复: 失败",i),i}var r=e.slice(3,19).join("").toLowerCase(),s=parseInt(e.slice(19,23).join(""),16).toString(),o=e.slice(23).join("").toLowerCase(),c="/".charCodeAt(0).toString(16),a=""+r+c+libs_1.str2hexStr(s)+c;return n.info("recvSessionRequestBindResp","[收到设备回复] 绑定请求回复: 成功",{r2Nonce:r,r2Timestamp:s,r2Sign:o,r2Content:a}),{ack:t,timestamp:s,R2:a,deviceSign:o}}))];case 1:return[2,l.sent()]}}))}))},t.prototype.verifyDeviceSign=function(e,t,n){return tslib_1.__awaiter(this,void 0,void 0,(function(){return tslib_1.__generator(this,(function(i){switch(i.label){case 0:return[4,this.models.getLLSyncSecretEncryptKey({DeviceId:this.productId+"/"+this.deviceName,AppNonce:e,DeviceNonce:t,DeviceNonceSign:n})];case 1:return[2,i.sent()]}}))}))},t.prototype.getDeviceNameForEncryptedBind=function(e){return tslib_1.__awaiter(this,void 0,void 0,(function(){var t,n,i,r,s,o,c,a,d,l=this;return tslib_1.__generator(this,(function(u){switch(u.label){case 0:return t=constants.DEVICE_INFO_WRITE_PREFIX[constants.GET_DEVICE_NAME],n=Math.floor(Date.now()/1e3),i=parseInt(utils.gen4BytesIntHex(),16),r=""+t+i.toString(16)+n.toString(16),s=function(){e.info("sendSessionDevName","[发送] 获取设备名称请求",{timestamp:n,appNonce:i});var t=l.protocol._parseDataBeforeConnect(r,constants.GET_DEVICE_NAME);return l.writeAndWait4Response(t,[constants.GET_DEVICE_NAME,constants.DEV_REQUEST_ENCRYPTED_DYNREG,constants.CHECK_SECURE_BIND_INFO_REPLY],(function(e,t){return{payload:e,type:t.type}}),{timeout:LLSyncProtocol_1.LLSyncConfig.waitGetRegisterDeviceInfo,timeoutCode:constants.WAIT_GET_DEVICE_NAME_REPLY_TIMEOUT,writeId:constants.DEVICE_INFO_WRITE_ID})},o=function(t){var n=parseInt(t.slice(2,3).join(""),16);if(1===n){var i={code:constants.GET_DEVICE_NAME_FAILED};throw e.error("recvSessionDeviceNameResp","[收到设备回复] 获取设备名称: 失败",i,{ack:n,payload:t}),i}var r=t.slice(3,19).join(""),s=libs_1.hex2str(t.slice(19));return e.info("recvSessionDeviceNameResp","[收到设备回复] 获取设备名称: 成功",{deviceName:s,r1Nonce:r}),{deviceName:s,nonce:r}},c=function(t){return tslib_1.__awaiter(l,void 0,void 0,(function(){var r,s,c,a,d,l,u;return tslib_1.__generator(this,(function(p){switch(p.label){case 0:if(1===(r=parseInt(t[2],16)))throw u={code:constants.GET_DEVICE_NAME_FOR_DYNREG_FAILED},e.error("recvDeviceNameDynRegResp","[收到设备回复] 请求动态注册: 失败",u,{payload:t,ack:r}),u;return s=parseInt(t.slice(3,4).join(""),16),c=libs_1.hex2str(t.slice(4,4+s)),a=libs_1.hex2str(t.slice(4+s)),e.info("recvSessionDynRegReq","[收到设备回复] 请求动态注册",{deviceNameLength:s,deviceName:c,sign:a,deviceDynRegReq:t}),[4,e.step("cgiDynamicRegister","请求云端动态注册",!0).wrap(this.models.dynamicRegisterDevice({deviceName:c,sign:a,productId:this.productId,timestamp:n,nonce:i}))];case 1:return d=p.sent().payload,e.info("sendSessionDynRegPayload","[发送] 动态注册结果密文"),[4,this.sendBleData([constants.DEVICE_INFO_WRITE_PREFIX[constants.DEV_RECEIVE_ENCRYPTED_DYNREG_RESULT],libs_1.str2hexStr(d)].join(""),constants.GET_DEVICE_NAME)];case 2:if(l=p.sent(),1===parseInt(l[2],16))throw u={code:constants.REGISTER_DEVICE_INFO_REPLY_INVALID},e.error("recvSessionDynRegResult","[收到设备回复] 动态注册结果: 失败",u,{ack:r}),u;return e.info("recvSessionDynRegResult","[收到设备回复] 动态注册结果: 成功"),[2,o(l)]}}))}))},a=function(t){if(t.length<4){var n={code:constants.CHECK_SECURE_BIND_INFO_REPLY_INVALID};throw e.error("recvSecureBindResp","[收到设备回复] 一机一密验证的响应格式有误",n,{payload:t}),n}var i=parseInt(t[2],10),r=parseInt(t[3],10);if(1!==i){var s={code:constants.CHECK_SECURE_BIND_INFO_REPLY_INVALID};throw e.error("recvSecureBindResp","[收到设备回复] 一机一密验证的 ack != 1",s,{payload:t,ack:i}),s}var o={code:constants.CHECK_SECURE_BIND_INFO_REQUIRED,deviceErrCode:r};throw e.error("recvSecureBindResp","[收到设备回复] 未完成一机一密验证",o),o},[4,s()];case 1:switch(d=u.sent(),d.type){case constants.GET_DEVICE_NAME:return[3,2];case constants.DEV_REQUEST_ENCRYPTED_DYNREG:return[3,3];case constants.CHECK_SECURE_BIND_INFO_REPLY:return[3,5]}return[3,6];case 2:return[2,o(d.payload)];case 3:return[4,c(d.payload)];case 4:return[2,u.sent()];case 5:return[2,a(d.payload)];case 6:return[2]}}))}))},t.prototype.encrypt=function(e,t,n){void 0===n&&(n={});var i=this.appDevSdk.utils.CryptoJS,r=function(e){e instanceof ArrayBuffer?e=i.lib.WordArray.create(e):"hex"===n.contentType&&(e=i.enc.Hex.parse(e));var r=i.AES.encrypt(e,i.enc.Hex.parse(t),{mode:i.mode.ECB,padding:i.pad.Pkcs7});return libs_1.base64toHEX(r.toString())};return Array.isArray(e)?e.map(r):r(e)},t.prototype.notifyBindDevice=function(e,t){return tslib_1.__awaiter(this,void 0,void 0,(function(){var n,i;return tslib_1.__generator(this,(function(r){switch(r.label){case 0:return t.info("sendSessionInformBind","[发送] 下发绑定结果"),n=constants.DEVICE_INFO_WRITE_PREFIX[constants.NOTIFY_BIND],"BindRequest",i=this.encrypt("BindRequest",e),[4,this.sendBleData(""+n+i,constants.NOTIFY_BIND).then((function(n){var i=parseInt(n.slice(2,3).join(""),16);if(1===i){var r={code:constants.NOTIFY_BIND_FAILED};throw t.error("recvSessionInformBindResp","[收到设备回复] 下发绑定结果: 失败",r,{payload:n}),r}var s=n.slice(3).join(""),o=utils.decrypt(s,e);return t.info("recvSessionInformBindResp","[收到设备回复] 下发绑定结果: 成功",{ack:i,sign:o}),{ack:i,sign:o}}))];case 1:return[2,r.sent()]}}))}))},t.prototype.unbindDevice=function(e){var t=e.familyId,n=e.deviceName;return tslib_1.__awaiter(this,void 0,void 0,(function(){var e,i,r,s,o,c,a;return tslib_1.__generator(this,(function(d){switch(d.label){case 0:(e=this.llsyncLogger.flow("unbind","LLSync 解绑设备")).start([e.defaultMessage+" "+this.explorerDeviceId,this.isEncrypted?"[加密协议]":null],{isEncrypted:this.isEncrypted}),d.label=1;case 1:return d.trys.push([1,9,,10]),this.isEncrypted?[4,this.unbindDeviceEncrypted(e)]:[3,3];case 2:return d.sent(),[3,6];case 3:if(!n)throw{code:constants.DEVICE_NAME_IS_EMPTY};return[4,e.step("cgiGetLocalPsk","获取 localPsk",!0).wrap(this.getDevicePsk(n))];case 4:return i=d.sent(),[4,this.protocol.getUnbindAuthSign(e)];case 5:if(r=d.sent().sign,s=utils.encrypt(constants.UNBIND_RESPONSE,i),r!==s)throw o={code:constants.UNBIND_REPLY_ERROR},e.error("invalidUnbindSign","设备回复的解绑签名校验未通过",o,{localPsk:i,actualSign:r,expectedSign:s}),o;this.localPsk=i,this.deviceName=n,d.label=6;case 6:return c={FamilyId:t,DeviceId:this.explorerDeviceId},[4,e.step("cgiDeleteDevice","从家庭中解绑设备",c).wrapWithoutRetValue(this.models.deleteDeviceFromFamily(c))];case 7:return d.sent(),[4,e.step(this.isEncrypted?"notifySessionUnbindSucc":"notifyUnbindSucc","[发送] 下发解绑成功",!0).wrapWithoutRetValue(this.protocol.reportUnbindResult("success"))];case 8:return d.sent(),e.success(),this.stopListenLLEvents(),this.authorized=!1,this.disconnectDevice(),[3,10];case 9:return a=d.sent(),e.step("notifyUnbindFail","[发送] 下发解绑失败",!0).wrapWithoutRetValue(this.protocol.reportUnbindResult("fail")).catch((function(){})),e.fail(null,a),[2,Promise.reject(this.normalizeError(a))];case 10:return[2]}}))}))},t.prototype.unbindDeviceEncrypted=function(e){return tslib_1.__awaiter(this,void 0,void 0,(function(){var t,n,i=this;return tslib_1.__generator(this,(function(r){switch(r.label){case 0:return t=constants.DEVICE_INFO_WRITE_PREFIX[constants.UNBIND_REQUEST],"UnbindRequest",n=this.encrypt("UnbindRequest",this.sessionKey),e.info("sendSessionRequestUnbind","[发送] 下发解绑请求",{payload:n}),[4,this.sendBleData(""+t+n,constants.UNBIND_REQUEST).then((function(t){if(1===parseInt(t[2],16)){var n={code:constants.UNBIND_REPLY_INVALID};throw e.error("recvSessionRequestUnbindResp","[收到设备回复] 下发解绑请求: 失败",n),n}var r=t.slice(3).join(""),s=utils.decrypt(r,i.sessionKey),o=e.step("validateRequestUnbindResp","验证解绑请求响应");if(o.start(null,{rawPayload:r,decryptedPayload:s}),"UnbindResponse"===libs_1.hex2str(s))return o.success("request_unbind payload 有效"),!0;throw o.fail("request_unbind payload 不正确"),{code:constants.UNBIND_REPLY_ERROR}}))];case 1:return[2,r.sent()]}}))}))},t.prototype.controlDevice=function(e){var t=e.deviceData;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:if(!this.authorized)throw{code:constants.NOT_AUTHORIZED};if(!t||"object"!=typeof t)throw{code:"MissingParameter",msg:"controlDevice 未传入 deviceData 参数或 deviceData 参数不为 object"};(e=this.llsyncLogger.flow("controlProperty","下发物模型属性控制")).start(e.defaultMessage+" "+Object.keys(t).join(", "),t),i.label=1;case 1:return i.trys.push([1,4,,5]),[4,e.step("sendControlProperty","写入物模型属性到设备",!0).wrap(this.protocol.controlDeviceProperty(t))];case 2:return i.sent(),this.emit("controlPropertySuccess",{deviceData:t}),[4,e.step("cgiReportProperty","将变化的属性值上报到云端",!0).wrap(this.models.reportBlueToothDeviceData({ProductId:this.productId,DeviceName:this.deviceName,Data:t,DataTimeStamp:Date.now()}))];case 3:return i.sent(),e.success(),[3,5];case 4:return n=i.sent(),e.fail(null,n),[2,Promise.reject(this.normalizeError(n))];case 5:return[2]}}))}))},t.prototype.controlAction=function(e){var t=e.actionData;return tslib_1.__awaiter(this,void 0,void 0,(function(){var e,n,i,r,s,o,c;return tslib_1.__generator(this,(function(a){switch(a.label){case 0:if(!this.authorized)throw{code:constants.NOT_AUTHORIZED};if(!t||"object"!=typeof t)throw{code:"MissingParameter",msg:"controlAction 未传入 actionData 参数或 actionData 参数不为 object"};(e=this.llsyncLogger.flow("callAction","下发物模型行为调用")).start(e.defaultMessage+" "+(null==t?void 0:t.actionId),t),a.label=1;case 1:return a.trys.push([1,4,,5]),[4,e.step("sendCallAction","向设备下发行为调用",!0).wrap(this.protocol.controlDeviceAction(t))];case 2:return n=a.sent().output,i=utils.convertActionOutputTlvToJsObject(n,this.dataTemplate),r=i.outputParams,s=i.actionIndex,o=i.actionId,e.info("parse","设备行为 "+o+" 调用响应",{outputParams:r,actionIndex:s,actionId:o}),[4,e.step("cgiPublishActionOutput","将行为调用结果上报到云端",{deviceName:this.deviceName,productId:this.productId,actionId:o,clientToken:t.clientToken}).wrap(this.models.publishDeviceActionMessage({deviceName:this.deviceName,productId:this.productId,actionId:o,clientToken:t.clientToken,output:r}))];case 3:return a.sent(),e.success(),[2,r];case 4:return c=a.sent(),e.fail(null,c),[2,Promise.reject(this.normalizeError(c))];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,n,i,r,s,o,c,a,d,l,u,p,v,_,h,f,y;return tslib_1.__generator(this,(function(E){switch(E.label){case 0:(e=this.llsyncLogger.flow("auth","LLSync 连接鉴权")).context.deviceName=t,E.label=1;case 1:if(E.trys.push([1,21,,22]),e.start(null,{moduleVersion:this.extendInfo.moduleVersion}),!t)throw{code:constants.DEVICE_NAME_IS_EMPTY};return envDetect.isIOS&&this.extendInfo.moduleVersion>=2?[4,this.protocol.notifyAppOnIOSDevice()]:[3,4];case 2:return E.sent(),[4,delay(100)];case 3:E.sent(),E.label=4;case 4:return[4,this.models.getDeviceConfig({DeviceId:this.productId+"/"+t,DeviceKey:LLSyncProtocol_1.LLSyncConfig.Secret_Encrypt_Key,strict:!0})];case 5:if(n=E.sent(),i=void 0,r=void 0,s=void 0,o=void 0,!n)return[3,10];e.info("encryptedCredential","使用加密协议进行连接鉴权",{secretKey:n}),this.isEncrypted=!0,this.authorized=!1,this.secretKey=n,E.label=6;case 6:return E.trys.push([6,8,,9]),[4,this.authConnectionEncrypted({deviceName:t,authLogger:e})];case 7:return f=E.sent(),i=f.version,r=f.mtu,s=f.needSetMtu,o=f.otaVersion,[3,9];case 8:return c=E.sent(),e.fail("LLSync 加密协议连接鉴权失败",c),[2,Promise.reject(c)];case 9:return[3,14];case 10:return[4,this.getDevicePsk(t)];case 11:return a=E.sent(),this.localPsk=a,e.info("credential","使用非加密协议进行连接鉴权",{localPsk:a}),[4,this.protocol.getDeviceAuthInfo(e)];case 12:if(d=E.sent(),l=d.sign,u=d.timestamp,p=utils.encrypt(""+(u+60)+this.productId+t,a),l!==p)throw v={code:constants.CONNECT_SIGN_AUTH_ERROR},e.error("invalidConnSign","设备回复的连接签名校验未通过",v,{localPsk:a,timestamp:u,actualSign:l,expectedSign:p}),v;return[4,this.protocol.getDeviceInfo(e)];case 13:y=E.sent(),i=y.version,r=y.mtu,s=y.needSetMtu,o=y.otaVersion,E.label=14;case 14:if(e.info("recvDeviceInfo",["收到设备基本信息","协议版本="+i,"固件版本="+o,"期望使用的MTU="+r,s?"[需要主机设置 MTU]":null],{version:i,mtu:r,needSetMtu:s,otaVersion:o}),this.deviceName=t,this.bleVersion=i,_=Math.max(constants.MIN_ATT_MTU,r),!s)return[3,19];E.label=15;case 15:return E.trys.push([15,17,,18]),[4,this.setMtu(_)];case 16:return E.sent(),this.mtu=constants_1.attMtuToLLSyncMtu(_),this.writeMtuResult("success"),[3,18];case 17:return E.sent(),this.mtu=this.protocol.getDefaultMtu(),this.writeMtuResult("fail"),[3,18];case 18:return[3,20];case 19:this.mtu=constants_1.attMtuToLLSyncMtu(_),E.label=20;case 20:return this.otaVersion=o,o?e.step("cgiReportFirmwareVersion","上报设备固件版本 ["+o+"] 到云端",{version:o,deviceId:this.explorerDeviceId}).wrapWithoutRetValue(this.models.reportOTAVersion({Version:o,DeviceId:this.explorerDeviceId})).catch((function(){})):e.debug("emptyFirmwareVersion","设备上报的固件版本为空"),e.success(null,{version:i,mtu:r,otaVersion:o}),this.authorized=!0,this.stopListenLLEvents(),this.startListenLLEvents(),this.extendInfo.moduleVersion>=2&&(e.info("notifyAppReady","通知设备小程序已经就绪"),this.protocol.notifyAppReady()),this.emit("authorized",{version:i,mtu:r,otaVersion:o}),[3,22];case 21:return h=E.sent(),this.protocol.reportConnectError(),e.fail(null,h),[2,Promise.reject(this.normalizeError(h))];case 22:return[2]}}))}))},t.prototype.authConnectionEncrypted=function(e){var t=e.deviceName,n=e.authLogger;return tslib_1.__awaiter(this,void 0,void 0,(function(){var e,i,r,s,o,c,a,d,l,u,p,v,_=this;return tslib_1.__generator(this,(function(h){switch(h.label){case 0:return e=constants.DEVICE_INFO_WRITE_PREFIX,i=constants.CONNECT_REQUEST,r=constants.CONNECT_ACK,s=""+e[i]+this.encrypt("ConnectRequest",this.secretKey),n.info("sendSessionConnectRequest","[发送] 下发加密连接请求",{payload:s}),[4,this.sendBleData(s,i).then((function(e){var t=parseInt(e[2],16),i=e.slice(3,19).join(""),r=e.slice(19).join("");if(1===t){var s={code:constants.CONNECT_SIGN_AUTH_ERROR};throw n.error("recvSessionConnectRequestResp","[收到设备回复] 加密连接请求中的签名不正确",s),s}return n.info("recvSessionConnectRequestResp","[收到设备回复] 加密连接请求: 成功",{ack:t,R3:i,sign:r}),{ack:t,R3:i,sign:r}}))];case 1:return o=h.sent(),c=o.R3,a=o.sign,d={DeviceId:this.productId+"/"+(t||this.deviceName),Content:""+c+";".charCodeAt(0).toString(16)+this.secretKey,ContentType:"hex"},[4,n.step("cgiGetSessionKey","请求云端计算 sessionKey ",d).wrap(this.models.getDeviceSign(d))];case 2:if(l=h.sent(),(u=this.encrypt(c,l,{contentType:"hex"})).toLowerCase()!==a.toLowerCase())throw p={code:constants.CONNECT_SIGN_VERIFY_ERROR},n.error("invalidSignInSessionConnectRequestResp","来自设备的加密连接响应中的签名不正确",p,{actualSign:a,expectedSign:u}),p;return this.sessionKey=l,v=""+e[r]+this.encrypt("ConnectResult",this.sessionKey),n.info("sendSessionConnectResult","[发送] 连接结果通知",{payload:v}),[4,this.sendBleData(v,r).then((function(e){if(1===parseInt(e[2],16)){var t={code:constants.CONNECT_SIGN_VERIFY_ERROR};throw n.error("recvSessionConnectResultResp","[收到设备回复] 连接结果通知中的签名不正确",t),t}var i=e.slice(3,19).join(""),r=utils.decrypt(i,_.sessionKey),s=_.appDevSdk.utils.byteUtil.hexString2hexArray(r),o=parseInt(s[0],16),c=parseInt(s.slice(1,3).join(""),16),a=s.slice(4).join("");return n.info("recvSessionConnectResultResp","[收到设备回复] 连接结果通知: 成功",{rawPayload:i,decryptedPayload:r}),{version:o,mtu:8191&c,needSetMtu:!!(c>>15),otaVersion:a?libs_1.hex2str(a):a}}))];case 3:return[2,h.sent()]}}))}))},t.prototype.getAdvertisingData=function(){var e;return tslib_1.__awaiter(this,void 0,void 0,(function(){var t;return tslib_1.__generator(this,(function(n){if(!(t=this.bleVersion)||t<3)throw{code:constants.MODULE_VERSION_NOT_SUPPORT};if((null===(e=this.extendInfo)||void 0===e?void 0:e.isEncrypted)&&this.authorized)throw{code:"GET_ADV_DATA_NOT_SUPPORTED_IN_CURRENT_STATE",msg:"LLSync 加密协议连接鉴权完成后暂不支持获取广播信息"};return[2,this.protocol.getAdvertisingData()]}))}))},t.prototype.sendHeartbeat=function(){return tslib_1.__awaiter(this,void 0,void 0,(function(){var e;return tslib_1.__generator(this,(function(t){if(!(e=this.bleVersion)||e<3)throw{code:constants.MODULE_VERSION_NOT_SUPPORT};return[2,this.protocol.sendHeartbeat()]}))}))},t.prototype.notifyLocalRssi=function(e){var t=e.rssi;return tslib_1.__awaiter(this,void 0,void 0,(function(){var e;return tslib_1.__generator(this,(function(n){return(e=Math.round(t))<-255&&(e=-255),e>0&&(e=0),[2,this.protocol.notifyLocalRssi({rssi:e})]}))}))},t.prototype.setEbikeDebugFlag=function(e){var t=e.interval;return tslib_1.__awaiter(this,void 0,void 0,(function(){return tslib_1.__generator(this,(function(e){return!Number.isSafeInteger(t)||t<0||t>50?[2,Promise.reject({code:"INVALID_EBIKE_DEBUG_INTERVAL"})]:[2,this.protocol.setEbikeDebugFlag({interval:t})]}))}))},t.prototype.sendBleData=function(e,t){return tslib_1.__awaiter(this,void 0,void 0,(function(){var n;return tslib_1.__generator(this,(function(i){return n=this.protocol._parseDataBeforeConnect(e,t),[2,this.writeAndWait4Response(n,t,(function(e){return e}),{timeout:LLSyncProtocol_1.LLSyncConfig.waitGetRegisterDeviceInfo,timeoutHandler:function(){return Promise.reject({code:"WAIT_"+t+"_REPLY_TIMEOUT",msg:"等待设备响应 "+t+" 超时"})},writeId:constants.DEVICE_INFO_WRITE_ID})]}))}))},t.prototype.toString=function(){return"[LLSyncDeviceAdapter]"},t.serviceId16="0000FFE0-0000-1000-8000-00805F9B34FB",t.serviceId="0000FFE0-65D0-4E20-B56A-E493541BA4E2",t.deviceFilter=function(e,n){if(!e.advertisServiceUUIDs||!e.advertisServiceUUIDs.find((function(e){return e===t.serviceId16}))||!e.advertisData)return null;try{var i=arrayBufferToHexStringArray(e.advertisData),r=parseInt(i[2],16),s=r-(r>>2<<2),o=r>>4,c=r>>2&1,a=r>>3&1,d=n.productId&&n.deviceName?n.productId+"/"+n.deviceName:"",l=d?utils.get8ByteFromStr(""+d.replace("/","")):"",u=!!d,p="",v="",_=constants.DEVICE_STATE_MAP[s],h=[constants.DEVICE_HAS_BINDED,constants.DEVICE_HAS_CONNECTED].indexOf(_)>-1,f=e.localName;if(h)v=i.slice(3,11).join("").toLocaleLowerCase(),p=n.productId;else{var y=i.slice(3,9);f&&-1===f.indexOf("_")&&(f=f+"_"+y.slice(0,2).join("")),p=libs_1.hex2str(i.slice(9))}var E=function(){return tslib_1.__assign(tslib_1.__assign({},e),{name:f,serviceId:t.serviceId,deviceName:n.deviceName||"",productId:p,extendInfo:{bindState:constants.DEVICE_STATE_MAP[_],moduleVersion:o,isDynamicRegister:!!c,isEncrypted:!!a,standard:!0,macStr:h?"":i.slice(3,9).join(":")}})};return u&&h&&v===l?E():u||h?null:E()}catch(e){console.error("[LLSyncDeviceAdapter.deviceFilter]",e)}},t}(LLSyncDeviceAdapterBase_1.LLSyncDeviceAdapterBase);exports.LLSyncDeviceAdapter=LLSyncDeviceAdapter,exports.StandardDeviceAdapter=LLSyncDeviceAdapter;
//# sourceMappingURL=LLSyncDeviceAdapter.js.map

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

import type { FlowLogger } from 'qcloud-iotexplorer-common-libs';
import { LLSyncDeviceAdapter } from './LLSyncDeviceAdapter';
interface LLSyncOTACancelToken {
readonly isCancelled: boolean;
readonly cancelReason: {
code: string;
msg?: string;
};
cancel: (reason: {
code: string;
msg?: string;
}) => void;
cancelRejectionPromise: Promise<never>;
checkCancelled: () => void;
}
export interface OtaUpdateInfo {

@@ -18,3 +32,3 @@ needUpdate: boolean;

export interface OtaUpdateProgressInfo {
maxPackageNumPerCircle: number;
maxSeqPerBatch: number;
maxLengthPerPackage: number;

@@ -27,10 +41,8 @@ alreadyReceiveSize: number;

}
export declare const generateFileChunks: (fileOjb: OtaUpdateFileInfo, moduleInfo: OtaUpdateProgressInfo) => ArrayBuffer[];
export declare const getPackageDataToSend: (srcData: ArrayBuffer[], seq: any) => string[];
export declare class LLSyncOtaProcessor {
deviceAdapter: LLSyncDeviceAdapter;
otaInProgress: boolean;
cancelToken: LLSyncOTACancelToken;
_onProgressCb: ProgressCallBackFun;
processPromise: any;
get reporter(): import("qcloud-iotexplorer-appdev-sdk").Reporter;
flowLogger: FlowLogger;
get otaVersion(): string;

@@ -49,3 +61,3 @@ constructor(deviceAdapter: LLSyncDeviceAdapter);

}): Promise<{
code: any;
code: string;
}>;

@@ -65,32 +77,32 @@ /**

reportSendOtaDataSuccess(): Promise<any>;
sendOtaFile({ fileInfo, otaUpdateProgressInfo, }: {
sendOtaFile({ fileInfo, otaUpdateProgressInfo, cancelToken, nextSeq, retryCounter, }: {
fileInfo: OtaUpdateFileInfo;
otaUpdateProgressInfo: OtaUpdateProgressInfo;
cancelToken: LLSyncOTACancelToken;
nextSeq?: number;
retryCounter?: number;
}): any;
/**
* 确保把一个循环的数据发送出去,否则重试5次之后失败
*/
sendFileChunks({ fileChunks, otaUpdateProgressInfo, seq, retryTime, }: {
fileChunks: ArrayBuffer[];
sendFileChunks({ fileInfo, otaUpdateProgressInfo, startSeq, cancelToken, ackRef, }: {
fileInfo: OtaUpdateFileInfo;
otaUpdateProgressInfo: OtaUpdateProgressInfo;
seq?: number;
retryTime?: number;
startSeq?: number;
cancelToken: LLSyncOTACancelToken;
ackRef: {
current: null | {
nextSeq: number;
fileSizeReceived: number;
};
};
}): Promise<{
fileSize: number;
}>;
/**
* 等待设备回复,确认文件包发送情况
* @param fullLength 本次循环发送的完成数据包的总个数
*/
confirmFileChunkReceived({ otaUpdateProgressInfo, }: {
otaUpdateProgressInfo: OtaUpdateProgressInfo;
checkRebootStatus({ otaUpdateInfo, rebootMaxTime, cancelToken, }: {
otaUpdateInfo: OtaUpdateInfo;
rebootMaxTime: number;
cancelToken: LLSyncOTACancelToken;
}): Promise<{
seq: number;
fileSize: number;
code: string;
}>;
checkRebootStatus({ otaUpdateInfo, rebootMaxTime, }: {
otaUpdateInfo: OtaUpdateInfo;
rebootMaxTime: number;
}): Promise<any>;
downloadOtaFile(updateData: OtaUpdateInfo): Promise<OtaUpdateFileInfo>;
}
export {};

@@ -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=[],s=t.maxLengthPerPackage-3,n=Math.min(Math.ceil((e.fileSize-r)/s),t.maxPackageNumPerCircle),i=0;i<n;i++){var a=Math.min(r+s,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),s=t;s<e.length;s++){var n=e[s].byteLength+1;r.push(tslib_1.__spread([libs_1.U8ToHexString(o),libs_1.U8ToHexString(n),libs_1.U8ToHexString(s)],arrayBufferToHexStringArray(e[s])).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,s,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 o=l.sent(),s=o.supportUploadFromBreak,n=o.otaUpdateProgressInfo,this.onProgress(constants.OTA_UPDATE_STEPS.REQUEST_MODULE_UPDATE_SUCCESS,{supportUploadFromBreak:s,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),o=constants.MODULE_UPDATE_DATA_REPLAY_CODE_MAP[r>>7];o=void 0===o?"MODULE_UPDATE_CHECK_FILE_FAIL":o;var s=(r<<1&255)>>1;if(console.log("------UPDATE_DATA_CHECK_REPLY——code----",o,s),o===constants.OTA_UPDATE_STEPS.MODULE_UPDATE_CHECK_FILE_SUCCESS)return{code:o};throw{code:o,msg:constants.MODULE_UPDATE_REPLAY_DATA_CODE_MAP[s]}}),{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(s){switch(s.label){case 0:return s.trys.push([0,2,,3]),[4,this.deviceAdapter.models.getDeviceOTAInfo({DeviceId:this.deviceAdapter.explorerDeviceId})];case 1:return e=s.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 s.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,s=byteUtil.hexString2hexArray(libs_1.str2hexStr(o.targetVersion)),n=byteUtil.hexString2hexArray(libs_1.U32ToHexString(r.fileSize)+""+libs_1.U32ToHexString(r.fileCrc)+libs_1.U8ToHexString(s.length)+s.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),o=!!(1&r),s=!!(r>>1&1),n=e.slice(3);if(!o){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:s,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,o,s,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),o=genPromise(),s=function(){console.log("disconnect while send data"),o.reject({code:"BLE_CONNECTION_BREAK"})},this.deviceAdapter.once("disconnect",s),[4,Promise.race([this.processPromise.promise,o.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,o=e.seq,s=void 0===o?0:o,n=e.retryTime,i=void 0===n?0:n;return tslib_1.__awaiter(this,void 0,void 0,(function(){var e,o,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,s,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,s),o=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(!(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(n=T.sent(),console.log("---write error, retry time:---",constants.UPDATE_WRITE_ERROR_TIMES_PER_CIRCLE-o,n),!--o)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||s,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,o=e.otaUpdateProgressInfo,s=genPromise(),n=function(e){var r=e.data;if(clearTimeout(t),!r.length)return s.reject({code:constants.UPDATE_REPLY_INVALID});var o=parseInt(r.slice(2,3).join(""),16),n=parseInt(r.slice(3,7).join(""),16);return s.resolve({seq:o,fileSize:n})};return console.log("---confirmFileChunkReceived---:listen data"),this.deviceAdapter.once(constants.UPDATE_DATA_REPLY,n),Promise.race([s.promise,new Promise((function(e,s){t=setTimeout((function(){r.deviceAdapter.off(constants.UPDATE_DATA_REPLY,n),s({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,s,n,i,a,c,_=this;return tslib_1.__generator(this,(function(d){switch(d.label){case 0:return e=genPromise(),o=!1,s=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(!(s<=constants.WAIT_MODULE_UPDATE_CONNECT_TIMES)||o)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--",o,s,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(),s+=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("LLSyncOtaProcessor.checkRebootStatus: adapter disconnect"),i(),n(),[2]}))}))},c=function(){return tslib_1.__awaiter(_,void 0,void 0,(function(){return tslib_1.__generator(this,(function(e){return console.log("LLSyncOtaProcessor.checkRebootStatus: adapter authorized"),i(),n({allowSkipConnect:!0}),[2]}))}))},this.deviceAdapter.isConnected?(this.deviceAdapter.once("disconnect",a),this.deviceAdapter.once("authorized",c)):n(),[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,d.sent()]}}))}))},e.prototype.downloadOtaFile=function(e){return tslib_1.__awaiter(this,void 0,void 0,(function(){var t,r,o,s,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,o=t.fileBuffer,console.log(r,o),(s=new libs_1.CRC32).update(new Int8Array(o)),n=s.getValue(),[2,{fileSize:r,fileCrc:n,fileBuffer:o}]}}))}))},e}();exports.LLSyncOtaProcessor=LLSyncOtaProcessor;
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.LLSyncOtaProcessor=void 0;var tslib_1=require("tslib"),qcloud_iotexplorer_appdev_sdk_1=require("qcloud-iotexplorer-appdev-sdk"),constants=tslib_1.__importStar(require("../../constants")),libs_1=require("../../libs"),LLSyncProtocol_1=require("./LLSyncProtocol"),_a=qcloud_iotexplorer_appdev_sdk_1.AppDevSdk.utils,delay=_a.delay,byteUtil=_a.byteUtil,createLLSyncOTACancelToken=function(){var e,t={isCancelled:!1,cancelRejectionPromise:new Promise((function(t,r){e=r})),cancelReason:{code:"USER_CANCEL_OTA_UPDATE"},cancel:function(r){t.isCancelled=!0,t.cancelReason=r,e(r)},checkCancelled:function(){if(t.isCancelled)throw t.cancelReason}};return t},getLLOTADataPackage=function(e,t,r,n){var s=Math.min(n-3,t.fileSize-r);if(!(s<=0)){var o=new ArrayBuffer(3+s),a=new Uint8Array(o),i=parseInt(constants.LL_OTA_WRITE_PREFIX[constants.OTA_UPDATE_DATA],16);a.set([i,1+s,e]);var c=new Uint8Array(t.fileBuffer,r,s);return a.set(c,3),{package:o,payloadLength:s}}},LLSyncOtaProcessor=function(){function e(e){this.otaInProgress=!1,this.deviceAdapter=e}return 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];"function"==typeof this._onProgressCb&&this._onProgressCb({code:e,msg:r,detail:t})},e.prototype.cancelOta=function(){this.otaInProgress&&this.cancelToken&&this.cancelToken.cancel({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,n,s,o,a,i,c,_,l,d;return tslib_1.__generator(this,(function(u){switch(u.label){case 0:if(this.otaInProgress)throw{code:"OTA_UPDATE_IN_PROGRESS",msg:"OTA升级进行中,请勿重复操作"};this.flowLogger=this.deviceAdapter.llsyncLogger.flow("ota","固件升级",!0),this.otaInProgress=!0,e=createLLSyncOTACancelToken(),this.cancelToken=e,this._onProgressCb=t,u.label=1;case 1:if(u.trys.push([1,8,9,10]),!this.otaVersion)throw this.flowLogger.warn("deviceFirmwareVersionUnknown","设备未上报当前固件版本,或不支持固件升级"),{code:"MODULE_DONNOT_SUPPORT"};return this.onProgress(constants.OTA_UPDATE_STEPS.GET_OTA_UPDATE_INFO),[4,this.flowLogger.step("getOtaUpdateInfo","获取固件升级信息",!0).wrap(this.getOtaUpdateInfo())];case 2:if(r=u.sent(),e.checkCancelled(),this.onProgress(constants.OTA_UPDATE_STEPS.GET_OTA_UPDATE_INFO_SUCCESS,{otaUpdateInfo:r}),!r.needUpdate)throw this.flowLogger.warn("otaVersionIsLatest","设备当前已是最新固件版本"),{code:"MODULE_VERSION_IS_UPDATED"};return this.onProgress(constants.OTA_UPDATE_STEPS.DOWNLOADING_OTA_FILE),[4,this.flowLogger.step("downloadOtaFile","下载固件文件",!0).wrap(this.downloadOtaFile(r),(function(e,t){return t.success(null,{fileSize:e.fileSize,fileCrc:e.fileCrc}),e}))];case 3:return n=u.sent(),this.onProgress(constants.OTA_UPDATE_STEPS.DOWNLOAD_OTA_FILE_SUCCESS,{fileInfo:tslib_1.__assign(tslib_1.__assign({},n),{fileBuffer:void 0})}),this.onProgress(constants.OTA_UPDATE_STEPS.REQUEST_MODULE_UPDATE_START),[4,this.flowLogger.step("sendOTARequest","发送升级请求",!0).wrap(this.sendOTARequest({fileInfo:n,otaUpdateInfo:r}),(function(e,t){return t.success(null,{supportUploadFromBreak:e.supportUploadFromBreak,otaUpdateProgressInfo:tslib_1.__assign({},e.otaUpdateProgressInfo)}),e}))];case 4:return s=u.sent(),o=s.supportUploadFromBreak,a=s.otaUpdateProgressInfo,this.onProgress(constants.OTA_UPDATE_STEPS.REQUEST_MODULE_UPDATE_SUCCESS,{supportUploadFromBreak:o,otaUpdateProgressInfo:a}),this.onProgress(constants.OTA_UPDATE_STEPS.SEND_UPDATE_DATA_START),i=Date.now(),(c=this.flowLogger.step(0===a.alreadyReceiveSize?"sendOtaFile":"sendOtaFileFromBreak","发送升级数据")).start([c.defaultMessage+"开始","maxSeq="+a.maxSeqPerBatch,"packageLength="+a.maxLengthPerPackage,a.alreadyReceiveSize>0?"从断点 "+a.alreadyReceiveSize+" 开始传输":null],{fileSize:n.fileSize,alreadyReceiveSize:a.alreadyReceiveSize,maxSeq:a.maxSeqPerBatch,packageLength:a.maxLengthPerPackage}),[4,c.wrapWithoutRetValue(this.sendOtaFile({fileInfo:n,otaUpdateProgressInfo:a,cancelToken:e}))];case 5:return u.sent(),[4,this.flowLogger.step("notifyOtaDataEnd","发送升级数据结束通知",!0).wrapWithoutRetValue(this.reportAndConfirmUpdateStatus({otaUpdateProgressInfo:a}))];case 6:return _=u.sent(),this.onProgress(constants.OTA_UPDATE_STEPS.SEND_UPDATE_DATA_SUCCESS,{timeCost:Date.now()-i,response:_}),this.onProgress(constants.OTA_UPDATE_STEPS.WAITING_MODULE_UPDATE),l=Date.now(),[4,this.flowLogger.step("checkRebootStatus","等待设备重启",!0).wrapWithoutRetValue(this.checkRebootStatus({otaUpdateInfo:r,rebootMaxTime:a.rebootMaxTime,cancelToken:e}))];case 7:return u.sent(),this.onProgress(constants.OTA_UPDATE_STEPS.MODULE_UPDATE_SUCCESS,{timeCost:Date.now()-l}),this.flowLogger.success("固件升级成功,升级后版本号="+r.targetVersion,{version:r.targetVersion}),[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=u.sent())||(d={}),d=d instanceof Error?{code:"OTA_INTERNAL_ERROR",msg:constants.OTA_UPDATE_ERRORS.OTA_INTERNAL_ERROR+": "+String(d)}:d.code?tslib_1.__assign({msg:constants.OTA_UPDATE_ERRORS[d.code]||d.msg},d):tslib_1.__assign({code:"OTA_INTERNAL_ERROR"},d),this.flowLogger.fail(null,d),d;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,r=e.data;if(!r.length)throw{code:constants.UPDATE_REPLY_INVALID};var n=parseInt(r.slice(2).join(""),16),s=(n<<1&255)>>1;if(!!(n>>7))return{code:constants.OTA_UPDATE_STEPS.MODULE_UPDATE_CHECK_FILE_SUCCESS};throw{code:"MODULE_UPDATE_CHECK_FILE_FAIL",msg:null!==(t=constants.MODULE_UPDATE_REPLAY_DATA_CODE_MAP[s])&&void 0!==t?t:"错误码="+s,deviceErrCode:s}}),{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,n,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,n={needUpdate:!1,targetVersion:r,otaUrl:t},this.otaVersion&&r!==this.otaVersion&&(n.needUpdate=!0),[2,n];case 2:return"FailedOperation.DeviceFirmwareIsUpdated"===(null==(s=o.sent())?void 0:s.code)?(this.flowLogger.warn("otaVersionIsLatestFromCgi","云端无该设备的升级任务"),[2,Promise.reject({code:"MODULE_VERSION_IS_UPDATED"})]):[2,Promise.reject({code:"GET_OTA_INFO_FAIL"})];case 3:return[2]}}))}))},e.prototype.sendOTARequest=function(e){var t=this,r=e.fileInfo,n=e.otaUpdateInfo,s=byteUtil.hexString2hexArray(libs_1.str2hexStr(n.targetVersion)),o=byteUtil.hexString2hexArray(libs_1.U32ToHexString(r.fileSize)+""+libs_1.U32ToHexString(r.fileCrc)+libs_1.U8ToHexString(s.length)+s.join("")),a=this.deviceAdapter.sliceData(tslib_1.__spread([""+constants.LL_OTA_WRITE_PREFIX[constants.OTA_UPDATE_REQUEST],libs_1.U16ToHexString(o.length)],o),[o],constants.UPDATE_REPLY);return this.deviceAdapter.isEncrypted&&(a=this.deviceAdapter.encrypt(a,this.deviceAdapter.sessionKey,{contentType:"hex"})),this.deviceAdapter.writeAndWait4Response(a,constants.UPDATE_REPLY,(function(e){if(!e.length)throw{code:constants.UPDATE_REPLY_INVALID};var r=parseInt(e.slice(2,3).join(""),16),n=!!(1&r),s=!!(r>>1&1),o=e.slice(3);if(!n){var a=parseInt(o.slice(0,1),16);switch(t.flowLogger.error("recvOTARequestReject","[收到设备回复] 设备拒绝进行固件升级",{deviceErrCode:a}),a){case 2:throw{code:constants.DEVICE_REJECT_OTA_LOW_POWER};case 3:throw{code:constants.DEVICE_REJECT_OTA_INVALID_VERSION};default:throw{code:constants.MODULE_DONNOT_ALLOW}}}var i={maxSeqPerBatch:parseInt(o.slice(0,1).join(""),16),maxLengthPerPackage:parseInt(o.slice(1,2).join(""),16),retryTimeGap:1e3*parseInt(o.slice(2,3).join(""),16),retryTimes:5,rebootMaxTime:1e3*parseInt(o.slice(3,4).join(""),16),alreadyReceiveSize:parseInt(o.slice(4,8).join(""),16),sendWaitGap:parseInt(o.slice(8,9).join("")||0,16)};if(t.flowLogger.info("recvOTARequestResp","收到升级请求应答",tslib_1.__assign({},i)),i.maxLengthPerPackage=Math.min(i.maxLengthPerPackage,t.deviceAdapter.mtu),t.deviceAdapter.isEncrypted){var c=libs_1.getMtuEncrypted(i.maxLengthPerPackage);i.maxLengthPerPackage=Math.min(i.maxLengthPerPackage,c)}return{supportUploadFromBreak:s,otaUpdateProgressInfo:i}}),{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,n=e.cancelToken,s=e.nextSeq,o=void 0===s?0:s,a=e.retryCounter,i=void 0===a?0:a;return tslib_1.__awaiter(this,void 0,void 0,(function(){var e,s,a,c,_,l=this;return tslib_1.__generator(this,(function(d){switch(d.label){case 0:this.onProgress(constants.OTA_UPDATE_STEPS.SEND_UPDATE_DATA_DETAIL,{progress:Math.floor(r.alreadyReceiveSize/t.fileSize*100)}),e=function(){n.cancel({code:"BLE_CONNECTION_BREAK"}),l.flowLogger.error("sendOtaFile.disconnect","发送升级数据时蓝牙连接断开")},this.deviceAdapter.once("disconnect",e),s={current:null},c=function(e){var n=e.data;if(n.length){var o=parseInt(n.slice(2,3).join(""),16),i=parseInt(n.slice(3,7).join(""),16),c=o===r.maxSeqPerBatch||i>=t.fileSize;c||l.flowLogger.warn("sendOtaFile.recvDataIncompleteAck","[收到设备应答] 设备要求重传部分数据, nextSeq="+o+", fileSizeReceived="+i,{nextSeq:o,fileSizeReceived:i}),s.current={nextSeq:o,fileSizeReceived:i,currentBatchCompleted:c},null==a||a()}else l.flowLogger.error("dataAckInvalid","设备升级数据应答格式有误",{code:constants.UPDATE_REPLY_INVALID})},this.deviceAdapter.on(constants.UPDATE_DATA_REPLY,c),d.label=1;case 1:return d.trys.push([1,5,6,7]),0===i&&0===o||this.flowLogger.warn("sendOtaFile.breakpoint",["续传升级数据, startByte="+r.alreadyReceiveSize,"[seq: "+o+" / "+r.maxSeqPerBatch+"]",0!==i?"[第 "+i+" 次重传]":null],{seq:o,otaUpdateProgressInfo:tslib_1.__assign({},r),retryCounter:i}),[4,Promise.race([n.cancelRejectionPromise,this.sendFileChunks({fileInfo:t,otaUpdateProgressInfo:r,cancelToken:n,startSeq:o,ackRef:s})])];case 2:return d.sent(),s.current?[3,4]:[4,Promise.race([n.cancelRejectionPromise,new Promise((function(e){a=e})),new Promise((function(e,t){setTimeout((function(){t({code:"UPDATE_DATA_REPLAY_TIMEOUT"})}),r.retryTimeGap*r.retryTimes)}))])];case 3:d.sent(),d.label=4;case 4:return[3,7];case 5:return _=d.sent(),this.flowLogger.warn("sendOtaFile.errorPos","发送升级数据中止位点 seq="+o+", fileSizeReceived="+r.alreadyReceiveSize,{nextSeq:o,fileSizeReceived:r.alreadyReceiveSize}),[2,Promise.reject(_)];case 6:return this.deviceAdapter.off("disconnect",e),this.deviceAdapter.off(constants.UPDATE_DATA_REPLY,c),[7];case 7:return r.alreadyReceiveSize=s.current.fileSizeReceived,!s.current.currentBatchCompleted&&i>=r.retryTimes?[2,Promise.reject({code:"UPDATE_DATA_RETRY_EXCEEDED"})]:r.alreadyReceiveSize<t.fileSize?[2,this.sendOtaFile({fileInfo:t,otaUpdateProgressInfo:r,cancelToken:n,nextSeq:s.current.currentBatchCompleted?0:s.current.nextSeq,retryCounter:s.current.currentBatchCompleted?0:i+1})]:[2]}}))}))},e.prototype.sendFileChunks=function(e){var t=e.fileInfo,r=e.otaUpdateProgressInfo,n=e.startSeq,s=void 0===n?0:n,o=e.cancelToken,a=e.ackRef;return tslib_1.__awaiter(this,void 0,void 0,(function(){var e,n,i,c,_,l,d,u,T,A,E;return tslib_1.__generator(this,(function(f){switch(f.label){case 0:e=r.alreadyReceiveSize,n=s,i=!0,c=constants.UPDATE_WRITE_ERROR_TIMES_PER_CIRCLE,f.label=1;case 1:f.trys.push([1,13,,14]),f.label=2;case 2:return e<t.fileSize&&n<r.maxSeqPerBatch?this.deviceAdapter.isConnected?a.current?[2]:o.isCancelled?[2,o.cancelRejectionPromise]:(_=null,i?i=!1:_=delay(r.sendWaitGap||10),l=getLLOTADataPackage(n,t,e,r.maxLengthPerPackage),d=l.payloadLength,u=l.package,T=u,this.deviceAdapter.isEncrypted&&(T=this.deviceAdapter.encrypt(u,this.deviceAdapter.sessionKey)),null===_?[3,4]:[4,_]):(o.cancel({code:"BLE_CONNECTION_BREAK"}),[2,o.cancelRejectionPromise]):[3,12];case 3:if(f.sent(),o.isCancelled)return[2,o.cancelRejectionPromise];f.label=4;case 4:if(a.current)return[2];f.label=5;case 5:if(!(c>0))return[3,11];f.label=6;case 6:return f.trys.push([6,8,,10]),[4,this.deviceAdapter.writeData(T,{writeId:constants.LL_OTA_WRITE_ID,retryTime:0})];case 7:return f.sent(),o.isCancelled?[2,o.cancelRejectionPromise]:(n+=1,e+=d,[3,11]);case 8:if(A=f.sent(),o.isCancelled)return[2,o.cancelRejectionPromise];if(this.flowLogger.error("sendOtaFile.writeRetry","升级数据 seq="+n+", startByte="+e+", length="+d+" 写入失败,剩余重试次数 "+c,A),!--c)throw{code:"BLE_WRITE_ERROR",cause:A};return[4,delay(r.sendWaitGap||10)];case 9:return f.sent(),[3,10];case 10:return[3,5];case 11:return[3,2];case 12:return[3,14];case 13:return E=f.sent(),o.isCancelled?[2,o.cancelRejectionPromise]:E instanceof Error||!(null==E?void 0:E.code)?[2,Promise.reject({code:"OTA_INTERNAL_ERROR",cause:E})]:[2,Promise.reject(E)];case 14:return[2]}}))}))},e.prototype.checkRebootStatus=function(e){var t=e.otaUpdateInfo,r=e.rebootMaxTime,n=e.cancelToken;return tslib_1.__awaiter(this,void 0,void 0,(function(){var e,s,o,a,i,c=this;return tslib_1.__generator(this,(function(_){switch(_.label){case 0:return e=function(){return c.otaVersion!==t.targetVersion?(c.flowLogger.error("checkRebootStatus.unexpectedVersion",["设备上报固件版本 ["+c.otaVersion+"]","与 OTA 的目标版本 ["+t.targetVersion+"] 不一致"]),Promise.reject({code:"MODULE_UPDATE_FAIL"})):{code:constants.OTA_UPDATE_STEPS.MODULE_UPDATE_SUCCESS}},a=function(){return new Promise((function(e){if(c.flowLogger.info("checkRebootStatus.disconnect","等待设备断开蓝牙连接"),c.deviceAdapter.isConnected){var t=function(){e()};s=function(){c.deviceAdapter.off("disconnect",t)},c.deviceAdapter.once("disconnect",t)}else e()}))},i=function(){return new Promise((function(e,t){tslib_1.__awaiter(c,void 0,void 0,(function(){var r,s,a,i,c,_=this;return tslib_1.__generator(this,(function(l){switch(l.label){case 0:if(this.deviceAdapter.authorized)return e(),[2];r=!1,s=function(){r=!0,e()},o=function(){_.deviceAdapter.off("authorized",s)},this.deviceAdapter.once("authorized",s),a=this.deviceAdapter.deviceName,i=0,l.label=1;case 1:if(!(i<=constants.WAIT_MODULE_UPDATE_CONNECT_TIMES)||n.isCancelled||r)return[3,8];n.checkCancelled(),this.flowLogger.info("checkRebootStatus.reconnect","第 "+(i+1)+" 次尝试回连设备"),l.label=2;case 2:return l.trys.push([2,5,,7]),[4,this.deviceAdapter.connectDevice()];case 3:return l.sent(),n.checkCancelled(),[4,this.deviceAdapter.authenticateConnection({deviceName:a})];case 4:return l.sent(),o(),e(),[3,8];case 5:return c=l.sent(),this.flowLogger.error("checkRebootStatus.reconnect","第 "+(i+1)+" 次尝试回连设备失败",c),i+=1,[4,delay(constants.WAIT_MODULE_UPDATE_CONNECT_TIME_GAP)];case 6:return l.sent(),[3,7];case 7:return[3,1];case 8:return t({code:"MODULE_UPDATE_CONNECT_TIMEOUT"}),[2]}}))}))}))},[4,Promise.race([a().then((function(){return i()})).then((function(){return e()})),new Promise((function(e,t){setTimeout((function(){n.isCancelled||(n.cancel({code:constants.WAIT_MODULE_UPDATE_TIMEOUT}),t({code:constants.WAIT_MODULE_UPDATE_TIMEOUT}))}),Math.max(3e4,r))})),n.cancelRejectionPromise]).then((function(e){return null==s||s(),null==o||o(),e})).catch((function(e){return null==s||s(),null==o||o(),Promise.reject(e)}))];case 1:return[2,_.sent()]}}))}))},e.prototype.downloadOtaFile=function(e){return tslib_1.__awaiter(this,void 0,void 0,(function(){var t,r,n,s,o,a,i=this;return tslib_1.__generator(this,(function(c){switch(c.label){case 0:return c.trys.push([0,2,,3]),[4,libs_1.downloadFile(e.otaUrl,{onProgress:function(e){i.onProgress(constants.OTA_UPDATE_STEPS.DOWNLOADING_OTA_FILE_DETAIL,e)}})];case 1:return t=c.sent(),r=t.fileSize,n=t.fileBuffer,(s=new libs_1.CRC32).update(new Int8Array(n)),o=s.getValue(),[2,{fileSize:r,fileCrc:o,fileBuffer:n}];case 2:return a=c.sent(),[2,Promise.reject({code:constants.DOWNLOAD_OTA_FILE_FAIL,detail:a})];case 3:return[2]}}))}))},e}();exports.LLSyncOtaProcessor=LLSyncOtaProcessor;
//# sourceMappingURL=LLSyncOtaProcessor.js.map

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

import type { FlowLogger } from 'qcloud-iotexplorer-common-libs';
import { LLSyncDeviceAdapter } from './LLSyncDeviceAdapter';

@@ -59,3 +60,3 @@ import { Action } from '../../libs';

_cleanupUserCheckHandleAfterCancel: () => void;
get reporter(): import("qcloud-iotexplorer-appdev-sdk").Reporter;
get logger(): FlowLogger;
constructor(deviceAdapter: LLSyncDeviceAdapter);

@@ -65,13 +66,13 @@ /**

*/
requestBindDevice({ needUserCheck, isDynamicRegister, }: {
requestBindDevice({ needUserCheck, bindLogger, }: {
needUserCheck: boolean;
isDynamicRegister: boolean;
bindLogger: FlowLogger;
}): Promise<WriteStampResult>;
registerDevice({ timestamp, nonce, payload: data, }: {
timestamp: any;
nonce: any;
payload: any;
registerDevice({ timestamp, nonce, payload: deviceDynRegPayload, bindLogger, }: {
timestamp: number;
nonce: number;
payload: string[];
bindLogger: FlowLogger;
}): Promise<{
bleData: string[];
timestamp: number;
dynRegResult: string[];
}>;

@@ -104,4 +105,4 @@ parseDeviceSignResp({ payload, needUserCheck, }: {

cancelUserCheck(reason?: 'timeout' | 'cancel'): void;
getDeviceAuthInfo(): Promise<WriteConInfoResult>;
getDeviceInfo(): Promise<{
getDeviceAuthInfo(authLogger: FlowLogger): Promise<WriteConInfoResult>;
getDeviceInfo(authLogger: FlowLogger): Promise<{
version: number;

@@ -112,3 +113,3 @@ mtu: number;

}>;
getUnbindAuthSign(): Promise<{
getUnbindAuthSign(unbindLogger: FlowLogger): Promise<{
sign: string;

@@ -123,16 +124,13 @@ }>;

}>;
/**
* 各类响应
*/
reportBindSuccess(bindStartTime: any): Promise<string>;
reportBindEncryptedSuccess(bindStartTime: any, secretkey: any): Promise<{
reportBindSuccess(bindLogger: FlowLogger): Promise<string>;
reportBindEncryptedSuccess(secretKey: string, bindLogger: FlowLogger): Promise<{
ack: number;
errCode: any;
deviceErrCode: any;
}>;
reportBindError(_code?: string): void;
reportBindEncryptedError(secretkey: any): void;
reportBindEncryptedError(secretKey: string, bindLogger: FlowLogger): void;
reportConnectError(): void;
reportPropertyReportResult(code?: number): void;
reportEventReportResult(code: number, eventIndex: any): void;
reportGetStatusResult(code?: number, tlvData?: any, tmpData?: any): void;
reportPropertyReportResult(code?: number): Promise<void>;
reportEventReportResult(code: number, eventIndex: any): Promise<void>;
reportGetStatusResult(code?: number, tlvData?: any, tmpData?: any): Promise<void>;
reportUnbindResult(mode: 'success' | 'fail'): Promise<void>;

@@ -161,3 +159,4 @@ notifyAppReady(): Promise<void>;

_parseDataBeforeConnect(data: any, mode: any): string[];
getDefaultMtu(): 0 | 20;
}
export declare const isHeartbeatResp: (hex: string[]) => boolean;

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

"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.isHeartbeatResp=exports.LLSyncProtocol=exports.LLSyncConfig=exports.BindState=void 0;var BindState,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;!function(t){t[t.NOT_BOUND=0]="NOT_BOUND",t[t.WAITING_BIND=1]="WAITING_BIND",t[t.HAS_BOUND=2]="HAS_BOUND",t[t.CONNECTED=3]="CONNECTED"}(BindState=exports.BindState||(exports.BindState={})),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,waitGetAdvDataReplyTime: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,c,_,E=this;return tslib_1.__generator(this,(function(I){switch(I.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}),function(t){t[t.BindSign=1]="BindSign",t[t.DynReg=2]="DynReg"}(o||(o={})),r=function(i){var s=E.parseDeviceSignResp({payload:i,needUserCheck:n});return{sign:s.sign,deviceName:s.deviceName,nonce:e,timestamp:t+60}},a=function(n){return tslib_1.__awaiter(E,void 0,void 0,(function(){var s;return tslib_1.__generator(this,(function(o){switch(o.label){case 0:return[4,this.registerDevice({timestamp:t,nonce:e,payload:n})];case 1:return s=o.sent(),i=s.bleData,t=s.timestamp,[2]}}))}))},c=function(){return tslib_1.__awaiter(E,void 0,void 0,(function(){var t,e,s,r;return tslib_1.__generator(this,(function(a){return t=this.deviceAdapter.writeAndWait4Response(i,[constants.REGISTER_DEVICE_INFO_REPLY,constants.BIND_AUTH],(function(t,e){return{type:e.type===constants.BIND_AUTH?o.BindSign:o.DynReg,payload:t}}),{timeout:n?exports.LLSyncConfig.waitGetCheckTimeoutDefaultReplyTime+exports.LLSyncConfig.waitGetCheckTimeoutReplyTime:exports.LLSyncConfig.waitGetRegisterDeviceInfo,timeoutCode:constants.WAIT_TIME_SYNC_REPLY_TIMEOUT,writeId:constants.DEVICE_INFO_WRITE_ID}),n?(e=this.waitUserCheck(),s=e.promise,r=e.abort,[2,Promise.race([s,t.then((function(t){return r(),t})).catch((function(t){return r(),Promise.reject(t)}))])]):[2,t]}))}))},[4,c()];case 1:return(_=I.sent()).type!==o.DynReg?[3,4]:[4,a(_.payload)];case 2:return I.sent(),[4,c()];case 3:if((_=I.sent()).type===o.DynReg)throw{code:"DUPLICATE_DYNREG_REQUEST",msg:"设备重复请求动态注册"};I.label=4;case 4:return[2,r(_.payload)]}}))}))},t.prototype.registerDevice=function(t){var e=t.timestamp,n=t.nonce,i=t.payload;return tslib_1.__awaiter(this,void 0,void 0,(function(){var t,s,o,r,a,c,_,E,I;return tslib_1.__generator(this,(function(d){switch(d.label){case 0:if(!i.length)throw{code:constants.REGISTER_DEVICE_INFO_REPLY_INVALID};t=libs_1.getStrLength(i),s=parseInt(i.slice(2,3).join(""),16),o=libs_1.hex2str(i.slice(3,3+s)),r=libs_1.hex2str(i.slice(3+s,3+t)),this.reporter.info(constants.REGISTER_DEVICE_INFO_REPLY,{allLength:t,deviceNameLength:s,deviceName:o,sign:r}),this.reporter.info(constants.TIME_SYNC,{deviceName:o,sign:r}),a=1,d.label=1;case 1:return d.trys.push([1,3,,4]),[4,this.deviceAdapter.models.dynamicRegisterDevice({deviceName:o,sign:r,productId:this.deviceAdapter.productId,timestamp:e,nonce:n})];case 2:return c=d.sent().payload,_=Math.floor(Date.now()/1e3),a=0,E=this._parseDataBeforeConnect(constants.DEVICE_INFO_WRITE_PREFIX[constants.SEND_REGISTER_DEVICE_PAYLOAD]+""+libs_1.U8ToHexString(a)+libs_1.U8ToHexString(c.length)+libs_1.str2hexStr(c)+n.toString(16)+_.toString(16),constants.SEND_REGISTER_DEVICE_PAYLOAD),this.reporter.info(constants.REGISTER_DEVICE_SUCCESS,{payload:c,bleData:E}),[2,{bleData:E,timestamp:_}];case 3:throw I=d.sent(),tslib_1.__assign(tslib_1.__assign({},I),{code:constants.REGISTER_DEVICE_ERROR});case 4:return[2]}}))}))},t.prototype.parseDeviceSignResp=function(t){var e=t.payload,n=t.needUserCheck;if(!e.length)throw{code:constants.CONNECT_REPLY_INVALID};if(n){var i=!(libs_1.getStrLength(e)>>15);if(console.log("bind auth response userCheckResult",i),!i)throw{code:constants.GET_USER_CHECK_REJECT}}var s=e.slice(2,22).join(""),o=libs_1.hex2str(e.slice(22));return{sign:s.toLocaleLowerCase(),deviceName:o}},t.prototype.waitUserCheck=function(){var t,e=this,n=genPromise(),i=!1,s=function(i){clearTimeout(t),console.log("registerUserCheckTimer",i),t=setTimeout((function(){console.log("user check timeout",i),e.cancelUserCheck("timeout"),n.reject({code:constants.WAIT_USER_CHECK_TIMEOUT})}),i)};this.deviceAdapter.wait4EventResponse(constants.USER_CHECK_TIMEOUT_CALLBACK,(function(t){if(!i){if(!t.length)return console.log("get user check timeout duration fail, trigger default timeout timer"),e.reporter.info(constants.GET_USER_CHECK_TIMEOUT_ERROR),s(exports.LLSyncConfig.waitGetCheckTimeoutDefaultReplyTime);var n=1e3*parseInt(t.slice(2).join(""),16);e.reporter.info(constants.GET_USER_CHECK_TIMEOUT_SUCCESS,{timeoutDuration:n}),s(n)}}),{timeout:exports.LLSyncConfig.waitGetCheckTimeoutReplyTime,timeoutHandler:function(){e.reporter.info(constants.GET_USER_CHECK_TIMEOUT_TIMEOUT),s(exports.LLSyncConfig.waitGetCheckTimeoutDefaultReplyTime-exports.LLSyncConfig.waitGetCheckTimeoutReplyTime)}});var o=function(){i=!0,void 0!==t&&clearTimeout(t)};return this._cleanupUserCheckHandleAfterCancel=function(){console.log("process cleanup user check handler"),o(),n.reject(null),e._cleanupUserCheckHandleAfterCancel=noop},{promise:n.promise,abort:o}},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,[4,this.deviceAdapter.writeData(this._parseDataBeforeConnect(n,constants.BIND_AUTH_SUCCESS),{writeId:constants.DEVICE_INFO_WRITE_ID})];case 1:return i.sent(),[4,this.deviceAdapter.models.setDeviceConfig({DeviceId:this.deviceAdapter.explorerDeviceId,DeviceKey:exports.LLSyncConfig.BLE_PSK_DEVICE_KEY,DeviceValue:e})];case 2: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]+"01";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.writeData(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.notifyAppReady=function(){return tslib_1.__awaiter(this,void 0,void 0,(function(){var t,e,n,i;return tslib_1.__generator(this,(function(s){switch(s.label){case 0:return t=constants.DEVICE_INFO_WRITE_PREFIX,e=constants.APP_IS_READY,n=constants.DEVICE_INFO_WRITE_ID,i=t[e],this.reporter.info(e),[4,this.deviceAdapter.writeData(i,{writeId:n})];case 1:return s.sent(),[2]}}))}))},t.prototype.notifyAppOnIOSDevice=function(){return tslib_1.__awaiter(this,void 0,void 0,(function(){var t,e,n,i;return tslib_1.__generator(this,(function(s){switch(s.label){case 0:return t=constants.DEVICE_INFO_WRITE_PREFIX,e=constants.APP_ON_IOS_DEVICE,n=constants.DEVICE_INFO_WRITE_ID,i=t[e],this.reporter.info(e),[4,this.deviceAdapter.writeData(i,{writeId:n})];case 1:return s.sent(),[2]}}))}))},t.prototype.notifyLocalRssi=function(t){var e=t.rssi;return tslib_1.__awaiter(this,void 0,void 0,(function(){var t,n,i,s,o;return tslib_1.__generator(this,(function(r){switch(r.label){case 0:return!Number.isSafeInteger(e)||e<-255||e>0?[2,Promise.reject({msg:"RSSI 取值超出范围",code:"INVALID_RSSI_VALUE"})]:(t=constants.DEVICE_INFO_WRITE_PREFIX,n=constants.NOTIFY_LOCAL_RSSI,i=constants.DEVICE_INFO_WRITE_ID,s=e+255,o=[t[n],s.toString(16).padStart(2,"0")].join(""),[4,this.deviceAdapter.writeData(o,{writeId:i})]);case 1:return r.sent(),[2]}}))}))},t.prototype.sendHeartbeat=function(){return tslib_1.__awaiter(this,void 0,void 0,(function(){var t,e,n,i;return tslib_1.__generator(this,(function(s){switch(s.label){case 0:return t=constants.DEVICE_INFO_WRITE_PREFIX,e=constants.HEARTBEAT_REQ,n=constants.DEVICE_INFO_WRITE_ID,i=t[e],[4,this.deviceAdapter.writeData(i,{writeId:n})];case 1:return s.sent(),[2]}}))}))},t.prototype.setEbikeDebugFlag=function(t){var e=t.interval;return tslib_1.__awaiter(this,void 0,void 0,(function(){var t,n,i,s;return tslib_1.__generator(this,(function(o){switch(o.label){case 0:return t=constants.DEVICE_INFO_WRITE_PREFIX,n=constants.EBIKE_DEBUG_SET,i=constants.DEVICE_INFO_WRITE_ID,s=[t[n],e.toString(16).padStart(2,"0")].join(""),[4,this.deviceAdapter.writeData(s,{writeId:i})];case 1:return o.sent(),[2]}}))}))},t.prototype.getAdvertisingData=function(){return tslib_1.__awaiter(this,void 0,void 0,(function(){var t=this;return tslib_1.__generator(this,(function(e){return this.reporter.info(constants.GET_ADV_DATA,{}),[2,this.deviceAdapter.writeAndWait4Response(constants.DEVICE_INFO_WRITE_PREFIX[constants.GET_ADV_DATA],constants.GET_ADV_DATA_REPLY,(function(e){if(e.length<20)throw{code:constants.GET_ADV_DATA_REPLY_INVALID};var n=parseInt(e[2],16);if(n)throw{code:constants.GET_ADV_DATA_FAIL,ack:n};var i=parseInt(e[3],16),s=3&i,o={bindState:s,isEncrypted:!!(i>>>3&1),isDynamicRegister:!!(i>>>2&1),moduleVersion:i>>>4};if(s===BindState.CONNECTED||s===BindState.HAS_BOUND){var r=e.slice(4,12).join("").toLocaleLowerCase(),a=e.slice(12,20).join("").toLocaleLowerCase();Object.assign(o,{deviceIdentify:r,deviceUserIdentify:a})}else{var c=e.slice(4,10).join(":"),_=libs_1.hex2str(e.slice(10,20));Object.assign(o,{macAddress:c,productId:_})}return t.reporter.info(constants.GET_ADV_DATA_RESULT,o),o}),{timeout:exports.LLSyncConfig.waitGetAdvDataReplyTime,timeoutCode:constants.WAIT_GET_ADV_DATA_REPLY_TIMEOUT,writeId:constants.DEVICE_INFO_WRITE_ID})]}))}))},t.prototype.checkSecureBindInfo=function(t){if(!/^[A-Z0-9]{10}$/.test(t.productId))return Promise.reject({code:"InvalidParam.LLSync.checkSecureBindInfo.productId",msg:"一机一密验证的 productId 入参有误"});if(!/^[a-fA-F0-9]{12}$/.test(t.mac))return Promise.reject({code:"InvalidParam.LLSync.checkSecureBindInfo.mac",msg:"一机一密验证的 mac 入参有误"});if(!/^[a-fA-F0-9]{32}$/.test(t.sign))return Promise.reject({code:"InvalidParam.LLSync.checkSecureBindInfo.sign",msg:"一机一密验证的 sign 入参有误"});var e=[constants.DEVICE_INFO_WRITE_PREFIX[constants.CHECK_SECURE_BIND_INFO],libs_1.str2hexStr(t.productId),t.mac,t.sign].join("");console.log("[LLSync.checkSecureBindInfo]",e);var n=this._parseDataBeforeConnect(e,constants.CHECK_SECURE_BIND_INFO);return this.deviceAdapter.writeAndWait4Response(n,constants.CHECK_SECURE_BIND_INFO_REPLY,(function(t){if(t.length<3)throw{code:constants.CHECK_SECURE_BIND_INFO_REPLY_INVALID};if(0!==parseInt(t[2],10)){if(t.length<4)throw{code:constants.CHECK_SECURE_BIND_INFO_REPLY_INVALID};var e=parseInt(t[3],10);throw{code:constants.CHECK_SECURE_BIND_INFO_FAIL,detail:{errorCode:e}}}}),{timeout:exports.LLSyncConfig.waitConnectReplyTime,timeoutCode:constants.CHECK_SECURE_BIND_INFO_REPLY_TIMEOUT,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,exports.isHeartbeatResp=function(t){return 4===t.length&&"1B"===t[0]&&"00"===t[1]&&"01"===t[2]&&"00"===t[3]};
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.isHeartbeatResp=exports.LLSyncProtocol=exports.LLSyncConfig=exports.BindState=void 0;var BindState,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;!function(t){t[t.NOT_BOUND=0]="NOT_BOUND",t[t.WAITING_BIND=1]="WAITING_BIND",t[t.HAS_BOUND=2]="HAS_BOUND",t[t.CONNECTED=3]="CONNECTED"}(BindState=exports.BindState||(exports.BindState={})),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,waitGetAdvDataReplyTime: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,"logger",{get:function(){return this.deviceAdapter.llsyncLogger},enumerable:!1,configurable:!0}),t.prototype.requestBindDevice=function(t){var e=t.needUserCheck,n=void 0!==e&&e,i=t.bindLogger;return tslib_1.__awaiter(this,void 0,void 0,(function(){var t,e,s,o,r,a,c,_,d,I,E=this;return tslib_1.__generator(this,(function(p){switch(p.label){case 0:return t=function(){return Math.floor(Date.now()/1e3)},o=!1,r=parseInt(libs_1.gen4BytesIntHex(),16),a=function(t){var e=E.parseDeviceSignResp({payload:t,needUserCheck:n});return{sign:e.sign,deviceName:e.deviceName,nonce:r,timestamp:s+60}},c=function(n){return tslib_1.__awaiter(E,void 0,void 0,(function(){var o,a;return tslib_1.__generator(this,(function(c){switch(c.label){case 0:i.info("recvDynamicRegisterPayload","设备要求动态注册",{timestamp:s,nonce:r,payload:n}),c.label=1;case 1:return c.trys.push([1,3,,4]),[4,this.registerDevice({timestamp:s,nonce:r,payload:n,bindLogger:i})];case 2:return o=c.sent().dynRegResult,s=t(),e=this._parseDataBeforeConnect([constants.DEVICE_INFO_WRITE_PREFIX[constants.SEND_REGISTER_DEVICE_PAYLOAD],libs_1.U8ToHexString(0),libs_1.U8ToHexString(o.length),libs_1.str2hexStr(o),r.toString(16),s.toString(16)].join(""),constants.SEND_REGISTER_DEVICE_PAYLOAD),[3,4];case 3:return a=c.sent(),[2,Promise.reject(a)];case 4:return[2]}}))}))},_=function(){return tslib_1.__awaiter(E,void 0,void 0,(function(){var t,a,c,_;return tslib_1.__generator(this,(function(d){return i.info(o?"sendBindSigReqWithDynReg":"sendBindSigReq",["发送绑定请求",o?"[包含动态注册回复]":null],{timestamp:s,nonce:r,bindDeviceData:e}),t=this.deviceAdapter.writeAndWait4Response(e,[constants.REGISTER_DEVICE_INFO_REPLY,constants.BIND_AUTH],(function(t,e){return{type:e.type===constants.BIND_AUTH?1:2,payload:t}}),{timeout:n?exports.LLSyncConfig.waitGetCheckTimeoutDefaultReplyTime+exports.LLSyncConfig.waitGetCheckTimeoutReplyTime:exports.LLSyncConfig.waitGetRegisterDeviceInfo,timeoutCode:constants.WAIT_BIND_REPLY_TIMEOUT,writeId:constants.DEVICE_INFO_WRITE_ID,logger:i}),n?(a=this.waitUserCheck(),c=a.promise,_=a.abort,[2,Promise.race([c,t.then((function(t){return _(),t})).catch((function(t){return _(),Promise.reject(t)}))])]):[2,t]}))}))},s=t(),e=this._parseDataBeforeConnect(""+constants.DEVICE_INFO_WRITE_PREFIX[constants.TIME_SYNC]+r.toString(16)+s.toString(16),constants.TIME_SYNC),[4,_()];case 1:return 2!==(d=p.sent()).type?[3,4]:(o=!0,[4,c(d.payload)]);case 2:return p.sent(),[4,_()];case 3:if(2===(d=p.sent()).type)throw{code:"DUPLICATE_DYNREG_REQUEST",msg:"设备重复请求动态注册"};p.label=4;case 4:return I=a(d.payload),i.info("recvBindSig","获取到设备绑定签名",I),[2,I]}}))}))},t.prototype.registerDevice=function(t){var e=t.timestamp,n=t.nonce,i=t.payload,s=t.bindLogger;return tslib_1.__awaiter(this,void 0,void 0,(function(){var t,o,r,a,c,_;return tslib_1.__generator(this,(function(d){switch(d.label){case 0:if(!i.length)throw{code:constants.REGISTER_DEVICE_INFO_REPLY_INVALID};t=libs_1.getStrLength(i),o=parseInt(i.slice(2,3).join(""),16),r=libs_1.hex2str(i.slice(3,3+o)),a=libs_1.hex2str(i.slice(3+o,3+t)),d.label=1;case 1:return d.trys.push([1,3,,4]),c={deviceName:r,sign:a,productId:this.deviceAdapter.productId,timestamp:e,nonce:n},[4,s.step("cgiDynamicRegister","向云端请求动态注册",c).wrap(this.deviceAdapter.models.dynamicRegisterDevice(c))];case 2:return[2,{dynRegResult:d.sent().payload}];case 3:throw _=d.sent(),tslib_1.__assign(tslib_1.__assign({},_),{code:constants.REGISTER_DEVICE_ERROR});case 4:return[2]}}))}))},t.prototype.parseDeviceSignResp=function(t){var e=t.payload,n=t.needUserCheck;if(!e.length)throw{code:constants.CONNECT_REPLY_INVALID};if(n){var i=!(libs_1.getStrLength(e)>>15);if(this.logger.info("userCheck.result","用户"+(i?"同意":"拒绝")+"绑定"),!i)throw{code:constants.GET_USER_CHECK_REJECT}}var s=e.slice(2,22).join(""),o=libs_1.hex2str(e.slice(22));return{sign:s.toLocaleLowerCase(),deviceName:o}},t.prototype.waitUserCheck=function(){var t,e=this,n=genPromise(),i=!1,s=function(i){clearTimeout(t),e.logger.info("userCheck.startTimer","等待用户确认,超时时间="+i+"ms"),t=setTimeout((function(){e.logger.info("userCheck.timeout","用户超时未确认,超时时间="+i+"ms"),e.cancelUserCheck("timeout"),n.reject({code:constants.WAIT_USER_CHECK_TIMEOUT})}),i)};this.deviceAdapter.wait4EventResponse(constants.USER_CHECK_TIMEOUT_CALLBACK,(function(t){if(!i){if(!t.length)return e.logger.info("userCheck.invalidTimeoutConfig","设备未提供用户确认超时时间配置,使用默认的超时时间"),s(exports.LLSyncConfig.waitGetCheckTimeoutDefaultReplyTime);var n=1e3*parseInt(t.slice(2).join(""),16);e.logger.info("userCheck.gotTimeoutConfig","用户确认的超时时间为 "+n+"ms"),s(n)}}),{timeout:exports.LLSyncConfig.waitGetCheckTimeoutReplyTime,timeoutHandler:function(){e.logger.info("userCheck.waitTimeoutConfigTimeout","未收到设备发送的用户确认超时时间配置"),s(exports.LLSyncConfig.waitGetCheckTimeoutDefaultReplyTime-exports.LLSyncConfig.waitGetCheckTimeoutReplyTime)}});var o=function(){i=!0,void 0!==t&&clearTimeout(t)};return this._cleanupUserCheckHandleAfterCancel=function(){o(),n.reject(null),e._cleanupUserCheckHandleAfterCancel=noop},{promise:n.promise,abort:o}},t.prototype.cancelUserCheck=function(t){void 0===t&&(t="timeout"),this.logger.info("userCheck.cancel","等待用户确认期间取消绑定, 原因="+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(t){var e=this,n=Math.floor(Date.now()/1e3),i=this._parseDataBeforeConnect(""+constants.DEVICE_INFO_WRITE_PREFIX[constants.CONNECT_AUTH]+n.toString(16)+libs_1.encrypt(n,this.deviceAdapter.localPsk),constants.CONNECT_AUTH);return t.info("sendConnReq","发送 LLSync 连接请求",{timestamp:n,localPsk:this.deviceAdapter.localPsk,payload:i,moduleVersion:this.deviceAdapter.extendInfo.moduleVersion}),this.deviceAdapter.writeAndWait4Response(i,constants.CONNECT_AUTH,(function(i){if(!i.length)throw{code:constants.CONNECT_REPLY_INVALID};var s=i.slice(2,22).join("");return t.info("recvConnSign","接收到设备回复的 LLSync 连接签名",{timestamp:n,localPsk:e.deviceAdapter.localPsk,sign:s}),{sign:s.toLocaleLowerCase(),timestamp:n}}),{timeout:exports.LLSyncConfig.waitConnectReplyTime,timeoutCode:constants.WAIT_CONNECT_REPLY_TIMEOUT,writeId:constants.DEVICE_INFO_WRITE_ID,logger:t})},t.prototype.getDeviceInfo=function(t){return tslib_1.__awaiter(this,void 0,void 0,(function(){return tslib_1.__generator(this,(function(e){return t.info("sendConnResult","[写入] conn_succ 连接成功"),[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,logger:t})]}))}))},t.prototype.getUnbindAuthSign=function(t){var e=this._parseDataBeforeConnect(""+constants.DEVICE_INFO_WRITE_PREFIX[constants.UNBIND_AUTH]+libs_1.encrypt(constants.UNBIND_REQUEST,this.deviceAdapter.localPsk),constants.UNBIND_AUTH);return t.info("sendUnbindReq","[写入] unbind 解绑请求",{localPsk:this.deviceAdapter.localPsk,payload:e}),this.deviceAdapter.writeAndWait4Response(e,constants.UNBIND_AUTH,(function(e){if(!e.length)throw{code:constants.UNBIND_REPLY_INVALID};var n=e.slice(2,22).join("");return t.info("recvUnbindSign","[收到设备回复] unbind 解绑签名",{sign:n}),{sign:n.toLocaleLowerCase()}}),{timeout:exports.LLSyncConfig.waitConnectReplyTime,timeoutCode:constants.WAIT_UNBIND_REPLY_TIMEOUT,writeId:constants.DEVICE_INFO_WRITE_ID,logger:t})},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,deviceErrCode: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,deviceErrCode: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,i;return tslib_1.__generator(this,(function(s){switch(s.label){case 0:return e=libs_1.gen4BytesIntHex(),n=t.step("notifyBindSucc","写入绑定结果",{userIdentity:this.deviceAdapter.userIdentify,localPsk:e}),i=""+constants.DEVICE_INFO_WRITE_PREFIX[constants.BIND_AUTH_SUCCESS]+constants.DEVICE_INFO_WRITE_PREFIX[constants.BIND_AUTH_SUCCESS]+e+this.deviceAdapter.userIdentify,[4,n.wrap(this.deviceAdapter.writeData(this._parseDataBeforeConnect(i,constants.BIND_AUTH_SUCCESS),{writeId:constants.DEVICE_INFO_WRITE_ID}))];case 1:return s.sent(),[4,t.step("cgiSaveLocalPsk","保存 localPsk 到云端",!0).wrapWithoutRetValue(this.deviceAdapter.models.setDeviceConfig({DeviceId:this.deviceAdapter.explorerDeviceId,DeviceKey:exports.LLSyncConfig.BLE_PSK_DEVICE_KEY,DeviceValue:e}))];case 2:return s.sent(),[2,e]}}))}))},t.prototype.reportBindEncryptedSuccess=function(t,e){return tslib_1.__awaiter(this,void 0,void 0,(function(){var n,i,s;return tslib_1.__generator(this,(function(o){switch(o.label){case 0:return n=this.deviceAdapter.encrypt("BindResult0",t),e.info("notifySessionResultBind.bindSucc","[发送] 下发绑定结果 [绑定成功]",{payload: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{ack:parseInt(t[2],16),deviceErrCode: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=o.sent()).ack)throw s={code:constants.RESPONSE_BIND_FAILED,deviceErrCode:i.deviceErrCode},e.error("recvSessionResultBindResp","[收到设备回复] 下发绑定结果: 设备应答失败",s,i),s;return e.info("recvSessionResultBindResp","[收到设备回复] 下发绑定结果: 设备应答成功"),[4,e.step("cgiSaveSecretEncryptKey","保存 SecretEncryptKey 到云端",{secretKey:t}).wrapWithoutRetValue(this.deviceAdapter.models.setDeviceConfig({DeviceId:this.deviceAdapter.explorerDeviceId,DeviceKey:exports.LLSyncConfig.Secret_Encrypt_Key,DeviceValue:t}))];case 2:return o.sent(),[2,i]}}))}))},t.prototype.reportBindError=function(t){void 0===t&&(t="");var e=constants.DEVICE_INFO_WRITE_PREFIX[constants.BIND_AUTH_FAIL]+"01";this.deviceAdapter.write(e,{writeId:constants.DEVICE_INFO_WRITE_ID})},t.prototype.reportBindEncryptedError=function(t,e){var n=this.deviceAdapter.encrypt("BindResult1",t);e.info("notifySessionResultBind.bindFail","[发送] 下发绑定结果 [绑定失败]",{secretKey:t,payload:n}),this.deviceAdapter.write(""+constants.DEVICE_INFO_WRITE_PREFIX[constants.RESPONSE_BIND]+n,{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));return this.deviceAdapter.isEncrypted&&(o=this.deviceAdapter.encrypt(o,this.deviceAdapter.sessionKey,{contentType:"hex"})),this.deviceAdapter.writeData(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));return 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))];return 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),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})}e="fail"===t?constants.DEVICE_INFO_WRITE_PREFIX[constants.UNBIND_RESULT_AUTH_FAIL]:constants.DEVICE_INFO_WRITE_PREFIX[constants.UNBIND_RESULT_AUTH_SUCCESS];return this.deviceAdapter.write(e,{writeId:constants.DEVICE_INFO_WRITE_ID})},t.prototype.notifyAppReady=function(){return tslib_1.__awaiter(this,void 0,void 0,(function(){var t,e,n,i;return tslib_1.__generator(this,(function(s){switch(s.label){case 0:return t=constants.DEVICE_INFO_WRITE_PREFIX,e=constants.APP_IS_READY,n=constants.DEVICE_INFO_WRITE_ID,i=t[e],[4,this.deviceAdapter.writeData(i,{writeId:n})];case 1:return s.sent(),[2]}}))}))},t.prototype.notifyAppOnIOSDevice=function(){return tslib_1.__awaiter(this,void 0,void 0,(function(){var t,e,n,i;return tslib_1.__generator(this,(function(s){switch(s.label){case 0:return t=constants.DEVICE_INFO_WRITE_PREFIX,e=constants.APP_ON_IOS_DEVICE,n=constants.DEVICE_INFO_WRITE_ID,i=t[e],[4,this.deviceAdapter.writeData(i,{writeId:n})];case 1:return s.sent(),[2]}}))}))},t.prototype.notifyLocalRssi=function(t){var e=t.rssi;return tslib_1.__awaiter(this,void 0,void 0,(function(){var t,n,i,s,o;return tslib_1.__generator(this,(function(r){switch(r.label){case 0:return!Number.isSafeInteger(e)||e<-255||e>0?[2,Promise.reject({msg:"RSSI 取值超出范围",code:"INVALID_RSSI_VALUE"})]:(t=constants.DEVICE_INFO_WRITE_PREFIX,n=constants.NOTIFY_LOCAL_RSSI,i=constants.DEVICE_INFO_WRITE_ID,s=e+255,o=[t[n],s.toString(16).padStart(2,"0")].join(""),[4,this.deviceAdapter.writeData(o,{writeId:i})]);case 1:return r.sent(),[2]}}))}))},t.prototype.sendHeartbeat=function(){return tslib_1.__awaiter(this,void 0,void 0,(function(){var t,e,n,i;return tslib_1.__generator(this,(function(s){switch(s.label){case 0:return t=constants.DEVICE_INFO_WRITE_PREFIX,e=constants.HEARTBEAT_REQ,n=constants.DEVICE_INFO_WRITE_ID,i=t[e],[4,this.deviceAdapter.writeData(i,{writeId:n})];case 1:return s.sent(),[2]}}))}))},t.prototype.setEbikeDebugFlag=function(t){var e=t.interval;return tslib_1.__awaiter(this,void 0,void 0,(function(){var t,n,i,s;return tslib_1.__generator(this,(function(o){switch(o.label){case 0:return t=constants.DEVICE_INFO_WRITE_PREFIX,n=constants.EBIKE_DEBUG_SET,i=constants.DEVICE_INFO_WRITE_ID,s=[t[n],e.toString(16).padStart(2,"0")].join(""),[4,this.deviceAdapter.writeData(s,{writeId:i})];case 1:return o.sent(),[2]}}))}))},t.prototype.getAdvertisingData=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.GET_ADV_DATA],constants.GET_ADV_DATA_REPLY,(function(t){if(t.length<20)throw{code:constants.GET_ADV_DATA_REPLY_INVALID};var e=parseInt(t[2],16);if(e)throw{code:constants.GET_ADV_DATA_FAIL,ack:e};var n=parseInt(t[3],16),i=3&n,s={bindState:i,isEncrypted:!!(n>>>3&1),isDynamicRegister:!!(n>>>2&1),moduleVersion:n>>>4};if(i===BindState.CONNECTED||i===BindState.HAS_BOUND){var o=t.slice(4,12).join("").toLocaleLowerCase(),r=t.slice(12,20).join("").toLocaleLowerCase();Object.assign(s,{deviceIdentify:o,deviceUserIdentify:r})}else{var a=t.slice(4,10).join(":"),c=libs_1.hex2str(t.slice(10,20));Object.assign(s,{macAddress:a,productId:c})}return s}),{timeout:exports.LLSyncConfig.waitGetAdvDataReplyTime,timeoutCode:constants.WAIT_GET_ADV_DATA_REPLY_TIMEOUT,writeId:constants.DEVICE_INFO_WRITE_ID})]}))}))},t.prototype.checkSecureBindInfo=function(t){if(!/^[A-Z0-9]{10}$/.test(t.productId))return Promise.reject({code:"InvalidParam.LLSync.checkSecureBindInfo.productId",msg:"一机一密验证的 productId 入参有误"});if(!/^[a-fA-F0-9]{12}$/.test(t.mac))return Promise.reject({code:"InvalidParam.LLSync.checkSecureBindInfo.mac",msg:"一机一密验证的 mac 入参有误"});if(!/^[a-fA-F0-9]{32}$/.test(t.sign))return Promise.reject({code:"InvalidParam.LLSync.checkSecureBindInfo.sign",msg:"一机一密验证的 sign 入参有误"});var e=[constants.DEVICE_INFO_WRITE_PREFIX[constants.CHECK_SECURE_BIND_INFO],libs_1.str2hexStr(t.productId),t.mac,t.sign].join(""),n=this._parseDataBeforeConnect(e,constants.CHECK_SECURE_BIND_INFO);return this.deviceAdapter.writeAndWait4Response(n,constants.CHECK_SECURE_BIND_INFO_REPLY,(function(t){if(t.length<3)throw{code:constants.CHECK_SECURE_BIND_INFO_REPLY_INVALID};var e=parseInt(t[2],10);if(0!==e){if(t.length<4)throw{code:constants.CHECK_SECURE_BIND_INFO_REPLY_INVALID};var n=parseInt(t[3],10);throw{code:constants.CHECK_SECURE_BIND_INFO_FAIL,data:{errorCode:n}}}return{ack:e}}),{timeout:exports.LLSyncConfig.waitConnectReplyTime,timeoutCode:constants.CHECK_SECURE_BIND_INFO_REPLY_TIMEOUT,writeId:constants.DEVICE_INFO_WRITE_ID})},t.prototype._parseDataBeforeConnect=function(t,e){void 0===this.deviceAdapter.extendInfo.moduleVersion&&this.logger.warn("invalidModuleVersion","LLSync 协议版本未知");var n=this.deviceAdapter.extendInfo.moduleVersion||2;this.deviceAdapter.bleVersion=n,this.deviceAdapter.mtu=this.getDefaultMtu();var i=byteUtil.hexString2hexArray(t.slice(2)),s=[i],o=[t.slice(0,2)];return n>0&&o.push(libs_1.U16ToHexString(i.length)),o=o.concat(i),this.deviceAdapter.sliceData(o,s,e)},t.prototype.getDefaultMtu=function(){return 0===this.deviceAdapter.bleVersion?0:20},t}();exports.LLSyncProtocol=LLSyncProtocol,exports.isHeartbeatResp=function(t){return 4===t.length&&"1B"===t[0]&&"00"===t[1]&&"01"===t[2]&&"00"===t[3]};
//# sourceMappingURL=LLSyncProtocol.js.map

@@ -32,15 +32,11 @@ import { AppDevSdk } from 'qcloud-iotexplorer-appdev-sdk';

}): Promise<string>;
getDeviceSecret({ DeviceId, AppNonce, DeviceNonce, DeviceNonceSign, }: {
DeviceId: any;
AppNonce: any;
DeviceNonce: any;
DeviceNonceSign: any;
getLLSyncSecretEncryptKey({ DeviceId, AppNonce, DeviceNonce, DeviceNonceSign, }: {
DeviceId: string;
/** 包含时间戳的 R1 */
AppNonce: string;
/** 包含时间戳的 R2 */
DeviceNonce: string;
/** R2 签名 */
DeviceNonceSign: string;
}): Promise<string>;
getLLsyncSecretEncryptKey({ AppNonce, // APP 的随机数,这里是 R1
DeviceNonce, // 设备的随机数,这里是 R2
DeviceNonceSign, }: {
AppNonce: any;
DeviceNonce: any;
DeviceNonceSign: any;
}): Promise<any>;
setDeviceConfig({ DeviceId, DeviceKey, DeviceValue, isUserConfig, }: {

@@ -47,0 +43,0 @@ DeviceId?: string;

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

"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,s=e.strict,c=void 0!==s&&s;return tslib_1.__awaiter(this,void 0,void 0,(function(){var e,i,n,s;return tslib_1.__generator(this,(function(a){switch(a.label){case 0:e={},a.label=1;case 1:return a.trys.push([1,3,,4]),[4,this.appDevSdk.requestApi(o?"AppGetUserDeviceConfig":"AppGetDeviceConfig",{DeviceId:t,DeviceKey:r})];case 2:return i=a.sent(),e=i.Configs,[3,4];case 3:return n=a.sent(),console.warn("AppGetDeviceConfig fail",n),c?[2,Promise.reject(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.getDevice=function(e){var t=e.DeviceId;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("AppGetDevice",{DeviceId:t})];case 1:return[2,e.sent().Data]}}))}))},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;
"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"),qcloud_iotexplorer_logger_1=tslib_1.__importDefault(require("qcloud-iotexplorer-logger")),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,o=e.isUserConfig,n=void 0!==o&&o,a=e.strict,s=void 0!==a&&a;return tslib_1.__awaiter(this,void 0,void 0,(function(){var e,i,o,a;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(n?"AppGetUserDeviceConfig":"AppGetDeviceConfig",{DeviceId:t,DeviceKey:r})];case 2:return i=c.sent(),e=i.Configs,[3,4];case 3:return o=c.sent(),s?[2,Promise.reject(o)]:(qcloud_iotexplorer_logger_1.default.warn("ble.llsync.modelGetDeviceConfig.cgi",{message:"获取设备 "+t+" 的 DeviceConfig key="+r+" 失败,返回空值",data:o}),"*"===r?[2,{}]:[2,void 0]);case 4:if("*"===r)return[2,e];if("string"==typeof(a=e[r])&&~a.indexOf("{"))try{a=JSON.parse(a)}catch(e){qcloud_iotexplorer_logger_1.default.warn("ble.llsync.modelGetDeviceConfig.parseJson",{message:"解析设备 "+t+" 的 DeviceConfig key="+r+" JSON 失败,返回原始字符串",data:{value:a},error:e})}return[2,a]}}))}))},e.prototype.getDeviceSignAgitated=function(e){var t=e.DeviceId,i=e.Content,r=e.SignMethod,o=void 0===r?"hmacsha256":r,n=e.ContentType,a=void 0===n?"hex":n;return tslib_1.__awaiter(this,void 0,void 0,(function(){var e,r,n;return tslib_1.__generator(this,(function(s){switch(s.label){case 0:return[4,this.appDevSdk.requestApi("AppDeviceCustomSignatureAgitated",{DeviceId:t,Content:i,SignMethod:o,ContentType:a})];case 1:return e=s.sent(),r=e.AgitatedContent,n=qcloud_iotexplorer_appdev_sdk_1.AppDevSdk.utils.hexToStr(r.slice(32)).replace(/\//g,""),[2,tslib_1.__assign(tslib_1.__assign({},e),{Timestamp:Number(n)})]}}))}))},e.prototype.getDeviceSign=function(e){var t=e.DeviceId,i=e.Content,r=e.SignMethod,o=void 0===r?"hmacsha256":r,n=e.ContentType;return tslib_1.__awaiter(this,void 0,void 0,(function(){var e,r;return tslib_1.__generator(this,(function(a){switch(a.label){case 0:return[4,this.appDevSdk.requestApi("AppDeviceCustomSignature",{DeviceId:t,Content:i,SignMethod:o,ContentType:n})];case 1:return e=a.sent(),r=e.Signature,[2,libs_1.xorHalf(libs_1.base64toHEX(r))]}}))}))},e.prototype.getLLSyncSecretEncryptKey=function(e){var t=e.DeviceId,i=e.AppNonce,r=e.DeviceNonce,o=e.DeviceNonceSign;return tslib_1.__awaiter(this,void 0,void 0,(function(){var e,n;return tslib_1.__generator(this,(function(a){switch(a.label){case 0:return[4,this.appDevSdk.requestApi("AppGetLLsyncSecretEncryptKey",{DeviceId:t,AppNonce:i,DeviceNonce:r,DeviceNonceSign:o})];case 1:return e=a.sent(),n=e.SecretEncryptKeyHex,[2,libs_1.xorHalf(n)]}}))}))},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(r){return qcloud_iotexplorer_logger_1.default.error("ble.llsync.modelGetDeviceData.parseJson",{message:"解析设备 "+t+"/"+i+" 的物模型属性 JSON 失败,返回空值",data:{json:e},error:r}),[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.getDevice=function(e){var t=e.DeviceId;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("AppGetDevice",{DeviceId:t})];case 1:return[2,e.sent().Data]}}))}))},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)},[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;
//# sourceMappingURL=Models.js.map

@@ -1,4 +0,4 @@

import { Reporter } from 'qcloud-iotexplorer-appdev-sdk';
import * as utils from '../libs';
import { DeviceAdapter } from 'qcloud-iotexplorer-bluetooth-adapter';
import { FlowLogger } from 'qcloud-iotexplorer-common-libs';
import { LLSyncProtocol } from './LLSync/LLSyncProtocol';

@@ -12,2 +12,3 @@ export interface Wait4EventResponseOptions {

afterBindEvent?: () => any;
logger?: FlowLogger;
}

@@ -34,4 +35,2 @@ export interface WriteAndWait4ResponseOptions extends Wait4EventResponseOptions {

export declare class LLSyncDeviceAdapterBase extends DeviceAdapter {
mtu: number;
reporter: Reporter;
protocol: LLSyncProtocol;

@@ -44,2 +43,4 @@ isEncrypted: boolean;

sessionKey: string;
llsyncLogger: FlowLogger;
protected nonPublicMtu: number;
private writeDataQueue;

@@ -49,4 +50,4 @@ constructor(props: any);

handleBLEMessage(hex: string[]): {};
wait4EventResponse<T>(eventNameOrEventNameList: string | string[], handler: LLSyncEventHandlerFn<T> | LLSyncRawEventHandlerFn<T>, { timeout, timeoutCode, timeoutHandler, wrapSplitDataMode, shouldWrapSplitDataFn, afterBindEvent, }?: Wait4EventResponseOptions): Promise<T>;
writeAndWait4Response<T>(data2Write: any, eventName: string | string[], handler: LLSyncEventHandlerFn<T> | LLSyncRawEventHandlerFn<T>, { timeout, timeoutCode, timeoutHandler, writeId, wrapSplitDataMode, shouldWrapSplitDataFn, }?: WriteAndWait4ResponseOptions): Promise<T>;
wait4EventResponse<T>(eventNameOrEventNameList: string | string[], handler: LLSyncEventHandlerFn<T> | LLSyncRawEventHandlerFn<T>, { timeout, timeoutCode, timeoutHandler, wrapSplitDataMode, shouldWrapSplitDataFn, afterBindEvent, logger, }?: Wait4EventResponseOptions): Promise<T>;
writeAndWait4Response<T>(data2Write: any, eventName: string | string[], handler: LLSyncEventHandlerFn<T> | LLSyncRawEventHandlerFn<T>, { timeout, timeoutCode, timeoutHandler, writeId, wrapSplitDataMode, shouldWrapSplitDataFn, logger, }?: WriteAndWait4ResponseOptions): Promise<T>;
writeMtuResult(type: 'success' | 'fail'): void;

@@ -62,2 +63,4 @@ sliceData(data: any, tmpData: any, mode: any): string[];

}): Promise<void>;
get mtu(): number;
set mtu(mtu: number);
}

@@ -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"),LLSyncProtocol_1=require("./LLSync/LLSyncProtocol"),libs_1=require("../libs"),_a=qcloud_iotexplorer_appdev_sdk_1.AppDevSdk.utils,genPromise=_a.genPromise,delay=_a.delay,envDetect=_a.envDetect,LLSyncDeviceAdapterBase=function(e){function t(t){var r=e.call(this,t)||this;return r.on("message",r.notifyMessage.bind(r)),r.on("disconnect",(function(){r.writeDataQueue.cancelAllTasks({code:10006,errCode:10006,msg:"当前连接已断开",cause:"LLSyncDeviceAdapter disconnect event"})})),r.writeDataQueue=new qcloud_iotexplorer_common_libs_1.CancelableQueue({autoStart:!0,handler:function(e){var t=e.businessData,n=e.isCancelled;return r.writeDataInternal({params:t,isCancelled:n})},onTaskSuccess:function(e){var t=e.businessData;return"function"==typeof t.onSuccess&&t.onSuccess()},onTaskError:function(e,t){var r=t.businessData;return"function"==typeof r.onError&&r.onError(e)}}),r}return tslib_1.__extends(t,e),t.prototype.notifyMessage=function(e){var t=void 0===e?{}:e,r=t.type,n=t.data;if("unknown"!==r)return console.log("check this in notifyMessage",this,{type:r,data:n}),this.emit(r,{type:r,data:n})},t.prototype.handleBLEMessage=function(e){if(this.isEncrypted&&this.authorized&&!LLSyncProtocol_1.isHeartbeatResp(e)){var t=utils.decrypt(e.join(""),this.sessionKey).match(/[\da-f]{2}/gi);if(!t)return console.error("llsync decrypt ble message fail",e.join(""),this.sessionKey),{};e=t}var r=parseInt(e[0],16),n={type:constants.INDICATE_TYPE_MAP[r]||"unknown",data:e.slice(1)};return console.log("Message(hex)",n),n},t.prototype.wait4EventResponse=function(e,t,r){var n=void 0===r?{}:r,i=n.timeout,o=n.timeoutCode,s=n.timeoutHandler,a=n.wrapSplitDataMode,c=n.shouldWrapSplitDataFn,u=void 0===c||c,l=n.afterBindEvent;return tslib_1.__awaiter(this,void 0,void 0,(function(){var r,n,c,d,_,p,f,v=this;return tslib_1.__generator(this,(function(h){switch(h.label){case 0:r=genPromise(),console.log("wait4EventResponse",{eventName:e}),n=!1,c=Array.isArray(e)?e:[e],d=null,_=function(){d&&c.forEach((function(e){v.off(e,d)}))},p=function(e){var i=e.data,o=tslib_1.__rest(e,["data"]);if(!n){n=!0,_();try{u?r.resolve(t(i,o)):r.resolve(t(e))}catch(e){r.reject(e)}}},d=u?utils.wrapEventHandler(p,a):p,c.forEach((function(e){v.on(e,d)})),h.label=1;case 1:return h.trys.push([1,5,,6]),"function"!=typeof l?[3,3]:[4,l()];case 2:h.sent(),h.label=3;case 3:return[4,Promise.race([r.promise,new Promise((function(t,r){i&&i>0&&setTimeout((function(){n||(libs_1.log("Wait for target event: "+e+" timeout"),n=!0,v.off(e,d),"function"==typeof s?(console.log("trigger timeout handler"),t(s())):r({code:o}))}),i)}))])];case 4:return[2,h.sent()];case 5:return f=h.sent(),_(),[2,Promise.reject(f)];case 6:return[2]}}))}))},t.prototype.writeAndWait4Response=function(e,t,r,n){var i=void 0===n?{}:n,o=i.timeout,s=i.timeoutCode,a=i.timeoutHandler,c=i.writeId,u=i.wrapSplitDataMode,l=i.shouldWrapSplitDataFn,d=void 0===l||l;return tslib_1.__awaiter(this,void 0,void 0,(function(){var n=this;return tslib_1.__generator(this,(function(i){return libs_1.log("data2Write:",e),[2,this.wait4EventResponse(t,r,{timeout:o,timeoutCode:s,timeoutHandler:a,wrapSplitDataMode:u,shouldWrapSplitDataFn:d,afterBindEvent:function(){return n.writeData(e,{writeId:c}).catch((function(e){return Promise.reject(tslib_1.__assign({code:constants.BLE_WRITE_ERROR},e))}))}})]}))}))},t.prototype.writeMtuResult=function(e){var t="success"===e?0:65535,r=""+constants.DEVICE_INFO_WRITE_PREFIX[constants.WRITE_MTU_RESULT]+libs_1.U16ToHexString(t);this.write(r,{writeId:constants.DEVICE_INFO_WRITE_ID})},t.prototype.sliceData=function(e,t,r){var n=this.mtu;if(this.isEncrypted&&(n=libs_1.getMtuEncrypted(this.mtu)),!this.mtu||e.join("").length<=2*n)return[e.join("")];var i=e.slice(0,r===constants.GET_STATUS?2:1);return console.log("---head----",i),utils.sliceData(t,{mtu:n,head:i,mode:r})},t.prototype.writeData=function(e,t){var r=this;return void 0===t&&(t={}),new Promise((function(n,i){r.writeDataQueue.push(tslib_1.__assign({data:e,onSuccess:n,onError:i},t))}))},t.prototype.setMtu=function(e){return tslib_1.__awaiter(this,void 0,void 0,(function(){var t;return tslib_1.__generator(this,(function(r){switch(r.label){case 0:return envDetect.isIOS?[2]:[4,this.setBLEMTU({deviceId:this.deviceId,mtu:e})];case 1:return t=r.sent(),this.reporter.info(constants.ANDROID_SET_MTU,{mtu:e,ret:t}),[2,t]}}))}))},t.prototype.writeDataInternal=function(e){var t=e.params,r=e.isCancelled;return tslib_1.__awaiter(this,void 0,void 0,(function(){var e,n,i,o,s,a,c,u,l,d,_;return tslib_1.__generator(this,(function(p){switch(p.label){case 0:e=t.data,n=t.writeId,i=t.waitGap,o=void 0===i?0:i,s=t.retryTime,a=void 0===s?5:s,Array.isArray(e)||(e=[e]),c=0,p.label=1;case 1:return c<e.length?(u=e[c],0!==c&&o>0?[4,delay(o)]:[3,3]):[3,11];case 2:p.sent(),p.label=3;case 3:l=a,p.label=4;case 4:if(r())return[2,Promise.reject({code:constants.WRITE_DATA_CANCEL_ERROR_CODE})];p.label=5;case 5:return p.trys.push([5,7,,9]),[4,this.write(u,{writeId:n})];case 6:return p.sent(),[3,10];case 7:if(d=p.sent(),console.log("--- LLSync core writeData error ---- retry time "+l,d),--l<=0)throw d;return _=o>0?o:100,[4,delay(Math.min(10*_*(a-l),constants.MAX_WRITE_DATA_WAIT_GAP))];case 8:return p.sent(),[3,9];case 9:if(l>0)return[3,4];p.label=10;case 10:return c++,[3,1];case 11:return[2]}}))}))},t}(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"),LLSyncProtocol_1=require("./LLSync/LLSyncProtocol"),libs_1=require("../libs"),_a=qcloud_iotexplorer_appdev_sdk_1.AppDevSdk.utils,genPromise=_a.genPromise,delay=_a.delay,envDetect=_a.envDetect,LLSyncDeviceAdapterBase=function(e){function t(t){var r=e.call(this,t)||this;return r.on("message",r.notifyMessage.bind(r)),r.on("disconnect",(function(){r.writeDataQueue.cancelAllTasks({code:10006,errCode:10006,errno:1509003,errMsg:"no connection",msg:"与蓝牙设备的连接已断开",cause:"LLSyncDeviceAdapter disconnect event"})})),r.writeDataQueue=new qcloud_iotexplorer_common_libs_1.CancelableQueue({autoStart:!0,handler:function(e){var t=e.businessData,n=e.isCancelled;return r.writeDataInternal({params:t,isCancelled:n})},onTaskSuccess:function(e){var t=e.businessData;return"function"==typeof t.onSuccess&&t.onSuccess()},onTaskError:function(e,t){var r=t.businessData;return"function"==typeof r.onError&&r.onError(e)}}),r.llsyncLogger=new qcloud_iotexplorer_common_libs_1.FlowLogger("ble.llsync"),r.llsyncLogger.externalContextGetter=function(){return{productId:r.productId,deviceName:r.deviceName,bleDeviceId:r.deviceId}},r.llsyncLogger.setErrorMsgMap(constants.ERROR_MESSAGES),r}return tslib_1.__extends(t,e),t.prototype.notifyMessage=function(e){var t=void 0===e?{}:e,r=t.type,n=t.data;if("unknown"!==r)return this.emit(r,{type:r,data:n})},t.prototype.handleBLEMessage=function(e){if(this.isEncrypted&&this.authorized&&!LLSyncProtocol_1.isHeartbeatResp(e)){var t=utils.decrypt(e.join(""),this.sessionKey).match(/[\da-f]{2}/gi);if(!t)return this.llsyncLogger.error("decryptLLEventFail","解密 LLEvent 失败",{payload:e.join(""),sessionKey:this.sessionKey}),{};e=t}var r=parseInt(e[0],16);return{type:constants.INDICATE_TYPE_MAP[r]||"unknown",data:e.slice(1)}},t.prototype.wait4EventResponse=function(e,t,r){var n=void 0===r?{}:r,i=n.timeout,o=n.timeoutCode,s=n.timeoutHandler,a=n.wrapSplitDataMode,c=n.shouldWrapSplitDataFn,u=void 0===c||c,l=n.afterBindEvent,d=n.logger;return tslib_1.__awaiter(this,void 0,void 0,(function(){var r,n,c,_,p,f,v,y=this;return tslib_1.__generator(this,(function(h){switch(h.label){case 0:r=genPromise(),n=!1,c=Array.isArray(e)?e:[e],_=null,p=function(){_&&c.forEach((function(e){y.off(e,_)}))},f=function(e){var i=e.data,o=tslib_1.__rest(e,["data"]);if(!n){n=!0,p();try{u?r.resolve(t(i,o)):r.resolve(t(e))}catch(e){r.reject(e)}}},_=u?utils.wrapEventHandler(f,a):f,c.forEach((function(e){y.on(e,_)})),h.label=1;case 1:return h.trys.push([1,5,,6]),"function"!=typeof l?[3,3]:[4,l()];case 2:h.sent(),h.label=3;case 3:return[4,Promise.race([r.promise,new Promise((function(t,r){i&&i>0&&setTimeout((function(){if(!n)if(y.llsyncLogger.debug("waitEventTimeout","等待事件 "+e+" 超时"),n=!0,y.off(e,_),"function"==typeof s)t(s());else{var i={code:o};d&&d.error(o,constants.ERROR_MESSAGES[o],i),r(i)}}),i)}))])];case 4:return[2,h.sent()];case 5:return v=h.sent(),p(),[2,Promise.reject(v)];case 6:return[2]}}))}))},t.prototype.writeAndWait4Response=function(e,t,r,n){var i=void 0===n?{}:n,o=i.timeout,s=i.timeoutCode,a=i.timeoutHandler,c=i.writeId,u=i.wrapSplitDataMode,l=i.shouldWrapSplitDataFn,d=void 0===l||l,_=i.logger;return tslib_1.__awaiter(this,void 0,void 0,(function(){var n=this;return tslib_1.__generator(this,(function(i){return[2,this.wait4EventResponse(t,r,{timeout:o,timeoutCode:s,timeoutHandler:a,wrapSplitDataMode:u,shouldWrapSplitDataFn:d,logger:_,afterBindEvent:function(){return n.writeData(e,{writeId:c}).catch((function(e){return Promise.reject(tslib_1.__assign({code:constants.BLE_WRITE_ERROR},e))}))}})]}))}))},t.prototype.writeMtuResult=function(e){var t="success"===e?0:65535,r=""+constants.DEVICE_INFO_WRITE_PREFIX[constants.WRITE_MTU_RESULT]+libs_1.U16ToHexString(t);this.write(r,{writeId:constants.DEVICE_INFO_WRITE_ID})},t.prototype.sliceData=function(e,t,r){var n=this.mtu;if(this.isEncrypted&&(n=libs_1.getMtuEncrypted(this.mtu)),!this.mtu||e.join("").length<=2*n)return[e.join("")];var i=e.slice(0,r===constants.GET_STATUS?2:1);return utils.sliceData(t,{mtu:n,head:i,mode:r})},t.prototype.writeData=function(e,t){var r=this;return void 0===t&&(t={}),new Promise((function(n,i){r.writeDataQueue.push(tslib_1.__assign({data:e,onSuccess:n,onError:i},t))}))},t.prototype.setMtu=function(e){return tslib_1.__awaiter(this,void 0,void 0,(function(){return tslib_1.__generator(this,(function(t){switch(t.label){case 0:return envDetect.isIOS?[2]:[4,this.llsyncLogger.flow("mtu.negotiate","协商 MTU = "+e+" ",{mtu:e}).wrap(this.setBLEMTU({deviceId:this.deviceId,mtu:e}))];case 1:return[2,t.sent()]}}))}))},t.prototype.writeDataInternal=function(e){var t=e.params,r=e.isCancelled;return tslib_1.__awaiter(this,void 0,void 0,(function(){var e,n,i,o,s,a,c,u,l,d,_;return tslib_1.__generator(this,(function(p){switch(p.label){case 0:e=t.data,n=t.writeId,i=t.waitGap,o=void 0===i?0:i,s=t.retryTime,a=void 0===s?5:s,Array.isArray(e)||(e=[e]),c=0,p.label=1;case 1:return c<e.length?(u=e[c],0!==c&&o>0?[4,delay(o)]:[3,3]):[3,11];case 2:p.sent(),p.label=3;case 3:l=a,p.label=4;case 4:if(r())return[2,Promise.reject({code:constants.WRITE_DATA_CANCEL_ERROR_CODE})];p.label=5;case 5:return p.trys.push([5,7,,9]),[4,this.write(u,{writeId:n})];case 6:return p.sent(),[3,10];case 7:if(d=p.sent(),l<=0)throw this.llsyncLogger.error("write.error","特征值写入失败",d),d;return this.llsyncLogger.warn("write.retry","特征值写入失败, 剩余重试次数 "+l),l--,_=o>0?o:100,[4,delay(Math.min(10*_*(a-l),constants.MAX_WRITE_DATA_WAIT_GAP))];case 8:return p.sent(),[3,9];case 9:if(l>0)return[3,4];p.label=10;case 10:return c++,[3,1];case 11:return[2]}}))}))},Object.defineProperty(t.prototype,"mtu",{get:function(){return this.nonPublicMtu},set:function(e){this.nonPublicMtu!==e&&this.llsyncLogger.info("mtu.change","分片最大长度更新为 "+e),this.nonPublicMtu=e},enumerable:!1,configurable:!0}),t}(qcloud_iotexplorer_bluetooth_adapter_1.DeviceAdapter);exports.LLSyncDeviceAdapterBase=LLSyncDeviceAdapterBase;
//# sourceMappingURL=LLSyncDeviceAdapterBase.js.map

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

export declare const REGISTER_DEVICE_SUCCESS = "REGISTER_DEVICE_SUCCESS";
export declare const WAIT_TIME_SYNC_REPLY_TIMEOUT = "WAIT_TIME_SYNC_REPLY_TIMEOUT";
export declare const WAIT_BIND_REPLY_TIMEOUT = "WAIT_BIND_REPLY_TIMEOUT";
export declare const UNBIND_REQUEST = "UnbindRequest";

@@ -105,2 +105,3 @@ export declare const UNBIND_RESPONSE = "UnbindResponse";

export declare const NOTIFY_BIND_SUCCESS = "NOTIFY_BIND_SUCCESS";
export declare const RESPONSE_BIND_FAILED = "RESPONSE_BIND_FAILED";
export declare const DEV_REQUEST_ENCRYPTED_DYNREG = "DEV_REQUEST_ENCRYPTED_DYNREG";

@@ -274,4 +275,10 @@ export declare const DEV_RECEIVE_ENCRYPTED_DYNREG_RESULT = "DEV_REQUEST_ENCRYPTED_DYNREG";

export declare const WAIT_GET_DEVICE_NAME_REPLY_TIMEOUT = "WAIT_GET_DEVICE_NAME_REPLY_TIMEOUT";
export declare const NOT_AUTHORIZED = "NOT_AUTHORIZED";
export declare const MODULE_VERSION_NOT_SUPPORT = "MODULE_VERSION_NOT_SUPPORT";
export declare const WAIT_GET_UPDATE_INFO_TIMEOUT = "WAIT_GET_UPDATE_INFO_TIMEOUT";
export declare const WAIT_MODULE_UPDATE_TIMEOUT = "WAIT_MODULE_UPDATE_TIMEOUT";
export declare const DOWNLOAD_OTA_FILE_FAIL = "DOWNLOAD_OTA_FILE_FAIL";
export declare const DEVICE_REJECT_OTA_LOW_POWER = "DEVICE_REJECT_OTA_LOW_POWER";
export declare const DEVICE_REJECT_OTA_INVALID_VERSION = "DEVICE_REJECT_OTA_INVALID_VERSION";
export declare const MODULE_DONNOT_ALLOW = "MODULE_DONNOT_ALLOW";
export declare const SET_WIFI_MODE_RESULT_INVALID = "SET_WIFI_MODE_RESULT_INVALID";

@@ -311,2 +318,4 @@ export declare const SET_WIFI_MODE_RESULT_TIMEOUT = "SET_WIFI_MODE_RESULT_TIMEOUT";

MODULE_DONNOT_ALLOW: string;
DEVICE_REJECT_OTA_LOW_POWER: string;
DEVICE_REJECT_OTA_INVALID_VERSION: string;
MODULE_UPDATE_CHECK_FILE_FAIL: string;

@@ -317,5 +326,9 @@ GET_FILE_CRC_ERROR: string;

UPDATE_DATA_REPLAY_TIMEOUT: string;
UPDATE_DATA_RETRY_EXCEEDED: string;
MODULE_UPDATE_FAIL: string;
MODULE_UPDATE_CONNECT_TIMEOUT: string;
BLE_CONNECTION_BREAK: string;
DOWNLOAD_OTA_FILE_FAIL: string;
OTA_INTERNAL_ERROR: string;
BLE_WRITE_ERROR: string;
};

@@ -334,2 +347,6 @@ export declare const BLE_COMBO_ERRORS: {

};
export declare const enum LLSyncOTARejectReason {
LOW_POWER = 2,
INVALID_VERSION = 3
}
export declare const MODULE_UPDATE_REPLAY_CODE_MAP: {

@@ -361,6 +378,9 @@ 0: string;

CHECK_SECURE_BIND_INFO_FAIL: string;
WAIT_TIME_SYNC_REPLY_TIMEOUT: string;
WAIT_BIND_REPLY_TIMEOUT: string;
WAIT_GET_DEVICE_NAME_REPLY_TIMEOUT: string;
GET_DEVICE_NAME_FOR_DYNREG_FAILED: string;
GET_DEVICE_NAME_FAILED: string;
NOT_AUTHORIZED: string;
RESPONSE_BIND_FAILED: string;
MODULE_VERSION_NOT_SUPPORT: string;
GET_OTA_INFO_FAIL: string;

@@ -371,2 +391,4 @@ MODULE_VERSION_IS_UPDATED: string;

MODULE_DONNOT_ALLOW: string;
DEVICE_REJECT_OTA_LOW_POWER: string;
DEVICE_REJECT_OTA_INVALID_VERSION: string;
MODULE_UPDATE_CHECK_FILE_FAIL: string;

@@ -377,5 +399,9 @@ GET_FILE_CRC_ERROR: string;

UPDATE_DATA_REPLAY_TIMEOUT: string;
UPDATE_DATA_RETRY_EXCEEDED: string;
MODULE_UPDATE_FAIL: string;
MODULE_UPDATE_CONNECT_TIMEOUT: string;
BLE_CONNECTION_BREAK: string;
DOWNLOAD_OTA_FILE_FAIL: string;
OTA_INTERNAL_ERROR: string;
BLE_WRITE_ERROR: string;
USER_NEED_LOGIN: string;

@@ -407,3 +433,2 @@ CONTROL_ACTION_ERROR: string;

EVENT_REPLY_ERROR: string;
BLE_WRITE_ERROR: string;
WAIT_GET_DEVICE_INFO_TIMEOUT: string;

@@ -420,3 +445,3 @@ DEVICE_INFO_INVALID: string;

*/
export declare enum PropertyReportReplyResult {
export declare const enum LLSyncReplyResult {
/** 成功 */

@@ -434,3 +459,3 @@ Success = 0,

export declare const WRITE_DATA_CANCEL_ERROR_CODE = "BLE_WRITE_CHARACTERISTIC_CANCELLED";
export declare enum CheckSecureBindInfoErrorCode {
export declare const enum CheckSecureBindInfoErrorCode {
PayloadLengthMismatch = 1,

@@ -447,1 +472,2 @@ PayloadMismatch = 2,

export declare const ATT_MTU_TO_LLSYNC_MTU_DELTA = 3;
export declare const attMtuToLLSyncMtu: (attMtu: number) => number;

@@ -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.ATT_MTU_TO_LLSYNC_MTU_DELTA=exports.MIN_ATT_MTU=exports.CheckSecureBindInfoErrorCode=exports.WRITE_DATA_CANCEL_ERROR_CODE=exports.PropertyReportReplyResult=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.WAIT_GET_DEVICE_NAME_REPLY_TIMEOUT=exports.CHECK_SECURE_BIND_INFO_REPLY_INVALID=exports.CHECK_SECURE_BIND_INFO_REPLY_TIMEOUT=exports.CHECK_SECURE_BIND_INFO_FAIL=exports.GET_ADV_DATA_REPLY_INVALID=exports.GET_ADV_DATA_FAIL=exports.WAIT_GET_ADV_DATA_REPLY_TIMEOUT=exports.PROPERTY_REPORT_API_FAIL=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.DEV_RECEIVE_ENCRYPTED_DYNREG_RESULT=exports.DEV_REQUEST_ENCRYPTED_DYNREG=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_FOR_DYNREG_FAILED=exports.GET_DEVICE_NAME_FAILED=exports.GET_DEVICE_NAME=exports.UNBIND_RESPONSE=exports.UNBIND_REQUEST=exports.WAIT_TIME_SYNC_REPLY_TIMEOUT=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.GET_ADV_DATA_RESULT=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.CHECK_SECURE_BIND_INFO_REQUIRED=exports.CHECK_SECURE_BIND_INFO_REPLY=exports.CHECK_SECURE_BIND_INFO=exports.EBIKE_DEBUG_REPORT=exports.EBIKE_DEBUG_SET=exports.NOTIFY_LOCAL_RSSI=exports.HEARTBEAT_RESP=exports.HEARTBEAT_REQ=exports.GET_ADV_DATA_REPLY=exports.GET_ADV_DATA=exports.APP_ON_IOS_DEVICE=exports.APP_IS_READY=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 PropertyReportReplyResult,CheckSecureBindInfoErrorCode,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.APP_IS_READY="APP_IS_READY",exports.APP_ON_IOS_DEVICE="APP_ON_IOS_DEVICE",exports.GET_ADV_DATA="GET_ADV_DATA",exports.GET_ADV_DATA_REPLY="GET_ADV_DATA_REPLY",exports.HEARTBEAT_REQ="HEARTBEAT_REQ",exports.HEARTBEAT_RESP="HEARTBEAT_RESP",exports.NOTIFY_LOCAL_RSSI="NOTIFY_LOCAL_RSSI",exports.EBIKE_DEBUG_SET="EBIKE_DEBUG_SET",exports.EBIKE_DEBUG_REPORT="EBIKE_DEBUG_REPORT",exports.CHECK_SECURE_BIND_INFO="CHECK_SECURE_BIND_INFO",exports.CHECK_SECURE_BIND_INFO_REPLY="CHECK_SECURE_BIND_INFO_REPLY",exports.CHECK_SECURE_BIND_INFO_REQUIRED="CHECK_SECURE_BIND_INFO_REQUIRED",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.GET_ADV_DATA_RESULT="GET_ADV_DATA_RESULT",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.WAIT_TIME_SYNC_REPLY_TIMEOUT="WAIT_TIME_SYNC_REPLY_TIMEOUT",exports.UNBIND_REQUEST="UnbindRequest",exports.UNBIND_RESPONSE="UnbindResponse",exports.GET_DEVICE_NAME="GET_DEVICE_NAME",exports.GET_DEVICE_NAME_FAILED="GET_DEVICE_NAME_FAILED",exports.GET_DEVICE_NAME_FOR_DYNREG_FAILED="GET_DEVICE_NAME_FOR_DYNREG_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.DEV_REQUEST_ENCRYPTED_DYNREG="DEV_REQUEST_ENCRYPTED_DYNREG",exports.DEV_RECEIVE_ENCRYPTED_DYNREG_RESULT="DEV_REQUEST_ENCRYPTED_DYNREG",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.DEV_REQUEST_ENCRYPTED_DYNREG,26:exports.GET_ADV_DATA_REPLY,27:exports.HEARTBEAT_RESP,29:exports.EBIKE_DEBUG_REPORT,30:exports.CHECK_SECURE_BIND_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.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.APP_IS_READY]="0C",_a[exports.APP_ON_IOS_DEVICE]="0D",_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.DEV_RECEIVE_ENCRYPTED_DYNREG_RESULT]="19",_a[exports.GET_ADV_DATA]="1A",_a[exports.HEARTBEAT_REQ]="1B",_a[exports.NOTIFY_LOCAL_RSSI]="1C",_a[exports.EBIKE_DEBUG_SET]="1D",_a[exports.CHECK_SECURE_BIND_INFO]="1E",_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.APP_IS_READY]="通知设备端小程序已经就绪",_e[exports.APP_ON_IOS_DEVICE]="通知设备端小程序运行于 iOS 环境",_e[exports.GET_ADV_DATA]="获取设备广播信息",_e[exports.HEARTBEAT_REQ]="蓝牙连接心跳",_e[exports.NOTIFY_LOCAL_RSSI]="同步小程序侧 RSSI",_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.PROPERTY_REPORT_API_FAIL="PROPERTY_REPORT_API_FAIL",exports.WAIT_GET_ADV_DATA_REPLY_TIMEOUT="WAIT_GET_ADV_DATA_REPLY_TIMEOUT",exports.GET_ADV_DATA_FAIL="GET_ADV_DATA_FAIL",exports.GET_ADV_DATA_REPLY_INVALID="GET_ADV_DATA_REPLY_INVALID",exports.CHECK_SECURE_BIND_INFO_FAIL="CHECK_SECURE_BIND_INFO_FAIL",exports.CHECK_SECURE_BIND_INFO_REPLY_TIMEOUT="CHECK_SECURE_BIND_INFO_REPLY_TIMEOUT",exports.CHECK_SECURE_BIND_INFO_REPLY_INVALID="CHECK_SECURE_BIND_INFO_REPLY_INVALID",exports.WAIT_GET_DEVICE_NAME_REPLY_TIMEOUT="WAIT_GET_DEVICE_NAME_REPLY_TIMEOUT",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.PROPERTY_REPORT_API_FAIL]="属性上报云端回复失败",_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[exports.WAIT_GET_ADV_DATA_REPLY_TIMEOUT]="等待设备端回复广播信息超时",_l[exports.GET_ADV_DATA_FAIL]="设备端回复获取广播信息失败",_l[exports.CHECK_SECURE_BIND_INFO_REPLY_INVALID]="设备端回复获取广播信息失败",_l[exports.CHECK_SECURE_BIND_INFO_REQUIRED]="未完成一机一密校验",_l[exports.CHECK_SECURE_BIND_INFO_FAIL]="一机一密校验未通过",_l[exports.WAIT_TIME_SYNC_REPLY_TIMEOUT]="等待设备端回复绑定请求超时",_l[exports.WAIT_GET_DEVICE_NAME_REPLY_TIMEOUT]="等待设备端回复加密绑定请求超时",_l[exports.GET_DEVICE_NAME_FOR_DYNREG_FAILED]="设备端回复生成动态注册请求失败",_l[exports.GET_DEVICE_NAME_FAILED]="设备端回复获取设备名失败",_l)),function(_){_[_.Success=0]="Success",_[_.Fail=1]="Fail",_[_.ParseDataFail=2]="ParseDataFail"}(PropertyReportReplyResult=exports.PropertyReportReplyResult||(exports.PropertyReportReplyResult={})),exports.WRITE_DATA_CANCEL_ERROR_CODE="BLE_WRITE_CHARACTERISTIC_CANCELLED",function(_){_[_.PayloadLengthMismatch=1]="PayloadLengthMismatch",_[_.PayloadMismatch=2]="PayloadMismatch",_[_.ForgetToCheck=3]="ForgetToCheck"}(CheckSecureBindInfoErrorCode=exports.CheckSecureBindInfoErrorCode||(exports.CheckSecureBindInfoErrorCode={})),exports.MIN_ATT_MTU=23,exports.ATT_MTU_TO_LLSYNC_MTU_DELTA=3;
"use strict";var _a,_b,_c,_d,_e,_f,_g,_h,_j,_k,_l;Object.defineProperty(exports,"__esModule",{value:!0}),exports.attMtuToLLSyncMtu=exports.ATT_MTU_TO_LLSYNC_MTU_DELTA=exports.MIN_ATT_MTU=exports.WRITE_DATA_CANCEL_ERROR_CODE=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.MODULE_DONNOT_ALLOW=exports.DEVICE_REJECT_OTA_INVALID_VERSION=exports.DEVICE_REJECT_OTA_LOW_POWER=exports.DOWNLOAD_OTA_FILE_FAIL=exports.WAIT_MODULE_UPDATE_TIMEOUT=exports.WAIT_GET_UPDATE_INFO_TIMEOUT=exports.MODULE_VERSION_NOT_SUPPORT=exports.NOT_AUTHORIZED=exports.WAIT_GET_DEVICE_NAME_REPLY_TIMEOUT=exports.CHECK_SECURE_BIND_INFO_REPLY_INVALID=exports.CHECK_SECURE_BIND_INFO_REPLY_TIMEOUT=exports.CHECK_SECURE_BIND_INFO_FAIL=exports.GET_ADV_DATA_REPLY_INVALID=exports.GET_ADV_DATA_FAIL=exports.WAIT_GET_ADV_DATA_REPLY_TIMEOUT=exports.PROPERTY_REPORT_API_FAIL=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.DEV_RECEIVE_ENCRYPTED_DYNREG_RESULT=exports.DEV_REQUEST_ENCRYPTED_DYNREG=exports.RESPONSE_BIND_FAILED=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_FOR_DYNREG_FAILED=exports.GET_DEVICE_NAME_FAILED=exports.GET_DEVICE_NAME=exports.UNBIND_RESPONSE=exports.UNBIND_REQUEST=exports.WAIT_BIND_REPLY_TIMEOUT=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.GET_ADV_DATA_RESULT=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.CHECK_SECURE_BIND_INFO_REQUIRED=exports.CHECK_SECURE_BIND_INFO_REPLY=exports.CHECK_SECURE_BIND_INFO=exports.EBIKE_DEBUG_REPORT=exports.EBIKE_DEBUG_SET=exports.NOTIFY_LOCAL_RSSI=exports.HEARTBEAT_RESP=exports.HEARTBEAT_REQ=exports.GET_ADV_DATA_REPLY=exports.GET_ADV_DATA=exports.APP_ON_IOS_DEVICE=exports.APP_IS_READY=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.APP_IS_READY="APP_IS_READY",exports.APP_ON_IOS_DEVICE="APP_ON_IOS_DEVICE",exports.GET_ADV_DATA="GET_ADV_DATA",exports.GET_ADV_DATA_REPLY="GET_ADV_DATA_REPLY",exports.HEARTBEAT_REQ="HEARTBEAT_REQ",exports.HEARTBEAT_RESP="HEARTBEAT_RESP",exports.NOTIFY_LOCAL_RSSI="NOTIFY_LOCAL_RSSI",exports.EBIKE_DEBUG_SET="EBIKE_DEBUG_SET",exports.EBIKE_DEBUG_REPORT="EBIKE_DEBUG_REPORT",exports.CHECK_SECURE_BIND_INFO="CHECK_SECURE_BIND_INFO",exports.CHECK_SECURE_BIND_INFO_REPLY="CHECK_SECURE_BIND_INFO_REPLY",exports.CHECK_SECURE_BIND_INFO_REQUIRED="CHECK_SECURE_BIND_INFO_REQUIRED",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.GET_ADV_DATA_RESULT="GET_ADV_DATA_RESULT",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.WAIT_BIND_REPLY_TIMEOUT="WAIT_BIND_REPLY_TIMEOUT",exports.UNBIND_REQUEST="UnbindRequest",exports.UNBIND_RESPONSE="UnbindResponse",exports.GET_DEVICE_NAME="GET_DEVICE_NAME",exports.GET_DEVICE_NAME_FAILED="GET_DEVICE_NAME_FAILED",exports.GET_DEVICE_NAME_FOR_DYNREG_FAILED="GET_DEVICE_NAME_FOR_DYNREG_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.RESPONSE_BIND_FAILED="RESPONSE_BIND_FAILED",exports.DEV_REQUEST_ENCRYPTED_DYNREG="DEV_REQUEST_ENCRYPTED_DYNREG",exports.DEV_RECEIVE_ENCRYPTED_DYNREG_RESULT="DEV_REQUEST_ENCRYPTED_DYNREG",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.DEV_REQUEST_ENCRYPTED_DYNREG,26:exports.GET_ADV_DATA_REPLY,27:exports.HEARTBEAT_RESP,29:exports.EBIKE_DEBUG_REPORT,30:exports.CHECK_SECURE_BIND_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.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.APP_IS_READY]="0C",_a[exports.APP_ON_IOS_DEVICE]="0D",_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.DEV_RECEIVE_ENCRYPTED_DYNREG_RESULT]="19",_a[exports.GET_ADV_DATA]="1A",_a[exports.HEARTBEAT_REQ]="1B",_a[exports.NOTIFY_LOCAL_RSSI]="1C",_a[exports.EBIKE_DEBUG_SET]="1D",_a[exports.CHECK_SECURE_BIND_INFO]="1E",_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.APP_IS_READY]="通知设备端小程序已经就绪",_e[exports.APP_ON_IOS_DEVICE]="通知设备端小程序运行于 iOS 环境",_e[exports.GET_ADV_DATA]="获取设备广播信息",_e[exports.HEARTBEAT_REQ]="蓝牙连接心跳",_e[exports.NOTIFY_LOCAL_RSSI]="同步小程序侧 RSSI",_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.PROPERTY_REPORT_API_FAIL="PROPERTY_REPORT_API_FAIL",exports.WAIT_GET_ADV_DATA_REPLY_TIMEOUT="WAIT_GET_ADV_DATA_REPLY_TIMEOUT",exports.GET_ADV_DATA_FAIL="GET_ADV_DATA_FAIL",exports.GET_ADV_DATA_REPLY_INVALID="GET_ADV_DATA_REPLY_INVALID",exports.CHECK_SECURE_BIND_INFO_FAIL="CHECK_SECURE_BIND_INFO_FAIL",exports.CHECK_SECURE_BIND_INFO_REPLY_TIMEOUT="CHECK_SECURE_BIND_INFO_REPLY_TIMEOUT",exports.CHECK_SECURE_BIND_INFO_REPLY_INVALID="CHECK_SECURE_BIND_INFO_REPLY_INVALID",exports.WAIT_GET_DEVICE_NAME_REPLY_TIMEOUT="WAIT_GET_DEVICE_NAME_REPLY_TIMEOUT",exports.NOT_AUTHORIZED="NOT_AUTHORIZED",exports.MODULE_VERSION_NOT_SUPPORT="MODULE_VERSION_NOT_SUPPORT",exports.WAIT_GET_UPDATE_INFO_TIMEOUT="WAIT_GET_UPDATE_INFO_TIMEOUT",exports.WAIT_MODULE_UPDATE_TIMEOUT="WAIT_MODULE_UPDATE_TIMEOUT",exports.DOWNLOAD_OTA_FILE_FAIL="DOWNLOAD_OTA_FILE_FAIL",exports.DEVICE_REJECT_OTA_LOW_POWER="DEVICE_REJECT_OTA_LOW_POWER",exports.DEVICE_REJECT_OTA_INVALID_VERSION="DEVICE_REJECT_OTA_INVALID_VERSION",exports.MODULE_DONNOT_ALLOW="MODULE_DONNOT_ALLOW",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:"用户取消固件升级"})[exports.MODULE_DONNOT_ALLOW]="设备拒绝进行固件升级,可能是当前状态不允许",_h[exports.DEVICE_REJECT_OTA_LOW_POWER]="设备拒绝进行固件升级:设备电量不足",_h[exports.DEVICE_REJECT_OTA_INVALID_VERSION]="设备拒绝进行固件升级:版本号错误",_h.MODULE_UPDATE_CHECK_FILE_FAIL="设备接收到的固件升级文件校验和不一致",_h.GET_FILE_CRC_ERROR="计算固件升级文件CRC失败",_h[exports.WAIT_GET_UPDATE_INFO_TIMEOUT]="等待升级请求应答包超时",_h[exports.WAIT_MODULE_UPDATE_TIMEOUT]="等待设备重启(回连设备)超时",_h.UPDATE_DATA_REPLAY_TIMEOUT="等待升级数据应答包超时",_h.UPDATE_DATA_RETRY_EXCEEDED="发送固件升级文件到设备重试次数达到上限",_h.MODULE_UPDATE_FAIL="设备未升级到目标版本固件",_h.MODULE_UPDATE_CONNECT_TIMEOUT="等待设备重启(回连设备)重试次数达到上限",_h.BLE_CONNECTION_BREAK="发送固件升级文件期间蓝牙连接断开",_h[exports.DOWNLOAD_OTA_FILE_FAIL]="下载固件升级文件失败",_h.OTA_INTERNAL_ERROR="固件升级内部错误",_h.BLE_WRITE_ERROR="蓝牙写入特征值失败",_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:"设备 flash 操作失败",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.PROPERTY_REPORT_API_FAIL]="属性上报云端回复失败",_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[exports.WAIT_GET_ADV_DATA_REPLY_TIMEOUT]="等待设备端回复广播信息超时",_l[exports.GET_ADV_DATA_FAIL]="设备端回复获取广播信息失败",_l[exports.CHECK_SECURE_BIND_INFO_REPLY_INVALID]="设备端回复获取广播信息失败",_l[exports.CHECK_SECURE_BIND_INFO_REQUIRED]="未完成一机一密校验",_l[exports.CHECK_SECURE_BIND_INFO_FAIL]="一机一密校验未通过",_l[exports.WAIT_BIND_REPLY_TIMEOUT]="等待设备应答绑定请求超时",_l[exports.WAIT_GET_DEVICE_NAME_REPLY_TIMEOUT]="等待设备端回复加密绑定请求超时",_l[exports.GET_DEVICE_NAME_FOR_DYNREG_FAILED]="设备端回复生成动态注册请求失败",_l[exports.GET_DEVICE_NAME_FAILED]="设备端回复获取设备名失败",_l[exports.NOT_AUTHORIZED]="未完成连接鉴权",_l[exports.RESPONSE_BIND_FAILED]="写入绑定结果失败",_l[exports.MODULE_VERSION_NOT_SUPPORT]="当前 LLSync 版本不支持此操作",_l)),exports.WRITE_DATA_CANCEL_ERROR_CODE="BLE_WRITE_CHARACTERISTIC_CANCELLED",exports.MIN_ATT_MTU=23,exports.ATT_MTU_TO_LLSYNC_MTU_DELTA=3,exports.attMtuToLLSyncMtu=function(_){return _-exports.ATT_MTU_TO_LLSYNC_MTU_DELTA};
//# sourceMappingURL=constants.js.map

@@ -25,3 +25,2 @@ import { StandardDeviceAdapter, WriteDataParams } from '../base';

_deviceRegistered: boolean;
_characteristicsAutoNotified: boolean;
_services: any[];

@@ -34,2 +33,3 @@ characteristicsMap: {};

_batchWriteInterval: number;
baseLogger: import("qcloud-iotexplorer-logger").InsightLogger;
_getNotifyId({ serviceId }?: {

@@ -78,3 +78,3 @@ serviceId?: string;

}): Promise<void>;
autoNotifyCharacteristics(force?: boolean): Promise<void>;
autoNotifyCharacteristics(): Promise<void>;
_write(value: any, { writeId, serviceId, }?: {

@@ -116,3 +116,3 @@ writeId?: string;

_normalizeError(error: any): any;
cleanup(action?: string): void;
cleanup(action?: string, optional?: boolean): void;
addCleanupTask(action: any, cleanupFn: any): void;

@@ -119,0 +119,0 @@ removeCleanupTask(action: any): void;

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

"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.CRC32=void 0;var qcloud_iotexplorer_appdev_sdk_1=require("qcloud-iotexplorer-appdev-sdk"),byteUtil=qcloud_iotexplorer_appdev_sdk_1.AppDevSdk.utils.byteUtil,CRC32=function(){function t(){this.crcTable=[0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755,2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,936918e3,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117],this.CRC_INITIAL=4294967295,this.value=this.init=this.CRC_INITIAL}return t.prototype.updateValue=function(t,e,i){for(var r=0;r<i;r++){var o=t[e+r]^this.value;this.value=4294967295&(this.crcTable[255&o]^this.value>>>8)}},t.prototype.update=function(t){t instanceof Int8Array?this.updateValue(t,0,t.length):"number"==typeof t&&this.update(new Int8Array([byteUtil.convertNumberToByte(t)]))},t.prototype.getValue=function(){return(-1^this.value)>>>0},t.prototype.reset=function(){this.value=this.init},t}();exports.CRC32=CRC32;
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.CRC32=void 0;var qcloud_iotexplorer_appdev_sdk_1=require("qcloud-iotexplorer-appdev-sdk"),byteUtil=qcloud_iotexplorer_appdev_sdk_1.AppDevSdk.utils.byteUtil,CRC32=function(){function t(){this.crcTable=[0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755,2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,936918e3,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117],this.CRC_INITIAL=4294967295,this.value=this.CRC_INITIAL,this.init=this.CRC_INITIAL}return t.prototype.updateValue=function(t,e,i){for(var r=0;r<i;r++){var o=t[e+r]^this.value;this.value=4294967295&(this.crcTable[255&o]^this.value>>>8)}},t.prototype.update=function(t){t instanceof Int8Array?this.updateValue(t,0,t.length):"number"==typeof t&&this.update(new Int8Array([byteUtil.convertNumberToByte(t)]))},t.prototype.getValue=function(){return(-1^this.value)>>>0},t.prototype.reset=function(){this.value=this.init},t}();exports.CRC32=CRC32;
//# sourceMappingURL=CRC32.js.map

@@ -7,3 +7,2 @@ import { TlvDataType } from 'qcloud-iotexplorer-common-libs';

export declare const xorHalf: (hexStr: string) => string;
export declare const log: any;
export declare function hex2Base64(hex: string): any;

@@ -10,0 +9,0 @@ export declare function base64toHEX(base64: string): any;

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

"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,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,t){var r=qcloud_iotexplorer_appdev_sdk_1.AppDevSdk.utils.CryptoJS;return r.AES.decrypt(r.enc.Base64.stringify(r.enc.Hex.parse(e)),r.enc.Hex.parse(t),{mode:r.mode.ECB,padding:r.pad.Pkcs7}).toString(r.enc.Hex)}function randomBytes(e){for(var t=[],r=0;r<e;r++)t.push(Math.floor(256*Math.random()));return t}function randomBytesHex(e){var t=randomBytes(e);return byteUtil.byteArrayToHex(t)}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 t=e.length/2,r=byteUtil.hexString2hexArray(e.slice(0,t)),o=byteUtil.hexString2hexArray(e.slice(t));return r.map((function(e,t){return byteUtil.byteToHex(parseInt(e,16)^parseInt(o[t],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,t){void 0===t&&(t="default");var r=qcloud_iotexplorer_common_libs_1.getTlvDataParser(t);return function(t){var o=t.type,n=t.data;console.log("event triggered",n);var p=r(n);console.log("----result",p,_this),null!==p&&e({type:o,data:p})}},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;
"use strict";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.xorHalf=void 0;var qcloud_iotexplorer_appdev_sdk_1=require("qcloud-iotexplorer-appdev-sdk"),qcloud_iotexplorer_common_libs_1=require("qcloud-iotexplorer-common-libs"),_a=qcloud_iotexplorer_appdev_sdk_1.AppDevSdk.utils,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,t){var r=qcloud_iotexplorer_appdev_sdk_1.AppDevSdk.utils.CryptoJS;return r.AES.decrypt(r.enc.Base64.stringify(r.enc.Hex.parse(e)),r.enc.Hex.parse(t),{mode:r.mode.ECB,padding:r.pad.Pkcs7}).toString(r.enc.Hex)}function randomBytes(e){for(var t=[],r=0;r<e;r++)t.push(Math.floor(256*Math.random()));return t}function randomBytesHex(e){var t=randomBytes(e);return byteUtil.byteArrayToHex(t)}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 t=e.length/2,r=byteUtil.hexString2hexArray(e.slice(0,t)),o=byteUtil.hexString2hexArray(e.slice(t));return r.map((function(e,t){return byteUtil.byteToHex(parseInt(e,16)^parseInt(o[t],16))})).join("")},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,t){void 0===t&&(t="default");var r=qcloud_iotexplorer_common_libs_1.getTlvDataParser(t);return function(t){var o=t.type,n=t.data,p=r(n);null!==p&&e({type:o,data:p})}},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

@@ -11,3 +11,2 @@ export declare const StandardDeviceAdapter4Mp: (new (...args: any[]) => {

_deviceRegistered: boolean;
_characteristicsAutoNotified: boolean;
_services: any[];

@@ -20,2 +19,3 @@ characteristicsMap: {};

_batchWriteInterval: number;
baseLogger: import("qcloud-iotexplorer-logger").InsightLogger;
_getNotifyId({ serviceId }?: {

@@ -64,3 +64,3 @@ serviceId?: string;

}): Promise<void>;
autoNotifyCharacteristics(force?: boolean): Promise<void>;
autoNotifyCharacteristics(): Promise<void>;
write(data: any, { writeId, serviceId, }?: {

@@ -110,3 +110,3 @@ writeId?: string;

_normalizeError(error: any): any;
cleanup(action?: string): void;
cleanup(action?: string, optional?: boolean): void;
addCleanupTask(action: any, cleanupFn: any): void;

@@ -113,0 +113,0 @@ removeCleanupTask(action: any): void;

{
"name": "qcloud-iotexplorer-bluetooth-adapter-llsync",
"version": "2.3.24",
"version": "2.3.25",
"description": "",

@@ -19,6 +19,6 @@ "main": "lib/index.js",

"iotexplorer-ui-dev-config": "^1.8.6",
"mp-debug": "^0.1.1",
"qcloud-iotexplorer-appdev-sdk": "^2.3.13",
"qcloud-iotexplorer-bluetooth-adapter": "^0.12.20",
"qcloud-iotexplorer-common-libs": "^0.12.15",
"qcloud-iotexplorer-bluetooth-adapter": "^0.12.21",
"qcloud-iotexplorer-common-libs": "^0.12.16",
"qcloud-iotexplorer-logger": "^0.0.11",
"shortid-for-miniprogram": "^2.2.15",

@@ -31,3 +31,3 @@ "spark-md5": "^3.0.1",

},
"gitHead": "d208071b4debbdfa750bbe038599f9151748bf0b"
"gitHead": "572dae28019e882a5527edc60cd2acb8cc61ac1f"
}

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

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