jooby-codec 1.8.0 → 1.9.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 (157) hide show
  1. package/dist/BinaryBuffer.d.ts +2 -0
  2. package/dist/BinaryBuffer.js +9 -0
  3. package/dist/BinaryBuffer.js.map +1 -1
  4. package/dist/CommandBinaryBuffer.d.ts +108 -9
  5. package/dist/CommandBinaryBuffer.js +230 -26
  6. package/dist/CommandBinaryBuffer.js.map +1 -1
  7. package/dist/commands/downlink/CorrectTime2000.d.ts +4 -3
  8. package/dist/commands/downlink/CorrectTime2000.js +1 -0
  9. package/dist/commands/downlink/CorrectTime2000.js.map +1 -1
  10. package/dist/commands/downlink/GetArchiveDaysMC.d.ts +5 -4
  11. package/dist/commands/downlink/GetArchiveDaysMC.js +2 -1
  12. package/dist/commands/downlink/GetArchiveDaysMC.js.map +1 -1
  13. package/dist/commands/downlink/GetArchiveEvents.d.ts +4 -3
  14. package/dist/commands/downlink/GetArchiveEvents.js +3 -5
  15. package/dist/commands/downlink/GetArchiveEvents.js.map +1 -1
  16. package/dist/commands/downlink/GetArchiveHoursMC.d.ts +5 -4
  17. package/dist/commands/downlink/GetArchiveHoursMC.js +2 -1
  18. package/dist/commands/downlink/GetArchiveHoursMC.js.map +1 -1
  19. package/dist/commands/downlink/GetCurrentMC.d.ts +1 -0
  20. package/dist/commands/downlink/GetCurrentMC.js +1 -0
  21. package/dist/commands/downlink/GetCurrentMC.js.map +1 -1
  22. package/dist/commands/downlink/{ExAbsArchiveDaysMC.d.ts → GetExAbsArchiveDaysMC.d.ts} +12 -11
  23. package/dist/commands/downlink/{ExAbsArchiveDaysMC.js → GetExAbsArchiveDaysMC.js} +12 -11
  24. package/dist/commands/downlink/GetExAbsArchiveDaysMC.js.map +1 -0
  25. package/dist/commands/downlink/{ExAbsArchiveHoursMC.d.ts → GetExAbsArchiveHoursMC.d.ts} +12 -11
  26. package/dist/commands/downlink/{ExAbsArchiveHoursMC.js → GetExAbsArchiveHoursMC.js} +12 -11
  27. package/dist/commands/downlink/GetExAbsArchiveHoursMC.js.map +1 -0
  28. package/dist/commands/downlink/{ExAbsCurrentMC.d.ts → GetExAbsCurrentMC.d.ts} +8 -7
  29. package/dist/commands/downlink/{ExAbsCurrentMC.js → GetExAbsCurrentMC.js} +12 -11
  30. package/dist/commands/downlink/GetExAbsCurrentMC.js.map +1 -0
  31. package/dist/commands/downlink/{GetLmicVersion.d.ts → GetLmicInfo.d.ts} +7 -6
  32. package/dist/commands/downlink/{GetLmicVersion.js → GetLmicInfo.js} +12 -11
  33. package/dist/commands/downlink/GetLmicInfo.js.map +1 -0
  34. package/dist/commands/downlink/GetParameter.d.ts +4 -3
  35. package/dist/commands/downlink/GetParameter.js +3 -8
  36. package/dist/commands/downlink/GetParameter.js.map +1 -1
  37. package/dist/commands/downlink/GetStatus.d.ts +1 -0
  38. package/dist/commands/downlink/GetStatus.js +1 -1
  39. package/dist/commands/downlink/GetStatus.js.map +1 -1
  40. package/dist/commands/downlink/SetParameter.d.ts +1 -0
  41. package/dist/commands/downlink/SetParameter.js +94 -16
  42. package/dist/commands/downlink/SetParameter.js.map +1 -1
  43. package/dist/commands/downlink/SetTime2000.d.ts +4 -3
  44. package/dist/commands/downlink/SetTime2000.js +1 -0
  45. package/dist/commands/downlink/SetTime2000.js.map +1 -1
  46. package/dist/commands/downlink/SoftRestart.d.ts +1 -0
  47. package/dist/commands/downlink/SoftRestart.js +1 -0
  48. package/dist/commands/downlink/SoftRestart.js.map +1 -1
  49. package/dist/commands/downlink/index.d.ts +4 -4
  50. package/dist/commands/downlink/index.js +4 -4
  51. package/dist/commands/downlink/index.js.map +1 -1
  52. package/dist/commands/uplink/CorrectTime2000Response.d.ts +39 -0
  53. package/dist/commands/uplink/{CorrectTime2000.js → CorrectTime2000Response.js} +23 -14
  54. package/dist/commands/uplink/CorrectTime2000Response.js.map +1 -0
  55. package/dist/commands/uplink/CurrentMC.d.ts +41 -0
  56. package/dist/commands/uplink/{GetCurrentMC.js → CurrentMC.js} +19 -18
  57. package/dist/commands/uplink/CurrentMC.js.map +1 -0
  58. package/dist/commands/uplink/DataDayMC.d.ts +32 -3
  59. package/dist/commands/uplink/DataDayMC.js +47 -4
  60. package/dist/commands/uplink/DataDayMC.js.map +1 -1
  61. package/dist/commands/uplink/DataHourMC.d.ts +32 -2
  62. package/dist/commands/uplink/DataHourMC.js +49 -4
  63. package/dist/commands/uplink/DataHourMC.js.map +1 -1
  64. package/dist/commands/uplink/ExAbsCurrentMC.d.ts +32 -4
  65. package/dist/commands/uplink/ExAbsCurrentMC.js +46 -0
  66. package/dist/commands/uplink/ExAbsCurrentMC.js.map +1 -1
  67. package/dist/commands/uplink/ExAbsDayMC.d.ts +32 -2
  68. package/dist/commands/uplink/ExAbsDayMC.js +50 -2
  69. package/dist/commands/uplink/ExAbsDayMC.js.map +1 -1
  70. package/dist/commands/uplink/ExAbsHourMC.d.ts +16 -11
  71. package/dist/commands/uplink/ExAbsHourMC.js +32 -9
  72. package/dist/commands/uplink/ExAbsHourMC.js.map +1 -1
  73. package/dist/commands/uplink/GetArchiveDaysMCResponse.d.ts +58 -0
  74. package/dist/commands/uplink/{GetArchiveDaysMC.js → GetArchiveDaysMCResponse.js} +44 -20
  75. package/dist/commands/uplink/GetArchiveDaysMCResponse.js.map +1 -0
  76. package/dist/commands/uplink/GetArchiveEventsResponse.d.ts +54 -0
  77. package/dist/commands/uplink/{GetArchiveEvents.js → GetArchiveEventsResponse.js} +24 -18
  78. package/dist/commands/uplink/GetArchiveEventsResponse.js.map +1 -0
  79. package/dist/commands/uplink/GetArchiveHoursMCResponse.d.ts +58 -0
  80. package/dist/commands/uplink/GetArchiveHoursMCResponse.js +77 -0
  81. package/dist/commands/uplink/GetArchiveHoursMCResponse.js.map +1 -0
  82. package/dist/commands/uplink/GetExAbsArchiveDaysMCResponse.d.ts +47 -0
  83. package/dist/commands/uplink/{ExAbsArchiveDaysMC.js → GetExAbsArchiveDaysMCResponse.js} +52 -7
  84. package/dist/commands/uplink/GetExAbsArchiveDaysMCResponse.js.map +1 -0
  85. package/dist/commands/uplink/GetExAbsArchiveHoursMCResponse.d.ts +44 -0
  86. package/dist/commands/uplink/{ExAbsArchiveHoursMC.js → GetExAbsArchiveHoursMCResponse.js} +46 -7
  87. package/dist/commands/uplink/GetExAbsArchiveHoursMCResponse.js.map +1 -0
  88. package/dist/commands/uplink/GetLmicInfoResponse.d.ts +52 -0
  89. package/dist/commands/uplink/{GetLmicVersion.js → GetLmicInfoResponse.js} +27 -27
  90. package/dist/commands/uplink/GetLmicInfoResponse.js.map +1 -0
  91. package/dist/commands/uplink/GetParameterResponse.d.ts +35 -0
  92. package/dist/commands/uplink/{GetParameter.js → GetParameterResponse.js} +25 -32
  93. package/dist/commands/uplink/GetParameterResponse.js.map +1 -0
  94. package/dist/commands/uplink/LastEvent.d.ts +19 -10
  95. package/dist/commands/uplink/LastEvent.js +21 -12
  96. package/dist/commands/uplink/LastEvent.js.map +1 -1
  97. package/dist/commands/uplink/NewEvent.d.ts +12 -8
  98. package/dist/commands/uplink/NewEvent.js +12 -8
  99. package/dist/commands/uplink/NewEvent.js.map +1 -1
  100. package/dist/commands/uplink/SetTime2000Response.d.ts +38 -0
  101. package/dist/commands/uplink/{SetTime2000.js → SetTime2000Response.js} +23 -15
  102. package/dist/commands/uplink/SetTime2000Response.js.map +1 -0
  103. package/dist/commands/uplink/SoftRestartResponse.d.ts +28 -0
  104. package/dist/commands/uplink/SoftRestartResponse.js +44 -0
  105. package/dist/commands/uplink/SoftRestartResponse.js.map +1 -0
  106. package/dist/commands/uplink/{GetStatus.d.ts → Status.d.ts} +19 -21
  107. package/dist/commands/uplink/{GetStatus.js → Status.js} +31 -37
  108. package/dist/commands/uplink/Status.js.map +1 -0
  109. package/dist/commands/uplink/Time2000.d.ts +11 -9
  110. package/dist/commands/uplink/Time2000.js +18 -8
  111. package/dist/commands/uplink/Time2000.js.map +1 -1
  112. package/dist/commands/uplink/index.d.ts +12 -12
  113. package/dist/commands/uplink/index.js +12 -12
  114. package/dist/commands/uplink/index.js.map +1 -1
  115. package/dist/constants/deviceParameters.d.ts +14 -0
  116. package/dist/constants/deviceParameters.js +14 -0
  117. package/dist/constants/deviceParameters.js.map +1 -1
  118. package/dist/constants/hardwareTypes.d.ts +55 -27
  119. package/dist/constants/hardwareTypes.js +55 -27
  120. package/dist/constants/hardwareTypes.js.map +1 -1
  121. package/dist/constants/index.d.ts +1 -0
  122. package/dist/constants/index.js +1 -0
  123. package/dist/constants/index.js.map +1 -1
  124. package/dist/constants/rx2SpreadFactors.d.ts +12 -0
  125. package/dist/constants/rx2SpreadFactors.js +13 -0
  126. package/dist/constants/rx2SpreadFactors.js.map +1 -0
  127. package/package.json +4 -1
  128. package/readme.md +2 -2
  129. package/dist/commands/downlink/ExAbsArchiveDaysMC.js.map +0 -1
  130. package/dist/commands/downlink/ExAbsArchiveHoursMC.js.map +0 -1
  131. package/dist/commands/downlink/ExAbsCurrentMC.js.map +0 -1
  132. package/dist/commands/downlink/GetLmicVersion.js.map +0 -1
  133. package/dist/commands/uplink/CorrectTime2000.d.ts +0 -37
  134. package/dist/commands/uplink/CorrectTime2000.js.map +0 -1
  135. package/dist/commands/uplink/ExAbsArchiveDaysMC.d.ts +0 -18
  136. package/dist/commands/uplink/ExAbsArchiveDaysMC.js.map +0 -1
  137. package/dist/commands/uplink/ExAbsArchiveHoursMC.d.ts +0 -18
  138. package/dist/commands/uplink/ExAbsArchiveHoursMC.js.map +0 -1
  139. package/dist/commands/uplink/GetArchiveDaysMC.d.ts +0 -50
  140. package/dist/commands/uplink/GetArchiveDaysMC.js.map +0 -1
  141. package/dist/commands/uplink/GetArchiveEvents.d.ts +0 -48
  142. package/dist/commands/uplink/GetArchiveEvents.js.map +0 -1
  143. package/dist/commands/uplink/GetArchiveHoursMC.d.ts +0 -69
  144. package/dist/commands/uplink/GetArchiveHoursMC.js +0 -72
  145. package/dist/commands/uplink/GetArchiveHoursMC.js.map +0 -1
  146. package/dist/commands/uplink/GetCurrentMC.d.ts +0 -40
  147. package/dist/commands/uplink/GetCurrentMC.js.map +0 -1
  148. package/dist/commands/uplink/GetLmicVersion.d.ts +0 -46
  149. package/dist/commands/uplink/GetLmicVersion.js.map +0 -1
  150. package/dist/commands/uplink/GetParameter.d.ts +0 -30
  151. package/dist/commands/uplink/GetParameter.js.map +0 -1
  152. package/dist/commands/uplink/GetStatus.js.map +0 -1
  153. package/dist/commands/uplink/SetTime2000.d.ts +0 -37
  154. package/dist/commands/uplink/SetTime2000.js.map +0 -1
  155. package/dist/commands/uplink/SoftRestart.d.ts +0 -24
  156. package/dist/commands/uplink/SoftRestart.js +0 -34
  157. package/dist/commands/uplink/SoftRestart.js.map +0 -1
