jooby-codec 1.2.0 → 1.4.0
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/CommandBinaryBuffer.d.ts +9 -13
- package/dist/CommandBinaryBuffer.js +27 -22
- package/dist/CommandBinaryBuffer.js.map +1 -1
- package/dist/commands/downlink/CorrectTime2000.d.ts +3 -3
- package/dist/commands/downlink/CorrectTime2000.js +4 -4
- package/dist/commands/downlink/CorrectTime2000.js.map +1 -1
- package/dist/commands/downlink/ExAbsArchiveDaysMC.d.ts +47 -0
- package/dist/commands/downlink/ExAbsArchiveDaysMC.js +65 -0
- package/dist/commands/downlink/ExAbsArchiveDaysMC.js.map +1 -0
- package/dist/commands/downlink/ExAbsArchiveHoursMC.d.ts +47 -0
- package/dist/commands/downlink/ExAbsArchiveHoursMC.js +67 -0
- package/dist/commands/downlink/ExAbsArchiveHoursMC.js.map +1 -0
- package/dist/commands/downlink/GetArchiveDaysMC.d.ts +47 -0
- package/dist/commands/downlink/GetArchiveDaysMC.js +64 -0
- package/dist/commands/downlink/GetArchiveDaysMC.js.map +1 -0
- package/dist/commands/downlink/GetArchiveHoursMC.d.ts +47 -0
- package/dist/commands/downlink/{GetArchiveHoursMul.js → GetArchiveHoursMC.js} +20 -20
- package/dist/commands/downlink/GetArchiveHoursMC.js.map +1 -0
- package/dist/commands/downlink/SetParameter.d.ts +73 -0
- package/dist/commands/downlink/SetParameter.js +136 -0
- package/dist/commands/downlink/SetParameter.js.map +1 -0
- package/dist/commands/downlink/SetTime2000.d.ts +3 -3
- package/dist/commands/downlink/SetTime2000.js +4 -4
- package/dist/commands/downlink/SetTime2000.js.map +1 -1
- package/dist/commands/downlink/index.d.ts +5 -1
- package/dist/commands/downlink/index.js +5 -1
- package/dist/commands/downlink/index.js.map +1 -1
- package/dist/commands/uplink/DataDayMC.d.ts +20 -0
- package/dist/commands/uplink/{DataDayMul.js → DataDayMC.js} +15 -15
- package/dist/commands/uplink/DataDayMC.js.map +1 -0
- package/dist/commands/uplink/{DataHourMul.d.ts → DataHourMC.d.ts} +3 -3
- package/dist/commands/uplink/{DataHourMul.js → DataHourMC.js} +24 -24
- package/dist/commands/uplink/DataHourMC.js.map +1 -0
- package/dist/commands/uplink/ExAbsArchiveDaysMC.d.ts +46 -0
- package/dist/commands/uplink/ExAbsArchiveDaysMC.js +72 -0
- package/dist/commands/uplink/ExAbsArchiveDaysMC.js.map +1 -0
- package/dist/commands/uplink/ExAbsArchiveHoursMC.d.ts +11 -0
- package/dist/commands/uplink/ExAbsArchiveHoursMC.js +93 -0
- package/dist/commands/uplink/ExAbsArchiveHoursMC.js.map +1 -0
- package/dist/commands/uplink/{ExAbsDayMul.d.ts → ExAbsDayMC.d.ts} +3 -3
- package/dist/commands/uplink/{ExAbsDayMul.js → ExAbsDayMC.js} +18 -18
- package/dist/commands/uplink/ExAbsDayMC.js.map +1 -0
- package/dist/commands/uplink/{ExAbsHourMul.d.ts → ExAbsHourMC.d.ts} +3 -3
- package/dist/commands/uplink/{ExAbsHourMul.js → ExAbsHourMC.js} +24 -24
- package/dist/commands/uplink/ExAbsHourMC.js.map +1 -0
- package/dist/commands/uplink/GetArchiveDaysMC.d.ts +73 -0
- package/dist/commands/uplink/GetArchiveDaysMC.js +97 -0
- package/dist/commands/uplink/GetArchiveDaysMC.js.map +1 -0
- package/dist/commands/uplink/GetArchiveHoursMC.d.ts +28 -0
- package/dist/commands/uplink/{GetArchiveHoursMul.js → GetArchiveHoursMC.js} +20 -20
- package/dist/commands/uplink/GetArchiveHoursMC.js.map +1 -0
- package/dist/commands/uplink/GetCurrentMC.d.ts +24 -0
- package/dist/commands/uplink/GetCurrentMC.js +36 -0
- package/dist/commands/uplink/GetCurrentMC.js.map +1 -0
- package/dist/commands/uplink/NewEvent.d.ts +2 -2
- package/dist/commands/uplink/NewEvent.js +5 -5
- package/dist/commands/uplink/NewEvent.js.map +1 -1
- package/dist/commands/uplink/Time2000.d.ts +3 -3
- package/dist/commands/uplink/Time2000.js +4 -4
- package/dist/commands/uplink/Time2000.js.map +1 -1
- package/dist/commands/uplink/index.d.ts +9 -6
- package/dist/commands/uplink/index.js +9 -6
- package/dist/commands/uplink/index.js.map +1 -1
- package/dist/constants/deviceParameters.d.ts +15 -0
- package/dist/constants/deviceParameters.js +16 -0
- package/dist/constants/deviceParameters.js.map +1 -0
- package/dist/utils/bitSet.d.ts +2 -2
- package/dist/utils/bitSet.js +2 -3
- package/dist/utils/bitSet.js.map +1 -1
- package/dist/utils/time.d.ts +2 -2
- package/dist/utils/time.js +2 -2
- package/dist/utils/time.js.map +1 -1
- package/package.json +1 -1
- package/readme.md +3 -3
- package/dist/commands/downlink/GetArchiveHoursMul.d.ts +0 -47
- package/dist/commands/downlink/GetArchiveHoursMul.js.map +0 -1
- package/dist/commands/uplink/DataDayMul.d.ts +0 -20
- package/dist/commands/uplink/DataDayMul.js.map +0 -1
- package/dist/commands/uplink/DataHourMul.js.map +0 -1
- package/dist/commands/uplink/ExAbsDayMul.js.map +0 -1
- package/dist/commands/uplink/ExAbsHourMul.js.map +0 -1
- package/dist/commands/uplink/GetArchiveHoursMul.d.ts +0 -28
- package/dist/commands/uplink/GetArchiveHoursMul.js.map +0 -1
- package/dist/commands/uplink/GetCurrentMul.d.ts +0 -24
- package/dist/commands/uplink/GetCurrentMul.js +0 -36
- package/dist/commands/uplink/GetCurrentMul.js.map +0 -1
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* [[include:commands/downlink/GetArchiveHoursMC.md]]
|
|
3
|
+
*
|
|
4
|
+
* @packageDocumentation
|
|
5
|
+
*/
|
|
6
|
+
import Command from '../../Command.js';
|
|
7
|
+
/**
|
|
8
|
+
* GetArchiveHoursMC command parameters
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* // request for 2 hours archive values from channel #1 from 2023-12-23T12:00:00.000Z or 756648000 seconds since 2000 year
|
|
12
|
+
* {channelList: [0], hours: 2, seconds: 756648000}
|
|
13
|
+
*/
|
|
14
|
+
interface IDownlinkGetArchiveHoursMCParameters {
|
|
15
|
+
/** amount of hours to retrieve */
|
|
16
|
+
hours: number;
|
|
17
|
+
/** time */
|
|
18
|
+
seconds: number;
|
|
19
|
+
/** array of channelList indexes */
|
|
20
|
+
channelList: Array<number>;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Downlink command
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* ```js
|
|
27
|
+
* import GetArchiveHoursMC from 'jooby-codec/commands/downlink/GetArchiveHoursMC';
|
|
28
|
+
*
|
|
29
|
+
* const parameters = {channelList: [0], hours: 0, seconds: 756648000};
|
|
30
|
+
* const command = new GetArchiveHoursMC(parameters);
|
|
31
|
+
*
|
|
32
|
+
* // output command binary in hex representation
|
|
33
|
+
* console.log(command.toHex());
|
|
34
|
+
* // 1a 04 2f 97 0c 01
|
|
35
|
+
* ```
|
|
36
|
+
* [Command format documentation](https://github.com/jooby-dev/jooby-docs/blob/main/docs/commands/GetArchiveHoursMC.md#request)
|
|
37
|
+
*/
|
|
38
|
+
declare class GetArchiveHoursMC extends Command {
|
|
39
|
+
parameters: IDownlinkGetArchiveHoursMCParameters;
|
|
40
|
+
constructor(parameters: IDownlinkGetArchiveHoursMCParameters);
|
|
41
|
+
static readonly id = 26;
|
|
42
|
+
static readonly directionType = 1;
|
|
43
|
+
static readonly title = "GET_ARCHIVE_HOURS_MUL";
|
|
44
|
+
static fromBytes(data: Uint8Array): GetArchiveHoursMC;
|
|
45
|
+
toBytes(): Uint8Array;
|
|
46
|
+
}
|
|
47
|
+
export default GetArchiveHoursMC;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* [[include:commands/downlink/
|
|
2
|
+
* [[include:commands/downlink/GetArchiveHoursMC.md]]
|
|
3
3
|
*
|
|
4
4
|
* @packageDocumentation
|
|
5
5
|
*/
|
|
@@ -11,26 +11,26 @@ const COMMAND_ID = 0x1a;
|
|
|
11
11
|
const COMMAND_TITLE = 'GET_ARCHIVE_HOURS_MUL';
|
|
12
12
|
const COMMAND_BODY_SIZE = 4;
|
|
13
13
|
/**
|
|
14
|
-
* Downlink command
|
|
14
|
+
* Downlink command
|
|
15
15
|
*
|
|
16
16
|
* @example
|
|
17
17
|
* ```js
|
|
18
|
-
* import
|
|
18
|
+
* import GetArchiveHoursMC from 'jooby-codec/commands/downlink/GetArchiveHoursMC';
|
|
19
19
|
*
|
|
20
|
-
* const parameters = {
|
|
21
|
-
* const command = new
|
|
20
|
+
* const parameters = {channelList: [0], hours: 0, seconds: 756648000};
|
|
21
|
+
* const command = new GetArchiveHoursMC(parameters);
|
|
22
22
|
*
|
|
23
23
|
* // output command binary in hex representation
|
|
24
24
|
* console.log(command.toHex());
|
|
25
25
|
* // 1a 04 2f 97 0c 01
|
|
26
26
|
* ```
|
|
27
|
-
* [Command format documentation](https://github.com/jooby-dev/jooby-docs/blob/main/docs/commands/
|
|
27
|
+
* [Command format documentation](https://github.com/jooby-dev/jooby-docs/blob/main/docs/commands/GetArchiveHoursMC.md#request)
|
|
28
28
|
*/
|
|
29
|
-
class
|
|
29
|
+
class GetArchiveHoursMC extends Command {
|
|
30
30
|
constructor(parameters) {
|
|
31
31
|
super();
|
|
32
32
|
this.parameters = parameters;
|
|
33
|
-
this.parameters.
|
|
33
|
+
this.parameters.channelList = this.parameters.channelList.sort((a, b) => a - b);
|
|
34
34
|
}
|
|
35
35
|
// data - only body (without header)
|
|
36
36
|
static fromBytes(data) {
|
|
@@ -39,28 +39,28 @@ class GetArchiveHoursMul extends Command {
|
|
|
39
39
|
}
|
|
40
40
|
const buffer = new CommandBinaryBuffer(data);
|
|
41
41
|
const date = buffer.getDate();
|
|
42
|
-
const { hour, hours
|
|
43
|
-
const
|
|
42
|
+
const { hour, hours } = buffer.getHours();
|
|
43
|
+
const channelList = buffer.getChannels(true);
|
|
44
44
|
date.setUTCHours(hour);
|
|
45
45
|
if (!buffer.isEmpty) {
|
|
46
46
|
throw new Error(`${this.getName()}. BinaryBuffer is not empty.`);
|
|
47
47
|
}
|
|
48
|
-
return new
|
|
48
|
+
return new GetArchiveHoursMC({ channelList, hours, seconds: getSecondsFromDate(date) });
|
|
49
49
|
}
|
|
50
50
|
// returns full message - header with body
|
|
51
51
|
toBytes() {
|
|
52
|
-
const {
|
|
52
|
+
const { channelList, hours, seconds } = this.parameters;
|
|
53
53
|
const buffer = new CommandBinaryBuffer(COMMAND_BODY_SIZE);
|
|
54
|
-
const date = getDateFromSeconds(
|
|
54
|
+
const date = getDateFromSeconds(seconds);
|
|
55
55
|
const hour = date.getUTCHours();
|
|
56
56
|
buffer.setDate(date);
|
|
57
|
-
buffer.setHours(hour,
|
|
58
|
-
buffer.setChannels(
|
|
57
|
+
buffer.setHours(hour, hours);
|
|
58
|
+
buffer.setChannels(channelList);
|
|
59
59
|
return Command.toBytes(COMMAND_ID, buffer.toUint8Array());
|
|
60
60
|
}
|
|
61
61
|
}
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
export default
|
|
66
|
-
//# sourceMappingURL=
|
|
62
|
+
GetArchiveHoursMC.id = COMMAND_ID;
|
|
63
|
+
GetArchiveHoursMC.directionType = DOWNLINK;
|
|
64
|
+
GetArchiveHoursMC.title = COMMAND_TITLE;
|
|
65
|
+
export default GetArchiveHoursMC;
|
|
66
|
+
//# sourceMappingURL=GetArchiveHoursMC.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GetArchiveHoursMC.js","sourceRoot":"","sources":["../../../src/commands/downlink/GetArchiveHoursMC.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,OAAO,MAAM,kBAAkB,CAAC;AACvC,OAAO,mBAAmB,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAC,QAAQ,EAAC,MAAM,mCAAmC,CAAC;AAC3D,OAAO,EAAC,kBAAkB,EAAE,kBAAkB,EAAC,MAAM,qBAAqB,CAAC;AAsB3E,MAAM,UAAU,GAAG,IAAI,CAAC;AACxB,MAAM,aAAa,GAAG,uBAAuB,CAAC;AAC9C,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAG5B;;;;;;;;;;;;;;;GAeG;AACH,MAAM,iBAAkB,SAAQ,OAAO;IACnC,YAAqB,UAAgD;QACjE,KAAK,EAAE,CAAC;QADS,eAAU,GAAV,UAAU,CAAsC;QAGjE,IAAI,CAAC,UAAU,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACpF,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,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAE7C,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;QAC9B,MAAM,EAAC,IAAI,EAAE,KAAK,EAAC,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;QACxC,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAE7C,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAEvB,IAAK,CAAC,MAAM,CAAC,OAAO,EAAG;YACnB,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,8BAA8B,CAAC,CAAC;SACpE;QAED,OAAO,IAAI,iBAAiB,CAAC,EAAC,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,kBAAkB,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC;IAC1F,CAAC;IAED,0CAA0C;IAC1C,OAAO;QACH,MAAM,EAAC,WAAW,EAAE,KAAK,EAAE,OAAO,EAAC,GAAG,IAAI,CAAC,UAAU,CAAC;QACtD,MAAM,MAAM,GAAG,IAAI,mBAAmB,CAAC,iBAAiB,CAAC,CAAC;QAE1D,MAAM,IAAI,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;QACzC,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAEhC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACrB,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC7B,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QAEhC,OAAO,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;IAC9D,CAAC;;AAxCe,oBAAE,GAAG,UAAU,CAAC;AAEhB,+BAAa,GAAG,QAAQ,CAAC;AAEzB,uBAAK,GAAG,aAAa,CAAC;AAwC1C,eAAe,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* [[include:commands/downlink/SetParameter.md]]
|
|
3
|
+
*
|
|
4
|
+
* @packageDocumentation
|
|
5
|
+
*/
|
|
6
|
+
import Command from '../../Command.js';
|
|
7
|
+
/**
|
|
8
|
+
* Initial values for pulse devices.
|
|
9
|
+
*/
|
|
10
|
+
interface IParameterInitialData {
|
|
11
|
+
/**
|
|
12
|
+
* 4 byte int BE
|
|
13
|
+
*/
|
|
14
|
+
value: number;
|
|
15
|
+
/**
|
|
16
|
+
* 4 byte int BE
|
|
17
|
+
*/
|
|
18
|
+
meterValue: number;
|
|
19
|
+
pulseCoefficient: number;
|
|
20
|
+
}
|
|
21
|
+
interface IParameterInitialDataMC extends IParameterInitialData {
|
|
22
|
+
/**
|
|
23
|
+
* Channel that accept initial values.
|
|
24
|
+
*/
|
|
25
|
+
channel: number;
|
|
26
|
+
}
|
|
27
|
+
interface IParameterAbsoluteDataStatus {
|
|
28
|
+
status: number;
|
|
29
|
+
}
|
|
30
|
+
type TParameter = IParameterInitialData | IParameterInitialDataMC | IParameterAbsoluteDataStatus;
|
|
31
|
+
/**
|
|
32
|
+
* SetParameter command parameters
|
|
33
|
+
*
|
|
34
|
+
* @example
|
|
35
|
+
* import {constants} from 'jooby-codec';
|
|
36
|
+
* {id: constants.deviceParameters.INITIAL_DATA, data: {value: 2023, meterValue: 204, pulseCoefficient: 100}}
|
|
37
|
+
*/
|
|
38
|
+
interface ISetParameterParameters {
|
|
39
|
+
/**
|
|
40
|
+
* Parameter id - one of `constants/deviceParameters`.
|
|
41
|
+
*/
|
|
42
|
+
id: number;
|
|
43
|
+
/**
|
|
44
|
+
* Parameter data, different - depending on id.
|
|
45
|
+
*/
|
|
46
|
+
data: TParameter;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Downlink command.
|
|
50
|
+
*
|
|
51
|
+
* @example
|
|
52
|
+
* ```js
|
|
53
|
+
* import SetParameter from 'jooby-codec/commands/downlink/SetParameter';
|
|
54
|
+
*
|
|
55
|
+
* const parameters = {id: constants.deviceParameters.INITIAL_DATA, data: {value: 2023, meterValue: 204, pulseCoefficient: 100}};
|
|
56
|
+
* const command = new SetParameter(parameters);
|
|
57
|
+
*
|
|
58
|
+
* // output command binary in hex representation
|
|
59
|
+
* console.log(command.toHex());
|
|
60
|
+
* // 03 0a 17 00 00 00 cc 82 00 00 07 e7
|
|
61
|
+
* ```
|
|
62
|
+
* [Command format documentation](https://github.com/jooby-dev/jooby-docs/blob/main/docs/commands/downlink/SetParameter.md)
|
|
63
|
+
*/
|
|
64
|
+
declare class SetParameter extends Command {
|
|
65
|
+
parameters: ISetParameterParameters;
|
|
66
|
+
constructor(parameters: ISetParameterParameters);
|
|
67
|
+
static readonly id = 3;
|
|
68
|
+
static readonly directionType = 1;
|
|
69
|
+
static readonly title = "SET_PARAMETER";
|
|
70
|
+
static fromBytes(data: Uint8Array): SetParameter;
|
|
71
|
+
toBytes(): Uint8Array;
|
|
72
|
+
}
|
|
73
|
+
export default SetParameter;
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* [[include:commands/downlink/SetParameter.md]]
|
|
3
|
+
*
|
|
4
|
+
* @packageDocumentation
|
|
5
|
+
*/
|
|
6
|
+
import Command from '../../Command.js';
|
|
7
|
+
import CommandBinaryBuffer from '../../CommandBinaryBuffer.js';
|
|
8
|
+
import { DOWNLINK } from '../../constants/directionTypes.js';
|
|
9
|
+
import * as deviceParameters from '../../constants/deviceParameters.js';
|
|
10
|
+
const COMMAND_ID = 0x03;
|
|
11
|
+
const COMMAND_TITLE = 'SET_PARAMETER';
|
|
12
|
+
// max size for current implementation
|
|
13
|
+
const COMMAND_MAX_BODY_SIZE = 11;
|
|
14
|
+
const byteToPulseCoefficientMap = new Map([
|
|
15
|
+
[0x80, 1000],
|
|
16
|
+
[0x81, 5000],
|
|
17
|
+
[0x82, 100],
|
|
18
|
+
[0x83, 10],
|
|
19
|
+
[0x84, 1],
|
|
20
|
+
[0x85, 0.1],
|
|
21
|
+
[0x86, 0.01]
|
|
22
|
+
]);
|
|
23
|
+
const pulseCoefficientToByteMap = new Map([...byteToPulseCoefficientMap.entries()].map(([key, value]) => [value, key]));
|
|
24
|
+
const isMSBSet = (value) => !!(value & 0x80);
|
|
25
|
+
const getPulseCoefficient = (buffer) => {
|
|
26
|
+
const pulseCoefficient = buffer.getUint8();
|
|
27
|
+
if (isMSBSet(pulseCoefficient)) {
|
|
28
|
+
const value = byteToPulseCoefficientMap.get(pulseCoefficient);
|
|
29
|
+
if (value) {
|
|
30
|
+
return value;
|
|
31
|
+
}
|
|
32
|
+
throw new Error('pulseCoefficient MSB is set, but value unknown');
|
|
33
|
+
}
|
|
34
|
+
return pulseCoefficient;
|
|
35
|
+
};
|
|
36
|
+
const setPulseCoefficient = (buffer, value) => {
|
|
37
|
+
if (pulseCoefficientToByteMap.has(value)) {
|
|
38
|
+
const byte = pulseCoefficientToByteMap.get(value);
|
|
39
|
+
if (byte) {
|
|
40
|
+
buffer.setUint8(byte);
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
throw new Error('pulseCoefficient MSB is set, but value unknown');
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
buffer.setUint8(value);
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
/**
|
|
51
|
+
* Downlink command.
|
|
52
|
+
*
|
|
53
|
+
* @example
|
|
54
|
+
* ```js
|
|
55
|
+
* import SetParameter from 'jooby-codec/commands/downlink/SetParameter';
|
|
56
|
+
*
|
|
57
|
+
* const parameters = {id: constants.deviceParameters.INITIAL_DATA, data: {value: 2023, meterValue: 204, pulseCoefficient: 100}};
|
|
58
|
+
* const command = new SetParameter(parameters);
|
|
59
|
+
*
|
|
60
|
+
* // output command binary in hex representation
|
|
61
|
+
* console.log(command.toHex());
|
|
62
|
+
* // 03 0a 17 00 00 00 cc 82 00 00 07 e7
|
|
63
|
+
* ```
|
|
64
|
+
* [Command format documentation](https://github.com/jooby-dev/jooby-docs/blob/main/docs/commands/downlink/SetParameter.md)
|
|
65
|
+
*/
|
|
66
|
+
class SetParameter extends Command {
|
|
67
|
+
constructor(parameters) {
|
|
68
|
+
super();
|
|
69
|
+
this.parameters = parameters;
|
|
70
|
+
}
|
|
71
|
+
// data - only body (without header)
|
|
72
|
+
static fromBytes(data) {
|
|
73
|
+
const buffer = new CommandBinaryBuffer(data);
|
|
74
|
+
const id = buffer.getUint8();
|
|
75
|
+
let parameterData;
|
|
76
|
+
switch (id) {
|
|
77
|
+
case deviceParameters.INITIAL_DATA:
|
|
78
|
+
parameterData = {
|
|
79
|
+
meterValue: buffer.getUint32(false),
|
|
80
|
+
pulseCoefficient: getPulseCoefficient(buffer),
|
|
81
|
+
value: buffer.getUint32(false)
|
|
82
|
+
};
|
|
83
|
+
break;
|
|
84
|
+
case deviceParameters.INITIAL_DATA_MULTI_CHANNEL:
|
|
85
|
+
parameterData = {
|
|
86
|
+
channel: buffer.getUint8(),
|
|
87
|
+
meterValue: buffer.getUint32(false),
|
|
88
|
+
pulseCoefficient: getPulseCoefficient(buffer),
|
|
89
|
+
value: buffer.getUint32(false)
|
|
90
|
+
};
|
|
91
|
+
break;
|
|
92
|
+
case deviceParameters.ABSOLUTE_DATA_STATUS:
|
|
93
|
+
parameterData = {
|
|
94
|
+
status: buffer.getUint8()
|
|
95
|
+
};
|
|
96
|
+
break;
|
|
97
|
+
default:
|
|
98
|
+
throw new Error(`${SetParameter.getId()}: parameter ${id} is not supported`);
|
|
99
|
+
}
|
|
100
|
+
return new SetParameter({ id, data: parameterData });
|
|
101
|
+
}
|
|
102
|
+
// returns full message - header with body
|
|
103
|
+
toBytes() {
|
|
104
|
+
const { id, data } = this.parameters;
|
|
105
|
+
const buffer = new CommandBinaryBuffer(COMMAND_MAX_BODY_SIZE);
|
|
106
|
+
let parameterData;
|
|
107
|
+
buffer.setUint8(id);
|
|
108
|
+
switch (id) {
|
|
109
|
+
case deviceParameters.INITIAL_DATA:
|
|
110
|
+
parameterData = data;
|
|
111
|
+
buffer.setUint32(parameterData.meterValue, false);
|
|
112
|
+
setPulseCoefficient(buffer, parameterData.pulseCoefficient);
|
|
113
|
+
buffer.setUint32(parameterData.value, false);
|
|
114
|
+
break;
|
|
115
|
+
case deviceParameters.INITIAL_DATA_MULTI_CHANNEL:
|
|
116
|
+
parameterData = data;
|
|
117
|
+
buffer.setUint8(parameterData.channel);
|
|
118
|
+
buffer.setUint32(parameterData.meterValue, false);
|
|
119
|
+
setPulseCoefficient(buffer, parameterData.pulseCoefficient);
|
|
120
|
+
buffer.setUint32(parameterData.value, false);
|
|
121
|
+
break;
|
|
122
|
+
case deviceParameters.ABSOLUTE_DATA_STATUS:
|
|
123
|
+
parameterData = data;
|
|
124
|
+
buffer.setUint8(parameterData.status);
|
|
125
|
+
break;
|
|
126
|
+
default:
|
|
127
|
+
throw new Error(`${SetParameter.getId()}: parameter ${id} is not supported`);
|
|
128
|
+
}
|
|
129
|
+
return Command.toBytes(COMMAND_ID, buffer.getBytesToOffset());
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
SetParameter.id = COMMAND_ID;
|
|
133
|
+
SetParameter.directionType = DOWNLINK;
|
|
134
|
+
SetParameter.title = COMMAND_TITLE;
|
|
135
|
+
export default SetParameter;
|
|
136
|
+
//# sourceMappingURL=SetParameter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SetParameter.js","sourceRoot":"","sources":["../../../src/commands/downlink/SetParameter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,OAAO,MAAM,kBAAkB,CAAC;AACvC,OAAO,mBAAmB,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAC,QAAQ,EAAC,MAAM,mCAAmC,CAAC;AAC3D,OAAO,KAAK,gBAAgB,MAAM,qCAAqC,CAAC;AAyDxE,MAAM,UAAU,GAAG,IAAI,CAAC;AACxB,MAAM,aAAa,GAAG,eAAe,CAAC;AAEtC,sCAAsC;AACtC,MAAM,qBAAqB,GAAG,EAAE,CAAC;AAEjC,MAAM,yBAAyB,GAAG,IAAI,GAAG,CAAC;IACtC,CAAC,IAAI,EAAE,IAAI,CAAC;IACZ,CAAC,IAAI,EAAE,IAAI,CAAC;IACZ,CAAC,IAAI,EAAE,GAAG,CAAC;IACX,CAAC,IAAI,EAAE,EAAE,CAAC;IACV,CAAC,IAAI,EAAE,CAAC,CAAC;IACT,CAAC,IAAI,EAAE,GAAG,CAAC;IACX,CAAC,IAAI,EAAE,IAAI,CAAC;CACf,CAAC,CAAC;AAEH,MAAM,yBAAyB,GAAG,IAAI,GAAG,CACrC,CAAC,GAAG,yBAAyB,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAC/E,CAAC;AAEF,MAAM,QAAQ,GAAG,CAAE,KAAa,EAAY,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;AAEhE,MAAM,mBAAmB,GAAG,CAAE,MAA2B,EAAW,EAAE;IAClE,MAAM,gBAAgB,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;IAE3C,IAAK,QAAQ,CAAC,gBAAgB,CAAC,EAAG;QAC9B,MAAM,KAAK,GAAG,yBAAyB,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAE9D,IAAK,KAAK,EAAG;YACT,OAAO,KAAK,CAAC;SAChB;QAED,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;KACrE;IAED,OAAO,gBAAgB,CAAC;AAC5B,CAAC,CAAC;AAEF,MAAM,mBAAmB,GAAG,CAAE,MAA2B,EAAE,KAAa,EAAS,EAAE;IAC/E,IAAK,yBAAyB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAG;QACxC,MAAM,IAAI,GAAG,yBAAyB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAElD,IAAK,IAAI,EAAG;YACR,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;SACzB;aAAM;YACH,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;SACrE;KACJ;SAAM;QACH,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;KAC1B;AACL,CAAC,CAAC;AAGF;;;;;;;;;;;;;;;GAeG;AACH,MAAM,YAAa,SAAQ,OAAO;IAC9B,YAAqB,UAAmC;QACpD,KAAK,EAAE,CAAC;QADS,eAAU,GAAV,UAAU,CAAyB;IAExD,CAAC;IAQD,oCAAoC;IACpC,MAAM,CAAC,SAAS,CAAG,IAAgB;QAC/B,MAAM,MAAM,GAAG,IAAI,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAC7C,MAAM,EAAE,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;QAC7B,IAAI,aAAa,CAAC;QAElB,QAAS,EAAE,EAAG;YACV,KAAK,gBAAgB,CAAC,YAAY;gBAC9B,aAAa,GAAG;oBACZ,UAAU,EAAE,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC;oBACnC,gBAAgB,EAAE,mBAAmB,CAAC,MAAM,CAAC;oBAC7C,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC;iBACR,CAAC;gBAC3B,MAAM;YAEV,KAAK,gBAAgB,CAAC,0BAA0B;gBAC5C,aAAa,GAAG;oBACZ,OAAO,EAAE,MAAM,CAAC,QAAQ,EAAE;oBAC1B,UAAU,EAAE,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC;oBACnC,gBAAgB,EAAE,mBAAmB,CAAC,MAAM,CAAC;oBAC7C,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC;iBACR,CAAC;gBAC3B,MAAM;YAEV,KAAK,gBAAgB,CAAC,oBAAoB;gBACtC,aAAa,GAAG;oBACZ,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE;iBACI,CAAC;gBAClC,MAAM;YAEV;gBACI,MAAM,IAAI,KAAK,CAAC,GAAG,YAAY,CAAC,KAAK,EAAE,eAAe,EAAE,mBAAmB,CAAC,CAAC;SACpF;QAED,OAAO,IAAI,YAAY,CAAC,EAAC,EAAE,EAAE,IAAI,EAAE,aAAa,EAAC,CAAC,CAAC;IACvD,CAAC;IAED,0CAA0C;IAC1C,OAAO;QACH,MAAM,EAAC,EAAE,EAAE,IAAI,EAAC,GAAG,IAAI,CAAC,UAAU,CAAC;QACnC,MAAM,MAAM,GAAG,IAAI,mBAAmB,CAAC,qBAAqB,CAAC,CAAC;QAE9D,IAAI,aAAa,CAAC;QAElB,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAEpB,QAAS,EAAE,EAAG;YACV,KAAK,gBAAgB,CAAC,YAAY;gBAC9B,aAAa,GAAG,IAA6B,CAAC;gBAE9C,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;gBAClD,mBAAmB,CAAC,MAAM,EAAE,aAAa,CAAC,gBAAgB,CAAC,CAAC;gBAC5D,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;gBAC7C,MAAM;YAEV,KAAK,gBAAgB,CAAC,0BAA0B;gBAC5C,aAAa,GAAG,IAA+B,CAAC;gBAEhD,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;gBACvC,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;gBAClD,mBAAmB,CAAC,MAAM,EAAE,aAAa,CAAC,gBAAgB,CAAC,CAAC;gBAC5D,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;gBAC7C,MAAM;YAEV,KAAK,gBAAgB,CAAC,oBAAoB;gBACtC,aAAa,GAAG,IAAoC,CAAC;gBAErD,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;gBACtC,MAAM;YAEV;gBACI,MAAM,IAAI,KAAK,CAAC,GAAG,YAAY,CAAC,KAAK,EAAE,eAAe,EAAE,mBAAmB,CAAC,CAAC;SACpF;QAED,OAAO,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAClE,CAAC;;AAjFe,eAAE,GAAG,UAAU,CAAC;AAEhB,0BAAa,GAAG,QAAQ,CAAC;AAEzB,kBAAK,GAAG,aAAa,CAAC;AAiF1C,eAAe,YAAY,CAAC"}
|
|
@@ -9,13 +9,13 @@ import Command from '../../Command.js';
|
|
|
9
9
|
*
|
|
10
10
|
* @example
|
|
11
11
|
* // time: 2023-04-03T14:01:17.000Z
|
|
12
|
-
* {sequenceNumber: 77,
|
|
12
|
+
* {sequenceNumber: 77, seconds: 733845677}
|
|
13
13
|
*/
|
|
14
14
|
interface IDownlinkSetTime2000Parameters {
|
|
15
15
|
/** unique time manipulation operation number */
|
|
16
16
|
sequenceNumber: number;
|
|
17
17
|
/** seconds */
|
|
18
|
-
|
|
18
|
+
seconds: number;
|
|
19
19
|
}
|
|
20
20
|
/**
|
|
21
21
|
* Downlink command.
|
|
@@ -24,7 +24,7 @@ interface IDownlinkSetTime2000Parameters {
|
|
|
24
24
|
* ```js
|
|
25
25
|
* import SetTime2000 from 'jooby-codec/commands/downlink/SetTime2000';
|
|
26
26
|
*
|
|
27
|
-
* const parameters = {sequenceNumber: 78,
|
|
27
|
+
* const parameters = {sequenceNumber: 78, seconds: 123456};
|
|
28
28
|
* const command = new SetTime2000(parameters);
|
|
29
29
|
*
|
|
30
30
|
* // output command binary in hex representation
|
|
@@ -16,7 +16,7 @@ const COMMAND_BODY_SIZE = 5;
|
|
|
16
16
|
* ```js
|
|
17
17
|
* import SetTime2000 from 'jooby-codec/commands/downlink/SetTime2000';
|
|
18
18
|
*
|
|
19
|
-
* const parameters = {sequenceNumber: 78,
|
|
19
|
+
* const parameters = {sequenceNumber: 78, seconds: 123456};
|
|
20
20
|
* const command = new SetTime2000(parameters);
|
|
21
21
|
*
|
|
22
22
|
* // output command binary in hex representation
|
|
@@ -38,7 +38,7 @@ class SetTime2000 extends Command {
|
|
|
38
38
|
const buffer = new BinaryBuffer(data, false);
|
|
39
39
|
const parameters = {
|
|
40
40
|
sequenceNumber: buffer.getUint8(),
|
|
41
|
-
|
|
41
|
+
seconds: buffer.getInt32()
|
|
42
42
|
};
|
|
43
43
|
if (!buffer.isEmpty) {
|
|
44
44
|
throw new Error(`${this.getName()}. BinaryBuffer is not empty.`);
|
|
@@ -47,10 +47,10 @@ class SetTime2000 extends Command {
|
|
|
47
47
|
}
|
|
48
48
|
// returns full message - header with body
|
|
49
49
|
toBytes() {
|
|
50
|
-
const { sequenceNumber,
|
|
50
|
+
const { sequenceNumber, seconds } = this.parameters;
|
|
51
51
|
const buffer = new BinaryBuffer(COMMAND_BODY_SIZE, false);
|
|
52
52
|
buffer.setUint8(sequenceNumber);
|
|
53
|
-
buffer.setInt32(
|
|
53
|
+
buffer.setInt32(seconds);
|
|
54
54
|
return Command.toBytes(COMMAND_ID, buffer.toUint8Array());
|
|
55
55
|
}
|
|
56
56
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SetTime2000.js","sourceRoot":"","sources":["../../../src/commands/downlink/SetTime2000.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,OAAO,MAAM,kBAAkB,CAAC;AACvC,OAAO,YAAY,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAC,QAAQ,EAAC,MAAM,mCAAmC,CAAC;AAkB3D,MAAM,UAAU,GAAG,IAAI,CAAC;AACxB,MAAM,aAAa,GAAG,eAAe,CAAC;AACtC,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAG5B;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAY,SAAQ,OAAO;IAC7B,YAAqB,UAA0C;QAC3D,KAAK,EAAE,CAAC;QADS,eAAU,GAAV,UAAU,CAAgC;IAE/D,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,
|
|
1
|
+
{"version":3,"file":"SetTime2000.js","sourceRoot":"","sources":["../../../src/commands/downlink/SetTime2000.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,OAAO,MAAM,kBAAkB,CAAC;AACvC,OAAO,YAAY,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAC,QAAQ,EAAC,MAAM,mCAAmC,CAAC;AAkB3D,MAAM,UAAU,GAAG,IAAI,CAAC;AACxB,MAAM,aAAa,GAAG,eAAe,CAAC;AACtC,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAG5B;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAY,SAAQ,OAAO;IAC7B,YAAqB,UAA0C;QAC3D,KAAK,EAAE,CAAC;QADS,eAAU,GAAV,UAAU,CAAgC;IAE/D,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,OAAO,EAAE,MAAM,CAAC,QAAQ,EAAE;SAC7B,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,0CAA0C;IAC1C,OAAO;QACH,MAAM,EAAC,cAAc,EAAE,OAAO,EAAC,GAAG,IAAI,CAAC,UAAU,CAAC;QAClD,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;QAE1D,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;QAChC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAEzB,OAAO,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;IAC9D,CAAC;;AAlCe,cAAE,GAAG,UAAU,CAAC;AAEhB,yBAAa,GAAG,QAAQ,CAAC;AAEzB,iBAAK,GAAG,aAAa,CAAC;AAkC1C,eAAe,WAAW,CAAC"}
|
|
@@ -4,7 +4,11 @@
|
|
|
4
4
|
* @packageDocumentation
|
|
5
5
|
*/
|
|
6
6
|
export { default as CorrectTime2000 } from './CorrectTime2000.js';
|
|
7
|
-
export { default as
|
|
7
|
+
export { default as ExAbsArchiveDaysMC } from './ExAbsArchiveDaysMC.js';
|
|
8
|
+
export { default as ExAbsArchiveHoursMC } from './ExAbsArchiveHoursMC.js';
|
|
9
|
+
export { default as GetArchiveDaysMC } from './GetArchiveDaysMC.js';
|
|
10
|
+
export { default as GetArchiveHoursMC } from './GetArchiveHoursMC.js';
|
|
8
11
|
export { default as NewStatus } from './NewStatus.js';
|
|
12
|
+
export { default as SetParameter } from './SetParameter.js';
|
|
9
13
|
export { default as SetTime2000 } from './SetTime2000.js';
|
|
10
14
|
export { default as SoftRestart } from './SoftRestart.js';
|
|
@@ -4,8 +4,12 @@
|
|
|
4
4
|
* @packageDocumentation
|
|
5
5
|
*/
|
|
6
6
|
export { default as CorrectTime2000 } from './CorrectTime2000.js';
|
|
7
|
-
export { default as
|
|
7
|
+
export { default as ExAbsArchiveDaysMC } from './ExAbsArchiveDaysMC.js';
|
|
8
|
+
export { default as ExAbsArchiveHoursMC } from './ExAbsArchiveHoursMC.js';
|
|
9
|
+
export { default as GetArchiveDaysMC } from './GetArchiveDaysMC.js';
|
|
10
|
+
export { default as GetArchiveHoursMC } from './GetArchiveHoursMC.js';
|
|
8
11
|
export { default as NewStatus } from './NewStatus.js';
|
|
12
|
+
export { default as SetParameter } from './SetParameter.js';
|
|
9
13
|
export { default as SetTime2000 } from './SetTime2000.js';
|
|
10
14
|
export { default as SoftRestart } from './SoftRestart.js';
|
|
11
15
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/downlink/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAC,OAAO,IAAI,eAAe,EAAC,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAC,OAAO,IAAI,kBAAkB,EAAC,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAC,OAAO,IAAI,SAAS,EAAC,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAC,OAAO,IAAI,WAAW,EAAC,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAC,OAAO,IAAI,WAAW,EAAC,MAAM,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/downlink/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAC,OAAO,IAAI,eAAe,EAAC,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAC,OAAO,IAAI,kBAAkB,EAAC,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAC,OAAO,IAAI,mBAAmB,EAAC,MAAM,0BAA0B,CAAC;AACxE,OAAO,EAAC,OAAO,IAAI,gBAAgB,EAAC,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAC,OAAO,IAAI,iBAAiB,EAAC,MAAM,wBAAwB,CAAC;AACpE,OAAO,EAAC,OAAO,IAAI,SAAS,EAAC,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAC,OAAO,IAAI,YAAY,EAAC,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAC,OAAO,IAAI,WAAW,EAAC,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAC,OAAO,IAAI,WAAW,EAAC,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import GetCurrentMC, { IGetCurrentMCParameters } from './GetCurrentMC.js';
|
|
2
|
+
/**
|
|
3
|
+
* DataDayMC command parameters.
|
|
4
|
+
*/
|
|
5
|
+
interface IDataDayMCParameters extends IGetCurrentMCParameters {
|
|
6
|
+
/**
|
|
7
|
+
* Seconds since year 2000, i.e. timestamp (in seconds) - 946684800
|
|
8
|
+
*/
|
|
9
|
+
seconds: number;
|
|
10
|
+
}
|
|
11
|
+
declare class DataDayMC extends GetCurrentMC {
|
|
12
|
+
parameters: IDataDayMCParameters;
|
|
13
|
+
constructor(parameters: IDataDayMCParameters);
|
|
14
|
+
static readonly id = 22;
|
|
15
|
+
static readonly directionType = 2;
|
|
16
|
+
static readonly title = "DATA_DAY_MUL";
|
|
17
|
+
static fromBytes(data: Uint8Array): DataDayMC;
|
|
18
|
+
toBytes(): Uint8Array;
|
|
19
|
+
}
|
|
20
|
+
export default DataDayMC;
|
|
@@ -2,41 +2,41 @@
|
|
|
2
2
|
import Command from '../../Command.js';
|
|
3
3
|
import CommandBinaryBuffer from '../../CommandBinaryBuffer.js';
|
|
4
4
|
import { getSecondsFromDate } from '../../utils/time.js';
|
|
5
|
-
import
|
|
5
|
+
import GetCurrentMC from './GetCurrentMC.js';
|
|
6
6
|
import { UPLINK } from '../../constants/directionTypes.js';
|
|
7
7
|
const COMMAND_ID = 0x16;
|
|
8
8
|
const COMMAND_TITLE = 'DATA_DAY_MUL';
|
|
9
9
|
// 2 byte for date + 2 for channels (max channels: 7)
|
|
10
10
|
// 4 + (7 * 4)
|
|
11
11
|
const COMMAND_BODY_MAX_SIZE = 32;
|
|
12
|
-
class
|
|
12
|
+
class DataDayMC extends GetCurrentMC {
|
|
13
13
|
constructor(parameters) {
|
|
14
14
|
super(parameters);
|
|
15
15
|
this.parameters = parameters;
|
|
16
16
|
}
|
|
17
17
|
static fromBytes(data) {
|
|
18
|
-
const parameters = {
|
|
18
|
+
const parameters = { channelList: [], seconds: 0 };
|
|
19
19
|
const buffer = new CommandBinaryBuffer(data);
|
|
20
20
|
const date = buffer.getDate();
|
|
21
21
|
const channelArray = buffer.getChannels(false);
|
|
22
|
-
parameters.
|
|
22
|
+
parameters.channelList = channelArray.map(channelIndex => ({
|
|
23
23
|
value: buffer.getExtendedValue(),
|
|
24
24
|
index: channelIndex
|
|
25
25
|
}));
|
|
26
|
-
parameters.
|
|
27
|
-
return new
|
|
26
|
+
parameters.seconds = getSecondsFromDate(date);
|
|
27
|
+
return new DataDayMC(parameters);
|
|
28
28
|
}
|
|
29
29
|
toBytes() {
|
|
30
30
|
const buffer = new CommandBinaryBuffer(COMMAND_BODY_MAX_SIZE);
|
|
31
|
-
const {
|
|
32
|
-
buffer.setDate(
|
|
33
|
-
buffer.setChannels(
|
|
34
|
-
|
|
31
|
+
const { channelList, seconds } = this.parameters;
|
|
32
|
+
buffer.setDate(seconds);
|
|
33
|
+
buffer.setChannels(channelList.map(({ index }) => index));
|
|
34
|
+
channelList.forEach(({ value }) => buffer.setExtendedValue(value));
|
|
35
35
|
return Command.toBytes(COMMAND_ID, buffer.getBytesToOffset());
|
|
36
36
|
}
|
|
37
37
|
}
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
export default
|
|
42
|
-
//# sourceMappingURL=
|
|
38
|
+
DataDayMC.id = COMMAND_ID;
|
|
39
|
+
DataDayMC.directionType = UPLINK;
|
|
40
|
+
DataDayMC.title = COMMAND_TITLE;
|
|
41
|
+
export default DataDayMC;
|
|
42
|
+
//# sourceMappingURL=DataDayMC.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DataDayMC.js","sourceRoot":"","sources":["../../../src/commands/uplink/DataDayMC.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAE5D,OAAO,OAAO,MAAM,kBAAkB,CAAC;AACvC,OAAO,mBAAmB,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAC,kBAAkB,EAAC,MAAM,qBAAqB,CAAC;AACvD,OAAO,YAAuC,MAAM,mBAAmB,CAAC;AACxE,OAAO,EAAC,MAAM,EAAC,MAAM,mCAAmC,CAAC;AAczD,MAAM,UAAU,GAAG,IAAI,CAAC;AACxB,MAAM,aAAa,GAAG,cAAc,CAAC;AAErC,qDAAqD;AACrD,cAAc;AACd,MAAM,qBAAqB,GAAG,EAAE,CAAC;AAGjC,MAAM,SAAU,SAAQ,YAAY;IAChC,YAAqB,UAAgC;QACjD,KAAK,CAAC,UAAU,CAAC,CAAC;QADD,eAAU,GAAV,UAAU,CAAsB;IAErD,CAAC;IAQD,MAAM,CAAC,SAAS,CAAG,IAAgB;QAC/B,MAAM,UAAU,GAAyB,EAAC,WAAW,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAC,CAAC;QAEvE,MAAM,MAAM,GAAG,IAAI,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAE7C,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;QAC9B,MAAM,YAAY,GAAG,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAE/C,UAAU,CAAC,WAAW,GAAG,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;YACvD,KAAK,EAAE,MAAM,CAAC,gBAAgB,EAAE;YAChC,KAAK,EAAE,YAAY;SACtB,CAAC,CAAC,CAAC;QAEJ,UAAU,CAAC,OAAO,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAE9C,OAAO,IAAI,SAAS,CAAC,UAAU,CAAC,CAAC;IACrC,CAAC;IAED,OAAO;QACH,MAAM,MAAM,GAAG,IAAI,mBAAmB,CAAC,qBAAqB,CAAC,CAAC;QAC9D,MAAM,EAAC,WAAW,EAAE,OAAO,EAAC,GAAG,IAAI,CAAC,UAAU,CAAC;QAE/C,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACxB,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,EAAC,KAAK,EAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;QACxD,WAAW,CAAC,OAAO,CAAC,CAAC,EAAC,KAAK,EAAC,EAAE,EAAE,CAAC,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC;QAEjE,OAAO,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAClE,CAAC;;AAjCe,YAAE,GAAG,UAAU,CAAC;AAEhB,uBAAa,GAAG,MAAM,CAAC;AAEvB,eAAK,GAAG,aAAa,CAAC;AAiC1C,eAAe,SAAS,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import
|
|
2
|
-
declare class
|
|
1
|
+
import GetCurrentMC from './GetCurrentMC.js';
|
|
2
|
+
declare class DataHourMC extends GetCurrentMC {
|
|
3
3
|
parameters: any;
|
|
4
4
|
constructor(parameters: any);
|
|
5
5
|
static readonly id = 23;
|
|
@@ -8,4 +8,4 @@ declare class DataHourMul extends GetCurrentMul {
|
|
|
8
8
|
static fromBytes(data: Uint8Array): any;
|
|
9
9
|
toBytes(): Uint8Array;
|
|
10
10
|
}
|
|
11
|
-
export default
|
|
11
|
+
export default DataHourMC;
|
|
@@ -3,17 +3,17 @@
|
|
|
3
3
|
/* eslint-disable @typescript-eslint/no-unsafe-argument */
|
|
4
4
|
/* eslint-disable @typescript-eslint/no-unsafe-assignment */
|
|
5
5
|
import Command from '../../Command.js';
|
|
6
|
-
import
|
|
6
|
+
import GetCurrentMC from './GetCurrentMC.js';
|
|
7
7
|
import { getSecondsFromDate, getDateFromSeconds } from '../../utils/time.js';
|
|
8
8
|
import CommandBinaryBuffer from '../../CommandBinaryBuffer.js';
|
|
9
9
|
import { UPLINK } from '../../constants/directionTypes.js';
|
|
10
10
|
const COMMAND_ID = 0x17;
|
|
11
11
|
const COMMAND_TITLE = 'DATA_HOUR_MUL';
|
|
12
|
-
// date 2 bytes, hour 1 byte,
|
|
12
|
+
// date 2 bytes, hour 1 byte, channelList - 1 byte, so max channelList = 4
|
|
13
13
|
// max hours diff - 7 (3 bit value)
|
|
14
|
-
// 4 + (4
|
|
14
|
+
// 4 + (4 channelList * 5 bytes of hour values) + (4 * 5 bytes of diff * 7 max hours diff)
|
|
15
15
|
const COMMAND_BODY_MAX_SIZE = 164;
|
|
16
|
-
class
|
|
16
|
+
class DataHourMC extends GetCurrentMC {
|
|
17
17
|
constructor(parameters) {
|
|
18
18
|
super(parameters);
|
|
19
19
|
this.parameters = parameters;
|
|
@@ -28,7 +28,7 @@ class DataHourMul extends GetCurrentMul {
|
|
|
28
28
|
const counterDate = new Date(date);
|
|
29
29
|
let hourAmount = hours;
|
|
30
30
|
let value;
|
|
31
|
-
const
|
|
31
|
+
const channelList = [];
|
|
32
32
|
if (hourAmount === 0) {
|
|
33
33
|
// one hour
|
|
34
34
|
hourAmount = 1;
|
|
@@ -38,30 +38,30 @@ class DataHourMul extends GetCurrentMul {
|
|
|
38
38
|
value = buffer.getExtendedValue();
|
|
39
39
|
counterDate.setTime(date.getTime());
|
|
40
40
|
const diff = [];
|
|
41
|
-
const channel = { value, index: channelIndex,
|
|
42
|
-
|
|
41
|
+
const channel = { value, index: channelIndex, seconds: getSecondsFromDate(counterDate), diff };
|
|
42
|
+
channelList.push(channel);
|
|
43
43
|
for (let hourIndex = 0; hourIndex < hourAmount; ++hourIndex) {
|
|
44
44
|
value = buffer.getExtendedValue();
|
|
45
45
|
counterDate.setUTCHours(counterDate.getUTCHours() + hourIndex);
|
|
46
|
-
diff.push({ value,
|
|
46
|
+
diff.push({ value, seconds: getSecondsFromDate(counterDate) });
|
|
47
47
|
}
|
|
48
48
|
}
|
|
49
|
-
return new
|
|
49
|
+
return new DataHourMC({ channelList });
|
|
50
50
|
}
|
|
51
51
|
toBytes() {
|
|
52
52
|
const buffer = new CommandBinaryBuffer(COMMAND_BODY_MAX_SIZE);
|
|
53
|
-
const {
|
|
54
|
-
const {
|
|
55
|
-
const realDate = getDateFromSeconds(
|
|
53
|
+
const { channelList } = this.parameters;
|
|
54
|
+
const { seconds } = channelList[0];
|
|
55
|
+
const realDate = getDateFromSeconds(seconds);
|
|
56
56
|
const hour = realDate.getUTCHours();
|
|
57
|
-
let
|
|
58
|
-
if (
|
|
59
|
-
|
|
57
|
+
let hours = channelList[0].diff.length;
|
|
58
|
+
if (hours === 1) {
|
|
59
|
+
hours = 0;
|
|
60
60
|
}
|
|
61
|
-
buffer.setDate(
|
|
62
|
-
buffer.setHours(hour,
|
|
63
|
-
buffer.setChannels(
|
|
64
|
-
for (const { value, diff } of
|
|
61
|
+
buffer.setDate(seconds);
|
|
62
|
+
buffer.setHours(hour, hours);
|
|
63
|
+
buffer.setChannels(channelList);
|
|
64
|
+
for (const { value, diff } of channelList) {
|
|
65
65
|
buffer.setExtendedValue(value);
|
|
66
66
|
for (const { value: diffValue } of diff) {
|
|
67
67
|
buffer.setExtendedValue(diffValue);
|
|
@@ -70,8 +70,8 @@ class DataHourMul extends GetCurrentMul {
|
|
|
70
70
|
return Command.toBytes(COMMAND_ID, buffer.getBytesToOffset());
|
|
71
71
|
}
|
|
72
72
|
}
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
export default
|
|
77
|
-
//# sourceMappingURL=
|
|
73
|
+
DataHourMC.id = COMMAND_ID;
|
|
74
|
+
DataHourMC.directionType = UPLINK;
|
|
75
|
+
DataHourMC.title = COMMAND_TITLE;
|
|
76
|
+
export default DataHourMC;
|
|
77
|
+
//# sourceMappingURL=DataHourMC.js.map
|