dsc-itv2-client 1.0.17 → 1.0.19

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 (2) hide show
  1. package/package.json +1 -1
  2. package/src/ITV2Client.js +60 -9
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "dsc-itv2-client",
3
3
  "author": "fajitacat",
4
- "version": "1.0.17",
4
+ "version": "1.0.19",
5
5
  "description": "Reverse engineered DSC ITV2 Protocol Client Library for TL280R Communicator - Monitor and control DSC alarm panels",
6
6
  "main": "src/index.js",
7
7
  "type": "module",
package/src/ITV2Client.js CHANGED
@@ -152,18 +152,75 @@ export class ITV2Client extends EventEmitter {
152
152
  this._sendPacket(packet);
153
153
  }
154
154
 
155
+ // ==================== Status Query Methods ====================
156
+
157
+ /**
158
+ * Query global system status (0x0810)
159
+ * Note: May not be supported by all panels
160
+ */
161
+ queryGlobalStatus() {
162
+ if (!this._checkEstablished()) return;
163
+ const packet = this.session.buildGlobalStatusRequest();
164
+ this._sendPacket(packet);
165
+ }
166
+
167
+ /**
168
+ * Query zone status (0x0811)
169
+ * @param {number} zone - Zone number (0 = all zones)
170
+ * Note: May not be supported by all panels
171
+ */
172
+ queryZoneStatus(zone = 0) {
173
+ if (!this._checkEstablished()) return;
174
+ const packet = this.session.buildZoneStatusRequest(zone);
175
+ this._sendPacket(packet);
176
+ }
177
+
178
+ /**
179
+ * Query partition status (0x0812)
180
+ * @param {number} partition - Partition number (0 = all partitions)
181
+ * Note: May not be supported by all panels
182
+ */
183
+ queryPartitionStatus(partition = 0) {
184
+ if (!this._checkEstablished()) return;
185
+ const packet = this.session.buildPartitionStatusRequest(partition);
186
+ this._sendPacket(packet);
187
+ }
188
+
189
+ /**
190
+ * Query zone bypass status (0x0813)
191
+ * @param {number} zone - Zone number (0 = all zones)
192
+ * Note: May not be supported by all panels
193
+ */
194
+ queryZoneBypassStatus(zone = 0) {
195
+ if (!this._checkEstablished()) return;
196
+ const packet = this.session.buildZoneBypassStatusRequest(zone);
197
+ this._sendPacket(packet);
198
+ }
199
+
200
+ /**
201
+ * Query system trouble status (0x0814)
202
+ * Note: May not be supported by all panels
203
+ */
204
+ queryTroubleStatus() {
205
+ if (!this._checkEstablished()) return;
206
+ const packet = this.session.buildTroubleStatusRequest();
207
+ this._sendPacket(packet);
208
+ }
209
+
210
+ // ==================== State Accessors ====================
211
+
155
212
  /**
156
213
  * Get current zone states
157
214
  */
158
215
  getZones() {
159
- return this.eventHandler.getZoneStates();
216
+ return this.eventHandler.getAllZones();
160
217
  }
161
218
 
162
219
  /**
163
220
  * Get current partition states
164
221
  */
165
222
  getPartitions() {
166
- return this.eventHandler.getPartitionStates();
223
+ return this.eventHandler.getAllPartitions();
167
224
  }
168
225
 
169
226
  // ==================== Internal Methods ====================
@@ -198,18 +255,12 @@ export class ITV2Client extends EventEmitter {
198
255
  this.session = new ITv2Session(this.integrationId, this.accessCode, logger);
199
256
  }
200
257
 
201
- // DEBUG: Log all incoming packets
202
- this._logMinimal(`[DEBUG] RX ${data.length} bytes, state=${this.handshakeState}`);
203
-
204
258
  const parsed = this.session.parsePacket(data);
205
259
  if (!parsed) {
206
- this._logMinimal('[DEBUG] Failed to parse packet');
260
+ this._log('[Error] Failed to parse packet');
207
261
  return;
208
262
  }
209
263
 
210
- // DEBUG: Log parsed command
211
- this._logMinimal(`[DEBUG] Parsed cmd=${parsed.command} (${CMD_NAMES[parsed.command] || 'unknown'})`);
212
-
213
264
  // Verbose logging only
214
265
  this._log(`\n[UDP] RX from ${this.panelAddress}:${this.panelPort} (${data.length} bytes)`);
215
266
  this._hexDump(data);