jooby-codec 1.0.1 → 1.2.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.
Files changed (85) hide show
  1. package/dist/Command.d.ts +3 -3
  2. package/dist/Command.js +14 -10
  3. package/dist/Command.js.map +1 -1
  4. package/dist/CommandBinaryBuffer.d.ts +59 -0
  5. package/dist/CommandBinaryBuffer.js +83 -2
  6. package/dist/CommandBinaryBuffer.js.map +1 -1
  7. package/dist/UnknownCommand.d.ts +20 -0
  8. package/dist/UnknownCommand.js +22 -0
  9. package/dist/UnknownCommand.js.map +1 -0
  10. package/dist/commands/downlink/CorrectTime2000.d.ts +2 -2
  11. package/dist/commands/downlink/CorrectTime2000.js +2 -1
  12. package/dist/commands/downlink/CorrectTime2000.js.map +1 -1
  13. package/dist/commands/downlink/GetArchiveHoursMul.d.ts +47 -0
  14. package/dist/commands/downlink/GetArchiveHoursMul.js +66 -0
  15. package/dist/commands/downlink/GetArchiveHoursMul.js.map +1 -0
  16. package/dist/commands/downlink/NewStatus.d.ts +25 -0
  17. package/dist/commands/downlink/NewStatus.js +37 -0
  18. package/dist/commands/downlink/NewStatus.js.map +1 -0
  19. package/dist/commands/downlink/SetTime2000.d.ts +2 -2
  20. package/dist/commands/downlink/SetTime2000.js +2 -1
  21. package/dist/commands/downlink/SetTime2000.js.map +1 -1
  22. package/dist/commands/downlink/SoftRestart.d.ts +24 -0
  23. package/dist/commands/downlink/SoftRestart.js +34 -0
  24. package/dist/commands/downlink/SoftRestart.js.map +1 -0
  25. package/dist/commands/downlink/index.d.ts +3 -0
  26. package/dist/commands/downlink/index.js +3 -0
  27. package/dist/commands/downlink/index.js.map +1 -1
  28. package/dist/commands/uplink/CorrectTime2000.d.ts +1 -1
  29. package/dist/commands/uplink/CorrectTime2000.js +2 -1
  30. package/dist/commands/uplink/CorrectTime2000.js.map +1 -1
  31. package/dist/commands/uplink/DataDayMul.d.ts +1 -1
  32. package/dist/commands/uplink/DataDayMul.js +3 -2
  33. package/dist/commands/uplink/DataDayMul.js.map +1 -1
  34. package/dist/commands/uplink/DataHourMul.d.ts +1 -1
  35. package/dist/commands/uplink/DataHourMul.js +5 -5
  36. package/dist/commands/uplink/DataHourMul.js.map +1 -1
  37. package/dist/commands/uplink/ExAbsDayMul.d.ts +1 -1
  38. package/dist/commands/uplink/ExAbsDayMul.js +3 -3
  39. package/dist/commands/uplink/ExAbsDayMul.js.map +1 -1
  40. package/dist/commands/uplink/ExAbsHourMul.d.ts +1 -1
  41. package/dist/commands/uplink/ExAbsHourMul.js +3 -3
  42. package/dist/commands/uplink/ExAbsHourMul.js.map +1 -1
  43. package/dist/commands/uplink/GetArchiveHoursMul.d.ts +28 -0
  44. package/dist/commands/uplink/GetArchiveHoursMul.js +51 -0
  45. package/dist/commands/uplink/GetArchiveHoursMul.js.map +1 -0
  46. package/dist/commands/uplink/GetCurrentMul.d.ts +1 -1
  47. package/dist/commands/uplink/GetCurrentMul.js +3 -2
  48. package/dist/commands/uplink/GetCurrentMul.js.map +1 -1
  49. package/dist/commands/uplink/LastEvent.d.ts +116 -0
  50. package/dist/commands/uplink/LastEvent.js +164 -0
  51. package/dist/commands/uplink/LastEvent.js.map +1 -0
  52. package/dist/commands/uplink/NewEvent.d.ts +30 -1
  53. package/dist/commands/uplink/NewEvent.js +50 -14
  54. package/dist/commands/uplink/NewEvent.js.map +1 -1
  55. package/dist/commands/uplink/NewStatus.d.ts +56 -0
  56. package/dist/commands/uplink/NewStatus.js +140 -0
  57. package/dist/commands/uplink/NewStatus.js.map +1 -0
  58. package/dist/commands/uplink/SetTime2000.d.ts +1 -1
  59. package/dist/commands/uplink/SetTime2000.js +2 -1
  60. package/dist/commands/uplink/SetTime2000.js.map +1 -1
  61. package/dist/commands/uplink/SoftRestart.d.ts +24 -0
  62. package/dist/commands/uplink/SoftRestart.js +34 -0
  63. package/dist/commands/uplink/SoftRestart.js.map +1 -0
  64. package/dist/commands/uplink/Time2000.d.ts +2 -2
  65. package/dist/commands/uplink/Time2000.js +7 -6
  66. package/dist/commands/uplink/Time2000.js.map +1 -1
  67. package/dist/commands/uplink/index.d.ts +5 -0
  68. package/dist/commands/uplink/index.js +5 -0
  69. package/dist/commands/uplink/index.js.map +1 -1
  70. package/dist/constants/directionTypes.d.ts +3 -0
  71. package/dist/constants/directionTypes.js +4 -0
  72. package/dist/constants/directionTypes.js.map +1 -0
  73. package/dist/constants/hardwareTypes.d.ts +70 -0
  74. package/dist/constants/hardwareTypes.js +71 -0
  75. package/dist/constants/hardwareTypes.js.map +1 -0
  76. package/dist/constants/index.d.ts +2 -0
  77. package/dist/constants/index.js +2 -0
  78. package/dist/constants/index.js.map +1 -1
  79. package/dist/utils/bitSet.d.ts +40 -0
  80. package/dist/utils/bitSet.js +54 -0
  81. package/dist/utils/bitSet.js.map +1 -0
  82. package/dist/utils/message.d.ts +2 -5
  83. package/dist/utils/message.js +30 -30
  84. package/dist/utils/message.js.map +1 -1
  85. package/package.json +36 -76
