|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- "use strict";
- var _wjUtils = require("./wjUtils.js"),
- _wjUtils2 = _interopRequireDefault(_wjUtils);
-
- function _interopRequireDefault(t) {
- return t && t.__esModule ? t : {
- default: t
- }
- }
-
- function encode(t, e, a) {
- var r = _wjUtils2.default.getProtocolType(),
- t = getETCData(t, e, a),
- e = {};
- return 0 == r ? e = encode_GB(t) : 1 == r && (e = encode_WX(t)), e
- }
-
- function getETCData(t, e, a) {
- var r = "",
- r = "A0" == a || "A3" == a || "A4" == a || "82" == a || "C2" == a || "AC" == a ? a + e + (r = getCommand(t)) :
- "A1" == a ? a + (r = getCommand(t)) : t;
- return _wjUtils2.default.showLog("组拼ETCData完毕:", r.length / 2, r), r
- }
-
- function getCommand(t) {
- var e, a = t,
- r = _wjUtils2.default.getDATA_TYPE(),
- t = t.length / 2,
- n = new ArrayBuffer(10),
- s = new DataView(n);
- return 0 == r ? (e = 256 < t ? (s.setInt8(0, 4 + t & 255), s.setInt8(1, 4 + t >> 8 & 255), s.setInt8(2, 128), s
- .setInt8(3, 130), s.setInt8(4, t >> 8 & 255), s.setInt8(5, 255 & t), n.slice(0, 6)) : 128 < t && t <=
- 256 ? (s.setInt8(0, 3 + t & 255), s.setInt8(1, (3 + t & 255) >> 8), s.setInt8(2, 128), s.setInt8(3, 129), s
- .setInt8(4, t), n.slice(0, 5)) : (s.setInt8(0, 2 + t & 255), s.setInt8(1, (2 + t & 255) >> 8), s
- .setInt8(2, 128), s.setInt8(3, t), n.slice(0, 4)), a = _wjUtils2.default.byteArray2hexStr(e) + a) : 1 ==
- r && (s.setInt8(0, 255 & t), s.setInt8(1, t >> 8 & 255), e = n.slice(0, 2), a = _wjUtils2.default
- .byteArray2hexStr(e) + a), a
- }
-
- function encode_GB(t) {
- var e = {},
- a = _wjUtils2.default.getPagLenMax(),
- r = parseInt(t.length / 2 / a),
- n = (t.length / 2 % a != 0 && (r += 1), new ArrayBuffer(10));
- new DataView(n);
- e.serviceCode = 0, e.serviceInfo = "encode ok", e.serviceData = {}, e.serviceData.dataEncode = new Array;
- for (var s = 0; s < r - 1; s++) e.serviceData.dataEncode[s] = t.substr(s * a * 2, 2 * a), e.serviceData.dataEncode[
- s] = getGBFrame(e.serviceData.dataEncode[s], s, r);
- return e.serviceData.dataEncode[r - 1] = t.substring((r - 1) * a * 2), e.serviceData.dataEncode[r - 1] = getGBFrame(
- e.serviceData.dataEncode[r - 1], r - 1, r), e
- }
-
- function encode_WX(t) {
- for (var e = {}, a = _wjUtils2.default.getPagLenMax(), r = parseInt(t.length / 2 / a), n = (t.length / 2 % a != 0 &&
- (r += 1), e.serviceCode = 0, e.serviceInfo = "encode ok", e.serviceData = {}, e.serviceData.dataEncode =
- new Array, 0), n = 0; n < r - 1; n++) e.serviceData.dataEncode[n] = t.substr(n * a * 2, 2 * a), e
- .serviceData.dataEncode[n] = getWXFrame(e.serviceData.dataEncode[n], n, r);
- return e.serviceData.dataEncode[r - 1] = t.substring((r - 1) * a * 2), e.serviceData.dataEncode[r - 1] = getWXFrame(
- e.serviceData.dataEncode[r - 1], r - 1, r), e
- }
-
- function getWXFrame(t, e, a) {
- for (var r = _wjUtils2.default.getCMD_TYPE(), n = t, s = new ArrayBuffer(10), i = new DataView(s), l = "", d = 0,
- t = t.length / 2, u = (0 == e ? i.setInt8(0, 128 + (a - 1 - e & 255)) : i.setInt8(0, a - 1 - e & 255), l =
- _wjUtils2.default.byteArray2hexStr(s).substring(0, 2), n = 2 == r ? "33" + l + _wjUtils2.default
- .byte2hexStr(255 & t) + n : "3301" + l + _wjUtils2.default.byte2hexStr(255 & t) + n, _wjUtils2.default
- .hexStr2byteArray(n)), c = 1; c < u.length; c++) d ^= u[c];
- n += _wjUtils2.default.byte2hexStr(d);
- var o, a = _wjUtils2.default.hexStr2byteArray(n).length;
- return 127 < a ? (i.setInt8(0, 128 + (a % 128 & 255)), i.setInt8(1, a / 128 & 255), l = _wjUtils2.default
- .byteArray2hexStr(s).substring(0, 4), i.setInt8(0, (o = a + 8 + 4 + 3) >> 8 & 255)) : (i.setInt8(0, 255 &
- a), l = _wjUtils2.default.byteArray2hexStr(s).substring(0, 2), i.setInt8(0, (o = a + 8 + 4 + 2) >> 8 & 255)
- ), i.setInt8(1, 255 & o), n = "FE01" + _wjUtils2.default.byteArray2hexStr(s).substring(0, 4) +
- "753100000A0012" + l + n + "1800"
- }
-
- function getGBFrame(t, e, a) {
- var r = _wjUtils2.default.getCMD_TYPE(),
- n = t,
- s = new ArrayBuffer(10),
- i = new DataView(s),
- l = "",
- d = 0,
- t = t.length / 2;
- if (2 == r) {
- 0 == e ? i.setInt8(0, a - 1 + 128) : i.setInt8(0, a - (e + 1) & 255), i.setInt8(1, 255 & t);
- for (var n = "33" + (l = _wjUtils2.default.byteArray2hexStr(s).substring(0, 4)) + n, u = _wjUtils2.default
- .hexStr2byteArray(n), c = 1; c < u.length - 1; c++) d ^= u[c]
- } else {
- 0 == e ? (i.setInt8(0, 128 + (a >> 8 & 255)), i.setInt8(1, 255 & a)) : (i.setInt8(0, e + 1 >> 8 & 255), i
- .setInt8(1, e + 1 & 255)), i.setInt8(2, 255 & t), l = _wjUtils2.default.byteArray2hexStr(s).substring(0,
- 6);
- for (u = _wjUtils2.default.hexStr2byteArray(n = "50" + l + n), c = 0; c < u.length; c++) d ^= u[c]
- }
- return n += _wjUtils2.default.byte2hexStr(d)
- }
- module.exports = {
- encode: encode
- };
|