jooby-codec 1.8.0 → 1.10.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/BinaryBuffer.d.ts +2 -0
- package/dist/BinaryBuffer.js +9 -0
- package/dist/BinaryBuffer.js.map +1 -1
- package/dist/CommandBinaryBuffer.d.ts +108 -9
- package/dist/CommandBinaryBuffer.js +235 -31
- package/dist/CommandBinaryBuffer.js.map +1 -1
- package/dist/commands/downlink/CorrectTime2000.d.ts +4 -3
- package/dist/commands/downlink/CorrectTime2000.js +1 -0
- package/dist/commands/downlink/CorrectTime2000.js.map +1 -1
- package/dist/commands/downlink/GetArchiveDaysMC.d.ts +10 -12
- package/dist/commands/downlink/GetArchiveDaysMC.js +15 -3
- package/dist/commands/downlink/GetArchiveDaysMC.js.map +1 -1
- package/dist/commands/downlink/GetArchiveEvents.d.ts +4 -3
- package/dist/commands/downlink/GetArchiveEvents.js +3 -5
- package/dist/commands/downlink/GetArchiveEvents.js.map +1 -1
- package/dist/commands/downlink/GetArchiveHoursMC.d.ts +12 -10
- package/dist/commands/downlink/GetArchiveHoursMC.js +15 -3
- package/dist/commands/downlink/GetArchiveHoursMC.js.map +1 -1
- package/dist/commands/downlink/GetCurrentMC.d.ts +1 -0
- package/dist/commands/downlink/GetCurrentMC.js +1 -0
- package/dist/commands/downlink/GetCurrentMC.js.map +1 -1
- package/dist/commands/downlink/GetExAbsArchiveDaysMC.d.ts +41 -0
- package/dist/commands/downlink/{ExAbsArchiveDaysMC.js → GetExAbsArchiveDaysMC.js} +26 -13
- package/dist/commands/downlink/GetExAbsArchiveDaysMC.js.map +1 -0
- package/dist/commands/downlink/GetExAbsArchiveHoursMC.d.ts +40 -0
- package/dist/commands/downlink/{ExAbsArchiveHoursMC.js → GetExAbsArchiveHoursMC.js} +24 -12
- package/dist/commands/downlink/GetExAbsArchiveHoursMC.js.map +1 -0
- package/dist/commands/downlink/{ExAbsCurrentMC.d.ts → GetExAbsCurrentMC.d.ts} +8 -7
- package/dist/commands/downlink/{ExAbsCurrentMC.js → GetExAbsCurrentMC.js} +12 -11
- package/dist/commands/downlink/GetExAbsCurrentMC.js.map +1 -0
- package/dist/commands/downlink/{GetLmicVersion.d.ts → GetLmicInfo.d.ts} +7 -6
- package/dist/commands/downlink/{GetLmicVersion.js → GetLmicInfo.js} +12 -11
- package/dist/commands/downlink/GetLmicInfo.js.map +1 -0
- package/dist/commands/downlink/GetParameter.d.ts +4 -3
- package/dist/commands/downlink/GetParameter.js +3 -8
- package/dist/commands/downlink/GetParameter.js.map +1 -1
- package/dist/commands/downlink/GetStatus.d.ts +1 -0
- package/dist/commands/downlink/GetStatus.js +1 -1
- package/dist/commands/downlink/GetStatus.js.map +1 -1
- package/dist/commands/downlink/SetParameter.d.ts +1 -0
- package/dist/commands/downlink/SetParameter.js +94 -16
- package/dist/commands/downlink/SetParameter.js.map +1 -1
- package/dist/commands/downlink/SetTime2000.d.ts +4 -3
- package/dist/commands/downlink/SetTime2000.js +1 -0
- package/dist/commands/downlink/SetTime2000.js.map +1 -1
- package/dist/commands/downlink/SoftRestart.d.ts +1 -0
- package/dist/commands/downlink/SoftRestart.js +1 -0
- package/dist/commands/downlink/SoftRestart.js.map +1 -1
- package/dist/commands/downlink/index.d.ts +4 -4
- package/dist/commands/downlink/index.js +4 -4
- package/dist/commands/downlink/index.js.map +1 -1
- package/dist/commands/uplink/CorrectTime2000Response.d.ts +39 -0
- package/dist/commands/uplink/{CorrectTime2000.js → CorrectTime2000Response.js} +23 -14
- package/dist/commands/uplink/CorrectTime2000Response.js.map +1 -0
- package/dist/commands/uplink/CurrentMC.d.ts +40 -0
- package/dist/commands/uplink/{GetCurrentMC.js → CurrentMC.js} +27 -27
- package/dist/commands/uplink/CurrentMC.js.map +1 -0
- package/dist/commands/uplink/DayMC.d.ts +47 -0
- package/dist/commands/uplink/DayMC.js +86 -0
- package/dist/commands/uplink/DayMC.js.map +1 -0
- package/dist/commands/uplink/ExAbsCurrentMC.d.ts +30 -4
- package/dist/commands/uplink/ExAbsCurrentMC.js +44 -0
- package/dist/commands/uplink/ExAbsCurrentMC.js.map +1 -1
- package/dist/commands/uplink/ExAbsDayMC.d.ts +30 -2
- package/dist/commands/uplink/ExAbsDayMC.js +48 -2
- package/dist/commands/uplink/ExAbsDayMC.js.map +1 -1
- package/dist/commands/uplink/ExAbsHourMC.d.ts +17 -12
- package/dist/commands/uplink/ExAbsHourMC.js +33 -10
- package/dist/commands/uplink/ExAbsHourMC.js.map +1 -1
- package/dist/commands/uplink/GetArchiveDaysMCResponse.d.ts +58 -0
- package/dist/commands/uplink/{GetArchiveDaysMC.js → GetArchiveDaysMCResponse.js} +44 -20
- package/dist/commands/uplink/GetArchiveDaysMCResponse.js.map +1 -0
- package/dist/commands/uplink/GetArchiveEventsResponse.d.ts +54 -0
- package/dist/commands/uplink/{GetArchiveEvents.js → GetArchiveEventsResponse.js} +24 -18
- package/dist/commands/uplink/GetArchiveEventsResponse.js.map +1 -0
- package/dist/commands/uplink/GetArchiveHoursMCResponse.d.ts +50 -0
- package/dist/commands/uplink/GetArchiveHoursMCResponse.js +77 -0
- package/dist/commands/uplink/GetArchiveHoursMCResponse.js.map +1 -0
- package/dist/commands/uplink/GetExAbsArchiveDaysMCResponse.d.ts +47 -0
- package/dist/commands/uplink/{ExAbsArchiveDaysMC.js → GetExAbsArchiveDaysMCResponse.js} +52 -7
- package/dist/commands/uplink/GetExAbsArchiveDaysMCResponse.js.map +1 -0
- package/dist/commands/uplink/GetExAbsArchiveHoursMCResponse.d.ts +44 -0
- package/dist/commands/uplink/{ExAbsArchiveHoursMC.js → GetExAbsArchiveHoursMCResponse.js} +46 -7
- package/dist/commands/uplink/GetExAbsArchiveHoursMCResponse.js.map +1 -0
- package/dist/commands/uplink/GetLmicInfoResponse.d.ts +52 -0
- package/dist/commands/uplink/{GetLmicVersion.js → GetLmicInfoResponse.js} +27 -27
- package/dist/commands/uplink/GetLmicInfoResponse.js.map +1 -0
- package/dist/commands/uplink/GetParameterResponse.d.ts +35 -0
- package/dist/commands/uplink/{GetParameter.js → GetParameterResponse.js} +25 -32
- package/dist/commands/uplink/GetParameterResponse.js.map +1 -0
- package/dist/commands/uplink/HourMC.d.ts +48 -0
- package/dist/commands/uplink/{DataHourMC.js → HourMC.js} +55 -10
- package/dist/commands/uplink/HourMC.js.map +1 -0
- package/dist/commands/uplink/LastEvent.d.ts +19 -10
- package/dist/commands/uplink/LastEvent.js +21 -12
- package/dist/commands/uplink/LastEvent.js.map +1 -1
- package/dist/commands/uplink/NewEvent.d.ts +12 -8
- package/dist/commands/uplink/NewEvent.js +18 -12
- package/dist/commands/uplink/NewEvent.js.map +1 -1
- package/dist/commands/uplink/SetTime2000Response.d.ts +38 -0
- package/dist/commands/uplink/{SetTime2000.js → SetTime2000Response.js} +23 -15
- package/dist/commands/uplink/SetTime2000Response.js.map +1 -0
- package/dist/commands/uplink/SoftRestartResponse.d.ts +28 -0
- package/dist/commands/uplink/SoftRestartResponse.js +44 -0
- package/dist/commands/uplink/SoftRestartResponse.js.map +1 -0
- package/dist/commands/uplink/{GetStatus.d.ts → Status.d.ts} +19 -21
- package/dist/commands/uplink/{GetStatus.js → Status.js} +31 -37
- package/dist/commands/uplink/Status.js.map +1 -0
- package/dist/commands/uplink/Time2000.d.ts +11 -9
- package/dist/commands/uplink/Time2000.js +18 -8
- package/dist/commands/uplink/Time2000.js.map +1 -1
- package/dist/commands/uplink/index.d.ts +14 -14
- package/dist/commands/uplink/index.js +14 -14
- package/dist/commands/uplink/index.js.map +1 -1
- package/dist/constants/deviceParameters.d.ts +14 -0
- package/dist/constants/deviceParameters.js +14 -0
- package/dist/constants/deviceParameters.js.map +1 -1
- package/dist/constants/hardwareTypes.d.ts +55 -27
- package/dist/constants/hardwareTypes.js +55 -27
- package/dist/constants/hardwareTypes.js.map +1 -1
- package/dist/constants/index.d.ts +1 -0
- package/dist/constants/index.js +1 -0
- package/dist/constants/index.js.map +1 -1
- package/dist/constants/rx2SpreadFactors.d.ts +12 -0
- package/dist/constants/rx2SpreadFactors.js +13 -0
- package/dist/constants/rx2SpreadFactors.js.map +1 -0
- package/package.json +4 -1
- package/readme.md +4 -4
- package/dist/commands/downlink/ExAbsArchiveDaysMC.d.ts +0 -42
- package/dist/commands/downlink/ExAbsArchiveDaysMC.js.map +0 -1
- package/dist/commands/downlink/ExAbsArchiveHoursMC.d.ts +0 -42
- package/dist/commands/downlink/ExAbsArchiveHoursMC.js.map +0 -1
- package/dist/commands/downlink/ExAbsCurrentMC.js.map +0 -1
- package/dist/commands/downlink/GetLmicVersion.js.map +0 -1
- package/dist/commands/uplink/CorrectTime2000.d.ts +0 -37
- package/dist/commands/uplink/CorrectTime2000.js.map +0 -1
- package/dist/commands/uplink/DataDayMC.d.ts +0 -18
- package/dist/commands/uplink/DataDayMC.js +0 -43
- package/dist/commands/uplink/DataDayMC.js.map +0 -1
- package/dist/commands/uplink/DataHourMC.d.ts +0 -18
- package/dist/commands/uplink/DataHourMC.js.map +0 -1
- package/dist/commands/uplink/ExAbsArchiveDaysMC.d.ts +0 -18
- package/dist/commands/uplink/ExAbsArchiveDaysMC.js.map +0 -1
- package/dist/commands/uplink/ExAbsArchiveHoursMC.d.ts +0 -18
- package/dist/commands/uplink/ExAbsArchiveHoursMC.js.map +0 -1
- package/dist/commands/uplink/GetArchiveDaysMC.d.ts +0 -50
- package/dist/commands/uplink/GetArchiveDaysMC.js.map +0 -1
- package/dist/commands/uplink/GetArchiveEvents.d.ts +0 -48
- package/dist/commands/uplink/GetArchiveEvents.js.map +0 -1
- package/dist/commands/uplink/GetArchiveHoursMC.d.ts +0 -69
- package/dist/commands/uplink/GetArchiveHoursMC.js +0 -72
- package/dist/commands/uplink/GetArchiveHoursMC.js.map +0 -1
- package/dist/commands/uplink/GetCurrentMC.d.ts +0 -40
- package/dist/commands/uplink/GetCurrentMC.js.map +0 -1
- package/dist/commands/uplink/GetLmicVersion.d.ts +0 -46
- package/dist/commands/uplink/GetLmicVersion.js.map +0 -1
- package/dist/commands/uplink/GetParameter.d.ts +0 -30
- package/dist/commands/uplink/GetParameter.js.map +0 -1
- package/dist/commands/uplink/GetStatus.js.map +0 -1
- package/dist/commands/uplink/SetTime2000.d.ts +0 -37
- package/dist/commands/uplink/SetTime2000.js.map +0 -1
- package/dist/commands/uplink/SoftRestart.d.ts +0 -24
- package/dist/commands/uplink/SoftRestart.js +0 -34
- package/dist/commands/uplink/SoftRestart.js.map +0 -1
package/dist/BinaryBuffer.d.ts
CHANGED
|
@@ -32,6 +32,8 @@ declare class BinaryBuffer {
|
|
|
32
32
|
getInt32(isLittleEndian?: boolean): number;
|
|
33
33
|
setUint32(value: number, isLittleEndian?: boolean): void;
|
|
34
34
|
getUint32(isLittleEndian?: boolean): number;
|
|
35
|
+
setFloat32(value: number, isLittleEndian?: boolean): void;
|
|
36
|
+
getFloat32(isLittleEndian?: boolean): number;
|
|
35
37
|
/**
|
|
36
38
|
* Get bytes from start to offset.
|
|
37
39
|
*
|
package/dist/BinaryBuffer.js
CHANGED
|
@@ -112,6 +112,15 @@ class BinaryBuffer {
|
|
|
112
112
|
this.offset += INT32_SIZE;
|
|
113
113
|
return result;
|
|
114
114
|
}
|
|
115
|
+
setFloat32(value, isLittleEndian = this.isLittleEndian) {
|
|
116
|
+
createView(this, INT32_SIZE).setFloat32(0, value, isLittleEndian);
|
|
117
|
+
this.offset += INT32_SIZE;
|
|
118
|
+
}
|
|
119
|
+
getFloat32(isLittleEndian = this.isLittleEndian) {
|
|
120
|
+
const result = createView(this, INT32_SIZE).getFloat32(0, isLittleEndian);
|
|
121
|
+
this.offset += INT32_SIZE;
|
|
122
|
+
return result;
|
|
123
|
+
}
|
|
115
124
|
/**
|
|
116
125
|
* Get bytes from start to offset.
|
|
117
126
|
*
|
package/dist/BinaryBuffer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BinaryBuffer.js","sourceRoot":"","sources":["../src/BinaryBuffer.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"BinaryBuffer.js","sourceRoot":"","sources":["../src/BinaryBuffer.ts"],"names":[],"mappings":"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"}
|
|
@@ -71,12 +71,6 @@ export interface IEventElimpStatus {
|
|
|
71
71
|
/** the device has detected a loss of connection to the server */
|
|
72
72
|
isConnectionLost?: boolean;
|
|
73
73
|
}
|
|
74
|
-
export interface IEventWaterStatus {
|
|
75
|
-
/** the battery voltage has dropped below the set threshold */
|
|
76
|
-
isBatteryLow?: boolean;
|
|
77
|
-
/** the device has detected a loss of connection to the server */
|
|
78
|
-
isConnectionLost?: boolean;
|
|
79
|
-
}
|
|
80
74
|
export interface IEvent4ChannelStatus {
|
|
81
75
|
/** the battery voltage has dropped below the set threshold */
|
|
82
76
|
isBatteryLow?: boolean;
|
|
@@ -121,8 +115,15 @@ export interface IEventMtxStatus {
|
|
|
121
115
|
}
|
|
122
116
|
/**
|
|
123
117
|
* Device send data periodically using this interval.
|
|
124
|
-
*
|
|
118
|
+
* deviceParameters.DATA_SENDING_INTERVAL = `1`.
|
|
125
119
|
*/
|
|
120
|
+
interface IParameterDataSendingInterval {
|
|
121
|
+
/**
|
|
122
|
+
* Minimal interval for data sending from device (in seconds).
|
|
123
|
+
* Real value = value + pseudo-random value which is not more than `255` * `4`.
|
|
124
|
+
*/
|
|
125
|
+
value: number;
|
|
126
|
+
}
|
|
126
127
|
/**
|
|
127
128
|
* The parameter defines the hour of the day by which the daily consumption is calculated.
|
|
128
129
|
* deviceParameters.DAY_CHECKOUT_HOUR = `4`.
|
|
@@ -143,6 +144,18 @@ interface IParameterOutputDataType {
|
|
|
143
144
|
*/
|
|
144
145
|
type: number;
|
|
145
146
|
}
|
|
147
|
+
/**
|
|
148
|
+
* Delivery type of priority data, with or without acknowledgment.
|
|
149
|
+
* Priority data - frames from uplink/NewEvent command.
|
|
150
|
+
* deviceParameters.DELIVERY_TYPE_OF_PRIORITY_DATA = `8`.
|
|
151
|
+
*/
|
|
152
|
+
interface IParameterDeliveryTypeOfPriorityData {
|
|
153
|
+
/**
|
|
154
|
+
* `0` - delivery with confirmation
|
|
155
|
+
* `1` - delivery without confirmation
|
|
156
|
+
*/
|
|
157
|
+
value: number;
|
|
158
|
+
}
|
|
146
159
|
/**
|
|
147
160
|
* Device activation method in LoRaWAN network.
|
|
148
161
|
* deviceParameters.ACTIVATION_METHOD = `9`.
|
|
@@ -151,9 +164,56 @@ interface IParameterActivationMethod {
|
|
|
151
164
|
/**
|
|
152
165
|
* `0` - OTAA, by default
|
|
153
166
|
* `1` - ABP
|
|
167
|
+
*
|
|
168
|
+
* @see https://www.thethingsindustries.com/docs/devices/abp-vs-otaa/
|
|
154
169
|
*/
|
|
155
170
|
type: number;
|
|
156
171
|
}
|
|
172
|
+
/**
|
|
173
|
+
* RX2 configuration.
|
|
174
|
+
* deviceParameters.RX2_CONFIG = `18`.
|
|
175
|
+
*
|
|
176
|
+
* @see https://www.thethingsindustries.com/docs/reference/glossary/
|
|
177
|
+
*/
|
|
178
|
+
interface IParameterRx2Config {
|
|
179
|
+
/**
|
|
180
|
+
* The transmission speed or Data Rate of a LoRaWAN message, ranging from `SF7` (highest Data Rate) to `SF12` (lowest Data Rate).
|
|
181
|
+
* Making the spreading factor `1` step lower (from `SF10` to `SF9`) allows you to roughly send the same amount of data use half the time on air.
|
|
182
|
+
* Lowering the spreading factor makes it more difficult for the gateway to receive a transmission, as it will be more sensitive to noise.
|
|
183
|
+
*
|
|
184
|
+
* `0` - delivery with confirmation
|
|
185
|
+
* `1` - delivery without confirmation
|
|
186
|
+
*
|
|
187
|
+
* @see https://www.thethingsnetwork.org/docs/lorawan/spreading-factors/
|
|
188
|
+
*/
|
|
189
|
+
spreadFactor: number;
|
|
190
|
+
/**
|
|
191
|
+
* RX2 data rate frequency.
|
|
192
|
+
* The second receive window (RX2) uses a fixed frequency and data rate.
|
|
193
|
+
* This value configures the frequency to use in RX2.
|
|
194
|
+
* Changing the desired value makes the Network Server transmit the RXParamSetupReq MAC command.
|
|
195
|
+
*/
|
|
196
|
+
frequency: number;
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Device battery depassivation information.
|
|
200
|
+
* deviceParameters.BATTERY_DEPASSIVATION_INFO = `10`.
|
|
201
|
+
*/
|
|
202
|
+
interface IParameterBatteryDepassivationInfo {
|
|
203
|
+
/** battery load time in milliseconds */
|
|
204
|
+
loadTime: number;
|
|
205
|
+
/** battery internal resistance, in mΩ */
|
|
206
|
+
internalResistance: number;
|
|
207
|
+
/** battery low voltage, in mV */
|
|
208
|
+
lowVoltage: number;
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Device battery minimum required battery load time per day to prevent passivation.
|
|
212
|
+
* deviceParameters.BATTERY_MINIMAL_LOAD_TIME = `11`.
|
|
213
|
+
*/
|
|
214
|
+
interface IParameterBatteryMinimalLoadTime {
|
|
215
|
+
value: number;
|
|
216
|
+
}
|
|
157
217
|
/**
|
|
158
218
|
* Initial values for pulse devices.
|
|
159
219
|
* deviceParameters.INITIAL_DATA = `23`.
|
|
@@ -176,6 +236,25 @@ interface IParameterAbsoluteDataStatus {
|
|
|
176
236
|
*/
|
|
177
237
|
status: number;
|
|
178
238
|
}
|
|
239
|
+
/**
|
|
240
|
+
* Device serial number.
|
|
241
|
+
* deviceParameters.SERIAL_NUMBER = `25`
|
|
242
|
+
*/
|
|
243
|
+
interface IParameterSerialNumber {
|
|
244
|
+
/**
|
|
245
|
+
* hex string, 6 bytes
|
|
246
|
+
*/
|
|
247
|
+
value: string;
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* Device geolocation.
|
|
251
|
+
* deviceParameters.GEOLOCATION = `26`
|
|
252
|
+
*/
|
|
253
|
+
interface IParameterGeolocation {
|
|
254
|
+
latitude: number;
|
|
255
|
+
longitude: number;
|
|
256
|
+
attitude: number;
|
|
257
|
+
}
|
|
179
258
|
/**
|
|
180
259
|
* Initial values for multi-channel devices.
|
|
181
260
|
* deviceParameters.INITIAL_DATA_MULTI_CHANNEL = `29`.
|
|
@@ -196,8 +275,8 @@ export interface IParameter {
|
|
|
196
275
|
id: number;
|
|
197
276
|
data: TParameterData;
|
|
198
277
|
}
|
|
199
|
-
export type TEventStatus = IEventGasStatus | IEvent2ChannelStatus | IEventElimpStatus |
|
|
200
|
-
type TParameterData = IParameterOutputDataType | IParameterDayCheckoutHour | IParameterActivationMethod | IParameterInitialData | IParameterAbsoluteDataStatus | IParameterInitialDataMC | IParameterAbsoluteDataStatusMC;
|
|
278
|
+
export type TEventStatus = IEventGasStatus | IEvent2ChannelStatus | IEventElimpStatus | IEvent4ChannelStatus | IEventMtxStatus;
|
|
279
|
+
type TParameterData = IParameterDataSendingInterval | IParameterOutputDataType | IParameterDayCheckoutHour | IParameterDeliveryTypeOfPriorityData | IParameterActivationMethod | IParameterBatteryDepassivationInfo | IParameterBatteryMinimalLoadTime | IParameterRx2Config | IParameterInitialData | IParameterAbsoluteDataStatus | IParameterSerialNumber | IParameterGeolocation | IParameterInitialDataMC | IParameterAbsoluteDataStatusMC;
|
|
201
280
|
/**
|
|
202
281
|
* Command specific byte array manipulation.
|
|
203
282
|
*/
|
|
@@ -216,6 +295,10 @@ declare class CommandBinaryBuffer extends BinaryBuffer {
|
|
|
216
295
|
*/
|
|
217
296
|
static getExtendedValueSize(bits: number): number;
|
|
218
297
|
static getParameterSize(parameter: IParameter): number;
|
|
298
|
+
setInt12(value: number, isLittleEndian?: boolean): void;
|
|
299
|
+
getInt12(isLittleEndian?: boolean): number;
|
|
300
|
+
setUint12(value: number, isLittleEndian?: boolean): void;
|
|
301
|
+
getUint12(isLittleEndian?: boolean): number;
|
|
219
302
|
getExtendedValue(): number;
|
|
220
303
|
setExtendedValue(value: number): void;
|
|
221
304
|
/**
|
|
@@ -282,6 +365,22 @@ declare class CommandBinaryBuffer extends BinaryBuffer {
|
|
|
282
365
|
private setOutputDataType;
|
|
283
366
|
private getParameterDayCheckoutHour;
|
|
284
367
|
private setParameterDayCheckoutHour;
|
|
368
|
+
private getParameterDataSendingInterval;
|
|
369
|
+
private setParameterDataSendingInterval;
|
|
370
|
+
private getParameterDeliveryTypeOfPriorityData;
|
|
371
|
+
private setParameterDeliveryTypeOfPriorityData;
|
|
372
|
+
private getParameterRx2Config;
|
|
373
|
+
private setParameterRx2Config;
|
|
374
|
+
private getParameterExtraFrameInterval;
|
|
375
|
+
private setParameterExtraFrameInterval;
|
|
376
|
+
private getParameterBatteryDepassivationInfo;
|
|
377
|
+
private setParameterBatteryDepassivationInfo;
|
|
378
|
+
private getParameterBatteryMinimalLoadTime;
|
|
379
|
+
private setParameterBatteryMinimalLoadTime;
|
|
380
|
+
private getParameterSerialNumber;
|
|
381
|
+
private setParameterSerialNumber;
|
|
382
|
+
private getParameterGeolocation;
|
|
383
|
+
private setParameterGeolocation;
|
|
285
384
|
getParameter(): IParameter;
|
|
286
385
|
setParameter(parameter: IParameter): void;
|
|
287
386
|
}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import BinaryBuffer from './BinaryBuffer.js';
|
|
2
2
|
import * as bitSet from './utils/bitSet.js';
|
|
3
3
|
import { getDateFromSeconds, getSecondsFromDate } from './utils/time.js';
|
|
4
|
+
import getHexFromBytes from './utils/getHexFromBytes.js';
|
|
5
|
+
import getBytesFromHex from './utils/getBytesFromHex.js';
|
|
6
|
+
import roundNumber from './utils/roundNumber.js';
|
|
4
7
|
import * as hardwareTypes from './constants/hardwareTypes.js';
|
|
5
8
|
import * as deviceParameters from './constants/deviceParameters.js';
|
|
6
9
|
const INITIAL_YEAR = 2000;
|
|
@@ -10,11 +13,15 @@ const YEAR_START_INDEX = 1;
|
|
|
10
13
|
const UNKNOWN_BATTERY_VOLTAGE = 4095;
|
|
11
14
|
const EXTEND_BIT_MASK = 0x80;
|
|
12
15
|
const LAST_BIT_INDEX = 7;
|
|
16
|
+
const DATA_SENDING_INTERVAL_SECONDS_COEFFICIENT = 600;
|
|
17
|
+
const PARAMETER_RX2_FREQUENCY_COEFFICIENT = 100;
|
|
18
|
+
const INT12_SIZE = 3;
|
|
19
|
+
const SERIAL_NUMBER_SIZE = 6;
|
|
13
20
|
const GAS_HARDWARE_TYPES = [
|
|
14
|
-
hardwareTypes.
|
|
15
|
-
hardwareTypes.
|
|
16
|
-
hardwareTypes.
|
|
17
|
-
hardwareTypes.
|
|
21
|
+
hardwareTypes.GASI2,
|
|
22
|
+
hardwareTypes.GASI3,
|
|
23
|
+
hardwareTypes.GASI1,
|
|
24
|
+
hardwareTypes.GASIC
|
|
18
25
|
];
|
|
19
26
|
const TWO_CHANNELS_HARDWARE_TYPES = [
|
|
20
27
|
hardwareTypes.IMP2AS,
|
|
@@ -25,9 +32,9 @@ const TWO_CHANNELS_HARDWARE_TYPES = [
|
|
|
25
32
|
const ELIMP_HARDWARE_TYPES = [
|
|
26
33
|
hardwareTypes.ELIMP
|
|
27
34
|
];
|
|
28
|
-
const WATER_HARDWARE_TYPES = [
|
|
29
|
-
|
|
30
|
-
];
|
|
35
|
+
// const WATER_HARDWARE_TYPES = [
|
|
36
|
+
// hardwareTypes.WATER
|
|
37
|
+
// ];
|
|
31
38
|
const FOUR_CHANNELS_HARDWARE_TYPES = [
|
|
32
39
|
hardwareTypes.IMP4EU,
|
|
33
40
|
hardwareTypes.IMP4IN
|
|
@@ -51,10 +58,10 @@ const twoChannelBitMask = {
|
|
|
51
58
|
const elimpBitMask = {
|
|
52
59
|
isConnectionLost: 2 ** 3
|
|
53
60
|
};
|
|
54
|
-
const waterBitMask = {
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
};
|
|
61
|
+
// const waterBitMask = {
|
|
62
|
+
// isBatteryLow: 2 ** 0,
|
|
63
|
+
// isConnectionLost: 2 ** 3
|
|
64
|
+
// };
|
|
58
65
|
const fourChannelBitMask = {
|
|
59
66
|
isBatteryLow: 2 ** 0,
|
|
60
67
|
isConnectionLost: 2 ** 3,
|
|
@@ -82,10 +89,22 @@ const mtxBitMask = {
|
|
|
82
89
|
* device parameter data size + byte for parameter id
|
|
83
90
|
*/
|
|
84
91
|
const parametersSizeMap = new Map([
|
|
85
|
-
|
|
92
|
+
/* size: 1 byte of parameter id + parameter data*/
|
|
93
|
+
[deviceParameters.DATA_SENDING_INTERVAL, 1 + 3],
|
|
94
|
+
[deviceParameters.DAY_CHECKOUT_HOUR, 1 + 1],
|
|
95
|
+
[deviceParameters.OUTPUT_DATA_TYPE, 1 + 1],
|
|
96
|
+
[deviceParameters.DELIVERY_TYPE_OF_PRIORITY_DATA, 1 + 1],
|
|
97
|
+
[deviceParameters.ACTIVATION_METHOD, 1 + 1],
|
|
98
|
+
[deviceParameters.BATTERY_DEPASSIVATION_INFO, 1 + 6],
|
|
99
|
+
[deviceParameters.BATTERY_MINIMAL_LOAD_TIME, 1 + 4],
|
|
100
|
+
[deviceParameters.RX2_CONFIG, 1 + 4],
|
|
101
|
+
[deviceParameters.INITIAL_DATA, 1 + 9],
|
|
86
102
|
[deviceParameters.ABSOLUTE_DATA_STATUS, 1 + 1],
|
|
87
|
-
[deviceParameters.
|
|
88
|
-
[deviceParameters.
|
|
103
|
+
[deviceParameters.SERIAL_NUMBER, 1 + 6],
|
|
104
|
+
[deviceParameters.GEOLOCATION, 1 + 10],
|
|
105
|
+
[deviceParameters.EXTRA_FRAME_INTERVAL, 1 + 2],
|
|
106
|
+
[deviceParameters.INITIAL_DATA_MULTI_CHANNEL, 1 + 10],
|
|
107
|
+
[deviceParameters.ABSOLUTE_DATA_STATUS_MULTI_CHANNEL, 1 + 2]
|
|
89
108
|
]);
|
|
90
109
|
const byteToPulseCoefficientMap = new Map([
|
|
91
110
|
[0x80, 1000],
|
|
@@ -127,6 +146,69 @@ class CommandBinaryBuffer extends BinaryBuffer {
|
|
|
127
146
|
}
|
|
128
147
|
return size;
|
|
129
148
|
}
|
|
149
|
+
setInt12(value, isLittleEndian = this.isLittleEndian) {
|
|
150
|
+
const view = new DataView(this.data, this.offset, INT12_SIZE);
|
|
151
|
+
// set first byte as signed value
|
|
152
|
+
if (isLittleEndian) {
|
|
153
|
+
view.setInt8(2, (value >> 16) & 0xFF);
|
|
154
|
+
view.setUint8(1, (value >> 8) & 0xFF);
|
|
155
|
+
view.setUint8(0, value & 0xFF);
|
|
156
|
+
}
|
|
157
|
+
else {
|
|
158
|
+
view.setInt8(0, (value >> 16) & 0xFF);
|
|
159
|
+
view.setUint8(1, (value >> 8) & 0xFF);
|
|
160
|
+
view.setUint8(2, value & 0xFF);
|
|
161
|
+
}
|
|
162
|
+
this.offset += INT12_SIZE;
|
|
163
|
+
}
|
|
164
|
+
getInt12(isLittleEndian = this.isLittleEndian) {
|
|
165
|
+
const view = new DataView(this.data, this.offset, INT12_SIZE);
|
|
166
|
+
let byte0;
|
|
167
|
+
let byte1;
|
|
168
|
+
let byte2;
|
|
169
|
+
this.offset += INT12_SIZE;
|
|
170
|
+
if (isLittleEndian) {
|
|
171
|
+
byte0 = view.getInt8(2);
|
|
172
|
+
byte1 = view.getUint8(1);
|
|
173
|
+
byte2 = view.getUint8(0);
|
|
174
|
+
}
|
|
175
|
+
else {
|
|
176
|
+
byte0 = view.getInt8(0);
|
|
177
|
+
byte1 = view.getUint8(1);
|
|
178
|
+
byte2 = view.getUint8(2);
|
|
179
|
+
}
|
|
180
|
+
const value = (byte0 << 16) | (byte1 << 8) | byte2;
|
|
181
|
+
// setup sign if value negative
|
|
182
|
+
if (byte0 & 0x80) {
|
|
183
|
+
return value - (1 << 24);
|
|
184
|
+
}
|
|
185
|
+
return value;
|
|
186
|
+
}
|
|
187
|
+
setUint12(value, isLittleEndian = this.isLittleEndian) {
|
|
188
|
+
const view = new DataView(this.data, this.offset, INT12_SIZE);
|
|
189
|
+
if (isLittleEndian) {
|
|
190
|
+
view.setUint8(2, (value >> 16) & 0xFF);
|
|
191
|
+
view.setUint8(1, (value >> 8) & 0xFF);
|
|
192
|
+
view.setUint8(0, value & 0xFF);
|
|
193
|
+
}
|
|
194
|
+
else {
|
|
195
|
+
view.setUint8(0, (value >> 16) & 0xFF);
|
|
196
|
+
view.setUint8(1, (value >> 8) & 0xFF);
|
|
197
|
+
view.setUint8(2, value & 0xFF);
|
|
198
|
+
}
|
|
199
|
+
this.offset += INT12_SIZE;
|
|
200
|
+
}
|
|
201
|
+
getUint12(isLittleEndian = this.isLittleEndian) {
|
|
202
|
+
const view = new DataView(this.data, this.offset, INT12_SIZE);
|
|
203
|
+
const byte0 = view.getUint8(0);
|
|
204
|
+
const byte1 = view.getUint8(1);
|
|
205
|
+
const byte2 = view.getUint8(2);
|
|
206
|
+
this.offset += INT12_SIZE;
|
|
207
|
+
if (isLittleEndian) {
|
|
208
|
+
return byte0 + (byte1 << 8) + (byte2 << 16);
|
|
209
|
+
}
|
|
210
|
+
return (byte0 << 16) + (byte1 << 8) + byte2;
|
|
211
|
+
}
|
|
130
212
|
getExtendedValue() {
|
|
131
213
|
let value = 0;
|
|
132
214
|
let isByteExtended = true;
|
|
@@ -164,7 +246,7 @@ class CommandBinaryBuffer extends BinaryBuffer {
|
|
|
164
246
|
getChannels() {
|
|
165
247
|
const channelList = [];
|
|
166
248
|
let extended = true;
|
|
167
|
-
let channelIndex =
|
|
249
|
+
let channelIndex = 1;
|
|
168
250
|
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
169
251
|
while (extended) {
|
|
170
252
|
const byte = this.getUint8();
|
|
@@ -193,21 +275,21 @@ class CommandBinaryBuffer extends BinaryBuffer {
|
|
|
193
275
|
setChannels(channelList) {
|
|
194
276
|
// sort channels by index
|
|
195
277
|
channelList.sort((a, b) => a.index - b.index);
|
|
196
|
-
// find max channel to detect amount of bytes
|
|
278
|
+
// find max channel index from 0 to detect amount of bytes
|
|
197
279
|
const maxChannel = Math.max(...channelList.map(({ index }) => index));
|
|
198
|
-
const size = (maxChannel - (maxChannel %
|
|
280
|
+
const size = (maxChannel - (maxChannel % 8)) / 8;
|
|
199
281
|
const data = new Array(size + 1).fill(0);
|
|
200
282
|
let byte = 0;
|
|
201
283
|
data.forEach((_, byteIndex) => {
|
|
202
284
|
// max channel index in one byte - 6
|
|
203
|
-
let channelIndex = byteIndex * LAST_BIT_INDEX;
|
|
285
|
+
let channelIndex = (byteIndex * LAST_BIT_INDEX) + 1;
|
|
204
286
|
const maxChannelIndex = channelIndex + LAST_BIT_INDEX;
|
|
205
287
|
while (channelIndex < maxChannelIndex) {
|
|
206
288
|
// eslint-disable-next-line @typescript-eslint/no-loop-func
|
|
207
289
|
const channel = channelList.find((item => item.index === channelIndex));
|
|
208
290
|
if (channel !== undefined) {
|
|
209
291
|
// set channel bit
|
|
210
|
-
byte |= 1 << (channel.index % LAST_BIT_INDEX);
|
|
292
|
+
byte |= 1 << ((channel.index - 1) % LAST_BIT_INDEX);
|
|
211
293
|
}
|
|
212
294
|
++channelIndex;
|
|
213
295
|
}
|
|
@@ -380,9 +462,8 @@ class CommandBinaryBuffer extends BinaryBuffer {
|
|
|
380
462
|
}
|
|
381
463
|
else if (ELIMP_HARDWARE_TYPES.includes(hardwareType)) {
|
|
382
464
|
status = bitSet.toObject(elimpBitMask, this.getUint8());
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
status = bitSet.toObject(waterBitMask, this.getUint8());
|
|
465
|
+
// } else if ( WATER_HARDWARE_TYPES.includes(hardwareType) ) {
|
|
466
|
+
// status = bitSet.toObject(waterBitMask, this.getUint8());
|
|
386
467
|
}
|
|
387
468
|
else if (FOUR_CHANNELS_HARDWARE_TYPES.includes(hardwareType)) {
|
|
388
469
|
status = bitSet.toObject(fourChannelBitMask, this.getExtendedValue());
|
|
@@ -404,9 +485,8 @@ class CommandBinaryBuffer extends BinaryBuffer {
|
|
|
404
485
|
}
|
|
405
486
|
else if (ELIMP_HARDWARE_TYPES.includes(hardwareType)) {
|
|
406
487
|
this.setUint8(bitSet.fromObject(elimpBitMask, status));
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
this.setUint8(bitSet.fromObject(waterBitMask, status));
|
|
488
|
+
// } else if ( WATER_HARDWARE_TYPES.includes(hardwareType) ) {
|
|
489
|
+
// this.setUint8(bitSet.fromObject(waterBitMask, status as bitSet.TBooleanObject));
|
|
410
490
|
}
|
|
411
491
|
else if (FOUR_CHANNELS_HARDWARE_TYPES.includes(hardwareType)) {
|
|
412
492
|
this.setExtendedValue(bitSet.fromObject(fourChannelBitMask, status));
|
|
@@ -509,28 +589,128 @@ class CommandBinaryBuffer extends BinaryBuffer {
|
|
|
509
589
|
setParameterDayCheckoutHour(parameter) {
|
|
510
590
|
this.setUint8(parameter.value);
|
|
511
591
|
}
|
|
592
|
+
getParameterDataSendingInterval() {
|
|
593
|
+
// skip 'reserved' parameter which not used
|
|
594
|
+
this.seek(this.offset + 2);
|
|
595
|
+
return {
|
|
596
|
+
value: this.getUint8() * DATA_SENDING_INTERVAL_SECONDS_COEFFICIENT
|
|
597
|
+
};
|
|
598
|
+
}
|
|
599
|
+
setParameterDataSendingInterval(parameter) {
|
|
600
|
+
// skip 'reserved' parameter
|
|
601
|
+
this.seek(this.offset + 2);
|
|
602
|
+
this.setUint8(parameter.value / DATA_SENDING_INTERVAL_SECONDS_COEFFICIENT);
|
|
603
|
+
}
|
|
604
|
+
getParameterDeliveryTypeOfPriorityData() {
|
|
605
|
+
return { value: this.getUint8() };
|
|
606
|
+
}
|
|
607
|
+
setParameterDeliveryTypeOfPriorityData(parameter) {
|
|
608
|
+
this.setUint8(parameter.value);
|
|
609
|
+
}
|
|
610
|
+
getParameterRx2Config() {
|
|
611
|
+
return {
|
|
612
|
+
spreadFactor: this.getUint8(),
|
|
613
|
+
frequency: this.getUint12(false) * PARAMETER_RX2_FREQUENCY_COEFFICIENT
|
|
614
|
+
};
|
|
615
|
+
}
|
|
616
|
+
setParameterRx2Config(parameter) {
|
|
617
|
+
this.setUint8(parameter.spreadFactor);
|
|
618
|
+
this.setUint12(parameter.frequency / PARAMETER_RX2_FREQUENCY_COEFFICIENT, false);
|
|
619
|
+
}
|
|
620
|
+
getParameterExtraFrameInterval() {
|
|
621
|
+
return { value: this.getUint16() };
|
|
622
|
+
}
|
|
623
|
+
setParameterExtraFrameInterval(parameter) {
|
|
624
|
+
this.setUint16(parameter.value);
|
|
625
|
+
}
|
|
626
|
+
getParameterBatteryDepassivationInfo() {
|
|
627
|
+
return {
|
|
628
|
+
loadTime: this.getUint16(false),
|
|
629
|
+
internalResistance: this.getUint16(false),
|
|
630
|
+
lowVoltage: this.getUint16(false)
|
|
631
|
+
};
|
|
632
|
+
}
|
|
633
|
+
setParameterBatteryDepassivationInfo(parameter) {
|
|
634
|
+
this.setUint16(parameter.loadTime, false);
|
|
635
|
+
this.setUint16(parameter.internalResistance, false);
|
|
636
|
+
this.setUint16(parameter.lowVoltage, false);
|
|
637
|
+
}
|
|
638
|
+
getParameterBatteryMinimalLoadTime() {
|
|
639
|
+
return {
|
|
640
|
+
value: this.getUint32(false)
|
|
641
|
+
};
|
|
642
|
+
}
|
|
643
|
+
setParameterBatteryMinimalLoadTime(parameter) {
|
|
644
|
+
this.setUint32(parameter.value, false);
|
|
645
|
+
}
|
|
646
|
+
getParameterSerialNumber() {
|
|
647
|
+
const { offset } = this;
|
|
648
|
+
this.offset += SERIAL_NUMBER_SIZE;
|
|
649
|
+
return {
|
|
650
|
+
value: getHexFromBytes(this.toUint8Array().slice(offset, this.offset))
|
|
651
|
+
};
|
|
652
|
+
}
|
|
653
|
+
setParameterSerialNumber(parameter) {
|
|
654
|
+
getBytesFromHex(parameter.value).forEach(byte => this.setUint8(byte));
|
|
655
|
+
}
|
|
656
|
+
getParameterGeolocation() {
|
|
657
|
+
return {
|
|
658
|
+
latitude: roundNumber(this.getFloat32()),
|
|
659
|
+
longitude: roundNumber(this.getFloat32()),
|
|
660
|
+
attitude: roundNumber(this.getUint16())
|
|
661
|
+
};
|
|
662
|
+
}
|
|
663
|
+
setParameterGeolocation(parameter) {
|
|
664
|
+
this.setFloat32(roundNumber(parameter.latitude));
|
|
665
|
+
this.setFloat32(roundNumber(parameter.longitude));
|
|
666
|
+
this.setUint16(roundNumber(parameter.attitude));
|
|
667
|
+
}
|
|
512
668
|
getParameter() {
|
|
513
669
|
const id = this.getUint8();
|
|
514
670
|
let data;
|
|
515
671
|
switch (id) {
|
|
672
|
+
case deviceParameters.DATA_SENDING_INTERVAL:
|
|
673
|
+
data = this.getParameterDataSendingInterval();
|
|
674
|
+
break;
|
|
516
675
|
case deviceParameters.OUTPUT_DATA_TYPE:
|
|
517
676
|
data = this.getOutputDataType();
|
|
518
677
|
break;
|
|
519
678
|
case deviceParameters.DAY_CHECKOUT_HOUR:
|
|
520
679
|
data = this.getParameterDayCheckoutHour();
|
|
521
680
|
break;
|
|
681
|
+
case deviceParameters.DELIVERY_TYPE_OF_PRIORITY_DATA:
|
|
682
|
+
data = this.getParameterDeliveryTypeOfPriorityData();
|
|
683
|
+
break;
|
|
522
684
|
case deviceParameters.ACTIVATION_METHOD:
|
|
523
685
|
data = this.getParameterActivationMethod();
|
|
524
686
|
break;
|
|
687
|
+
case deviceParameters.BATTERY_DEPASSIVATION_INFO:
|
|
688
|
+
data = this.getParameterBatteryDepassivationInfo();
|
|
689
|
+
break;
|
|
690
|
+
case deviceParameters.BATTERY_MINIMAL_LOAD_TIME:
|
|
691
|
+
data = this.getParameterBatteryMinimalLoadTime();
|
|
692
|
+
break;
|
|
693
|
+
case deviceParameters.RX2_CONFIG:
|
|
694
|
+
data = this.getParameterRx2Config();
|
|
695
|
+
break;
|
|
525
696
|
case deviceParameters.INITIAL_DATA:
|
|
526
697
|
data = this.getParameterInitialData();
|
|
527
698
|
break;
|
|
528
|
-
case deviceParameters.INITIAL_DATA_MULTI_CHANNEL:
|
|
529
|
-
data = this.getParameterInitialDataMC();
|
|
530
|
-
break;
|
|
531
699
|
case deviceParameters.ABSOLUTE_DATA_STATUS:
|
|
532
700
|
data = this.getParameterAbsoluteDataStatus();
|
|
533
701
|
break;
|
|
702
|
+
case deviceParameters.SERIAL_NUMBER:
|
|
703
|
+
data = this.getParameterSerialNumber();
|
|
704
|
+
break;
|
|
705
|
+
case deviceParameters.GEOLOCATION:
|
|
706
|
+
data = this.getParameterGeolocation();
|
|
707
|
+
break;
|
|
708
|
+
case deviceParameters.EXTRA_FRAME_INTERVAL:
|
|
709
|
+
data = this.getParameterExtraFrameInterval();
|
|
710
|
+
break;
|
|
711
|
+
case deviceParameters.INITIAL_DATA_MULTI_CHANNEL:
|
|
712
|
+
data = this.getParameterInitialDataMC();
|
|
713
|
+
break;
|
|
534
714
|
case deviceParameters.ABSOLUTE_DATA_STATUS_MULTI_CHANNEL:
|
|
535
715
|
data = this.getParameterAbsoluteDataStatusMC();
|
|
536
716
|
break;
|
|
@@ -543,24 +723,48 @@ class CommandBinaryBuffer extends BinaryBuffer {
|
|
|
543
723
|
const { id, data } = parameter;
|
|
544
724
|
this.setUint8(id);
|
|
545
725
|
switch (id) {
|
|
726
|
+
case deviceParameters.DATA_SENDING_INTERVAL:
|
|
727
|
+
this.setParameterDataSendingInterval(data);
|
|
728
|
+
break;
|
|
546
729
|
case deviceParameters.OUTPUT_DATA_TYPE:
|
|
547
730
|
this.setOutputDataType(data);
|
|
548
731
|
break;
|
|
549
732
|
case deviceParameters.DAY_CHECKOUT_HOUR:
|
|
550
733
|
this.setParameterDayCheckoutHour(data);
|
|
551
734
|
break;
|
|
735
|
+
case deviceParameters.DELIVERY_TYPE_OF_PRIORITY_DATA:
|
|
736
|
+
this.setParameterDeliveryTypeOfPriorityData(data);
|
|
737
|
+
break;
|
|
552
738
|
case deviceParameters.ACTIVATION_METHOD:
|
|
553
739
|
this.setParameterActivationMethod(data);
|
|
554
740
|
break;
|
|
741
|
+
case deviceParameters.BATTERY_DEPASSIVATION_INFO:
|
|
742
|
+
this.setParameterBatteryDepassivationInfo(data);
|
|
743
|
+
break;
|
|
744
|
+
case deviceParameters.BATTERY_MINIMAL_LOAD_TIME:
|
|
745
|
+
this.setParameterBatteryMinimalLoadTime(data);
|
|
746
|
+
break;
|
|
747
|
+
case deviceParameters.RX2_CONFIG:
|
|
748
|
+
this.setParameterRx2Config(data);
|
|
749
|
+
break;
|
|
555
750
|
case deviceParameters.INITIAL_DATA:
|
|
556
751
|
this.setParameterInitialData(data);
|
|
557
752
|
break;
|
|
558
|
-
case deviceParameters.INITIAL_DATA_MULTI_CHANNEL:
|
|
559
|
-
this.setParameterInitialDataMC(data);
|
|
560
|
-
break;
|
|
561
753
|
case deviceParameters.ABSOLUTE_DATA_STATUS:
|
|
562
754
|
this.setParameterAbsoluteDataStatus(data);
|
|
563
755
|
break;
|
|
756
|
+
case deviceParameters.SERIAL_NUMBER:
|
|
757
|
+
this.setParameterSerialNumber(data);
|
|
758
|
+
break;
|
|
759
|
+
case deviceParameters.GEOLOCATION:
|
|
760
|
+
this.setParameterGeolocation(data);
|
|
761
|
+
break;
|
|
762
|
+
case deviceParameters.EXTRA_FRAME_INTERVAL:
|
|
763
|
+
this.setParameterExtraFrameInterval(data);
|
|
764
|
+
break;
|
|
765
|
+
case deviceParameters.INITIAL_DATA_MULTI_CHANNEL:
|
|
766
|
+
this.setParameterInitialDataMC(data);
|
|
767
|
+
break;
|
|
564
768
|
case deviceParameters.ABSOLUTE_DATA_STATUS_MULTI_CHANNEL:
|
|
565
769
|
this.setParameterAbsoluteDataStatusMC(data);
|
|
566
770
|
break;
|