@@ -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
  *
@@ -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
  *
@@ -1 +1 @@
1
- {"version":3,"file":"BinaryBuffer.js","sourceRoot":"","sources":["../src/BinaryBuffer.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,MAAM,4BAA4B,CAAC;AACzD,OAAO,eAAoC,MAAM,4BAA4B,CAAC;AAG9E,eAAe;AACf,MAAM,SAAS,GAAG,CAAC,CAAC;AACpB,MAAM,UAAU,GAAG,CAAC,CAAC;AACrB,MAAM,UAAU,GAAG,CAAC,CAAC;AAGrB,MAAM,UAAU,GAAG,CAAE,MAAoB,EAAE,UAAkB,EAAa,EAAE;IACxE,IAAK,MAAM,CAAC,MAAM,GAAG,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,EAAG;QACvD,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;KAC3C;IAED,OAAO,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AAChE,CAAC,CAAC;AAGF;;GAEG;AACH,MAAM,YAAY;IAOd;;;;;OAKG;IACH,YAAc,YAA0C,EAAE,cAAc,GAAG,IAAI;QAC3E,IAAK,OAAO,YAAY,KAAK,QAAQ,EAAG;YACpC,IAAI,CAAC,IAAI,GAAG,IAAI,WAAW,CAAC,YAAY,CAAC,CAAC;SAC7C;aAAM,IAAK,OAAO,YAAY,KAAK,QAAQ,EAAG;YAC3C,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC;SACpD;aAAM;YACH,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC,MAAM,CAAC;SACnC;QAED,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QAChB,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;IACzC,CAAC;IAED,KAAK,CAAG,UAA6B,EAAE;QACnC,OAAO,eAAe,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,OAAO,CAAC,CAAC;IACzD,CAAC;IAED,YAAY;QACR,OAAO,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC;IAED,IAAI,IAAI;QACJ,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;IAChC,CAAC;IAED,IAAI,OAAO;QACP,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC;IACpD,CAAC;IAED,IAAI,SAAS;QACT,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC;IAC9C,CAAC;IAED,IAAI,QAAQ;QACR,OAAO,IAAI,CAAC,MAAM,CAAC;IACvB,CAAC;IAED,IAAI,CAAG,QAAgB;QACnB,IAAK,QAAQ,GAAG,CAAC,IAAI,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,EAAG;YACpD,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;SACxC;QAED,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAED,OAAO,CAAG,KAAa;QACnB,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAEzC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QACvB,IAAI,CAAC,MAAM,IAAI,SAAS,CAAC;IAC7B,CAAC;IAED,OAAO;QACH,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAEtD,IAAI,CAAC,MAAM,IAAI,SAAS,CAAC;QAEzB,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,QAAQ,CAAG,KAAa;QACpB,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAC/C,IAAI,CAAC,MAAM,IAAI,SAAS,CAAC;IAC7B,CAAC;IAED,QAAQ;QACJ,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAEvD,IAAI,CAAC,MAAM,IAAI,SAAS,CAAC;QAEzB,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,QAAQ,CAAG,MAAc,EAAE,cAAc,GAAG,IAAI,CAAC,cAAc;QAC3D,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC;QACjE,IAAI,CAAC,MAAM,IAAI,UAAU,CAAC;IAC9B,CAAC;IAED,QAAQ,CAAG,cAAc,GAAG,IAAI,CAAC,cAAc;QAC3C,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;QAExE,IAAI,CAAC,MAAM,IAAI,UAAU,CAAC;QAE1B,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,SAAS,CAAG,KAAa,EAAE,cAAc,GAAG,IAAI,CAAC,cAAc;QAC3D,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC;QACjE,IAAI,CAAC,MAAM,IAAI,UAAU,CAAC;IAC9B,CAAC;IAED,SAAS,CAAG,cAAc,GAAG,IAAI,CAAC,cAAc;QAC5C,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;QAEzE,IAAI,CAAC,MAAM,IAAI,UAAU,CAAC;QAE1B,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,QAAQ,CAAG,KAAa,EAAE,cAAc,GAAG,IAAI,CAAC,cAAc;QAC1D,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC;QAChE,IAAI,CAAC,MAAM,IAAI,UAAU,CAAC;IAC9B,CAAC;IAED,QAAQ,CAAG,cAAc,GAAG,IAAI,CAAC,cAAc;QAC3C,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;QAExE,IAAI,CAAC,MAAM,IAAI,UAAU,CAAC;QAE1B,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,SAAS,CAAG,KAAa,EAAE,cAAc,GAAG,IAAI,CAAC,cAAc;QAC3D,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC;QACjE,IAAI,CAAC,MAAM,IAAI,UAAU,CAAC;IAC9B,CAAC;IAED,SAAS,CAAG,cAAc,GAAG,IAAI,CAAC,cAAc;QAC5C,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;QAEzE,IAAI,CAAC,MAAM,IAAI,UAAU,CAAC;QAE1B,OAAO,MAAM,CAAC;IAClB,CAAC;IAED;;;;;;OAMG;IACH,gBAAgB,CAAG,MAAM,GAAG,IAAI,CAAC,MAAM;QACnC,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAElC,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IAClC,CAAC;CACJ;AAGD,eAAe,YAAY,CAAC"}
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
- * TODO:
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 | IEventWaterStatus | IEvent4ChannelStatus | IEventMtxStatus;
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.GAZM0,
15
- hardwareTypes.GAZM0NEW,
16
- hardwareTypes.GAZM3,
17
- hardwareTypes.GAZWLE
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
- hardwareTypes.WATER
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
- isBatteryLow: 2 ** 0,
56
- isConnectionLost: 2 ** 3
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
- [deviceParameters.INITIAL_DATA, 9 + 1],
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.INITIAL_DATA_MULTI_CHANNEL, 10 + 1],
88
- [deviceParameters.ABSOLUTE_DATA_STATUS_MULTI_CHANNEL, 2 + 1]
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;
@@ -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
- else if (WATER_HARDWARE_TYPES.includes(hardwareType)) {
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
- else if (WATER_HARDWARE_TYPES.includes(hardwareType)) {
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;