jooby-codec 1.4.0 → 1.5.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 +40 -23
- package/dist/CommandBinaryBuffer.js +93 -58
- package/dist/CommandBinaryBuffer.js.map +1 -1
- package/dist/commands/downlink/ExAbsArchiveDaysMC.d.ts +2 -2
- package/dist/commands/downlink/ExAbsArchiveDaysMC.js +6 -6
- package/dist/commands/downlink/ExAbsArchiveDaysMC.js.map +1 -1
- package/dist/commands/downlink/ExAbsArchiveHoursMC.d.ts +2 -2
- package/dist/commands/downlink/ExAbsArchiveHoursMC.js +6 -6
- package/dist/commands/downlink/ExAbsArchiveHoursMC.js.map +1 -1
- package/dist/commands/downlink/ExAbsCurrentMC.d.ts +30 -0
- package/dist/commands/downlink/ExAbsCurrentMC.js +43 -0
- package/dist/commands/downlink/ExAbsCurrentMC.js.map +1 -0
- package/dist/commands/downlink/GetArchiveDaysMC.d.ts +2 -2
- package/dist/commands/downlink/GetArchiveDaysMC.js +6 -6
- package/dist/commands/downlink/GetArchiveDaysMC.js.map +1 -1
- package/dist/commands/downlink/GetArchiveHoursMC.d.ts +2 -2
- package/dist/commands/downlink/GetArchiveHoursMC.js +6 -6
- package/dist/commands/downlink/GetArchiveHoursMC.js.map +1 -1
- package/dist/commands/downlink/SetParameter.d.ts +7 -1
- package/dist/commands/downlink/SetParameter.js +11 -0
- package/dist/commands/downlink/SetParameter.js.map +1 -1
- package/dist/commands/downlink/index.d.ts +1 -0
- package/dist/commands/downlink/index.js +1 -0
- package/dist/commands/downlink/index.js.map +1 -1
- package/dist/commands/uplink/DataDayMC.d.ts +2 -2
- package/dist/commands/uplink/DataDayMC.js +8 -8
- package/dist/commands/uplink/DataDayMC.js.map +1 -1
- package/dist/commands/uplink/DataHourMC.d.ts +10 -4
- package/dist/commands/uplink/DataHourMC.js +13 -35
- package/dist/commands/uplink/DataHourMC.js.map +1 -1
- package/dist/commands/uplink/ExAbsArchiveDaysMC.d.ts +9 -38
- package/dist/commands/uplink/ExAbsArchiveDaysMC.js +16 -38
- package/dist/commands/uplink/ExAbsArchiveDaysMC.js.map +1 -1
- package/dist/commands/uplink/ExAbsArchiveHoursMC.d.ts +13 -7
- package/dist/commands/uplink/ExAbsArchiveHoursMC.js +24 -60
- package/dist/commands/uplink/ExAbsArchiveHoursMC.js.map +1 -1
- package/dist/commands/uplink/ExAbsCurrentMC.d.ts +15 -0
- package/dist/commands/uplink/ExAbsCurrentMC.js +30 -0
- package/dist/commands/uplink/ExAbsCurrentMC.js.map +1 -0
- package/dist/commands/uplink/ExAbsDayMC.d.ts +8 -3
- package/dist/commands/uplink/ExAbsDayMC.js +10 -36
- package/dist/commands/uplink/ExAbsDayMC.js.map +1 -1
- package/dist/commands/uplink/ExAbsHourMC.d.ts +58 -6
- package/dist/commands/uplink/ExAbsHourMC.js +45 -50
- package/dist/commands/uplink/ExAbsHourMC.js.map +1 -1
- package/dist/commands/uplink/GetArchiveDaysMC.d.ts +5 -29
- package/dist/commands/uplink/GetArchiveDaysMC.js +11 -37
- package/dist/commands/uplink/GetArchiveDaysMC.js.map +1 -1
- package/dist/commands/uplink/GetArchiveHoursMC.d.ts +47 -7
- package/dist/commands/uplink/GetArchiveHoursMC.js +43 -23
- package/dist/commands/uplink/GetArchiveHoursMC.js.map +1 -1
- package/dist/commands/uplink/GetCurrentMC.d.ts +2 -8
- package/dist/commands/uplink/GetCurrentMC.js +3 -3
- package/dist/commands/uplink/GetCurrentMC.js.map +1 -1
- package/dist/commands/uplink/index.d.ts +1 -0
- package/dist/commands/uplink/index.js +1 -0
- package/dist/commands/uplink/index.js.map +1 -1
- package/dist/constants/deviceParameters.d.ts +5 -1
- package/dist/constants/deviceParameters.js +5 -1
- package/dist/constants/deviceParameters.js.map +1 -1
- package/package.json +1 -1
|
@@ -13,36 +13,54 @@ export interface IBatteryVoltage {
|
|
|
13
13
|
*/
|
|
14
14
|
high: number | undefined;
|
|
15
15
|
}
|
|
16
|
-
/**
|
|
17
|
-
* Channel value hour diff
|
|
18
|
-
*/
|
|
19
|
-
export interface IHourDiff {
|
|
20
|
-
value: number;
|
|
21
|
-
hour: number;
|
|
22
|
-
seconds: number;
|
|
23
|
-
date: Date;
|
|
24
|
-
}
|
|
25
16
|
export interface IChannel {
|
|
26
17
|
/**
|
|
27
18
|
* Channel number.
|
|
28
19
|
*/
|
|
29
20
|
index: number;
|
|
21
|
+
}
|
|
22
|
+
export interface IChannelValue extends IChannel {
|
|
30
23
|
/**
|
|
31
24
|
* Pulse counter or absolute value of device channel.
|
|
32
25
|
*/
|
|
33
26
|
value: number;
|
|
27
|
+
}
|
|
28
|
+
export interface IChannelHours extends IChannelValue {
|
|
34
29
|
/**
|
|
35
|
-
*
|
|
30
|
+
* values differences between hours
|
|
36
31
|
*/
|
|
37
|
-
diff: Array<
|
|
32
|
+
diff: Array<number>;
|
|
33
|
+
}
|
|
34
|
+
export interface IChannelHourAbsoluteValue extends IChannelHours {
|
|
38
35
|
/**
|
|
39
|
-
*
|
|
36
|
+
* Channel pulse coefficient - IPK in bytes.
|
|
40
37
|
*/
|
|
41
|
-
|
|
38
|
+
pulseCoefficient: number;
|
|
39
|
+
}
|
|
40
|
+
export interface IChannelDays extends IChannel {
|
|
41
|
+
dayList: Array<number>;
|
|
42
|
+
}
|
|
43
|
+
export interface IChannelAbsoluteValue extends IChannelValue {
|
|
42
44
|
/**
|
|
43
|
-
*
|
|
45
|
+
* Channel pulse coefficient - IPK in bytes.
|
|
44
46
|
*/
|
|
45
|
-
|
|
47
|
+
pulseCoefficient: number;
|
|
48
|
+
}
|
|
49
|
+
export interface IChannelArchiveDaysAbsolute extends IChannel {
|
|
50
|
+
/**
|
|
51
|
+
* values by days
|
|
52
|
+
*/
|
|
53
|
+
dayList: Array<number>;
|
|
54
|
+
/**
|
|
55
|
+
* Channel pulse coefficient - IPK in bytes.
|
|
56
|
+
*/
|
|
57
|
+
pulseCoefficient: number;
|
|
58
|
+
}
|
|
59
|
+
export interface IChannelArchiveDays extends IChannel {
|
|
60
|
+
/**
|
|
61
|
+
* values by days
|
|
62
|
+
*/
|
|
63
|
+
dayList: Array<number>;
|
|
46
64
|
}
|
|
47
65
|
/**
|
|
48
66
|
* Command specific byte array manipulation.
|
|
@@ -52,15 +70,12 @@ declare class CommandBinaryBuffer extends BinaryBuffer {
|
|
|
52
70
|
setExtendedValue(value: number): void;
|
|
53
71
|
/**
|
|
54
72
|
* Get array of channel indexes.
|
|
55
|
-
*
|
|
56
|
-
* @param short - get 4 channelList or more
|
|
57
73
|
*/
|
|
58
|
-
getChannels(
|
|
74
|
+
getChannels(): Array<number>;
|
|
59
75
|
/**
|
|
60
76
|
* Set array of channel indexes.
|
|
61
|
-
*
|
|
62
77
|
*/
|
|
63
|
-
setChannels(channelList: Array<
|
|
78
|
+
setChannels(channelList: Array<IChannel>): void;
|
|
64
79
|
/**
|
|
65
80
|
* Retrieve device time from byte array.
|
|
66
81
|
*
|
|
@@ -92,9 +107,11 @@ declare class CommandBinaryBuffer extends BinaryBuffer {
|
|
|
92
107
|
setBatterVoltage(batteryVoltage: IBatteryVoltage): void;
|
|
93
108
|
getChannelsValuesWithHourDiff(): {
|
|
94
109
|
hours: number;
|
|
95
|
-
|
|
96
|
-
|
|
110
|
+
startTime: number;
|
|
111
|
+
channelList: Array<IChannelHours>;
|
|
97
112
|
};
|
|
98
|
-
setChannelsValuesWithHourDiff(hours: number,
|
|
113
|
+
setChannelsValuesWithHourDiff(hours: number, startTime: number, channelList: Array<IChannelHours>): void;
|
|
114
|
+
getChannelsWithAbsoluteValues(): Array<IChannelAbsoluteValue>;
|
|
115
|
+
setChannelsWithAbsoluteValues(channelList: Array<IChannelAbsoluteValue>): void;
|
|
99
116
|
}
|
|
100
117
|
export default CommandBinaryBuffer;
|
|
@@ -4,21 +4,21 @@ const INITIAL_YEAR = 2000;
|
|
|
4
4
|
const MONTH_BIT_SIZE = 4;
|
|
5
5
|
const DATE_BIT_SIZE = 5;
|
|
6
6
|
const YEAR_START_INDEX = 1;
|
|
7
|
-
const
|
|
8
|
-
const
|
|
9
|
-
const
|
|
7
|
+
const UNKNOWN_BATTERY_VOLTAGE = 4095;
|
|
8
|
+
const EXTEND_BIT_MASK = 0x80;
|
|
9
|
+
const LAST_BIT_INDEX = 7;
|
|
10
10
|
/**
|
|
11
11
|
* Command specific byte array manipulation.
|
|
12
12
|
*/
|
|
13
13
|
class CommandBinaryBuffer extends BinaryBuffer {
|
|
14
14
|
getExtendedValue() {
|
|
15
15
|
let value = 0;
|
|
16
|
-
let
|
|
16
|
+
let isByteExtended = true;
|
|
17
17
|
// byte offset
|
|
18
18
|
let position = 0;
|
|
19
|
-
while (
|
|
19
|
+
while (isByteExtended && this.offset <= this.data.byteLength) {
|
|
20
20
|
const byte = this.getUint8();
|
|
21
|
-
|
|
21
|
+
isByteExtended = !!(byte & EXTEND_BIT_MASK);
|
|
22
22
|
value += (byte & 0x7f) << (7 * position);
|
|
23
23
|
++position;
|
|
24
24
|
}
|
|
@@ -32,7 +32,7 @@ class CommandBinaryBuffer extends BinaryBuffer {
|
|
|
32
32
|
const data = [];
|
|
33
33
|
let encodedValue = value;
|
|
34
34
|
while (encodedValue) {
|
|
35
|
-
data.push(
|
|
35
|
+
data.push(EXTEND_BIT_MASK | (encodedValue & 0x7f));
|
|
36
36
|
encodedValue >>= 7;
|
|
37
37
|
}
|
|
38
38
|
const lastByte = data.pop();
|
|
@@ -44,41 +44,65 @@ class CommandBinaryBuffer extends BinaryBuffer {
|
|
|
44
44
|
}
|
|
45
45
|
/**
|
|
46
46
|
* Get array of channel indexes.
|
|
47
|
-
*
|
|
48
|
-
* @param short - get 4 channelList or more
|
|
49
47
|
*/
|
|
50
|
-
getChannels(
|
|
48
|
+
getChannels() {
|
|
51
49
|
const channelList = [];
|
|
52
|
-
let extended =
|
|
50
|
+
let extended = true;
|
|
53
51
|
let channelIndex = 0;
|
|
54
|
-
|
|
52
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
55
53
|
while (extended) {
|
|
56
54
|
const byte = this.getUint8();
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
55
|
+
// original 0b00000001, reverse it to get first - `1`
|
|
56
|
+
const bits = byte.toString(2).padStart(LAST_BIT_INDEX + 1, '0').split('').reverse();
|
|
57
|
+
// eslint-disable-next-line @typescript-eslint/no-loop-func
|
|
58
|
+
bits.forEach((bit, index) => {
|
|
59
|
+
const value = Number(bit);
|
|
60
|
+
if (index === LAST_BIT_INDEX) {
|
|
61
|
+
// highest bit in byte
|
|
62
|
+
extended = !!value;
|
|
61
63
|
}
|
|
62
|
-
|
|
63
|
-
|
|
64
|
+
else {
|
|
65
|
+
if (value) {
|
|
66
|
+
channelList.push(channelIndex);
|
|
67
|
+
}
|
|
68
|
+
++channelIndex;
|
|
69
|
+
}
|
|
70
|
+
});
|
|
64
71
|
}
|
|
65
|
-
return channelList
|
|
72
|
+
return channelList;
|
|
66
73
|
}
|
|
67
74
|
/**
|
|
68
75
|
* Set array of channel indexes.
|
|
69
|
-
*
|
|
70
76
|
*/
|
|
71
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
72
77
|
setChannels(channelList) {
|
|
73
|
-
//
|
|
78
|
+
// sort channels by index
|
|
79
|
+
channelList.sort((a, b) => a.index - b.index);
|
|
80
|
+
// find max channel to detect amount of bytes
|
|
74
81
|
const maxChannel = Math.max(...channelList.map(({ index }) => index));
|
|
75
|
-
const size = (
|
|
76
|
-
const data = Array(size).fill(
|
|
77
|
-
|
|
78
|
-
|
|
82
|
+
const size = (maxChannel - (maxChannel % LAST_BIT_INDEX)) / LAST_BIT_INDEX;
|
|
83
|
+
const data = new Array(size + 1).fill(0);
|
|
84
|
+
let byte = 0;
|
|
85
|
+
data.forEach((_, byteIndex) => {
|
|
86
|
+
// max channel index in one byte - 6
|
|
87
|
+
let channelIndex = byteIndex * LAST_BIT_INDEX;
|
|
88
|
+
const maxChannelIndex = channelIndex + LAST_BIT_INDEX;
|
|
89
|
+
while (channelIndex < maxChannelIndex) {
|
|
90
|
+
// eslint-disable-next-line @typescript-eslint/no-loop-func
|
|
91
|
+
const channel = channelList.find((item => item.index === channelIndex));
|
|
92
|
+
if (channel !== undefined) {
|
|
93
|
+
// set channel bit
|
|
94
|
+
byte |= 1 << (channel.index % LAST_BIT_INDEX);
|
|
95
|
+
}
|
|
96
|
+
++channelIndex;
|
|
97
|
+
}
|
|
98
|
+
// set extended bit if next byte exist
|
|
99
|
+
if (data[byteIndex + 1] !== undefined) {
|
|
100
|
+
byte |= 1 << LAST_BIT_INDEX;
|
|
101
|
+
}
|
|
102
|
+
data[byteIndex] = byte;
|
|
103
|
+
byte = 0;
|
|
79
104
|
});
|
|
80
|
-
data
|
|
81
|
-
data.forEach((byte) => this.setUint8(byte));
|
|
105
|
+
data.forEach((value) => this.setUint8(value));
|
|
82
106
|
}
|
|
83
107
|
/**
|
|
84
108
|
* Retrieve device time from byte array.
|
|
@@ -124,8 +148,10 @@ class CommandBinaryBuffer extends BinaryBuffer {
|
|
|
124
148
|
*/
|
|
125
149
|
getHours() {
|
|
126
150
|
const byte = this.getUint8();
|
|
127
|
-
|
|
151
|
+
let hours = (byte & 0xe0) >> 5;
|
|
128
152
|
const hour = byte & 0x1f;
|
|
153
|
+
// TODO: add link to doc
|
|
154
|
+
hours = hours === 0 ? 1 : hours;
|
|
129
155
|
return { hours, hour };
|
|
130
156
|
}
|
|
131
157
|
setHours(hour, hours) {
|
|
@@ -151,10 +177,10 @@ class CommandBinaryBuffer extends BinaryBuffer {
|
|
|
151
177
|
low = lowVoltageByte << 4;
|
|
152
178
|
low |= (lowAndHightVoltageByte & 0xf0) >> 4;
|
|
153
179
|
high = ((lowAndHightVoltageByte & 0x0f) << 8) | highVoltageByte;
|
|
154
|
-
if (high ===
|
|
180
|
+
if (high === UNKNOWN_BATTERY_VOLTAGE) {
|
|
155
181
|
high = undefined;
|
|
156
182
|
}
|
|
157
|
-
if (low ===
|
|
183
|
+
if (low === UNKNOWN_BATTERY_VOLTAGE) {
|
|
158
184
|
low = undefined;
|
|
159
185
|
}
|
|
160
186
|
return { low, high };
|
|
@@ -162,10 +188,10 @@ class CommandBinaryBuffer extends BinaryBuffer {
|
|
|
162
188
|
setBatterVoltage(batteryVoltage) {
|
|
163
189
|
let { low, high } = batteryVoltage;
|
|
164
190
|
if (low === undefined) {
|
|
165
|
-
low =
|
|
191
|
+
low = UNKNOWN_BATTERY_VOLTAGE;
|
|
166
192
|
}
|
|
167
193
|
if (high === undefined) {
|
|
168
|
-
high =
|
|
194
|
+
high = UNKNOWN_BATTERY_VOLTAGE;
|
|
169
195
|
}
|
|
170
196
|
const lowVoltageByte = (low >> 4) & 0xff;
|
|
171
197
|
const lowAndHighVoltageByte = ((low & 0x0f) << 4) | ((high >> 8) & 0x0f);
|
|
@@ -174,48 +200,57 @@ class CommandBinaryBuffer extends BinaryBuffer {
|
|
|
174
200
|
}
|
|
175
201
|
getChannelsValuesWithHourDiff() {
|
|
176
202
|
const date = this.getDate();
|
|
177
|
-
const { hour, hours
|
|
178
|
-
const
|
|
179
|
-
const maxChannel = Math.max.apply(null, channelArray);
|
|
203
|
+
const { hour, hours } = this.getHours();
|
|
204
|
+
const channels = this.getChannels();
|
|
180
205
|
const channelList = [];
|
|
181
|
-
let hours = hourAmount;
|
|
182
|
-
let value;
|
|
183
206
|
date.setUTCHours(hour);
|
|
184
|
-
|
|
185
|
-
// TODO: add link to doc
|
|
186
|
-
if (hours === 0) {
|
|
187
|
-
hours = 1;
|
|
188
|
-
}
|
|
189
|
-
for (let channelIndex = 0; channelIndex <= maxChannel; ++channelIndex) {
|
|
207
|
+
channels.forEach(channelIndex => {
|
|
190
208
|
const diff = [];
|
|
191
209
|
// decode hour value for channel
|
|
192
|
-
value = this.getExtendedValue();
|
|
193
|
-
|
|
210
|
+
const value = this.getExtendedValue();
|
|
211
|
+
for (let diffHour = 0; diffHour < hours; ++diffHour) {
|
|
212
|
+
diff.push(this.getExtendedValue());
|
|
213
|
+
}
|
|
194
214
|
channelList.push({
|
|
195
215
|
value,
|
|
196
216
|
diff,
|
|
197
|
-
index: channelIndex
|
|
198
|
-
seconds: getSecondsFromDate(counterDate),
|
|
199
|
-
date: new Date(counterDate)
|
|
217
|
+
index: channelIndex
|
|
200
218
|
});
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
counterDate.setUTCHours(counterDate.getUTCHours() + diffHour);
|
|
204
|
-
diff.push({ value, hour: diffHour, date: new Date(counterDate), seconds: getSecondsFromDate(counterDate) });
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
return { channelList, date, hours };
|
|
219
|
+
});
|
|
220
|
+
return { channelList, hours, startTime: getSecondsFromDate(date) };
|
|
208
221
|
}
|
|
209
|
-
setChannelsValuesWithHourDiff(hours,
|
|
222
|
+
setChannelsValuesWithHourDiff(hours, startTime, channelList) {
|
|
223
|
+
const date = getDateFromSeconds(startTime);
|
|
210
224
|
const hour = date.getUTCHours();
|
|
211
225
|
this.setDate(date);
|
|
212
226
|
this.setHours(hour, hours);
|
|
213
227
|
this.setChannels(channelList);
|
|
214
228
|
channelList.forEach(({ value, diff }) => {
|
|
215
229
|
this.setExtendedValue(value);
|
|
216
|
-
diff.forEach(
|
|
230
|
+
diff.forEach(diffValue => this.setExtendedValue(diffValue));
|
|
217
231
|
});
|
|
218
232
|
}
|
|
233
|
+
getChannelsWithAbsoluteValues() {
|
|
234
|
+
const channels = this.getChannels();
|
|
235
|
+
const channelList = [];
|
|
236
|
+
channels.forEach(channelIndex => {
|
|
237
|
+
channelList.push({
|
|
238
|
+
// IPK_${channelIndex}
|
|
239
|
+
pulseCoefficient: this.getUint8(),
|
|
240
|
+
// day value
|
|
241
|
+
value: this.getExtendedValue(),
|
|
242
|
+
index: channelIndex
|
|
243
|
+
});
|
|
244
|
+
});
|
|
245
|
+
return channelList;
|
|
246
|
+
}
|
|
247
|
+
setChannelsWithAbsoluteValues(channelList) {
|
|
248
|
+
this.setChannels(channelList);
|
|
249
|
+
for (const { value, pulseCoefficient } of channelList) {
|
|
250
|
+
this.setUint8(pulseCoefficient);
|
|
251
|
+
this.setExtendedValue(value);
|
|
252
|
+
}
|
|
253
|
+
}
|
|
219
254
|
}
|
|
220
255
|
export default CommandBinaryBuffer;
|
|
221
256
|
//# sourceMappingURL=CommandBinaryBuffer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CommandBinaryBuffer.js","sourceRoot":"","sources":["../src/CommandBinaryBuffer.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAC,kBAAkB,EAAE,kBAAkB,EAAC,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"CommandBinaryBuffer.js","sourceRoot":"","sources":["../src/CommandBinaryBuffer.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,7 +15,7 @@ interface IDownlinkExAbsArchiveDaysMCParameters {
|
|
|
15
15
|
/** amount of days to retrieve */
|
|
16
16
|
days: number;
|
|
17
17
|
/** time */
|
|
18
|
-
|
|
18
|
+
startTime: number;
|
|
19
19
|
/** array of channelList indexes */
|
|
20
20
|
channelList: Array<number>;
|
|
21
21
|
}
|
|
@@ -40,7 +40,7 @@ declare class ExAbsArchiveDaysMC extends Command {
|
|
|
40
40
|
constructor(parameters: IDownlinkExAbsArchiveDaysMCParameters);
|
|
41
41
|
static readonly id = 3359;
|
|
42
42
|
static readonly directionType = 1;
|
|
43
|
-
static readonly title = "
|
|
43
|
+
static readonly title = "EX_ABS_ARCHIVE_DAYS_MC";
|
|
44
44
|
static fromBytes(data: Uint8Array): ExAbsArchiveDaysMC;
|
|
45
45
|
toBytes(): Uint8Array;
|
|
46
46
|
}
|
|
@@ -9,7 +9,7 @@ import { DOWNLINK } from '../../constants/directionTypes.js';
|
|
|
9
9
|
import { getSecondsFromDate, getDateFromSeconds } from '../../utils/time.js';
|
|
10
10
|
// TODO: rework extended headers detection
|
|
11
11
|
const COMMAND_ID = 0x0d1f;
|
|
12
|
-
const COMMAND_TITLE = '
|
|
12
|
+
const COMMAND_TITLE = 'EX_ABS_ARCHIVE_DAYS_MC';
|
|
13
13
|
const COMMAND_BODY_SIZE = 4;
|
|
14
14
|
/**
|
|
15
15
|
* Downlink command
|
|
@@ -40,20 +40,20 @@ class ExAbsArchiveDaysMC extends Command {
|
|
|
40
40
|
}
|
|
41
41
|
const buffer = new CommandBinaryBuffer(data);
|
|
42
42
|
const date = buffer.getDate();
|
|
43
|
-
const channelList = buffer.getChannels(
|
|
43
|
+
const channelList = buffer.getChannels();
|
|
44
44
|
const days = buffer.getUint8();
|
|
45
45
|
if (!buffer.isEmpty) {
|
|
46
46
|
throw new Error(`${this.getName()}. BinaryBuffer is not empty.`);
|
|
47
47
|
}
|
|
48
|
-
return new ExAbsArchiveDaysMC({ channelList, days,
|
|
48
|
+
return new ExAbsArchiveDaysMC({ channelList, days, startTime: getSecondsFromDate(date) });
|
|
49
49
|
}
|
|
50
50
|
// returns full message - header with body
|
|
51
51
|
toBytes() {
|
|
52
|
-
const { channelList, days,
|
|
52
|
+
const { channelList, days, startTime } = this.parameters;
|
|
53
53
|
const buffer = new CommandBinaryBuffer(COMMAND_BODY_SIZE);
|
|
54
|
-
const date = getDateFromSeconds(
|
|
54
|
+
const date = getDateFromSeconds(startTime);
|
|
55
55
|
buffer.setDate(date);
|
|
56
|
-
buffer.setChannels(channelList);
|
|
56
|
+
buffer.setChannels(channelList.map(index => ({ index })));
|
|
57
57
|
buffer.setUint8(days);
|
|
58
58
|
return Command.toBytes(COMMAND_ID, buffer.toUint8Array());
|
|
59
59
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExAbsArchiveDaysMC.js","sourceRoot":"","sources":["../../../src/commands/downlink/ExAbsArchiveDaysMC.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,OAAO,MAAM,kBAAkB,CAAC;AACvC,OAAO,
|
|
1
|
+
{"version":3,"file":"ExAbsArchiveDaysMC.js","sourceRoot":"","sources":["../../../src/commands/downlink/ExAbsArchiveDaysMC.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,OAAO,MAAM,kBAAkB,CAAC;AACvC,OAAO,mBAA+B,MAAM,8BAA8B,CAAC;AAC3E,OAAO,EAAC,QAAQ,EAAC,MAAM,mCAAmC,CAAC;AAC3D,OAAO,EAAC,kBAAkB,EAAE,kBAAkB,EAAC,MAAM,qBAAqB,CAAC;AAsB3E,0CAA0C;AAC1C,MAAM,UAAU,GAAG,MAAM,CAAC;AAC1B,MAAM,aAAa,GAAG,wBAAwB,CAAC;AAC/C,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAG5B;;;;;;;;;;;;;;;GAeG;AACH,MAAM,kBAAmB,SAAQ,OAAO;IACpC,YAAqB,UAAiD;QAClE,KAAK,EAAE,CAAC;QADS,eAAU,GAAV,UAAU,CAAuC;QAGlE,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,WAAW,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;QACzC,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;QAE/B,IAAK,CAAC,MAAM,CAAC,OAAO,EAAG;YACnB,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,8BAA8B,CAAC,CAAC;SACpE;QAED,OAAO,IAAI,kBAAkB,CAAC,EAAC,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,kBAAkB,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC;IAC5F,CAAC;IAED,0CAA0C;IAC1C,OAAO;QACH,MAAM,EAAC,WAAW,EAAE,IAAI,EAAE,SAAS,EAAC,GAAG,IAAI,CAAC,UAAU,CAAC;QACvD,MAAM,MAAM,GAAG,IAAI,mBAAmB,CAAC,iBAAiB,CAAC,CAAC;QAE1D,MAAM,IAAI,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC;QAE3C,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACrB,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAC,KAAK,EAAc,CAAA,CAAC,CAAC,CAAC;QACpE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAEtB,OAAO,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;IAC9D,CAAC;;AArCe,qBAAE,GAAG,UAAU,CAAC;AAEhB,gCAAa,GAAG,QAAQ,CAAC;AAEzB,wBAAK,GAAG,aAAa,CAAC;AAqC1C,eAAe,kBAAkB,CAAC"}
|
|
@@ -15,7 +15,7 @@ interface IDownlinkExAbsArchiveHoursMCParameters {
|
|
|
15
15
|
/** amount of hours to retrieve */
|
|
16
16
|
hours: number;
|
|
17
17
|
/** time */
|
|
18
|
-
|
|
18
|
+
startTime: number;
|
|
19
19
|
/** array of channelList indexes */
|
|
20
20
|
channelList: Array<number>;
|
|
21
21
|
}
|
|
@@ -40,7 +40,7 @@ declare class ExAbsArchiveHoursMC extends Command {
|
|
|
40
40
|
constructor(parameters: IDownlinkExAbsArchiveHoursMCParameters);
|
|
41
41
|
static readonly id = 3103;
|
|
42
42
|
static readonly directionType = 1;
|
|
43
|
-
static readonly title = "
|
|
43
|
+
static readonly title = "EX_ABS_ARCHIVE_HOUR_MC";
|
|
44
44
|
static fromBytes(data: Uint8Array): ExAbsArchiveHoursMC;
|
|
45
45
|
toBytes(): Uint8Array;
|
|
46
46
|
}
|
|
@@ -9,7 +9,7 @@ import { DOWNLINK } from '../../constants/directionTypes.js';
|
|
|
9
9
|
import { getSecondsFromDate, getDateFromSeconds } from '../../utils/time.js';
|
|
10
10
|
// TODO: rework extended headers detection
|
|
11
11
|
const COMMAND_ID = 0x0c1f;
|
|
12
|
-
const COMMAND_TITLE = '
|
|
12
|
+
const COMMAND_TITLE = 'EX_ABS_ARCHIVE_HOUR_MC';
|
|
13
13
|
const COMMAND_BODY_SIZE = 4;
|
|
14
14
|
/**
|
|
15
15
|
* Downlink command
|
|
@@ -41,22 +41,22 @@ class ExAbsArchiveHoursMC extends Command {
|
|
|
41
41
|
const buffer = new CommandBinaryBuffer(data);
|
|
42
42
|
const date = buffer.getDate();
|
|
43
43
|
const { hour, hours } = buffer.getHours();
|
|
44
|
-
const channelList = buffer.getChannels(
|
|
44
|
+
const channelList = buffer.getChannels();
|
|
45
45
|
date.setUTCHours(hour);
|
|
46
46
|
if (!buffer.isEmpty) {
|
|
47
47
|
throw new Error(`${this.getName()}. BinaryBuffer is not empty.`);
|
|
48
48
|
}
|
|
49
|
-
return new ExAbsArchiveHoursMC({ channelList, hours,
|
|
49
|
+
return new ExAbsArchiveHoursMC({ channelList, hours, startTime: getSecondsFromDate(date) });
|
|
50
50
|
}
|
|
51
51
|
// returns full message - header with body
|
|
52
52
|
toBytes() {
|
|
53
|
-
const { channelList, hours,
|
|
53
|
+
const { channelList, hours, startTime } = this.parameters;
|
|
54
54
|
const buffer = new CommandBinaryBuffer(COMMAND_BODY_SIZE);
|
|
55
|
-
const date = getDateFromSeconds(
|
|
55
|
+
const date = getDateFromSeconds(startTime);
|
|
56
56
|
const hour = date.getUTCHours();
|
|
57
57
|
buffer.setDate(date);
|
|
58
58
|
buffer.setHours(hour, hours);
|
|
59
|
-
buffer.setChannels(channelList);
|
|
59
|
+
buffer.setChannels(channelList.map(index => ({ index })));
|
|
60
60
|
return Command.toBytes(COMMAND_ID, buffer.toUint8Array());
|
|
61
61
|
}
|
|
62
62
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExAbsArchiveHoursMC.js","sourceRoot":"","sources":["../../../src/commands/downlink/ExAbsArchiveHoursMC.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,OAAO,MAAM,kBAAkB,CAAC;AACvC,OAAO,
|
|
1
|
+
{"version":3,"file":"ExAbsArchiveHoursMC.js","sourceRoot":"","sources":["../../../src/commands/downlink/ExAbsArchiveHoursMC.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,OAAO,MAAM,kBAAkB,CAAC;AACvC,OAAO,mBAA+B,MAAM,8BAA8B,CAAC;AAC3E,OAAO,EAAC,QAAQ,EAAC,MAAM,mCAAmC,CAAC;AAC3D,OAAO,EAAC,kBAAkB,EAAE,kBAAkB,EAAC,MAAM,qBAAqB,CAAC;AAsB3E,0CAA0C;AAC1C,MAAM,UAAU,GAAG,MAAM,CAAC;AAC1B,MAAM,aAAa,GAAG,wBAAwB,CAAC;AAC/C,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAG5B;;;;;;;;;;;;;;;GAeG;AACH,MAAM,mBAAoB,SAAQ,OAAO;IACrC,YAAqB,UAAkD;QACnE,KAAK,EAAE,CAAC;QADS,eAAU,GAAV,UAAU,CAAwC;QAGnE,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,EAAE,CAAC;QAEzC,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,mBAAmB,CAAC,EAAC,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE,kBAAkB,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC;IAC9F,CAAC;IAED,0CAA0C;IAC1C,OAAO;QACH,MAAM,EAAC,WAAW,EAAE,KAAK,EAAE,SAAS,EAAC,GAAG,IAAI,CAAC,UAAU,CAAC;QACxD,MAAM,MAAM,GAAG,IAAI,mBAAmB,CAAC,iBAAiB,CAAC,CAAC;QAE1D,MAAM,IAAI,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC;QAC3C,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,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAC,KAAK,EAAc,CAAA,CAAC,CAAC,CAAC;QAEpE,OAAO,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;IAC9D,CAAC;;AAxCe,sBAAE,GAAG,UAAU,CAAC;AAEhB,iCAAa,GAAG,QAAQ,CAAC;AAEzB,yBAAK,GAAG,aAAa,CAAC;AAwC1C,eAAe,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* [[include:commands/downlink/ExAbsCurrentMC.md]]
|
|
3
|
+
*
|
|
4
|
+
* @packageDocumentation
|
|
5
|
+
*/
|
|
6
|
+
import Command from '../../Command.js';
|
|
7
|
+
/**
|
|
8
|
+
* Downlink command
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```js
|
|
12
|
+
* import ExAbsCurrentMC from 'jooby-codec/commands/downlink/ExAbsCurrentMC';
|
|
13
|
+
*
|
|
14
|
+
* const command = new ExAbsCurrentMC();
|
|
15
|
+
*
|
|
16
|
+
* // output command binary in hex representation
|
|
17
|
+
* console.log(command.toHex());
|
|
18
|
+
* // 1f 0f 00
|
|
19
|
+
* ```
|
|
20
|
+
* [Command format documentation](https://github.com/jooby-dev/jooby-docs/blob/main/docs/commands/ExAbsCurrentMC.md#request)
|
|
21
|
+
*/
|
|
22
|
+
declare class ExAbsCurrentMC extends Command {
|
|
23
|
+
constructor();
|
|
24
|
+
static readonly id = 3871;
|
|
25
|
+
static readonly directionType = 1;
|
|
26
|
+
static readonly title = "EX_ABS_CURRENT_MC";
|
|
27
|
+
static fromBytes(): ExAbsCurrentMC;
|
|
28
|
+
toBytes(): Uint8Array;
|
|
29
|
+
}
|
|
30
|
+
export default ExAbsCurrentMC;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* [[include:commands/downlink/ExAbsCurrentMC.md]]
|
|
3
|
+
*
|
|
4
|
+
* @packageDocumentation
|
|
5
|
+
*/
|
|
6
|
+
import Command from '../../Command.js';
|
|
7
|
+
import { DOWNLINK } from '../../constants/directionTypes.js';
|
|
8
|
+
// TODO: rework extended headers detection
|
|
9
|
+
const COMMAND_ID = 0x0f1f;
|
|
10
|
+
const COMMAND_TITLE = 'EX_ABS_CURRENT_MC';
|
|
11
|
+
/**
|
|
12
|
+
* Downlink command
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```js
|
|
16
|
+
* import ExAbsCurrentMC from 'jooby-codec/commands/downlink/ExAbsCurrentMC';
|
|
17
|
+
*
|
|
18
|
+
* const command = new ExAbsCurrentMC();
|
|
19
|
+
*
|
|
20
|
+
* // output command binary in hex representation
|
|
21
|
+
* console.log(command.toHex());
|
|
22
|
+
* // 1f 0f 00
|
|
23
|
+
* ```
|
|
24
|
+
* [Command format documentation](https://github.com/jooby-dev/jooby-docs/blob/main/docs/commands/ExAbsCurrentMC.md#request)
|
|
25
|
+
*/
|
|
26
|
+
class ExAbsCurrentMC extends Command {
|
|
27
|
+
constructor() {
|
|
28
|
+
super();
|
|
29
|
+
}
|
|
30
|
+
// data - only body (without header)
|
|
31
|
+
static fromBytes() {
|
|
32
|
+
return new ExAbsCurrentMC();
|
|
33
|
+
}
|
|
34
|
+
// eslint-disable-next-line class-methods-use-this
|
|
35
|
+
toBytes() {
|
|
36
|
+
return Command.toBytes(COMMAND_ID);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
ExAbsCurrentMC.id = COMMAND_ID;
|
|
40
|
+
ExAbsCurrentMC.directionType = DOWNLINK;
|
|
41
|
+
ExAbsCurrentMC.title = COMMAND_TITLE;
|
|
42
|
+
export default ExAbsCurrentMC;
|
|
43
|
+
//# sourceMappingURL=ExAbsCurrentMC.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ExAbsCurrentMC.js","sourceRoot":"","sources":["../../../src/commands/downlink/ExAbsCurrentMC.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,OAAO,MAAM,kBAAkB,CAAC;AACvC,OAAO,EAAC,QAAQ,EAAC,MAAM,mCAAmC,CAAC;AAG3D,0CAA0C;AAC1C,MAAM,UAAU,GAAG,MAAM,CAAC;AAC1B,MAAM,aAAa,GAAG,mBAAmB,CAAC;AAG1C;;;;;;;;;;;;;;GAcG;AACH,MAAM,cAAe,SAAQ,OAAO;IAChC;QACI,KAAK,EAAE,CAAC;IACZ,CAAC;IAQD,oCAAoC;IACpC,MAAM,CAAC,SAAS;QACZ,OAAO,IAAI,cAAc,EAAE,CAAC;IAChC,CAAC;IAED,kDAAkD;IAClD,OAAO;QACH,OAAO,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACvC,CAAC;;AAde,iBAAE,GAAG,UAAU,CAAC;AAEhB,4BAAa,GAAG,QAAQ,CAAC;AAEzB,oBAAK,GAAG,aAAa,CAAC;AAc1C,eAAe,cAAc,CAAC"}
|
|
@@ -15,7 +15,7 @@ interface IDownlinkGetArchiveDaysMCParameters {
|
|
|
15
15
|
/** amount of days to retrieve */
|
|
16
16
|
days: number;
|
|
17
17
|
/** time */
|
|
18
|
-
|
|
18
|
+
startTime: number;
|
|
19
19
|
/** array of channelList indexes */
|
|
20
20
|
channelList: Array<number>;
|
|
21
21
|
}
|
|
@@ -40,7 +40,7 @@ declare class GetArchiveDaysMC extends Command {
|
|
|
40
40
|
constructor(parameters: IDownlinkGetArchiveDaysMCParameters);
|
|
41
41
|
static readonly id = 27;
|
|
42
42
|
static readonly directionType = 1;
|
|
43
|
-
static readonly title = "
|
|
43
|
+
static readonly title = "GET_ARCHIVE_DAYS_MC";
|
|
44
44
|
static fromBytes(data: Uint8Array): GetArchiveDaysMC;
|
|
45
45
|
toBytes(): Uint8Array;
|
|
46
46
|
}
|