@@ -0,0 +1,164 @@
1
+ import Command from '../../Command.js';
2
+ import * as hardwareTypes from '../../constants/hardwareTypes.js';
3
+ import CommandBinaryBuffer from '../../CommandBinaryBuffer.js';
4
+ import * as bitSet from '../../utils/bitSet.js';
5
+ import { UPLINK } from '../../constants/directionTypes.js';
6
+ const COMMAND_ID = 0x60;
7
+ const COMMAND_TITLE = 'LAST_EVENT';
8
+ const GAS_HARDWARE_TYPES = [
9
+ hardwareTypes.GAZM0,
10
+ hardwareTypes.GAZM0NEW,
11
+ hardwareTypes.GAZM3,
12
+ hardwareTypes.GAZWLE
13
+ ];
14
+ const TWO_CHANNELS_HARDWARE_TYPES = [
15
+ hardwareTypes.IMP2AS,
16
+ hardwareTypes.IMP2EU,
17
+ hardwareTypes.IMP2IN,
18
+ hardwareTypes.NOVATOR
19
+ ];
20
+ const ELIMP_HARDWARE_TYPES = [
21
+ hardwareTypes.ELIMP
22
+ ];
23
+ const WATER_HARDWARE_TYPES = [
24
+ hardwareTypes.WATER
25
+ ];
26
+ const FOUR_CHANNELS_HARDWARE_TYPES = [
27
+ hardwareTypes.IMP4EU,
28
+ hardwareTypes.IMP4IN
29
+ ];
30
+ const MTX_HARDWARE_TYPES = [
31
+ hardwareTypes.MTXLORA
32
+ ];
33
+ const gasBitMask = {
34
+ isBatteryLow: 2 ** 0,
35
+ isMagneticInfluence: 2 ** 1,
36
+ isButtonReleased: 2 ** 2,
37
+ isConnectionLost: 2 ** 3
38
+ };
39
+ const twoChannelBitMask = {
40
+ isBatteryLow: 2 ** 0,
41
+ isConnectionLost: 2 ** 3,
42
+ isFirstChannelInactive: 2 ** 4,
43
+ isSecondChannelInactive: 2 ** 5
44
+ };
45
+ const elimpBitMask = {
46
+ isConnectionLost: 2 ** 3
47
+ };
48
+ const waterBitMask = {
49
+ isBatteryLow: 2 ** 0,
50
+ isConnectionLost: 2 ** 3
51
+ };
52
+ const fourChannelBitMask = {
53
+ isBatteryLow: 2 ** 0,
54
+ isConnectionLost: 2 ** 3,
55
+ isFirstChannelInactive: 2 ** 4,
56
+ isSecondChannelInactive: 2 ** 5,
57
+ isThirdChannelInactive: 2 ** 6,
58
+ isForthChannelInactive: 2 ** 7
59
+ };
60
+ const mtxBitMask = {
61
+ isMeterCaseOpen: 2 ** 0,
62
+ isMagneticInfluence: 2 ** 1,
63
+ isParametersSetRemotely: 2 ** 2,
64
+ isParametersSetLocally: 2 ** 3,
65
+ isMeterProgramRestarted: 2 ** 4,
66
+ isLockedOut: 2 ** 5,
67
+ isTimeSet: 2 ** 6,
68
+ isTimeCorrected: 2 ** 7,
69
+ isMeterFailure: 2 ** 8,
70
+ isMeterTerminalBoxOpen: 2 ** 9,
71
+ isModuleCompartmentOpen: 2 ** 10,
72
+ isTariffPlanChanged: 2 ** 11,
73
+ isNewTariffPlanReceived: 2 ** 12
74
+ };
75
+ /**
76
+ * Uplink command.
77
+ *
78
+ * @example
79
+ * ```js
80
+ * import LastEvent from 'jooby-codec/commands/downlink/LastEvent';
81
+ * import hardwareTypes from 'jooby-codec/constants/hardwareTypes';
82
+ *
83
+ * const command = new LastEvent(
84
+ * {sequenceNumber: 8, status: {isBatteryLow: true}},
85
+ * hardwareTypes.IMP2EU
86
+ * );
87
+ *
88
+ * // output command binary in hex representation
89
+ * console.log(command.toHex());
90
+ * // 62 08 01
91
+ * ```
92
+ * [Command format documentation](https://github.com/jooby-dev/jooby-docs/blob/main/docs/commands/uplink/LastEvent.md)
93
+ */
94
+ class LastEvent extends Command {
95
+ constructor(parameters, hardwareType) {
96
+ super();
97
+ this.parameters = parameters;
98
+ this.hardwareType = hardwareType;
99
+ }
100
+ // data - only body (without header)
101
+ static fromBytes(data, hardwareType) {
102
+ if (!hardwareType) {
103
+ throw new Error('hardwareType argument is mandatory');
104
+ }
105
+ const buffer = new CommandBinaryBuffer(data);
106
+ const sequenceNumber = buffer.getUint8();
107
+ let status;
108
+ if (GAS_HARDWARE_TYPES.includes(hardwareType)) {
109
+ status = bitSet.toObject(gasBitMask, buffer.getUint8());
110
+ }
111
+ else if (TWO_CHANNELS_HARDWARE_TYPES.includes(hardwareType)) {
112
+ status = bitSet.toObject(twoChannelBitMask, buffer.getUint8());
113
+ }
114
+ else if (ELIMP_HARDWARE_TYPES.includes(hardwareType)) {
115
+ status = bitSet.toObject(elimpBitMask, buffer.getUint8());
116
+ }
117
+ else if (WATER_HARDWARE_TYPES.includes(hardwareType)) {
118
+ status = bitSet.toObject(waterBitMask, buffer.getUint8());
119
+ }
120
+ else if (FOUR_CHANNELS_HARDWARE_TYPES.includes(hardwareType)) {
121
+ status = bitSet.toObject(fourChannelBitMask, buffer.getExtendedValue());
122
+ }
123
+ else if (MTX_HARDWARE_TYPES.includes(hardwareType)) {
124
+ status = bitSet.toObject(mtxBitMask, buffer.getUint16());
125
+ }
126
+ else {
127
+ throw new Error('wrong hardwareType');
128
+ }
129
+ return new LastEvent({ sequenceNumber, status }, hardwareType);
130
+ }
131
+ // returns full message - header with body
132
+ toBytes() {
133
+ const { sequenceNumber, status } = this.parameters;
134
+ const buffer = new CommandBinaryBuffer([...FOUR_CHANNELS_HARDWARE_TYPES, ...MTX_HARDWARE_TYPES].includes(this.hardwareType) ? 3 : 2);
135
+ buffer.setUint8(sequenceNumber);
136
+ if (GAS_HARDWARE_TYPES.includes(this.hardwareType)) {
137
+ buffer.setUint8(bitSet.fromObject(gasBitMask, status));
138
+ }
139
+ else if (TWO_CHANNELS_HARDWARE_TYPES.includes(this.hardwareType)) {
140
+ buffer.setUint8(bitSet.fromObject(twoChannelBitMask, status));
141
+ }
142
+ else if (ELIMP_HARDWARE_TYPES.includes(this.hardwareType)) {
143
+ buffer.setUint8(bitSet.fromObject(elimpBitMask, status));
144
+ }
145
+ else if (WATER_HARDWARE_TYPES.includes(this.hardwareType)) {
146
+ buffer.setUint8(bitSet.fromObject(waterBitMask, status));
147
+ }
148
+ else if (FOUR_CHANNELS_HARDWARE_TYPES.includes(this.hardwareType)) {
149
+ buffer.setExtendedValue(bitSet.fromObject(fourChannelBitMask, status));
150
+ }
151
+ else if (MTX_HARDWARE_TYPES.includes(this.hardwareType)) {
152
+ buffer.setUint16(bitSet.fromObject(mtxBitMask, status));
153
+ }
154
+ else {
155
+ throw new Error('wrong hardwareType');
156
+ }
157
+ return Command.toBytes(COMMAND_ID, buffer.toUint8Array());
158
+ }
159
+ }
160
+ LastEvent.id = COMMAND_ID;
161
+ LastEvent.directionType = UPLINK;
162
+ LastEvent.title = COMMAND_TITLE;
163
+ export default LastEvent;
164
+ //# sourceMappingURL=LastEvent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LastEvent.js","sourceRoot":"","sources":["../../../src/commands/uplink/LastEvent.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,aAAa,MAAM,kCAAkC,CAAC;AAClE,OAAO,mBAAmB,MAAM,8BAA8B,CAAC;AAC/D,OAAO,KAAK,MAAM,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAC,MAAM,EAAC,MAAM,mCAAmC,CAAC;AAuGzD,MAAM,UAAU,GAAG,IAAI,CAAC;AACxB,MAAM,aAAa,GAAG,YAAY,CAAC;AAEnC,MAAM,kBAAkB,GAAG;IACvB,aAAa,CAAC,KAAK;IACnB,aAAa,CAAC,QAAQ;IACtB,aAAa,CAAC,KAAK;IACnB,aAAa,CAAC,MAAM;CACvB,CAAC;AACF,MAAM,2BAA2B,GAAG;IAChC,aAAa,CAAC,MAAM;IACpB,aAAa,CAAC,MAAM;IACpB,aAAa,CAAC,MAAM;IACpB,aAAa,CAAC,OAAO;CACxB,CAAC;AACF,MAAM,oBAAoB,GAAG;IACzB,aAAa,CAAC,KAAK;CACtB,CAAC;AACF,MAAM,oBAAoB,GAAG;IACzB,aAAa,CAAC,KAAK;CACtB,CAAC;AACF,MAAM,4BAA4B,GAAG;IACjC,aAAa,CAAC,MAAM;IACpB,aAAa,CAAC,MAAM;CACvB,CAAC;AACF,MAAM,kBAAkB,GAAG;IACvB,aAAa,CAAC,OAAO;CACxB,CAAC;AAEF,MAAM,UAAU,GAAG;IACf,YAAY,EAAE,CAAC,IAAI,CAAC;IACpB,mBAAmB,EAAE,CAAC,IAAI,CAAC;IAC3B,gBAAgB,EAAE,CAAC,IAAI,CAAC;IACxB,gBAAgB,EAAE,CAAC,IAAI,CAAC;CAC3B,CAAC;AACF,MAAM,iBAAiB,GAAG;IACtB,YAAY,EAAE,CAAC,IAAI,CAAC;IACpB,gBAAgB,EAAE,CAAC,IAAI,CAAC;IACxB,sBAAsB,EAAE,CAAC,IAAI,CAAC;IAC9B,uBAAuB,EAAE,CAAC,IAAI,CAAC;CAClC,CAAC;AACF,MAAM,YAAY,GAAG;IACjB,gBAAgB,EAAE,CAAC,IAAI,CAAC;CAC3B,CAAC;AACF,MAAM,YAAY,GAAG;IACjB,YAAY,EAAE,CAAC,IAAI,CAAC;IACpB,gBAAgB,EAAE,CAAC,IAAI,CAAC;CAC3B,CAAC;AACF,MAAM,kBAAkB,GAAG;IACvB,YAAY,EAAE,CAAC,IAAI,CAAC;IACpB,gBAAgB,EAAE,CAAC,IAAI,CAAC;IACxB,sBAAsB,EAAE,CAAC,IAAI,CAAC;IAC9B,uBAAuB,EAAE,CAAC,IAAI,CAAC;IAC/B,sBAAsB,EAAE,CAAC,IAAI,CAAC;IAC9B,sBAAsB,EAAE,CAAC,IAAI,CAAC;CACjC,CAAC;AACF,MAAM,UAAU,GAAG;IACf,eAAe,EAAE,CAAC,IAAI,CAAC;IACvB,mBAAmB,EAAE,CAAC,IAAI,CAAC;IAC3B,uBAAuB,EAAE,CAAC,IAAI,CAAC;IAC/B,sBAAsB,EAAE,CAAC,IAAI,CAAC;IAC9B,uBAAuB,EAAE,CAAC,IAAI,CAAC;IAC/B,WAAW,EAAE,CAAC,IAAI,CAAC;IACnB,SAAS,EAAE,CAAC,IAAI,CAAC;IACjB,eAAe,EAAE,CAAC,IAAI,CAAC;IACvB,cAAc,EAAE,CAAC,IAAI,CAAC;IACtB,sBAAsB,EAAE,CAAC,IAAI,CAAC;IAC9B,uBAAuB,EAAE,CAAC,IAAI,EAAE;IAChC,mBAAmB,EAAE,CAAC,IAAI,EAAE;IAC5B,uBAAuB,EAAE,CAAC,IAAI,EAAE;CACnC,CAAC;AAGF;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,SAAU,SAAQ,OAAO;IAC3B,YAAqB,UAAgC,EAAS,YAAoB;QAC9E,KAAK,EAAE,CAAC;QADS,eAAU,GAAV,UAAU,CAAsB;QAAS,iBAAY,GAAZ,YAAY,CAAQ;IAElF,CAAC;IAQD,oCAAoC;IACpC,MAAM,CAAC,SAAS,CAAG,IAAgB,EAAE,YAAqB;QACtD,IAAK,CAAC,YAAY,EAAG;YACjB,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;SACzD;QAED,MAAM,MAAM,GAAG,IAAI,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAC7C,MAAM,cAAc,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;QACzC,IAAI,MAAwB,CAAC;QAE7B,IAAK,kBAAkB,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAG;YAC7C,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;SAC3D;aAAM,IAAK,2BAA2B,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAG;YAC7D,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;SAClE;aAAM,IAAK,oBAAoB,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAG;YACtD,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;SAC7D;aAAM,IAAK,oBAAoB,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAG;YACtD,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;SAC7D;aAAM,IAAK,4BAA4B,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAG;YAC9D,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAC;SAC3E;aAAM,IAAK,kBAAkB,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAG;YACpD,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;SAC5D;aAAM;YACH,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;SACzC;QAED,OAAO,IAAI,SAAS,CAAC,EAAC,cAAc,EAAE,MAAM,EAAC,EAAE,YAAY,CAAC,CAAC;IACjE,CAAC;IAED,0CAA0C;IAC1C,OAAO;QACH,MAAM,EAAC,cAAc,EAAE,MAAM,EAAC,GAAG,IAAI,CAAC,UAAU,CAAC;QACjD,MAAM,MAAM,GAAG,IAAI,mBAAmB,CAClC,CAAC,GAAG,4BAA4B,EAAE,GAAG,kBAAkB,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAC/F,CAAC;QAEF,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;QAEhC,IAAK,kBAAkB,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,EAAG;YAClD,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,EAAE,MAA+B,CAAC,CAAC,CAAC;SACnF;aAAM,IAAK,2BAA2B,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,EAAG;YAClE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,iBAAiB,EAAE,MAA+B,CAAC,CAAC,CAAC;SAC1F;aAAM,IAAK,oBAAoB,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,EAAG;YAC3D,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,YAAY,EAAE,MAA+B,CAAC,CAAC,CAAC;SACrF;aAAM,IAAK,oBAAoB,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,EAAG;YAC3D,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,YAAY,EAAE,MAA+B,CAAC,CAAC,CAAC;SACrF;aAAM,IAAK,4BAA4B,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,EAAG;YACnE,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,UAAU,CAAC,kBAAkB,EAAE,MAA+B,CAAC,CAAC,CAAC;SACnG;aAAM,IAAK,kBAAkB,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,EAAG;YACzD,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,EAAE,MAA+B,CAAC,CAAC,CAAC;SACpF;aAAM;YACH,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;SACzC;QAED,OAAO,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;IAC9D,CAAC;;AA7De,YAAE,GAAG,UAAU,CAAC;AAEhB,uBAAa,GAAG,MAAM,CAAC;AAEvB,eAAK,GAAG,aAAa,CAAC;AA6D1C,eAAe,SAAS,CAAC"}
@@ -1,16 +1,45 @@
1
1
  import Command from '../../Command.js';
