Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

ArtcBleProtocol.js 11KB

1
  1. const _0x4336=['2713','error','hex2buf','slice','fe0100184e2100010a06080012024f4b12063132','RESPONSE_DATA_PROTOBUF_EXCEPTION','33313234','确认Init握手包','warn','log','push','RESPONSE_DATA_STRUCTURE_EXCEPTION','MakeAuthResponse','WaitData','startsWith','fe0100164e2300020a06080012024f4b10001800','MakeInitResponse','2000','数据协议结构异常','1800','substring','FFFF','RESPONSE_DATA_OVER_LENGTH','0a0012','info','numberToHexString','RESPONSE_DATA_CTL_EXCEPTION','RESPONSE_DATA_PROTOCOL_ERROR','7531','length','2712','msg','RESPONSE_DATA_BCC_CHECKOUT_FAIL'];const _0x4d5b=function(_0x433613,_0x4d5b17){_0x433613=_0x433613-0x0;let _0x3f8b01=_0x4336[_0x433613];return _0x3f8b01;};var bleProtocol=require('./ArtcDataUtil.js');import{ArtcBleStatusCodes,ArtcStatusDescriptions}from'./ReturnStatusCode';import _0x499f4d from'./ArtcConsole';function SendDataA2(){return paketData('A2');}function SendDataA3(_0x4b26c8,_0xdab8d5){return paketData('A3'+_0x4b26c8+bleProtocol['numberToHexString'](_0xdab8d5[_0x4d5b('0x1d')]/0x2,0x2,![])+_0xdab8d5);}function SendDataA5(_0x2abcff){return paketData('A5'+bleProtocol[_0x4d5b('0x19')](_0x2abcff[_0x4d5b('0x1d')]/0x2,0x1,!![])+_0x2abcff);}function SendDataA9(_0x382666){return paketData('A9'+bleProtocol[_0x4d5b('0x19')](_0x382666[_0x4d5b('0x1d')]/0x2,0x1,!![])+_0x382666);}function SendDataAA(){return paketData('AA');}function SendDataAC(_0x194158,_0xb5691){return paketData('AC'+_0x194158+bleProtocol[_0x4d5b('0x19')](_0xb5691['length']/0x2,0x2,![])+_0xb5691);}function makeInitResponse(){let _0x346f6c=_0x4d5b('0xf');let _0x209a90=_0x4d5b('0x11');let _0x1cf7c2=new Array();_0x1cf7c2[_0x4d5b('0xa')](bleProtocol[_0x4d5b('0x2')](_0x346f6c));_0x1cf7c2[_0x4d5b('0xa')](bleProtocol['hex2buf'](_0x209a90));return _0x1cf7c2;}function makeAuthResponse(){let _0x1564e1=_0x4d5b('0x4');let _0x494cf6=_0x4d5b('0x6');let _0x17e5a=new Array();_0x17e5a['push'](bleProtocol['hex2buf'](_0x1564e1));_0x17e5a[_0x4d5b('0xa')](bleProtocol['hex2buf'](_0x494cf6));return _0x17e5a;}const frame_Len=0x5c*0x2;const send_Len=0x14*0x2;const ST='33';const pre_Proto=_0x4d5b('0x17');const end_Proto=_0x4d5b('0x13');const bMagic='fe';const bVer='01';const bCmdId=_0x4d5b('0x1c');var SEQ=0x3;function paketData(_0x193c86){let _0x20e123=parseInt(_0x193c86[_0x4d5b('0x1d')]/frame_Len);let _0xc118ed=_0x193c86['length']%frame_Len;let _0x159dbb=new Array();for(let _0x2282d0=0x0;_0x2282d0<_0x20e123;_0x2282d0++){_0x159dbb['push'](_0x193c86['slice'](_0x2282d0*frame_Len,(_0x2282d0+0x1)*frame_Len));}if(_0xc118ed>0x0){_0x159dbb[_0x4d5b('0xa')](_0x193c86[_0x4d5b('0x3')](-_0xc118ed));}let _0x588fb9=new Array();for(let _0x1f4aae=0x0;_0x1f4aae<_0x159dbb['length'];_0x1f4aae++){let _0x43724b=_0x159dbb[_0x1f4aae];let _0x457cde=bleProtocol['numberToHexString'](_0x1f4aae+0x1,0x1,!![]);let _0x3ce3fa='';if(_0x1f4aae==0x0){_0x3ce3fa=bleProtocol[_0x4d5b('0x19')](0x80+_0x159dbb['length']-0x1,0x1,!![]);}else{_0x3ce3fa=bleProtocol[_0x4d5b('0x19')](_0x159dbb[_0x4d5b('0x1d')]-_0x1f4aae-0x1,0x1,!![]);}let _0x34a7bc=bleProtocol[_0x4d5b('0x19')](parseInt(_0x43724b[_0x4d5b('0x1d')]/0x2),0x1,!![]);let _0x4ce4c7=ST+_0x457cde+_0x3ce3fa+_0x34a7bc+_0x43724b;let _0x81ec1c=0x0;for(let _0xb9aede=0x1;_0xb9aede<parseInt(_0x4ce4c7[_0x4d5b('0x1d')]/0x2);_0xb9aede++){let _0x18c60c=parseInt(_0x4ce4c7[_0x4d5b('0x3')](_0xb9aede*0x2,(_0xb9aede+0x1)*0x2),0x10);_0x81ec1c=_0x81ec1c^_0x18c60c;}_0x4ce4c7+=bleProtocol['numberToHexString'](_0x81ec1c,0x1,!![]);_0x588fb9['push'](_0x4ce4c7);}let _0x3b1e27=new Array();for(let _0x7bd1e1=0x0;_0x7bd1e1<_0x588fb9[_0x4d5b('0x1d')];_0x7bd1e1++){let _0x3b5c76=_0x588fb9[_0x7bd1e1];let _0x3055e2=bleProtocol[_0x4d5b('0x19')](parseInt(_0x3b5c76['length']/0x2),0x1,!![]);let _0x5712e7=pre_Proto+_0x3055e2+_0x3b5c76+end_Proto;_0x3b1e27[_0x4d5b('0xa')](_0x5712e7);}let _0x2054fb=new Array();for(let _0x4c8674=0x0;_0x4c8674<_0x3b1e27['length'];_0x4c8674++){let _0x36a435=_0x3b1e27[_0x4c8674];let _0x490d0e=bleProtocol[_0x4d5b('0x19')](parseInt(_0x36a435[_0x4d5b('0x1d')]/0x2)+0x8,0x2,!![]);let _0x538f8e=bleProtocol[_0x4d5b('0x19')](SEQ,0x2,!![]);let _0x28c8e5=bMagic+bVer+_0x490d0e+bCmdId+_0x538f8e+_0x36a435;_0x2054fb['push'](_0x28c8e5);}SEQ++;if(SEQ>0xf){SEQ=0x1;}let _0x10c5e7=new Array();for(let _0x1d1e64=0x0;_0x1d1e64<_0x2054fb[_0x4d5b('0x1d')];_0x1d1e64++){let _0x26d2c3=_0x2054fb[_0x1d1e64];let _0x387fd8=parseInt(_0x26d2c3['length']/send_Len);let _0x40c8e8=_0x26d2c3['length']%send_Len;for(let _0x4b54bb=0x0;_0x4b54bb<_0x387fd8;_0x4b54bb++){let _0x462580=_0x26d2c3['slice'](_0x4b54bb*send_Len,(_0x4b54bb+0x1)*send_Len);_0x10c5e7['push'](bleProtocol['hex2buf'](_0x462580));}if(_0x40c8e8>0x0){let _0x1c0968=_0x26d2c3[_0x4d5b('0x3')](-_0x40c8e8);_0x10c5e7['push'](bleProtocol[_0x4d5b('0x2')](_0x1c0968));}}return _0x10c5e7;}function createDBMTLV(_0x25afec){let _0x333d31=bleProtocol['numberToHexString'](_0x25afec['length']/0x2,0x1);return'80'+_0x333d31+_0x25afec;}var reTLV=function(_0x4c06ff){let _0x19c74a=new Array();let _0x2e203e=parseInt(_0x4c06ff['substring'](0x2,0x4),0x10);let _0x44a6cd=0x4;if(_0x2e203e>0x80){_0x44a6cd=_0x44a6cd+(_0x2e203e-0x80)*0x2;}let _0x19d668=0x1;while(_0x44a6cd<_0x4c06ff['length']){let _0x3b5b1e=parseInt(_0x4c06ff['substring'](_0x44a6cd,_0x44a6cd+0x2),0x10);_0x44a6cd+=0x2;let _0x32067e=parseInt(_0x4c06ff['substring'](_0x44a6cd,_0x44a6cd+0x2),0x10);_0x44a6cd+=0x2;let _0x11d916=_0x4c06ff[_0x4d5b('0x14')](_0x44a6cd,_0x44a6cd+_0x32067e*0x2);_0x19c74a[_0x4d5b('0xa')](_0x11d916);_0x44a6cd+=_0x32067e*0x2;}if(_0x19c74a['length']==0x0){_0x19c74a['push'](_0x4d5b('0x15'));}return _0x19c74a;};function createTLV(_0x182a2e){let _0x1088cf='';for(let _0x507374=0x0;_0x507374<_0x182a2e['length'];_0x507374++){let _0x15bee5=_0x182a2e[_0x507374];let _0x1112e3=_0x507374+0x1;let _0x36ac80=bleProtocol['numberToHexString'](_0x1112e3,0x1,!![]);let _0x375bdb=_0x15bee5[_0x4d5b('0x1d')]/0x2;let _0x5dedc2=bleProtocol[_0x4d5b('0x19')](_0x375bdb,0x1,!![]);_0x1088cf=_0x1088cf+_0x36ac80+_0x5dedc2+_0x15bee5;}let _0x556ae6=_0x1088cf['length']/0x2;let _0x140f6c=0x1;let _0x290c61=bleProtocol[_0x4d5b('0x19')](_0x556ae6,_0x140f6c,!![]);while(_0x556ae6!=parseInt(_0x290c61,0x10)){_0x140f6c++;_0x290c61=bleProtocol['numberToHexString'](_0x556ae6,_0x140f6c,!![]);}if(_0x556ae6>0x80){let _0x4c3463=0x80+_0x290c61['length']/0x2;let _0xf27d99=bleProtocol[_0x4d5b('0x19')](_0x4c3463,0x1,!![]);_0x290c61=_0xf27d99+_0x290c61;}return'80'+_0x290c61+_0x1088cf;}let returnResult=function(_0x113adc,_0xa24cf9,_0x19d06b){this['code']=_0x113adc;this[_0x4d5b('0x1f')]=_0xa24cf9;this['data']=_0x19d06b;};let _responseData='';let _pakectData='';let _packetLength=0x0;let _responseDataLen=0x0;let _pakectArray=[];let _pakectCount=0x0;const clearAnalyticData=function(){_pakectData='';_packetLength=0x0;_pakectArray=[];_pakectCount=0x0;};const analyticData=function(_0x16f3e3){if(_responseData[_0x4d5b('0x1d')]===0x0){if((_0x16f3e3[_0x4d5b('0xe')]('FE01')||_0x16f3e3[_0x4d5b('0xe')]('fe01'))&&_0x16f3e3[_0x4d5b('0x1d')]>=0x10){_responseDataLen=parseInt(_0x16f3e3[_0x4d5b('0x3')](0x4,0x8),0x10)*0x2;_responseData=_0x16f3e3;}else{_0x499f4d[_0x4d5b('0x1')]('接收数据协议结构错误');return new returnResult(ArtcBleStatusCodes['RESPONSE_DATA_PROTOCOL_ERROR'],ArtcStatusDescriptions[_0x4d5b('0x1b')]);}}else{_responseData+=_0x16f3e3;}if(_responseData[_0x4d5b('0x1d')]===_responseDataLen){_pakectData=_responseData;_packetLength=_responseDataLen;_responseData='';_responseDataLen=0x0;if(_pakectArray[_0x4d5b('0x1d')]>=0x0){let _0x22945c=_pakectData['slice'](0x8,0xc);if(_0x22945c==='2711'){_0x499f4d['log']('确认Auth握手包');_pakectData='';_packetLength=0x0;return new returnResult(ArtcBleStatusCodes['MakeAuthResponse'],ArtcStatusDescriptions[_0x4d5b('0xc')]);}else if(_0x22945c===_0x4d5b('0x0')){_0x499f4d[_0x4d5b('0x9')](_0x4d5b('0x7'));_pakectData='';_packetLength=0x0;return new returnResult(ArtcBleStatusCodes[_0x4d5b('0x10')],ArtcStatusDescriptions['MakeInitResponse']);}else if(_0x22945c===_0x4d5b('0x1e')){if(_pakectData[_0x4d5b('0x1d')]<0x24){_pakectData='';_packetLength=0x0;_0x499f4d['error'](_0x4d5b('0x12'));return new returnResult(ArtcBleStatusCodes[_0x4d5b('0xb')],ArtcStatusDescriptions[_0x4d5b('0xb')]);}else{_0x499f4d[_0x4d5b('0x18')]('数据协议结构正常');}let _0x33cf6b=parseInt(_pakectData['slice'](0x16,0x18),0x10);let _0xd7dded;if(_0x33cf6b>=0x80){_0xd7dded=_pakectData[_0x4d5b('0x3')](0x10,0x18)+_pakectData[_0x4d5b('0x3')](0x1a);}else{_0xd7dded=_pakectData['slice'](0x10);}_pakectData='';_packetLength=0x0;if(_0xd7dded['length']<_0x33cf6b*0x2+0x8){_0x499f4d[_0x4d5b('0x1')]('protobuf数据协议长度异常');return new returnResult(ArtcBleStatusCodes[_0x4d5b('0x5')],ArtcStatusDescriptions['RESPONSE_DATA_PROTOBUF_EXCEPTION']);}let _0x47bf67=_0xd7dded['slice'](0x8,0x8+_0x33cf6b*0x2);if(_pakectArray['length']===0x0){_0x499f4d[_0x4d5b('0x8')]('总包数:'+_0x47bf67['slice'](0x4,0x6));let _0x35ae0f=parseInt(_0x47bf67['slice'](0x4,0x6),0x10);_pakectCount=_0x35ae0f-0x80+0x1;if(_pakectCount<=0x0){_0x499f4d[_0x4d5b('0x1')]('CTL字段数据异常');return new returnResult(ArtcBleStatusCodes[_0x4d5b('0x1a')],ArtcStatusDescriptions['RESPONSE_DATA_CTL_EXCEPTION']);}}_pakectArray[_0x4d5b('0xa')](_0x47bf67);if(_pakectArray['length']===_pakectCount){for(let _0x3797d8=0x0;_0x3797d8<_pakectArray['length'];_0x3797d8++){let _0x1a2b9f=0x0;for(let _0x1adbf7=0x2;_0x1adbf7<_pakectArray[_0x3797d8]['length']-0x2;_0x1adbf7+=0x2){let _0x264ba9=parseInt(_pakectArray[_0x3797d8]['slice'](_0x1adbf7,_0x1adbf7+0x2),0x10);_0x1a2b9f^=_0x264ba9;}if(_0x1a2b9f!==parseInt(_pakectArray[_0x3797d8]['slice'](-0x2),0x10)){_0x499f4d['error']('BCC校验失败');_pakectArray=[];_packetLength=0x0;return new returnResult(ArtcBleStatusCodes[_0x4d5b('0x20')],ArtcStatusDescriptions[_0x4d5b('0x20')]);}}let _0x53fda2='';for(let _0x5a41e7=0x0;_0x5a41e7<_pakectArray['length'];_0x5a41e7++){if(_pakectArray[_0x5a41e7]['length']>0xa){_0x53fda2+=_pakectArray[_0x5a41e7]['slice'](0x8,-0x2);}}_pakectArray=[];_packetLength=0x0;return new returnResult(ArtcBleStatusCodes['OK'],ArtcStatusDescriptions['OK'],_0x53fda2);}else{return new returnResult(ArtcBleStatusCodes[_0x4d5b('0xd')],ArtcStatusDescriptions['WaitData']);}}else{_pakectData='';_packetLength=0x0;}}}else if(_pakectData['length']>_packetLength){_pakectData='';_packetLength=0x0;_0x499f4d['error']('接收数据超长');return new returnResult(ArtcBleStatusCodes[_0x4d5b('0x16')],ArtcStatusDescriptions[_0x4d5b('0x16')]);}else{return new returnResult(ArtcBleStatusCodes['WaitData'],ArtcStatusDescriptions[_0x4d5b('0xd')]);}};module['exports']={'createTLV':createTLV,'reTLV':reTLV,'createDBMTLV':createDBMTLV,'paketData':paketData,'makeAuthResponse':makeAuthResponse,'makeInitResponse':makeInitResponse,'SendDataA2':SendDataA2,'SendDataA3':SendDataA3,'SendDataA5':SendDataA5,'SendDataA9':SendDataA9,'SendDataAA':SendDataAA,'SendDataAC':SendDataAC,'analyticData':analyticData,'clearAnalyticData':clearAnalyticData};