jooby-codec 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/BinaryBuffer.d.ts +44 -0
- package/dist/BinaryBuffer.js +128 -0
- package/dist/BinaryBuffer.js.map +1 -0
- package/dist/Command.d.ts +42 -0
- package/dist/Command.js +80 -0
- package/dist/Command.js.map +1 -0
- package/dist/CommandBinaryBuffer.d.ts +45 -0
- package/dist/CommandBinaryBuffer.js +135 -0
- package/dist/CommandBinaryBuffer.js.map +1 -0
- package/dist/commands/downlink/CorrectTime2000.d.ts +49 -0
- package/dist/commands/downlink/CorrectTime2000.js +61 -0
- package/dist/commands/downlink/CorrectTime2000.js.map +1 -0
- package/dist/commands/downlink/SetTime2000.d.ts +45 -0
- package/dist/commands/downlink/SetTime2000.js +60 -0
- package/dist/commands/downlink/SetTime2000.js.map +1 -0
- package/dist/commands/downlink/index.d.ts +7 -0
- package/dist/commands/downlink/index.js +8 -0
- package/dist/commands/downlink/index.js.map +1 -0
- package/dist/commands/index.d.ts +7 -0
- package/dist/commands/index.js +8 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/commands/uplink/CorrectTime2000.d.ts +37 -0
- package/dist/commands/uplink/CorrectTime2000.js +53 -0
- package/dist/commands/uplink/CorrectTime2000.js.map +1 -0
- package/dist/commands/uplink/DataDayMul.d.ts +20 -0
- package/dist/commands/uplink/DataDayMul.js +41 -0
- package/dist/commands/uplink/DataDayMul.js.map +1 -0
- package/dist/commands/uplink/DataHourMul.d.ts +11 -0
- package/dist/commands/uplink/DataHourMul.js +77 -0
- package/dist/commands/uplink/DataHourMul.js.map +1 -0
- package/dist/commands/uplink/ExAbsDayMul.d.ts +11 -0
- package/dist/commands/uplink/ExAbsDayMul.js +60 -0
- package/dist/commands/uplink/ExAbsDayMul.js.map +1 -0
- package/dist/commands/uplink/ExAbsHourMul.d.ts +11 -0
- package/dist/commands/uplink/ExAbsHourMul.js +92 -0
- package/dist/commands/uplink/ExAbsHourMul.js.map +1 -0
- package/dist/commands/uplink/GetCurrentMul.d.ts +24 -0
- package/dist/commands/uplink/GetCurrentMul.js +35 -0
- package/dist/commands/uplink/GetCurrentMul.js.map +1 -0
- package/dist/commands/uplink/NewEvent.d.ts +18 -0
- package/dist/commands/uplink/NewEvent.js +101 -0
- package/dist/commands/uplink/NewEvent.js.map +1 -0
- package/dist/commands/uplink/SetTime2000.d.ts +37 -0
- package/dist/commands/uplink/SetTime2000.js +53 -0
- package/dist/commands/uplink/SetTime2000.js.map +1 -0
- package/dist/commands/uplink/Time2000.d.ts +41 -0
- package/dist/commands/uplink/Time2000.js +56 -0
- package/dist/commands/uplink/Time2000.js.map +1 -0
- package/dist/commands/uplink/index.d.ts +13 -0
- package/dist/commands/uplink/index.js +14 -0
- package/dist/commands/uplink/index.js.map +1 -0
- package/dist/constants/events.d.ts +16 -0
- package/dist/constants/events.js +17 -0
- package/dist/constants/events.js.map +1 -0
- package/dist/constants/general.d.ts +1 -0
- package/dist/constants/general.js +2 -0
- package/dist/constants/general.js.map +1 -0
- package/dist/constants/index.d.ts +1 -0
- package/dist/constants/index.js +2 -0
- package/dist/constants/index.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -0
- package/dist/utils/getBitArrayFromNumber.d.ts +14 -0
- package/dist/utils/getBitArrayFromNumber.js +15 -0
- package/dist/utils/getBitArrayFromNumber.js.map +1 -0
- package/dist/utils/getBytesFromHex.d.ts +11 -0
- package/dist/utils/getBytesFromHex.js +23 -0
- package/dist/utils/getBytesFromHex.js.map +1 -0
- package/dist/utils/getHexFromBytes.d.ts +27 -0
- package/dist/utils/getHexFromBytes.js +22 -0
- package/dist/utils/getHexFromBytes.js.map +1 -0
- package/dist/utils/getIntFromBitString.d.ts +6 -0
- package/dist/utils/getIntFromBitString.js +6 -0
- package/dist/utils/getIntFromBitString.js.map +1 -0
- package/dist/utils/header.d.ts +13 -0
- package/dist/utils/header.js +62 -0
- package/dist/utils/header.js.map +1 -0
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.js +3 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/message.d.ts +27 -0
- package/dist/utils/message.js +101 -0
- package/dist/utils/message.js.map +1 -0
- package/dist/utils/roundNumber.d.ts +2 -0
- package/dist/utils/roundNumber.js +5 -0
- package/dist/utils/roundNumber.js.map +1 -0
- package/dist/utils/time.d.ts +14 -0
- package/dist/utils/time.js +17 -0
- package/dist/utils/time.js.map +1 -0
- package/package.json +78 -0
- package/readme.md +145 -0
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import Command from '../../Command.js';
|
|
2
|
+
import CommandBinaryBuffer from '../../CommandBinaryBuffer.js';
|
|
3
|
+
import * as events from '../../constants/events.js';
|
|
4
|
+
const COMMAND_ID = 0x15;
|
|
5
|
+
const COMMAND_TITLE = 'NEW_EVENT';
|
|
6
|
+
// connect/disconnect events are biggest
|
|
7
|
+
const COMMAND_BODY_MAX_SIZE = 6;
|
|
8
|
+
class NewEvent extends Command {
|
|
9
|
+
constructor(parameters) {
|
|
10
|
+
super();
|
|
11
|
+
this.parameters = parameters;
|
|
12
|
+
}
|
|
13
|
+
static fromBytes(data) {
|
|
14
|
+
const buffer = new CommandBinaryBuffer(data);
|
|
15
|
+
const id = buffer.getUint8();
|
|
16
|
+
const sequenceNumber = buffer.getUint8();
|
|
17
|
+
let eventData;
|
|
18
|
+
switch (id) {
|
|
19
|
+
case events.MAGNET_ON:
|
|
20
|
+
case events.MAGNET_OFF:
|
|
21
|
+
case events.ACTIVATE:
|
|
22
|
+
case events.DEACTIVATE:
|
|
23
|
+
case events.CAN_OFF:
|
|
24
|
+
case events.INSERT:
|
|
25
|
+
case events.REMOVE:
|
|
26
|
+
case events.COUNTER_OVER:
|
|
27
|
+
case events.EV_OPTOLOW:
|
|
28
|
+
case events.EV_OPTOFLASH:
|
|
29
|
+
case events.EV_REJOIN:
|
|
30
|
+
eventData = { time: buffer.getUint8() };
|
|
31
|
+
break;
|
|
32
|
+
case events.BATTERY_ALARM:
|
|
33
|
+
eventData = { voltage: buffer.getUint8() };
|
|
34
|
+
break;
|
|
35
|
+
case events.ACTIVATE_MTX:
|
|
36
|
+
eventData = { time: buffer.getUint8(), mtxAddress: buffer.getUint8() };
|
|
37
|
+
break;
|
|
38
|
+
case events.CONNECT:
|
|
39
|
+
case events.DISCONNECT:
|
|
40
|
+
eventData = { channel: buffer.getUint8(), value: buffer.getExtendedValue() };
|
|
41
|
+
break;
|
|
42
|
+
case events.EV_MTX:
|
|
43
|
+
eventData = { status1: buffer.getUint8(), status2: buffer.getUint8() };
|
|
44
|
+
break;
|
|
45
|
+
default:
|
|
46
|
+
throw new Error(`${this.getId()}: event ${id} not supported`);
|
|
47
|
+
}
|
|
48
|
+
return new NewEvent({ id, sequenceNumber, data: eventData });
|
|
49
|
+
}
|
|
50
|
+
toBytes() {
|
|
51
|
+
const { id, sequenceNumber, data } = this.parameters;
|
|
52
|
+
const buffer = new CommandBinaryBuffer(COMMAND_BODY_MAX_SIZE, false);
|
|
53
|
+
let eventData;
|
|
54
|
+
buffer.setUint8(id);
|
|
55
|
+
buffer.setUint8(sequenceNumber);
|
|
56
|
+
switch (id) {
|
|
57
|
+
case events.MAGNET_ON:
|
|
58
|
+
case events.MAGNET_OFF:
|
|
59
|
+
case events.ACTIVATE:
|
|
60
|
+
case events.DEACTIVATE:
|
|
61
|
+
case events.CAN_OFF:
|
|
62
|
+
case events.INSERT:
|
|
63
|
+
case events.REMOVE:
|
|
64
|
+
case events.COUNTER_OVER:
|
|
65
|
+
case events.EV_OPTOLOW:
|
|
66
|
+
case events.EV_OPTOFLASH:
|
|
67
|
+
case events.EV_REJOIN:
|
|
68
|
+
eventData = data;
|
|
69
|
+
buffer.setUint8(eventData.time);
|
|
70
|
+
break;
|
|
71
|
+
case events.BATTERY_ALARM:
|
|
72
|
+
eventData = data;
|
|
73
|
+
buffer.setUint8(eventData.voltage);
|
|
74
|
+
break;
|
|
75
|
+
case events.ACTIVATE_MTX:
|
|
76
|
+
eventData = data;
|
|
77
|
+
buffer.setUint8(eventData.time);
|
|
78
|
+
buffer.setUint8(eventData.mtxAddress);
|
|
79
|
+
break;
|
|
80
|
+
case events.CONNECT:
|
|
81
|
+
case events.DISCONNECT:
|
|
82
|
+
eventData = data;
|
|
83
|
+
buffer.setUint8(eventData.channel);
|
|
84
|
+
buffer.setExtendedValue(eventData.value);
|
|
85
|
+
break;
|
|
86
|
+
case events.EV_MTX:
|
|
87
|
+
eventData = data;
|
|
88
|
+
buffer.setUint8(eventData.status1);
|
|
89
|
+
buffer.setExtendedValue(eventData.status2);
|
|
90
|
+
break;
|
|
91
|
+
default:
|
|
92
|
+
throw new Error(`${NewEvent.getId()}: event ${id} not supported`);
|
|
93
|
+
}
|
|
94
|
+
return Command.toBytes(COMMAND_ID, buffer.getBytesToOffset());
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
NewEvent.id = COMMAND_ID;
|
|
98
|
+
NewEvent.isUplink = true;
|
|
99
|
+
NewEvent.title = COMMAND_TITLE;
|
|
100
|
+
export default NewEvent;
|
|
101
|
+
//# sourceMappingURL=NewEvent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NewEvent.js","sourceRoot":"","sources":["../../../src/commands/uplink/NewEvent.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import Command from '../../Command.js';
|
|
2
|
+
/**
|
|
3
|
+
* SetTime2000 command parameters
|
|
4
|
+
*
|
|
5
|
+
* @example
|
|
6
|
+
* {status: 1}
|
|
7
|
+
*/
|
|
8
|
+
interface IUplinkSetTime2000Parameters {
|
|
9
|
+
status: number;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Uplink command.
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```js
|
|
16
|
+
* import SetTime2000 from 'jooby-codec/commands/uplink/SetTime2000';
|
|
17
|
+
*
|
|
18
|
+
* // success
|
|
19
|
+
* const parameters = {status: 1};
|
|
20
|
+
* const command = new SetTime2000(parameters);
|
|
21
|
+
*
|
|
22
|
+
* // output command binary in hex representation
|
|
23
|
+
* console.log(command.toHex());
|
|
24
|
+
* // 02 01 01
|
|
25
|
+
* ```
|
|
26
|
+
* [Command format documentation](https://github.com/jooby-dev/jooby-docs/blob/main/docs/commands/SetTime2000.md#response)
|
|
27
|
+
*/
|
|
28
|
+
declare class SetTime2000 extends Command {
|
|
29
|
+
parameters: IUplinkSetTime2000Parameters;
|
|
30
|
+
constructor(parameters: IUplinkSetTime2000Parameters);
|
|
31
|
+
static readonly id = 2;
|
|
32
|
+
static readonly isUplink = true;
|
|
33
|
+
static readonly title = "SET_TIME_2000";
|
|
34
|
+
static fromBytes(data: Uint8Array): SetTime2000;
|
|
35
|
+
toBytes(): Uint8Array;
|
|
36
|
+
}
|
|
37
|
+
export default SetTime2000;
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import Command from '../../Command.js';
|
|
2
|
+
import BinaryBuffer from '../../BinaryBuffer.js';
|
|
3
|
+
const COMMAND_ID = 0x02;
|
|
4
|
+
const COMMAND_TITLE = 'SET_TIME_2000';
|
|
5
|
+
const COMMAND_BODY_SIZE = 1;
|
|
6
|
+
/**
|
|
7
|
+
* Uplink command.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```js
|
|
11
|
+
* import SetTime2000 from 'jooby-codec/commands/uplink/SetTime2000';
|
|
12
|
+
*
|
|
13
|
+
* // success
|
|
14
|
+
* const parameters = {status: 1};
|
|
15
|
+
* const command = new SetTime2000(parameters);
|
|
16
|
+
*
|
|
17
|
+
* // output command binary in hex representation
|
|
18
|
+
* console.log(command.toHex());
|
|
19
|
+
* // 02 01 01
|
|
20
|
+
* ```
|
|
21
|
+
* [Command format documentation](https://github.com/jooby-dev/jooby-docs/blob/main/docs/commands/SetTime2000.md#response)
|
|
22
|
+
*/
|
|
23
|
+
class SetTime2000 extends Command {
|
|
24
|
+
constructor(parameters) {
|
|
25
|
+
super();
|
|
26
|
+
this.parameters = parameters;
|
|
27
|
+
}
|
|
28
|
+
// data - only body (without header)
|
|
29
|
+
static fromBytes(data) {
|
|
30
|
+
if (data.byteLength !== COMMAND_BODY_SIZE) {
|
|
31
|
+
throw new Error(`${this.getName()}. Wrong buffer size: ${data.byteLength}.`);
|
|
32
|
+
}
|
|
33
|
+
const buffer = new BinaryBuffer(data, false);
|
|
34
|
+
const parameters = {
|
|
35
|
+
status: buffer.getUint8()
|
|
36
|
+
};
|
|
37
|
+
if (!buffer.isEmpty) {
|
|
38
|
+
throw new Error(`${this.getName()}. BinaryBuffer is not empty.`);
|
|
39
|
+
}
|
|
40
|
+
return new SetTime2000(parameters);
|
|
41
|
+
}
|
|
42
|
+
toBytes() {
|
|
43
|
+
const { status } = this.parameters;
|
|
44
|
+
const buffer = new BinaryBuffer(COMMAND_BODY_SIZE, false);
|
|
45
|
+
buffer.setUint8(status);
|
|
46
|
+
return Command.toBytes(COMMAND_ID, buffer.toUint8Array());
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
SetTime2000.id = COMMAND_ID;
|
|
50
|
+
SetTime2000.isUplink = true;
|
|
51
|
+
SetTime2000.title = COMMAND_TITLE;
|
|
52
|
+
export default SetTime2000;
|
|
53
|
+
//# sourceMappingURL=SetTime2000.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SetTime2000.js","sourceRoot":"","sources":["../../../src/commands/uplink/SetTime2000.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,kBAAkB,CAAC;AAEvC,OAAO,YAAY,MAAM,uBAAuB,CAAC;AAGjD,MAAM,UAAU,GAAG,IAAI,CAAC;AACxB,MAAM,aAAa,GAAG,eAAe,CAAC;AACtC,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAc5B;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAY,SAAQ,OAAO;IAC7B,YAAqB,UAAwC;QACzD,KAAK,EAAE,CAAC;QADS,eAAU,GAAV,UAAU,CAA8B;IAE7D,CAAC;IAQD,oCAAoC;IACpC,MAAM,CAAC,SAAS,CAAG,IAAgB;QAC/B,IAAK,IAAI,CAAC,UAAU,KAAK,iBAAiB,EAAG;YACzC,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,wBAAwB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;SAChF;QAED,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAE7C,MAAM,UAAU,GAAG;YACf,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE;SAC5B,CAAC;QAEF,IAAK,CAAC,MAAM,CAAC,OAAO,EAAG;YACnB,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,8BAA8B,CAAC,CAAC;SACpE;QAED,OAAO,IAAI,WAAW,CAAC,UAAU,CAAC,CAAC;IACvC,CAAC;IAED,OAAO;QACH,MAAM,EAAC,MAAM,EAAC,GAAG,IAAI,CAAC,UAAU,CAAC;QACjC,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;QAE1D,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAExB,OAAO,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;IAC9D,CAAC;;AAhCe,cAAE,GAAG,UAAU,CAAC;AAEhB,oBAAQ,GAAG,IAAI,CAAC;AAEhB,iBAAK,GAAG,aAAa,CAAC;AAgC1C,eAAe,WAAW,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import Command from '../../Command.js';
|
|
2
|
+
/**
|
|
3
|
+
* Time2000 command parameters
|
|
4
|
+
*
|
|
5
|
+
* @example
|
|
6
|
+
* // time: 2023-04-03T14:01:17.000Z
|
|
7
|
+
* {sequenceNumber: 77, time: 733845677}
|
|
8
|
+
*/
|
|
9
|
+
interface ITime2000Parameters {
|
|
10
|
+
/** sequence Number */
|
|
11
|
+
sequenceNumber: number;
|
|
12
|
+
/** seconds since year 2000 */
|
|
13
|
+
time: number;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Uplink command.
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```js
|
|
20
|
+
* import Time2000 from 'jooby-codec/commands/uplink/Time2000';
|
|
21
|
+
*
|
|
22
|
+
* // time: 2023-04-03T14:01:17.000Z
|
|
23
|
+
* const parameters = {sequenceNumber: 77, time: 733845677};
|
|
24
|
+
* const command = new Time2000(parameters);
|
|
25
|
+
*
|
|
26
|
+
* // output command binary in hex representation
|
|
27
|
+
* console.log(command.toHex());
|
|
28
|
+
* // 09 05 4d 2b bd 98 ad
|
|
29
|
+
* ```
|
|
30
|
+
* [Command format documentation](https://github.com/jooby-dev/jooby-docs/blob/main/docs/commands/uplink/Time2000.md)
|
|
31
|
+
*/
|
|
32
|
+
declare class Time2000 extends Command {
|
|
33
|
+
parameters: ITime2000Parameters;
|
|
34
|
+
constructor(parameters: ITime2000Parameters);
|
|
35
|
+
static readonly id = 9;
|
|
36
|
+
static readonly isUplink = true;
|
|
37
|
+
static readonly title = "TIME_2000";
|
|
38
|
+
static fromBytes(data: Uint8Array): Time2000;
|
|
39
|
+
toBytes(): Uint8Array;
|
|
40
|
+
}
|
|
41
|
+
export default Time2000;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import Command from '../../Command.js';
|
|
2
|
+
import BinaryBuffer from '../../BinaryBuffer.js';
|
|
3
|
+
const COMMAND_ID = 0x09;
|
|
4
|
+
const COMMAND_TITLE = 'TIME_2000';
|
|
5
|
+
const COMMAND_BODY_SIZE = 5;
|
|
6
|
+
/**
|
|
7
|
+
* Uplink command.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```js
|
|
11
|
+
* import Time2000 from 'jooby-codec/commands/uplink/Time2000';
|
|
12
|
+
*
|
|
13
|
+
* // time: 2023-04-03T14:01:17.000Z
|
|
14
|
+
* const parameters = {sequenceNumber: 77, time: 733845677};
|
|
15
|
+
* const command = new Time2000(parameters);
|
|
16
|
+
*
|
|
17
|
+
* // output command binary in hex representation
|
|
18
|
+
* console.log(command.toHex());
|
|
19
|
+
* // 09 05 4d 2b bd 98 ad
|
|
20
|
+
* ```
|
|
21
|
+
* [Command format documentation](https://github.com/jooby-dev/jooby-docs/blob/main/docs/commands/uplink/Time2000.md)
|
|
22
|
+
*/
|
|
23
|
+
class Time2000 extends Command {
|
|
24
|
+
constructor(parameters) {
|
|
25
|
+
super();
|
|
26
|
+
this.parameters = parameters;
|
|
27
|
+
}
|
|
28
|
+
// data - only body (without header)
|
|
29
|
+
static fromBytes(data) {
|
|
30
|
+
if (data.byteLength !== COMMAND_BODY_SIZE) {
|
|
31
|
+
throw new Error(`${this.getName()}. Wrong buffer size: ${data.byteLength}.`);
|
|
32
|
+
}
|
|
33
|
+
const buffer = new BinaryBuffer(data, false);
|
|
34
|
+
const parameters = {
|
|
35
|
+
sequenceNumber: buffer.getUint8(),
|
|
36
|
+
time: buffer.getUint32(false)
|
|
37
|
+
};
|
|
38
|
+
if (!buffer.isEmpty) {
|
|
39
|
+
throw new Error(`${this.getName()}. BinaryBuffer is not empty.`);
|
|
40
|
+
}
|
|
41
|
+
return new Time2000(parameters);
|
|
42
|
+
}
|
|
43
|
+
// returns full message - header with body
|
|
44
|
+
toBytes() {
|
|
45
|
+
const { sequenceNumber, time } = this.parameters;
|
|
46
|
+
const buffer = new BinaryBuffer(COMMAND_BODY_SIZE, false);
|
|
47
|
+
buffer.setUint8(sequenceNumber);
|
|
48
|
+
buffer.setUint32(time, false);
|
|
49
|
+
return Command.toBytes(COMMAND_ID, buffer.toUint8Array());
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
Time2000.id = COMMAND_ID;
|
|
53
|
+
Time2000.isUplink = true;
|
|
54
|
+
Time2000.title = COMMAND_TITLE;
|
|
55
|
+
export default Time2000;
|
|
56
|
+
//# sourceMappingURL=Time2000.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Time2000.js","sourceRoot":"","sources":["../../../src/commands/uplink/Time2000.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,kBAAkB,CAAC;AAEvC,OAAO,YAAY,MAAM,uBAAuB,CAAC;AAGjD,MAAM,UAAU,GAAG,IAAI,CAAC;AACxB,MAAM,aAAa,GAAG,WAAW,CAAC;AAClC,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAkB5B;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,QAAS,SAAQ,OAAO;IAC1B,YAAqB,UAA+B;QAChD,KAAK,EAAE,CAAC;QADS,eAAU,GAAV,UAAU,CAAqB;IAEpD,CAAC;IAQD,oCAAoC;IACpC,MAAM,CAAC,SAAS,CAAG,IAAgB;QAC/B,IAAK,IAAI,CAAC,UAAU,KAAK,iBAAiB,EAAG;YACzC,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,wBAAwB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;SAChF;QAED,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC7C,MAAM,UAAU,GAAG;YACf,cAAc,EAAE,MAAM,CAAC,QAAQ,EAAE;YACjC,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC;SAChC,CAAC;QAEF,IAAK,CAAC,MAAM,CAAC,OAAO,EAAG;YACnB,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,8BAA8B,CAAC,CAAC;SACpE;QAED,OAAO,IAAI,QAAQ,CAAC,UAAU,CAAC,CAAC;IACpC,CAAC;IAED,0CAA0C;IAC1C,OAAO;QACH,MAAM,EAAC,cAAc,EAAE,IAAI,EAAC,GAAG,IAAI,CAAC,UAAU,CAAC;QAC/C,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;QAE1D,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;QAChC,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAE9B,OAAO,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;IAC9D,CAAC;;AAlCe,WAAE,GAAG,UAAU,CAAC;AAEhB,iBAAQ,GAAG,IAAI,CAAC;AAEhB,cAAK,GAAG,aAAa,CAAC;AAkC1C,eAAe,QAAQ,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* All uplink commands.
|
|
3
|
+
*
|
|
4
|
+
* @packageDocumentation
|
|
5
|
+
*/
|
|
6
|
+
export { default as CorrectTime2000 } from './CorrectTime2000.js';
|
|
7
|
+
export { default as DataDayMul } from './DataDayMul.js';
|
|
8
|
+
export { default as DataHourMul } from './DataHourMul.js';
|
|
9
|
+
export { default as ExAbsDayMul } from './ExAbsDayMul.js';
|
|
10
|
+
export { default as ExAbsHourMul } from './ExAbsHourMul.js';
|
|
11
|
+
export { default as GetCurrentMul } from './GetCurrentMul.js';
|
|
12
|
+
export { default as SetTime2000 } from './SetTime2000.js';
|
|
13
|
+
export { default as Time2000 } from './Time2000.js';
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* All uplink commands.
|
|
3
|
+
*
|
|
4
|
+
* @packageDocumentation
|
|
5
|
+
*/
|
|
6
|
+
export { default as CorrectTime2000 } from './CorrectTime2000.js';
|
|
7
|
+
export { default as DataDayMul } from './DataDayMul.js';
|
|
8
|
+
export { default as DataHourMul } from './DataHourMul.js';
|
|
9
|
+
export { default as ExAbsDayMul } from './ExAbsDayMul.js';
|
|
10
|
+
export { default as ExAbsHourMul } from './ExAbsHourMul.js';
|
|
11
|
+
export { default as GetCurrentMul } from './GetCurrentMul.js';
|
|
12
|
+
export { default as SetTime2000 } from './SetTime2000.js';
|
|
13
|
+
export { default as Time2000 } from './Time2000.js';
|
|
14
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/uplink/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAC,OAAO,IAAI,eAAe,EAAC,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAC,OAAO,IAAI,UAAU,EAAC,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAC,OAAO,IAAI,WAAW,EAAC,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAC,OAAO,IAAI,WAAW,EAAC,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAC,OAAO,IAAI,YAAY,EAAC,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAC,OAAO,IAAI,aAAa,EAAC,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAC,OAAO,IAAI,WAAW,EAAC,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAC,OAAO,IAAI,QAAQ,EAAC,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export declare const MAGNET_ON = 1;
|
|
2
|
+
export declare const MAGNET_OFF = 2;
|
|
3
|
+
export declare const ACTIVATE = 3;
|
|
4
|
+
export declare const DEACTIVATE = 4;
|
|
5
|
+
export declare const BATTERY_ALARM = 5;
|
|
6
|
+
export declare const CAN_OFF = 6;
|
|
7
|
+
export declare const INSERT = 7;
|
|
8
|
+
export declare const REMOVE = 8;
|
|
9
|
+
export declare const COUNTER_OVER = 9;
|
|
10
|
+
export declare const ACTIVATE_MTX = 11;
|
|
11
|
+
export declare const CONNECT = 12;
|
|
12
|
+
export declare const DISCONNECT = 13;
|
|
13
|
+
export declare const EV_OPTOLOW = 15;
|
|
14
|
+
export declare const EV_OPTOFLASH = 16;
|
|
15
|
+
export declare const EV_MTX = 17;
|
|
16
|
+
export declare const EV_REJOIN = 18;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export const MAGNET_ON = 1;
|
|
2
|
+
export const MAGNET_OFF = 2;
|
|
3
|
+
export const ACTIVATE = 3;
|
|
4
|
+
export const DEACTIVATE = 4;
|
|
5
|
+
export const BATTERY_ALARM = 5;
|
|
6
|
+
export const CAN_OFF = 6;
|
|
7
|
+
export const INSERT = 7;
|
|
8
|
+
export const REMOVE = 8;
|
|
9
|
+
export const COUNTER_OVER = 9;
|
|
10
|
+
export const ACTIVATE_MTX = 11;
|
|
11
|
+
export const CONNECT = 12;
|
|
12
|
+
export const DISCONNECT = 13;
|
|
13
|
+
export const EV_OPTOLOW = 15;
|
|
14
|
+
export const EV_OPTOFLASH = 16;
|
|
15
|
+
export const EV_MTX = 17;
|
|
16
|
+
export const EV_REJOIN = 18;
|
|
17
|
+
//# sourceMappingURL=events.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/constants/events.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,CAAC;AAC3B,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC;AAC5B,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,CAAC;AAC1B,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC;AAC5B,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC;AAC/B,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,CAAC;AACzB,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,CAAC;AACxB,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,CAAC;AACxB,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC;AAC9B,MAAM,CAAC,MAAM,YAAY,GAAG,EAAE,CAAC;AAC/B,MAAM,CAAC,MAAM,OAAO,GAAG,EAAE,CAAC;AAC1B,MAAM,CAAC,MAAM,UAAU,GAAG,EAAE,CAAC;AAC7B,MAAM,CAAC,MAAM,UAAU,GAAG,EAAE,CAAC;AAC7B,MAAM,CAAC,MAAM,YAAY,GAAG,EAAE,CAAC;AAC/B,MAAM,CAAC,MAAM,MAAM,GAAG,EAAE,CAAC;AACzB,MAAM,CAAC,MAAM,SAAS,GAAG,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const BYTE_LENGTH = 8;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"general.js","sourceRoot":"","sources":["../../src/constants/general.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * as events from './events.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/constants/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC"}
|
package/dist/index.d.ts
ADDED
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,qBAAqB,CAAC;AAChD,OAAO,KAAK,OAAO,MAAM,oBAAoB,CAAC;AAC9C,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAC;AAC1C,OAAO,KAAK,SAAS,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Get array with binary representation of number as char.
|
|
3
|
+
*
|
|
4
|
+
* @example
|
|
5
|
+
* ```js
|
|
6
|
+
* const value = 221;
|
|
7
|
+
* const bitArray = getBitArrayFromNumber(value);
|
|
8
|
+
* console.log(bitArray); // print ['1', '1', '0', '1', '1', '1', '0', '1']
|
|
9
|
+
* ```
|
|
10
|
+
*
|
|
11
|
+
* @returns ['0', '1', '1'] like string padded with '0' to specific size or byte length (8) by default
|
|
12
|
+
*/
|
|
13
|
+
declare const _default: (value: number, size?: number) => Array<string>;
|
|
14
|
+
export default _default;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { BYTE_LENGTH } from '../constants/general.js';
|
|
2
|
+
/**
|
|
3
|
+
* Get array with binary representation of number as char.
|
|
4
|
+
*
|
|
5
|
+
* @example
|
|
6
|
+
* ```js
|
|
7
|
+
* const value = 221;
|
|
8
|
+
* const bitArray = getBitArrayFromNumber(value);
|
|
9
|
+
* console.log(bitArray); // print ['1', '1', '0', '1', '1', '1', '0', '1']
|
|
10
|
+
* ```
|
|
11
|
+
*
|
|
12
|
+
* @returns ['0', '1', '1'] like string padded with '0' to specific size or byte length (8) by default
|
|
13
|
+
*/
|
|
14
|
+
export default (value, size = BYTE_LENGTH) => (value.toString(2).padStart(size, '0').split(''));
|
|
15
|
+
//# sourceMappingURL=getBitArrayFromNumber.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getBitArrayFromNumber.js","sourceRoot":"","sources":["../../src/utils/getBitArrayFromNumber.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAC,MAAM,yBAAyB,CAAC;AAGpD;;;;;;;;;;;GAWG;AACH,eAAe,CAAE,KAAa,EAAE,OAAe,WAAW,EAAkB,EAAE,CAAC,CAC3E,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAClD,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Convert hex string to byte array.
|
|
3
|
+
*
|
|
4
|
+
* @param hex - input bytes hex representation
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* input: '02 05 0c ff 69 8b 7d' or '02050cff698b7d' or ' 0x23 0xaa 0x00'
|
|
8
|
+
* output: [2, 5, 12, 255, 105, 139, 125]
|
|
9
|
+
*/
|
|
10
|
+
declare const _default: (hex: string) => Uint8Array;
|
|
11
|
+
export default _default;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Convert hex string to byte array.
|
|
3
|
+
*
|
|
4
|
+
* @param hex - input bytes hex representation
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* input: '02 05 0c ff 69 8b 7d' or '02050cff698b7d' or ' 0x23 0xaa 0x00'
|
|
8
|
+
* output: [2, 5, 12, 255, 105, 139, 125]
|
|
9
|
+
*/
|
|
10
|
+
export default (hex) => {
|
|
11
|
+
let cleanHex = hex.replace(/\s+|0x/g, '');
|
|
12
|
+
// correct wrong input
|
|
13
|
+
if (cleanHex.length % 2 !== 0) {
|
|
14
|
+
cleanHex = `0${cleanHex}`;
|
|
15
|
+
}
|
|
16
|
+
const resultLength = cleanHex.length / 2;
|
|
17
|
+
const result = new Uint8Array(resultLength);
|
|
18
|
+
for (let index = 0; index < resultLength; index++) {
|
|
19
|
+
result[index] = parseInt(cleanHex.substring(index * 2, index * 2 + 2), 16);
|
|
20
|
+
}
|
|
21
|
+
return result;
|
|
22
|
+
};
|
|
23
|
+
//# sourceMappingURL=getBytesFromHex.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getBytesFromHex.js","sourceRoot":"","sources":["../../src/utils/getBytesFromHex.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,eAAe,CAAE,GAAW,EAAe,EAAE;IACzC,IAAI,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IAE1C,sBAAsB;IACtB,IAAK,QAAQ,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,EAAG;QAC7B,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;KAC7B;IAED,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;IACzC,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,YAAY,CAAC,CAAC;IAE5C,KAAM,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,YAAY,EAAE,KAAK,EAAE,EAAG;QACjD,MAAM,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;KAC9E;IAED,OAAO,MAAM,CAAC;AAClB,CAAC,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hex string format options.
|
|
3
|
+
*/
|
|
4
|
+
export interface IHexFormatOptions {
|
|
5
|
+
/**
|
|
6
|
+
* String to separate bytes.
|
|
7
|
+
* @defaultValue one space character
|
|
8
|
+
*/
|
|
9
|
+
separator?: string;
|
|
10
|
+
/**
|
|
11
|
+
* Leading string to add to each byte.
|
|
12
|
+
* @defaultValue empty string
|
|
13
|
+
*/
|
|
14
|
+
prefix?: string;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Convert byte array to hex string.
|
|
18
|
+
*
|
|
19
|
+
* @param buffer - input data to convert
|
|
20
|
+
* @param options - formatting parameters
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* input: [2, 5, 12, 255, 105, 139, 125]
|
|
24
|
+
* output: '02 05 0c ff 69 8b 7d' or '0x02 0x05 0x0c 0xff 0x69 0x8b 0x7d'
|
|
25
|
+
*/
|
|
26
|
+
declare const _default: (buffer: Uint8Array, options?: IHexFormatOptions) => string;
|
|
27
|
+
export default _default;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
const defaultHexFormatOptions = {
|
|
2
|
+
separator: ' ',
|
|
3
|
+
prefix: ''
|
|
4
|
+
};
|
|
5
|
+
/**
|
|
6
|
+
* Convert byte array to hex string.
|
|
7
|
+
*
|
|
8
|
+
* @param buffer - input data to convert
|
|
9
|
+
* @param options - formatting parameters
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* input: [2, 5, 12, 255, 105, 139, 125]
|
|
13
|
+
* output: '02 05 0c ff 69 8b 7d' or '0x02 0x05 0x0c 0xff 0x69 0x8b 0x7d'
|
|
14
|
+
*/
|
|
15
|
+
export default (buffer, options = {}) => {
|
|
16
|
+
const { separator, prefix } = { ...defaultHexFormatOptions, ...options };
|
|
17
|
+
return [...buffer]
|
|
18
|
+
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
|
|
19
|
+
.map((byte) => `${prefix}${byte.toString(16).padStart(2, '0')}`)
|
|
20
|
+
.join(separator);
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=getHexFromBytes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getHexFromBytes.js","sourceRoot":"","sources":["../../src/utils/getHexFromBytes.ts"],"names":[],"mappings":"AAiBA,MAAM,uBAAuB,GAAsB;IAC/C,SAAS,EAAE,GAAG;IACd,MAAM,EAAE,EAAE;CACb,CAAC;AAGF;;;;;;;;;GASG;AACH,eAAe,CAAE,MAAkB,EAAE,UAA6B,EAAE,EAAW,EAAE;IAC7E,MAAM,EAAC,SAAS,EAAE,MAAM,EAAC,GAAG,EAAC,GAAG,uBAAuB,EAAE,GAAG,OAAO,EAAC,CAAC;IAErE,OAAO,CAAC,GAAG,MAAM,CAAC;QACd,4EAA4E;SAC3E,GAAG,CAAC,CAAC,IAAY,EAAE,EAAE,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;SACvE,IAAI,CAAC,SAAS,CAAC,CAAC;AACzB,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getIntFromBitString.js","sourceRoot":"","sources":["../../src/utils/getIntFromBitString.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,eAAe,CAAE,MAAc,EAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { IHexFormatOptions } from './getHexFromBytes.js';
|
|
2
|
+
export declare const fromBytes: (data: Uint8Array) => {
|
|
3
|
+
headerSize: number;
|
|
4
|
+
commandId: number;
|
|
5
|
+
commandSize: number;
|
|
6
|
+
};
|
|
7
|
+
export declare const fromHex: (data: string) => {
|
|
8
|
+
headerSize: number;
|
|
9
|
+
commandId: number;
|
|
10
|
+
commandSize: number;
|
|
11
|
+
};
|
|
12
|
+
export declare const toBytes: (commandId: number, commandSize: number) => Uint8Array;
|
|
13
|
+
export declare const toHex: (commandId: number, commandSize: number, options?: IHexFormatOptions) => string;
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import getBytesFromHex from './getBytesFromHex.js';
|
|
2
|
+
import getHexFromBytes from './getHexFromBytes.js';
|
|
3
|
+
const shortCommandMask = 0xe0;
|
|
4
|
+
const extraCommandMask = 0x1f;
|
|
5
|
+
export const fromBytes = (data) => {
|
|
6
|
+
if (data.length === 0) {
|
|
7
|
+
throw new Error('Invalid buffer size');
|
|
8
|
+
}
|
|
9
|
+
const header = {
|
|
10
|
+
shortCode: data[0] & shortCommandMask,
|
|
11
|
+
extraCode: data[0] & extraCommandMask
|
|
12
|
+
};
|
|
13
|
+
if (header.shortCode !== 0) {
|
|
14
|
+
// short header
|
|
15
|
+
return {
|
|
16
|
+
headerSize: 1,
|
|
17
|
+
commandId: data[0] & (~header.extraCode),
|
|
18
|
+
commandSize: header.extraCode
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
if (header.extraCode === extraCommandMask) {
|
|
22
|
+
// extra command
|
|
23
|
+
if (data.length < 3) {
|
|
24
|
+
throw new Error('Invalid buffer size');
|
|
25
|
+
}
|
|
26
|
+
return {
|
|
27
|
+
headerSize: 3,
|
|
28
|
+
commandId: (data[1] << 8) | extraCommandMask,
|
|
29
|
+
commandSize: data[2]
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
if (data.length < 2) {
|
|
33
|
+
throw new Error('Invalid buffer size');
|
|
34
|
+
}
|
|
35
|
+
return {
|
|
36
|
+
headerSize: 2,
|
|
37
|
+
commandId: header.extraCode,
|
|
38
|
+
commandSize: data[1]
|
|
39
|
+
};
|
|
40
|
+
};
|
|
41
|
+
export const fromHex = (data) => fromBytes(getBytesFromHex(data));
|
|
42
|
+
export const toBytes = (commandId, commandSize) => {
|
|
43
|
+
if ((commandId & extraCommandMask) === 0) {
|
|
44
|
+
if (commandSize > extraCommandMask) {
|
|
45
|
+
throw new Error(`Wrong command id/size. Id: ${commandId}, size: ${commandSize}.`);
|
|
46
|
+
}
|
|
47
|
+
return new Uint8Array([commandId | commandSize]);
|
|
48
|
+
}
|
|
49
|
+
if (commandId > extraCommandMask) {
|
|
50
|
+
return new Uint8Array([
|
|
51
|
+
extraCommandMask,
|
|
52
|
+
(commandId >> 8),
|
|
53
|
+
commandSize
|
|
54
|
+
]);
|
|
55
|
+
}
|
|
56
|
+
return new Uint8Array([
|
|
57
|
+
commandId,
|
|
58
|
+
commandSize
|
|
59
|
+
]);
|
|
60
|
+
};
|
|
61
|
+
export const toHex = (commandId, commandSize, options = {}) => (getHexFromBytes(toBytes(commandId, commandSize), options));
|
|
62
|
+
//# sourceMappingURL=header.js.map
|