123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265 |
- var DATA_LENGTH = 190,
- FRAME_LENGTH = 40,
- Protocol_Type = "genvict",
- SEQ = 3,
- SN = 1;
-
- function protocolType() {
- return Protocol_Type
- }
-
- function setProtocolType(a) {
- Protocol_Type = a
- }
-
- function setPackageLen(a) {
- DATA_LENGTH = 2 * (a - 5);
- console.log("packageLen:" + DATA_LENGTH / 2)
- }
-
- function makeAuthResponse() {
- var a = [],
- b = new Uint8Array("FE0100124E2100010A06080012024F4B1200".match(/[\da-f]{2}/gi).map(function(a) {
- return parseInt(a, 16)
- }));
- a.push(b.buffer);
- return a
- }
-
- function makeInitResponse() {
- var a = [],
- b = "FE0100164E2300020A06080012024F4B100018002000".substring(0, FRAME_LENGTH);
- b = new Uint8Array(b.match(/[\da-f]{2}/gi).map(function(a) {
- return parseInt(a, 16)
- }));
- a.push(b.buffer);
- b = new Uint8Array("2000".match(/[\da-f]{2}/gi).map(function(a) {
- return parseInt(a, 16)
- }));
- a.push(b.buffer);
- return a
- }
-
- function makeFrame(a) {
- var b = "" + a,
- c = parseInt(b.length / DATA_LENGTH),
- d = b.length % DATA_LENGTH;
- a = [];
- for (var e = 0; e < c; e++) a.push(b.substring(e * DATA_LENGTH, e * DATA_LENGTH + DATA_LENGTH));
- 0 < d && a.push(b.substring(b.length - d));
- b = [];
- SN++;
- 15 < SN && (SN = 1);
- for (c = 0; c < a.length; c++) {
- d = "";
- d = 0 == c ? numberToHexString(128 + a.length - 1, 1, !0) : numberToHexString(a.length - c - 1, 1, !0);
- d = GVPackData(a[c], d);
- d = wechatPackData(d);
- e = parseInt(d.length / FRAME_LENGTH);
- for (var g = d.length % FRAME_LENGTH, f = 0; f < e; f++) {
- var h = d.substring(f * FRAME_LENGTH,
- f * FRAME_LENGTH + FRAME_LENGTH);
- h = new Uint8Array(h.match(/[\da-f]{2}/gi).map(function(a) {
- return parseInt(a, 16)
- }));
- b.push(h.buffer)
- }
- 0 < g && (d = d.substring(d.length - g), d = new Uint8Array(d.match(/[\da-f]{2}/gi).map(function(a) {
- return parseInt(a, 16)
- })), b.push(d.buffer))
- }
- return b
- }
-
- function makeCosSendData(a, b) {
- b = 0 == parseInt(a.substring(1, 2), 10) ? "80" + tlvPackData(b) : b[0];
- a = "A1" + a + numberToHexString(b.length / 2, 2, !1) + b;
- return makeFrame(a)
- }
-
- function initDeviceSendData() {
- return makeFrame("A2")
- }
-
- function makePiccChannelSendData(a, b) {
- b = 0 == parseInt(a.substring(1, 2), 10) ? "80" + tlvPackData(b) : b[0];
- a = "A3" + a + numberToHexString(b.length / 2, 2, !1) + b;
- return makeFrame(a)
- }
-
- function makeDeviceChannelSendData(a) {
- a = "" + a;
- a = "A5" + numberToHexString(a.length / 2, 1, !1) + a;
- return makeFrame(a)
- }
-
- function makeAuthenChannelSendData(a, b) {
- a += b;
- a = "A6" + numberToHexString(a.length / 2, 2, !1) + a;
- return makeFrame(a)
- }
-
- function makePiccResetSendData() {
- return makeFrame("A900")
- }
-
- function makeEsamResetSendData() {
- return makeFrame("AA")
- }
-
- function makeEsamChannelSendData(a, b) {
- if ("pre" == Protocol_Type) {
- var c = "AC";
- b = 0 == parseInt(a.substring(1, 2), 10) ? "80" + tlvPackData(b) : b[0]
- } else b = "80" + tlvPackData(b), c = "A1", a = "20";
- a = c + a + numberToHexString(b.length / 2, 2, !1) + b;
- return makeFrame(a)
- }
-
- function makeDeviceAuthenSendData(a, b) {
- a = "C1" + a + b;
- a = "AD" + numberToHexString(a.length / 2, 2, !1) + a;
- return makeFrame(a)
- }
-
- function makeSelfDeviceChannelSendData(a) {
- a = "" + a;
- a = "AE" + numberToHexString(a.length / 2, 1, !1) + a;
- return makeFrame(a)
- }
-
- function makeUpdateChannelSendData(a, b) {
- a = null == b || 0 >= b.length ? "" + a : a + b;
- a = "A0" + numberToHexString(a.length / 2, 1, !1) + a;
- return makeFrame(a)
- }
-
- function tlvPackData(a) {
- for (var b = "", c = 0; c < a.length; c++) {
- var d = 256 <= a[c].length / 2 ? "82" + numberToHexString(a[c].length / 2, 2, !1) + a[c] : 128 < a[c].length /
- 2 ? "81" + numberToHexString(a[c].length / 2, 1, !1) + a[c] : numberToHexString(a[c].length / 2, 1, !1) + a[
- c];
- b = b + numberToHexString(c + 1, 1, !1) + d
- }
- a = b.length / 2;
- return 256 <= a ? "82" + numberToHexString(a, 2, !1) + b : 128 < a ? "81" + numberToHexString(a, 1, !1) + b :
- numberToHexString(a, 1, !1) + b
- }
-
- function wechatPackData(a) {
- if (1 > a.length / 256) a = "0A0012" + numberToHexString(a.length / 2, 1, !0) + a + "1800";
- else {
- var b = numberToHexString((a.length % 256 + 256) / 2, 1, !0),
- c = numberToHexString(parseInt(a.length / 256), 1, !1);
- a = "0A0012" + b + c + a + "1800"
- }
- b = numberToHexString(a.length / 2 + 8, 2, !0);
- c = numberToHexString(SEQ, 2, !0);
- SEQ++;
- 15 < SEQ && (SEQ = 1);
- return "FE01" + b + "7531" + c + a
- }
-
- function GVPackData(a, b) {
- var c = numberToHexString(SN, 1, !0);
- a = "" + a;
- var d = numberToHexString(a.length / 2, 1, !0);
- b = "33" + c + b + d + a;
- c = 0;
- for (a = 1; a < b.length / 2; a++) d = parseInt(b.substring(2 * a, 2 * a + 2), 16), c ^= d;
- return b += numberToHexString(c, 1, !0)
- }
-
- function numberToHexString(a, b, c) {
- a = a.toString(16);
- for (var d = a.length; d < 2 * b; d++) a = "0" + a;
- a.length > 2 * b && (a = a.substring(a.length - 2 * b));
- if (!c) {
- b = "";
- for (c = a.length - 2; 0 <= c; c -= 2) b += a.substring(c, c + 2);
- a = b
- }
- return a
- }
-
- function fromCharCode(a) {
- for (var b = "", c = 0; c < a.length / 2; c++) {
- var d = a.substring(2 * c, 2 * c + 2);
- b += String.fromCharCode(parseInt(d, 16))
- }
- return b
- }
-
- function byteArrayToHexStr(a) {
- for (var b = "", c = 0; c < a.length; c++) {
- var d = (a[c] & 255).toString(16);
- d = 1 === d.length ? "0" + d : d;
- b += d
- }
- return b
- }
-
- function hexToString(a) {
- for (var b = "", c = 0; c < a.length; c += 2) b += String.fromCharCode(parseInt(a.substr(c, 2), 16));
- return b
- }
-
- function stringtoHex(a) {
- if ("" === a) return "";
- for (var b = [], c = 0; c < a.length; c++) b.push(a.charCodeAt(c).toString(16));
- return b.join("")
- }
-
- function hexToBytes(a) {
- for (var b = [], c = 0; c < a.length; c += 2) b.push(parseInt(a.substr(c, 2), 16));
- return b
- }
-
- function getTime() {
- var a = new Date,
- b = a.getFullYear(),
- c = a.getMonth() + 1,
- d = a.getDate();
- a.getTime();
- var e = a.getHours(),
- g = a.getMinutes(),
- f = a.getSeconds();
- a = a.getMilliseconds();
- 1 <= c && 9 >= c && (c = "0" + c);
- 0 <= d && 9 >= d && (d = "0" + d);
- 0 <= e && 9 >= e && (e = "0" + e);
- 0 <= g && 9 >= g && (g = "0" + g);
- 0 <= f && 9 >= f && (f = "0" + f);
- return b + "-" + c + "-" + d + " " + e + ":" + g + ":" + f + ":" + a
- }
-
- function consoleLog(a) {
- a = getTime() + "\uff1a" + a + "\n";
- console.log(a)
- }
- module.exports = {
- makeAuthResponse: makeAuthResponse,
- makeInitResponse: makeInitResponse,
- makeFrame: makeFrame,
- makeCosSendData: makeCosSendData,
- initDeviceSendData: initDeviceSendData,
- makePiccChannelSendData: makePiccChannelSendData,
- makeDeviceChannelSendData: makeDeviceChannelSendData,
- makeAuthenChannelSendData: makeAuthenChannelSendData,
- makePiccResetSendData: makePiccResetSendData,
- makeEsamResetSendData: makeEsamResetSendData,
- makeEsamChannelSendData: makeEsamChannelSendData,
- makeDeviceAuthenSendData: makeDeviceAuthenSendData,
- makeSelfDeviceChannelSendData: makeSelfDeviceChannelSendData,
- makeUpdateChannelSendData: makeUpdateChannelSendData,
- numberToHexString: numberToHexString,
- protocolType: protocolType,
- setProtocolType: setProtocolType,
- setPackageLen: setPackageLen,
- fromCharCode: fromCharCode,
- stringtoHex: stringtoHex,
- hexToBytes: hexToBytes,
- hexToString: hexToString,
- byteArrayToHexStr: byteArrayToHexStr,
- consoleLog: consoleLog
- };
|