2
2
  interface IEventBase {
3
3
  }
4
+ /**
5
+ * NewEvent command parameters
6
+ *
7
+ * @example
8
+ * ```js
9
+ * import {constants} from 'jooby-codec'
10
+ *
11
+ * // `Magnet On` event at 2023-04-05 13:17:20 GMT
12
+ * {id: constants.events.MAGNET_ON, sequenceNumber: 1, data: {time: 734015840}}
13
+ */
4
14
  interface INewEventParameters {
5
15
  id: number;
6
16
  sequenceNumber: number;
7
17
  data: IEventBase;
8
18
  }
19
+ /**
20
+ * Uplink command.
21
+ *
22
+ * @example
23
+ * ```js
24
+ * import {constants} from 'jooby-codec'
25
+ * import NewEvent from 'jooby-codec/commands/uplink/NewEvent';
26
+ *
27
+ * // `Magnet On` event at 2023-04-05 13:17:20 GMT
28
+ * const parameters = {id: constants.events.MAGNET_ON, sequenceNumber: 3, data: {time: 734015840}}
29
+ * const command = new NewEvent(parameters);
30
+ *
31
+ * // output command binary in hex representation
32
+ * console.log(command.toHex());
33
+ * // 15 06 01 03 2b c0 31 60
34
+ * ```
35
+ *
36
+ * [Command format documentation](https://github.com/jooby-dev/jooby-docs/blob/main/docs/commands/uplink/NewEvent.md)
37
+ */
9
38
  declare class NewEvent extends Command {
10
39
  parameters: INewEventParameters;
11
40
  constructor(parameters: INewEventParameters);
12
41
  static readonly id = 21;
13
- static readonly isUplink = true;
42
+ static readonly directionType = 2;
14
43
  static readonly title = "NEW_EVENT";
15
44
  static fromBytes(data: Uint8Array): NewEvent;
16
45
  toBytes(): Uint8Array;
@@ -1,10 +1,46 @@
1
1
  import Command from '../../Command.js';
2
2
  import CommandBinaryBuffer from '../../CommandBinaryBuffer.js';
3
+ import getHexFromBytes from '../../utils/getHexFromBytes.js';
4
+ import getBytesFromHex from '../../utils/getBytesFromHex.js';
3
5
  import * as events from '../../constants/events.js';
6
+ import { UPLINK } from '../../constants/directionTypes.js';
4
7
  const COMMAND_ID = 0x15;
5
8
  const COMMAND_TITLE = 'NEW_EVENT';
6
- // connect/disconnect events are biggest
7
- const COMMAND_BODY_MAX_SIZE = 6;
9
+ // ACTIVATE_MTX are biggest,1 byte event id, 1 byte sequence number, 4 bytes time, 8 bytes mtx address
10
+ const COMMAND_BODY_MAX_SIZE = 14;
11
+ const MTX_ADDRESS_SIZE = 8;
12
+ const getVoltage = (buffer) => buffer.getUint16(false);
13
+ const setVoltage = (buffer, value) => buffer.setUint16(value, false);
14
+ const getDeviceId = (buffer) => {
15
+ const bytes = [];
16
+ for (let i = 0; i < MTX_ADDRESS_SIZE; ++i) {
17
+ bytes.push(buffer.getUint8());
18
+ }
19
+ return getHexFromBytes(new Uint8Array(bytes));
20
+ };
21
+ const setDeviceId = (buffer, value) => {
22
+ const bytes = getBytesFromHex(value);
23
+ bytes.forEach(byte => buffer.setUint8(byte));
24
+ };
25
+ /**
26
+ * Uplink command.
27
+ *
28
+ * @example
29
+ * ```js
30
+ * import {constants} from 'jooby-codec'
31
+ * import NewEvent from 'jooby-codec/commands/uplink/NewEvent';
32
+ *
33
+ * // `Magnet On` event at 2023-04-05 13:17:20 GMT
34
+ * const parameters = {id: constants.events.MAGNET_ON, sequenceNumber: 3, data: {time: 734015840}}
35
+ * const command = new NewEvent(parameters);
36
+ *
37
+ * // output command binary in hex representation
38
+ * console.log(command.toHex());
39
+ * // 15 06 01 03 2b c0 31 60
40
+ * ```
41
+ *
42
+ * [Command format documentation](https://github.com/jooby-dev/jooby-docs/blob/main/docs/commands/uplink/NewEvent.md)
43
+ */
8
44
  class NewEvent extends Command {
9
45
  constructor(parameters) {
10
46
  super();
@@ -27,13 +63,13 @@ class NewEvent extends Command {
27
63
  case events.EV_OPTOLOW:
28
64
  case events.EV_OPTOFLASH:
29
65
  case events.EV_REJOIN:
30
- eventData = { time: buffer.getUint8() };
66
+ eventData = { time: buffer.getTime() };
31
67
  break;
32
68
  case events.BATTERY_ALARM:
33
- eventData = { voltage: buffer.getUint8() };
69
+ eventData = { voltage: getVoltage(buffer) };
34
70
  break;
35
71
  case events.ACTIVATE_MTX:
36
- eventData = { time: buffer.getUint8(), mtxAddress: buffer.getUint8() };
72
+ eventData = { time: buffer.getTime(), deviceId: getDeviceId(buffer) };
37
73
  break;
38
74
  case events.CONNECT:
39
75
  case events.DISCONNECT:
@@ -43,13 +79,13 @@ class NewEvent extends Command {
43
79
  eventData = { status1: buffer.getUint8(), status2: buffer.getUint8() };
44
80
  break;
45
81
  default:
46
- throw new Error(`${this.getId()}: event ${id} not supported`);
82
+ throw new Error(`${this.getId()}: event ${id} is not supported`);
47
83
  }
48
84
  return new NewEvent({ id, sequenceNumber, data: eventData });
49
85
  }
50
86
  toBytes() {
51
87
  const { id, sequenceNumber, data } = this.parameters;
52
- const buffer = new CommandBinaryBuffer(COMMAND_BODY_MAX_SIZE, false);
88
+ const buffer = new CommandBinaryBuffer(COMMAND_BODY_MAX_SIZE);
53
89
  let eventData;
54
90
  buffer.setUint8(id);
55
91
  buffer.setUint8(sequenceNumber);
@@ -66,16 +102,16 @@ class NewEvent extends Command {
66
102
  case events.EV_OPTOFLASH:
67
103
  case events.EV_REJOIN:
68
104
  eventData = data;
69
- buffer.setUint8(eventData.time);
105
+ buffer.setTime(eventData.time);
70
106
  break;
71
107
  case events.BATTERY_ALARM:
72
108
  eventData = data;
73
- buffer.setUint8(eventData.voltage);
109
+ setVoltage(buffer, eventData.voltage);
74
110
  break;
75
111
  case events.ACTIVATE_MTX:
76
112
  eventData = data;
77
- buffer.setUint8(eventData.time);
78
- buffer.setUint8(eventData.mtxAddress);
113
+ buffer.setTime(eventData.time);
114
+ setDeviceId(buffer, eventData.deviceId);
79
115
  break;
80
116
  case events.CONNECT:
81
117
  case events.DISCONNECT:
@@ -86,16 +122,16 @@ class NewEvent extends Command {
86
122
  case events.EV_MTX:
87
123
  eventData = data;
88
124
  buffer.setUint8(eventData.status1);
89
- buffer.setExtendedValue(eventData.status2);
125
+ buffer.setUint8(eventData.status2);
90
126
  break;
91
127
  default:
92
- throw new Error(`${NewEvent.getId()}: event ${id} not supported`);
128
+ throw new Error(`${NewEvent.getId()}: event ${id} is not supported`);
93
129
  }
94
130
  return Command.toBytes(COMMAND_ID, buffer.getBytesToOffset());
95
131
  }
96
132
  }
97
133
  NewEvent.id = COMMAND_ID;
98
- NewEvent.isUplink = true;
134
+ NewEvent.directionType = UPLINK;
99
135
  NewEvent.title = COMMAND_TITLE;
100
136
  export default NewEvent;
101
137
  //# sourceMappingURL=NewEvent.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"NewEvent.js","sourceRoot":"","sources":["../../../src/commands/uplink/NewEvent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"NewEvent.js","sourceRoot":"","sources":["../../../src/commands/uplink/NewEvent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ import Command from '../../Command.js';
2
+ interface IStatusBase {
3
+ }
4
+ interface IProduct {
5
+ version: number;
6
+ type: number;
7
+ }
8
+ /**
9
+ * NewStatus command parameters
10
+ */
11
+ interface INewStatusParameters {
12
+ software: IProduct;
13
+ hardware: IProduct;
14
+ data: IStatusBase;
15
+ }
16
+ /**
17
+ * Uplink command.
18
+ *
19
+ * @example
20
+ * ```js
21
+ * import NewStatus from 'jooby-codec/commands/uplink/NewStatus';
22
+ *
23
+ * const parameters = {
24
+ * software: {type: 4, version: 10},
25
+ * hardware: {type: 1, version: 1},
26
+ * data: {
27
+ * voltage: {
28
+ * low: 63,
29
+ * high: 144
30
+ * },
31
+ * internalResistance: 10034,
32
+ * temperature: 14,
33
+ * remindedBatteryCapacity: 41,
34
+ * lastEventSequenceNumber: 34
35
+ * }
36
+ * };
37
+ *
38
+ * const command = new NewStatus(parameters);
39
+ *
40
+ * // output command binary in hex representation
41
+ * console.log(command.toHex());
42
+ * // 14 0c 04 0a 01 01 03 f0 90 27 32 0e 68 22
43
+ * ```
44
+ *
45
+ * [Command format documentation](https://github.com/jooby-dev/jooby-docs/blob/main/docs/commands/NewStatus.md#response)
46
+ */
47
+ declare class NewStatus extends Command {
48
+ parameters: INewStatusParameters;
49
+ constructor(parameters: INewStatusParameters);
50
+ static readonly id = 20;
51
+ static readonly directionType = 2;
52
+ static readonly title = "NEW_STATUS";
53
+ static fromBytes(data: Uint8Array): NewStatus;
54
+ toBytes(): Uint8Array;
55
+ }
56
+ export default NewStatus;
@@ -0,0 +1,140 @@
1
+ import Command from '../../Command.js';
2
+ import CommandBinaryBuffer from '../../CommandBinaryBuffer.js';
3
+ import roundNumber from '../../utils/roundNumber.js';
4
+ import * as hardwareTypes from '../../constants/hardwareTypes.js';
5
+ import { UPLINK } from '../../constants/directionTypes.js';
6
+ const COMMAND_ID = 0x14;
7
+ const COMMAND_TITLE = 'NEW_STATUS';
8
+ const COMMAND_BODY_MAX_SIZE = 20;
9
+ const UNKNOWN_RESISTANT = 65535;
10
+ // max battery capacity, 254 - 100%
11
+ const UNKNOWN_BATTERY_CAPACITY = 255;
12
+ /**
13
+ * Uplink command.
14
+ *
15
+ * @example
16
+ * ```js
17
+ * import NewStatus from 'jooby-codec/commands/uplink/NewStatus';
18
+ *
19
+ * const parameters = {
20
+ * software: {type: 4, version: 10},
21
+ * hardware: {type: 1, version: 1},
22
+ * data: {
23
+ * voltage: {
24
+ * low: 63,
25
+ * high: 144
26
+ * },
27
+ * internalResistance: 10034,
28
+ * temperature: 14,
29
+ * remindedBatteryCapacity: 41,
30
+ * lastEventSequenceNumber: 34
31
+ * }
32
+ * };
33
+ *
34
+ * const command = new NewStatus(parameters);
35
+ *
36
+ * // output command binary in hex representation
37
+ * console.log(command.toHex());
38
+ * // 14 0c 04 0a 01 01 03 f0 90 27 32 0e 68 22
39
+ * ```
40
+ *
41
+ * [Command format documentation](https://github.com/jooby-dev/jooby-docs/blob/main/docs/commands/NewStatus.md#response)
42
+ */
43
+ class NewStatus extends Command {
44
+ constructor(parameters) {
45
+ super();
46
+ this.parameters = parameters;
47
+ }
48
+ static fromBytes(data) {
49
+ const buffer = new CommandBinaryBuffer(data);
50
+ const software = { type: buffer.getUint8(), version: buffer.getUint8() };
51
+ const hardware = { type: buffer.getUint8(), version: buffer.getUint8() };
52
+ let statusData;
53
+ switch (hardware.type) {
54
+ case hardwareTypes.GAZM3:
55
+ case hardwareTypes.GAZM0:
56
+ case hardwareTypes.GAZM0NEW:
57
+ case hardwareTypes.NOVATOR:
58
+ case hardwareTypes.IMP2EU:
59
+ case hardwareTypes.IMP4EU:
60
+ case hardwareTypes.IMP2AS:
61
+ case hardwareTypes.IMP2IN:
62
+ case hardwareTypes.IMP4IN:
63
+ case hardwareTypes.GAZWLE:
64
+ case hardwareTypes.WATER:
65
+ case hardwareTypes.PLC2LORA:
66
+ statusData = {
67
+ voltage: buffer.getBatterVoltage(),
68
+ internalResistance: buffer.getUint16(false),
69
+ temperature: buffer.getUint8(),
70
+ remindedBatteryCapacity: buffer.getUint8(),
71
+ lastEventSequenceNumber: buffer.getUint8()
72
+ };
73
+ if (statusData.internalResistance === UNKNOWN_RESISTANT) {
74
+ statusData.internalResistance = undefined;
75
+ }
76
+ if (statusData.remindedBatteryCapacity === UNKNOWN_BATTERY_CAPACITY) {
77
+ statusData.remindedBatteryCapacity = undefined;
78
+ }
79
+ else if (statusData.remindedBatteryCapacity !== undefined) {
80
+ statusData.remindedBatteryCapacity = roundNumber((statusData.remindedBatteryCapacity * 100) / (UNKNOWN_BATTERY_CAPACITY - 1), 0);
81
+ }
82
+ break;
83
+ case hardwareTypes.MTXLORA:
84
+ case hardwareTypes.ELIMP:
85
+ default:
86
+ throw new Error(`${this.getId()}: hardware type ${hardware.type} is not supported`);
87
+ }
88
+ return new NewStatus({ software, hardware, data: statusData });
89
+ }
90
+ toBytes() {
91
+ const { software, hardware, data } = this.parameters;
92
+ const buffer = new CommandBinaryBuffer(COMMAND_BODY_MAX_SIZE);
93
+ let statusData;
94
+ buffer.setUint8(software.type);
95
+ buffer.setUint8(software.version);
96
+ buffer.setUint8(hardware.type);
97
+ buffer.setUint8(hardware.version);
98
+ switch (hardware.type) {
99
+ case hardwareTypes.GAZM3:
100
+ case hardwareTypes.GAZM0:
101
+ case hardwareTypes.GAZM0NEW:
102
+ case hardwareTypes.NOVATOR:
103
+ case hardwareTypes.IMP2EU:
104
+ case hardwareTypes.IMP4EU:
105
+ case hardwareTypes.IMP2AS:
106
+ case hardwareTypes.IMP2IN:
107
+ case hardwareTypes.IMP4IN:
108
+ case hardwareTypes.GAZWLE:
109
+ case hardwareTypes.WATER:
110
+ case hardwareTypes.PLC2LORA:
111
+ statusData = data;
112
+ buffer.setBatterVoltage(statusData.voltage);
113
+ if (statusData.internalResistance === undefined) {
114
+ buffer.setUint16(UNKNOWN_RESISTANT, false);
115
+ }
116
+ else {
117
+ buffer.setUint16(statusData.internalResistance, false);
118
+ }
119
+ buffer.setUint8(statusData.temperature);
120
+ if (statusData.remindedBatteryCapacity === undefined) {
121
+ buffer.setUint8(UNKNOWN_BATTERY_CAPACITY);
122
+ }
123
+ else {
124
+ buffer.setUint8((UNKNOWN_BATTERY_CAPACITY - 1) * (statusData.remindedBatteryCapacity / 100));
125
+ }
126
+ buffer.setUint8(statusData.lastEventSequenceNumber);
127
+ break;
128
+ case hardwareTypes.MTXLORA:
129
+ case hardwareTypes.ELIMP:
130
+ default:
131
+ throw new Error(`${NewStatus.getId()}: hardware type ${hardware.type} is not supported`);
132
+ }
133
+ return Command.toBytes(COMMAND_ID, buffer.getBytesToOffset());
134
+ }
135
+ }
136
+ NewStatus.id = COMMAND_ID;
137
+ NewStatus.directionType = UPLINK;
138
+ NewStatus.title = COMMAND_TITLE;
139
+ export default NewStatus;
140
+ //# sourceMappingURL=NewStatus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NewStatus.js","sourceRoot":"","sources":["../../../src/commands/uplink/NewStatus.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,kBAAkB,CAAC;AACvC,OAAO,mBAAsC,MAAM,8BAA8B,CAAC;AAClF,OAAO,WAAW,MAAM,4BAA4B,CAAC;AACrD,OAAO,KAAK,aAAa,MAAM,kCAAkC,CAAC;AAClE,OAAO,EAAC,MAAM,EAAC,MAAM,mCAAmC,CAAC;AA4CzD,MAAM,UAAU,GAAG,IAAI,CAAC;AACxB,MAAM,aAAa,GAAG,YAAY,CAAC;AACnC,MAAM,qBAAqB,GAAG,EAAE,CAAC;AACjC,MAAM,iBAAiB,GAAG,KAAK,CAAC;AAEhC,mCAAmC;AACnC,MAAM,wBAAwB,GAAG,GAAG,CAAC;AAGrC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,MAAM,SAAU,SAAQ,OAAO;IAC3B,YAAqB,UAAgC;QACjD,KAAK,EAAE,CAAC;QADS,eAAU,GAAV,UAAU,CAAsB;IAErD,CAAC;IAQD,MAAM,CAAC,SAAS,CAAG,IAAgB;QAC/B,MAAM,MAAM,GAAG,IAAI,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAC7C,MAAM,QAAQ,GAAG,EAAC,IAAI,EAAE,MAAM,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,QAAQ,EAAE,EAAC,CAAC;QACvE,MAAM,QAAQ,GAAG,EAAC,IAAI,EAAE,MAAM,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,QAAQ,EAAE,EAAC,CAAC;QAEvE,IAAI,UAAU,CAAC;QAEf,QAAS,QAAQ,CAAC,IAAI,EAAG;YACrB,KAAK,aAAa,CAAC,KAAK,CAAC;YACzB,KAAK,aAAa,CAAC,KAAK,CAAC;YACzB,KAAK,aAAa,CAAC,QAAQ,CAAC;YAC5B,KAAK,aAAa,CAAC,OAAO,CAAC;YAC3B,KAAK,aAAa,CAAC,MAAM,CAAC;YAC1B,KAAK,aAAa,CAAC,MAAM,CAAC;YAC1B,KAAK,aAAa,CAAC,MAAM,CAAC;YAC1B,KAAK,aAAa,CAAC,MAAM,CAAC;YAC1B,KAAK,aAAa,CAAC,MAAM,CAAC;YAC1B,KAAK,aAAa,CAAC,MAAM,CAAC;YAC1B,KAAK,aAAa,CAAC,KAAK,CAAC;YACzB,KAAK,aAAa,CAAC,QAAQ;gBACvB,UAAU,GAAG;oBACT,OAAO,EAAE,MAAM,CAAC,gBAAgB,EAAE;oBAClC,kBAAkB,EAAE,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC;oBAC3C,WAAW,EAAE,MAAM,CAAC,QAAQ,EAAE;oBAC9B,uBAAuB,EAAE,MAAM,CAAC,QAAQ,EAAE;oBAC1C,uBAAuB,EAAE,MAAM,CAAC,QAAQ,EAAE;iBAC/B,CAAC;gBAEhB,IAAK,UAAU,CAAC,kBAAkB,KAAK,iBAAiB,EAAG;oBACvD,UAAU,CAAC,kBAAkB,GAAG,SAAS,CAAC;iBAC7C;gBAED,IAAK,UAAU,CAAC,uBAAuB,KAAK,wBAAwB,EAAG;oBACnE,UAAU,CAAC,uBAAuB,GAAG,SAAS,CAAC;iBAClD;qBAAM,IAAK,UAAU,CAAC,uBAAuB,KAAK,SAAS,EAAG;oBAC3D,UAAU,CAAC,uBAAuB,GAAG,WAAW,CAAC,CAAC,UAAU,CAAC,uBAAuB,GAAG,GAAG,CAAC,GAAG,CAAC,wBAAwB,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;iBACpI;gBAED,MAAM;YAEV,KAAK,aAAa,CAAC,OAAO,CAAC;YAC3B,KAAK,aAAa,CAAC,KAAK,CAAC;YACzB;gBACI,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,mBAAmB,QAAQ,CAAC,IAAI,mBAAmB,CAAC,CAAC;SAC3F;QAED,OAAO,IAAI,SAAS,CAAC,EAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAC,CAAC,CAAC;IACjE,CAAC;IAED,OAAO;QACH,MAAM,EAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAC,GAAG,IAAI,CAAC,UAAU,CAAC;QACnD,MAAM,MAAM,GAAG,IAAI,mBAAmB,CAAC,qBAAqB,CAAC,CAAC;QAC9D,IAAI,UAAU,CAAC;QAEf,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAClC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAElC,QAAS,QAAQ,CAAC,IAAI,EAAG;YACrB,KAAK,aAAa,CAAC,KAAK,CAAC;YACzB,KAAK,aAAa,CAAC,KAAK,CAAC;YACzB,KAAK,aAAa,CAAC,QAAQ,CAAC;YAC5B,KAAK,aAAa,CAAC,OAAO,CAAC;YAC3B,KAAK,aAAa,CAAC,MAAM,CAAC;YAC1B,KAAK,aAAa,CAAC,MAAM,CAAC;YAC1B,KAAK,aAAa,CAAC,MAAM,CAAC;YAC1B,KAAK,aAAa,CAAC,MAAM,CAAC;YAC1B,KAAK,aAAa,CAAC,MAAM,CAAC;YAC1B,KAAK,aAAa,CAAC,MAAM,CAAC;YAC1B,KAAK,aAAa,CAAC,KAAK,CAAC;YACzB,KAAK,aAAa,CAAC,QAAQ;gBACvB,UAAU,GAAG,IAAkB,CAAC;gBAChC,MAAM,CAAC,gBAAgB,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;gBAE5C,IAAK,UAAU,CAAC,kBAAkB,KAAK,SAAS,EAAG;oBAC/C,MAAM,CAAC,SAAS,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;iBAC9C;qBAAM;oBACH,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;iBAC1D;gBAED,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;gBAExC,IAAK,UAAU,CAAC,uBAAuB,KAAK,SAAS,EAAG;oBACpD,MAAM,CAAC,QAAQ,CAAC,wBAAwB,CAAC,CAAC;iBAC7C;qBAAM;oBACH,MAAM,CAAC,QAAQ,CAAC,CAAC,wBAAwB,GAAG,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,uBAAuB,GAAG,GAAG,CAAC,CAAC,CAAC;iBAChG;gBAED,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,uBAAuB,CAAC,CAAC;gBAEpD,MAAM;YAEV,KAAK,aAAa,CAAC,OAAO,CAAC;YAC3B,KAAK,aAAa,CAAC,KAAK,CAAC;YACzB;gBACI,MAAM,IAAI,KAAK,CAAC,GAAG,SAAS,CAAC,KAAK,EAAE,mBAAmB,QAAQ,CAAC,IAAI,mBAAmB,CAAC,CAAC;SAChG;QAED,OAAO,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAClE,CAAC;;AA1Ge,YAAE,GAAG,UAAU,CAAC;AAEhB,uBAAa,GAAG,MAAM,CAAC;AAEvB,eAAK,GAAG,aAAa,CAAC;AA0G1C,eAAe,SAAS,CAAC"}
@@ -29,7 +29,7 @@ declare class SetTime2000 extends Command {
29
29
  parameters: IUplinkSetTime2000Parameters;
30
30
  constructor(parameters: IUplinkSetTime2000Parameters);
31
31
  static readonly id = 2;
32
- static readonly isUplink = true;
32
+ static readonly directionType = 2;
33
33
  static readonly title = "SET_TIME_2000";
34
34
  static fromBytes(data: Uint8Array): SetTime2000;
35
35
  toBytes(): Uint8Array;
@@ -1,5 +1,6 @@
1
1
  import Command from '../../Command.js';
2
2
  import BinaryBuffer from '../../BinaryBuffer.js';
3
+ import { UPLINK } from '../../constants/directionTypes.js';
3
4
  const COMMAND_ID = 0x02;
4
5
  const COMMAND_TITLE = 'SET_TIME_2000';
5
6
  const COMMAND_BODY_SIZE = 1;
@@ -47,7 +48,7 @@ class SetTime2000 extends Command {
47
48
  }
48
49
  }
49
50
  SetTime2000.id = COMMAND_ID;
50
- SetTime2000.isUplink = true;
51
+ SetTime2000.directionType = UPLINK;
51
52
  SetTime2000.title = COMMAND_TITLE;
52
53
  export default SetTime2000;
53
54
  //# sourceMappingURL=SetTime2000.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SetTime2000.js","sourceRoot":"","sources":["../../../src/commands/uplink/SetTime2000.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,kBAAkB,CAAC;AAEvC,OAAO,YAAY,MAAM,uBAAuB,CAAC;AAGjD,MAAM,UAAU,GAAG,IAAI,CAAC;AACxB,MAAM,aAAa,GAAG,eAAe,CAAC;AACtC,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAc5B;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAY,SAAQ,OAAO;IAC7B,YAAqB,UAAwC;QACzD,KAAK,EAAE,CAAC;QADS,eAAU,GAAV,UAAU,CAA8B;IAE7D,CAAC;IAQD,oCAAoC;IACpC,MAAM,CAAC,SAAS,CAAG,IAAgB;QAC/B,IAAK,IAAI,CAAC,UAAU,KAAK,iBAAiB,EAAG;YACzC,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,wBAAwB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;SAChF;QAED,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAE7C,MAAM,UAAU,GAAG;YACf,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE;SAC5B,CAAC;QAEF,IAAK,CAAC,MAAM,CAAC,OAAO,EAAG;YACnB,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,8BAA8B,CAAC,CAAC;SACpE;QAED,OAAO,IAAI,WAAW,CAAC,UAAU,CAAC,CAAC;IACvC,CAAC;IAED,OAAO;QACH,MAAM,EAAC,MAAM,EAAC,GAAG,IAAI,CAAC,UAAU,CAAC;QACjC,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;QAE1D,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAExB,OAAO,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;IAC9D,CAAC;;AAhCe,cAAE,GAAG,UAAU,CAAC;AAEhB,oBAAQ,GAAG,IAAI,CAAC;AAEhB,iBAAK,GAAG,aAAa,CAAC;AAgC1C,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"SetTime2000.js","sourceRoot":"","sources":["../../../src/commands/uplink/SetTime2000.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,kBAAkB,CAAC;AACvC,OAAO,YAAY,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAC,MAAM,EAAC,MAAM,mCAAmC,CAAC;AAczD,MAAM,UAAU,GAAG,IAAI,CAAC;AACxB,MAAM,aAAa,GAAG,eAAe,CAAC;AACtC,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAG5B;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAY,SAAQ,OAAO;IAC7B,YAAqB,UAAwC;QACzD,KAAK,EAAE,CAAC;QADS,eAAU,GAAV,UAAU,CAA8B;IAE7D,CAAC;IAQD,oCAAoC;IACpC,MAAM,CAAC,SAAS,CAAG,IAAgB;QAC/B,IAAK,IAAI,CAAC,UAAU,KAAK,iBAAiB,EAAG;YACzC,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,wBAAwB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;SAChF;QAED,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAE7C,MAAM,UAAU,GAAG;YACf,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE;SAC5B,CAAC;QAEF,IAAK,CAAC,MAAM,CAAC,OAAO,EAAG;YACnB,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,8BAA8B,CAAC,CAAC;SACpE;QAED,OAAO,IAAI,WAAW,CAAC,UAAU,CAAC,CAAC;IACvC,CAAC;IAED,OAAO;QACH,MAAM,EAAC,MAAM,EAAC,GAAG,IAAI,CAAC,UAAU,CAAC;QACjC,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;QAE1D,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAExB,OAAO,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;IAC9D,CAAC;;AAhCe,cAAE,GAAG,UAAU,CAAC;AAEhB,yBAAa,GAAG,MAAM,CAAC;AAEvB,iBAAK,GAAG,aAAa,CAAC;AAgC1C,eAAe,WAAW,CAAC"}
@@ -0,0 +1,24 @@
1
+ import Command from '../../Command.js';
2
+ /**
3
+ * Uplink command.
4
+ *
5
+ * @example
6
+ * ```js
7
+ * import SoftRestart from 'jooby-codec/commands/uplink/SoftRestart';
8
+ *
9
+ * const command = new SoftRestart();
10
+ *
11
+ * // output command binary in hex representation
12
+ * console.log(command.toHex());
13
+ * // 19 00
14
+ * ```
15
+ * [Command format documentation](https://github.com/jooby-dev/jooby-docs/blob/main/docs/commands/SoftRestart.md#response)
16
+ */
17
+ declare class SoftRestart extends Command {
18
+ static readonly id = 25;
19
+ static readonly directionType = 2;
20
+ static readonly title = "SOFT_RESTART";
21
+ static fromBytes(): SoftRestart;
22
+ toBytes(): Uint8Array;
23
+ }
24
+ export default SoftRestart;
@@ -0,0 +1,34 @@
1
+ import Command from '../../Command.js';
2
+ import { UPLINK } from '../../constants/directionTypes.js';
3
+ const COMMAND_ID = 0x19;
4
+ const COMMAND_TITLE = 'SOFT_RESTART';
5
+ /**
6
+ * Uplink command.
7
+ *
8
+ * @example
9
+ * ```js
10
+ * import SoftRestart from 'jooby-codec/commands/uplink/SoftRestart';
11
+ *
12
+ * const command = new SoftRestart();
13
+ *
14
+ * // output command binary in hex representation
15
+ * console.log(command.toHex());
16
+ * // 19 00
17
+ * ```
18
+ * [Command format documentation](https://github.com/jooby-dev/jooby-docs/blob/main/docs/commands/SoftRestart.md#response)
19
+ */
20
+ class SoftRestart extends Command {
21
+ // data - only body (without header)
22
+ static fromBytes() {
23
+ return new SoftRestart();
24
+ }
25
+ // eslint-disable-next-line class-methods-use-this
26
+ toBytes() {
27
+ return Command.toBytes(COMMAND_ID);
28
+ }
29
+ }
30
+ SoftRestart.id = COMMAND_ID;
31
+ SoftRestart.directionType = UPLINK;
32
+ SoftRestart.title = COMMAND_TITLE;
33
+ export default SoftRestart;
34
+ //# sourceMappingURL=SoftRestart.js.map