@leonardojc/capacitor-ioboard 2.0.18 → 2.1.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/android/src/main/java/com/leonardojc/capacitor/ioboard/CapacitorIoboardPlugin.java +96 -4
- package/android/src/main/java/com/leonardojc/capacitor/ioboard/SerialConnectionManager.java +117 -16
- package/dist/esm/definitions.d.ts +25 -0
- package/dist/esm/web.d.ts +1 -0
- package/dist/esm/web.js +12 -0
- package/dist/plugin.cjs.js +12 -0
- package/dist/plugin.cjs.js.map +1 -1
- package/dist/plugin.js +12 -0
- package/dist/plugin.js.map +1 -1
- package/package.json +1 -1
|
@@ -219,7 +219,93 @@ public class CapacitorIoboardPlugin extends Plugin implements SerialConnectionMa
|
|
|
219
219
|
}
|
|
220
220
|
}
|
|
221
221
|
|
|
222
|
-
|
|
222
|
+
/**
|
|
223
|
+
* Send a raw frame and block until a complete response is received.
|
|
224
|
+
*
|
|
225
|
+
* Unlike sendRawCommand(), this method:
|
|
226
|
+
* 1. Does NOT flush pending input before writing (avoids discarding board ACKs)
|
|
227
|
+
* 2. Uses a blocking drain-loop to accumulate exactly `expectedResponseBytes` bytes
|
|
228
|
+
* (default 9 = size of an F3 OTA response frame)
|
|
229
|
+
* 3. Returns the raw response bytes directly in call.resolve() — no listener needed
|
|
230
|
+
*
|
|
231
|
+
* This is the correct approach for OTA: one atomic write→read round-trip per packet,
|
|
232
|
+
* matching what the manufacturer's UART.java does with a blocking read().
|
|
233
|
+
*
|
|
234
|
+
* Parameters:
|
|
235
|
+
* data int[] — frame bytes to send (required)
|
|
236
|
+
* expectedResponseBytes int — how many bytes to wait for (default 9)
|
|
237
|
+
* timeoutMs int — total wait timeout in ms (default 5000)
|
|
238
|
+
*/
|
|
239
|
+
@PluginMethod
|
|
240
|
+
public void sendFrameAndWaitResponse(PluginCall call) {
|
|
241
|
+
logDebug("📤 sendFrameAndWaitResponse called");
|
|
242
|
+
|
|
243
|
+
if (serialManager == null || !serialManager.isConnected()) {
|
|
244
|
+
call.reject("Not connected to serial port");
|
|
245
|
+
return;
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
try {
|
|
249
|
+
JSArray dataArray = call.getArray("data");
|
|
250
|
+
if (dataArray == null) {
|
|
251
|
+
call.reject("data parameter is required");
|
|
252
|
+
return;
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
final int expectedBytes = call.getInt("expectedResponseBytes", 9);
|
|
256
|
+
final int timeoutMs = call.getInt("timeoutMs", 5000);
|
|
257
|
+
final int delayMs = call.getInt("delayMs", 0); // optional pre-write delay
|
|
258
|
+
|
|
259
|
+
// Build frame byte array
|
|
260
|
+
byte[] frame = new byte[dataArray.length()];
|
|
261
|
+
for (int i = 0; i < dataArray.length(); i++) {
|
|
262
|
+
frame[i] = (byte) dataArray.getInt(i);
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
logDebug("📤 OTA TX (" + frame.length + " bytes): "
|
|
266
|
+
+ bytesToHex(frame.length > 20
|
|
267
|
+
? java.util.Arrays.copyOf(frame, 20) : frame)
|
|
268
|
+
+ (frame.length > 20 ? "..." : ""));
|
|
269
|
+
|
|
270
|
+
// Optional pre-write delay (matches manufacturer Thread.sleep(300))
|
|
271
|
+
if (delayMs > 0) {
|
|
272
|
+
Thread.sleep(delayMs);
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
// Write the frame + arm the response accumulator atomically
|
|
276
|
+
serialManager.writeRawNoFlush(frame, expectedBytes);
|
|
277
|
+
|
|
278
|
+
// Wait for ReadThread to accumulate the response
|
|
279
|
+
byte[] response = serialManager.readExact(timeoutMs);
|
|
280
|
+
|
|
281
|
+
if (response == null) {
|
|
282
|
+
call.reject("OTA response timeout (" + timeoutMs + "ms, expected "
|
|
283
|
+
+ expectedBytes + " bytes)");
|
|
284
|
+
return;
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
logDebug("📥 OTA RX (" + response.length + " bytes): " + bytesToHex(response));
|
|
288
|
+
|
|
289
|
+
// Return raw bytes as array of unsigned ints
|
|
290
|
+
JSArray responseArray = new JSArray();
|
|
291
|
+
for (byte b : response) {
|
|
292
|
+
responseArray.put(b & 0xFF);
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
JSObject result = new JSObject();
|
|
296
|
+
result.put("success", true);
|
|
297
|
+
result.put("rawData", responseArray);
|
|
298
|
+
result.put("bytesSent", frame.length);
|
|
299
|
+
result.put("bytesReceived", response.length);
|
|
300
|
+
call.resolve(result);
|
|
301
|
+
|
|
302
|
+
} catch (Exception e) {
|
|
303
|
+
logError("sendFrameAndWaitResponse error: " + e.getMessage(), e);
|
|
304
|
+
call.reject("sendFrameAndWaitResponse error: " + e.getMessage());
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
@PluginMethod
|
|
223
309
|
public void getStatus(PluginCall call) {
|
|
224
310
|
logDebug("📊 getStatus called");
|
|
225
311
|
|
|
@@ -529,8 +615,7 @@ public class CapacitorIoboardPlugin extends Plugin implements SerialConnectionMa
|
|
|
529
615
|
// SerialDataListener implementation
|
|
530
616
|
@Override
|
|
531
617
|
public void onDataReceived(byte[] data) {
|
|
532
|
-
|
|
533
|
-
//Log.d(TAG, "Data received: " + dataString);
|
|
618
|
+
//Log.d(TAG, "Data received: " + data.length + " bytes");
|
|
534
619
|
|
|
535
620
|
// Store response for getStatus() waiting
|
|
536
621
|
synchronized (responseLock) {
|
|
@@ -538,8 +623,15 @@ public class CapacitorIoboardPlugin extends Plugin implements SerialConnectionMa
|
|
|
538
623
|
responseLock.notifyAll();
|
|
539
624
|
}
|
|
540
625
|
|
|
626
|
+
// Convert byte array to JSArray (array of numbers 0-255)
|
|
627
|
+
// This preserves the raw bytes without corruption
|
|
628
|
+
JSArray dataArray = new JSArray();
|
|
629
|
+
for (byte b : data) {
|
|
630
|
+
dataArray.put(b & 0xFF); // Convert signed byte to unsigned int (0-255)
|
|
631
|
+
}
|
|
632
|
+
|
|
541
633
|
JSObject result = new JSObject();
|
|
542
|
-
result.put("rawData",
|
|
634
|
+
result.put("rawData", dataArray); // Send as array instead of string
|
|
543
635
|
result.put("timestamp", System.currentTimeMillis());
|
|
544
636
|
|
|
545
637
|
notifyListeners("dataReceived", result);
|
|
@@ -36,6 +36,15 @@ public class SerialConnectionManager {
|
|
|
36
36
|
private Handler mainHandler;
|
|
37
37
|
private SerialDataListener listener;
|
|
38
38
|
private ExecutorService executorService;
|
|
39
|
+
|
|
40
|
+
// ─── OTA round-trip accumulator (CountDownLatch approach) ─────────────────
|
|
41
|
+
// ReadThread feeds bytes here; readExact() waits on latch until full.
|
|
42
|
+
private final Object otaLock = new Object();
|
|
43
|
+
private byte[] otaBuffer = null;
|
|
44
|
+
private int otaExpectedBytes = 0;
|
|
45
|
+
private int otaReceived = 0;
|
|
46
|
+
private boolean otaReady = false; // set true when full, read once by readExact
|
|
47
|
+
private java.util.concurrent.CountDownLatch otaLatch = null;
|
|
39
48
|
|
|
40
49
|
public SerialConnectionManager() {
|
|
41
50
|
mainHandler = new Handler(Looper.getMainLooper());
|
|
@@ -281,7 +290,87 @@ public class SerialConnectionManager {
|
|
|
281
290
|
public boolean isConnected() {
|
|
282
291
|
return isConnected;
|
|
283
292
|
}
|
|
284
|
-
|
|
293
|
+
|
|
294
|
+
// ─── OTA-safe write + read ────────────────────────────────────────────────
|
|
295
|
+
|
|
296
|
+
/**
|
|
297
|
+
* Write an OTA frame and prepare to collect `expectedBytes` response bytes.
|
|
298
|
+
*
|
|
299
|
+
* Steps (must all happen atomically before the board responds):
|
|
300
|
+
* 1. Flush any leftover bytes from previous operations.
|
|
301
|
+
* 2. Set up the CountDownLatch accumulator so ReadThread can feed bytes.
|
|
302
|
+
* 3. Write the frame.
|
|
303
|
+
*
|
|
304
|
+
* Follow immediately with readExact(timeoutMs) to wait for the response.
|
|
305
|
+
*/
|
|
306
|
+
public void writeRawNoFlush(byte[] data, int expectedBytes) throws java.io.IOException {
|
|
307
|
+
if (!isConnected || serialOutputStream == null) {
|
|
308
|
+
throw new java.io.IOException("Port not open");
|
|
309
|
+
}
|
|
310
|
+
// 1. Flush leftover bytes (garbage from previous commands)
|
|
311
|
+
if (serialInputStream != null) {
|
|
312
|
+
try {
|
|
313
|
+
int leftover = serialInputStream.available();
|
|
314
|
+
if (leftover > 0) {
|
|
315
|
+
byte[] discard = new byte[leftover];
|
|
316
|
+
serialInputStream.read(discard);
|
|
317
|
+
logDebug("writeRawNoFlush: discarded " + leftover + " leftover bytes");
|
|
318
|
+
}
|
|
319
|
+
} catch (java.io.IOException ignored) {}
|
|
320
|
+
}
|
|
321
|
+
// 2. Arm the accumulator BEFORE writing — board may respond very fast
|
|
322
|
+
synchronized (otaLock) {
|
|
323
|
+
otaBuffer = new byte[expectedBytes];
|
|
324
|
+
otaExpectedBytes = expectedBytes;
|
|
325
|
+
otaReceived = 0;
|
|
326
|
+
otaReady = false;
|
|
327
|
+
otaLatch = new java.util.concurrent.CountDownLatch(1);
|
|
328
|
+
}
|
|
329
|
+
logDebug("writeRawNoFlush: " + data.length + " bytes → expecting " + expectedBytes + " response bytes");
|
|
330
|
+
// 3. Write
|
|
331
|
+
serialOutputStream.write(data);
|
|
332
|
+
serialOutputStream.flush();
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
/**
|
|
336
|
+
* Wait for the response bytes collected by the ReadThread after writeRawNoFlush().
|
|
337
|
+
* Returns null on timeout or error.
|
|
338
|
+
*/
|
|
339
|
+
public byte[] readExact(int timeoutMs) {
|
|
340
|
+
java.util.concurrent.CountDownLatch latch;
|
|
341
|
+
synchronized (otaLock) {
|
|
342
|
+
latch = otaLatch;
|
|
343
|
+
}
|
|
344
|
+
if (latch == null) {
|
|
345
|
+
logWarning("readExact: no latch — was writeRawNoFlush called?");
|
|
346
|
+
return null;
|
|
347
|
+
}
|
|
348
|
+
try {
|
|
349
|
+
boolean ok = latch.await(timeoutMs, java.util.concurrent.TimeUnit.MILLISECONDS);
|
|
350
|
+
synchronized (otaLock) {
|
|
351
|
+
// Snapshot the result while holding the lock, before clearing
|
|
352
|
+
byte[] result = (ok && otaReady && otaBuffer != null)
|
|
353
|
+
? java.util.Arrays.copyOf(otaBuffer, otaExpectedBytes)
|
|
354
|
+
: null;
|
|
355
|
+
// Disarm accumulator
|
|
356
|
+
otaBuffer = null;
|
|
357
|
+
otaLatch = null;
|
|
358
|
+
otaExpectedBytes = 0;
|
|
359
|
+
otaReceived = 0;
|
|
360
|
+
otaReady = false;
|
|
361
|
+
if (!ok) logWarning("readExact: timeout (" + timeoutMs + "ms)");
|
|
362
|
+
return result;
|
|
363
|
+
}
|
|
364
|
+
} catch (InterruptedException e) {
|
|
365
|
+
Thread.currentThread().interrupt();
|
|
366
|
+
synchronized (otaLock) {
|
|
367
|
+
otaBuffer = null; otaLatch = null;
|
|
368
|
+
otaExpectedBytes = 0; otaReceived = 0; otaReady = false;
|
|
369
|
+
}
|
|
370
|
+
return null;
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
|
|
285
374
|
/**
|
|
286
375
|
* Gets the current port path
|
|
287
376
|
*/
|
|
@@ -339,15 +428,31 @@ public class SerialConnectionManager {
|
|
|
339
428
|
while (isConnected && !Thread.currentThread().isInterrupted()) {
|
|
340
429
|
try {
|
|
341
430
|
if (serialInputStream != null) {
|
|
342
|
-
//
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
431
|
+
// BLOCKING read — matches manufacturer test app UART.java.
|
|
432
|
+
// available() is unreliable on /dev/ttyS* character devices on Android
|
|
433
|
+
// (returns 0 even when bytes ARE in the kernel buffer), causing missed frames.
|
|
434
|
+
// Direct read() blocks the thread until at least 1 byte arrives — no polling needed.
|
|
435
|
+
int bytesRead = serialInputStream.read(buffer);
|
|
436
|
+
if (bytesRead > 0) {
|
|
437
|
+
byte[] data = new byte[bytesRead];
|
|
438
|
+
System.arraycopy(buffer, 0, data, 0, bytesRead);
|
|
439
|
+
|
|
440
|
+
// ── OTA accumulator: feed bytes into latch buffer ──
|
|
441
|
+
synchronized (otaLock) {
|
|
442
|
+
if (otaBuffer != null && otaReceived < otaExpectedBytes) {
|
|
443
|
+
int toCopy = Math.min(bytesRead, otaExpectedBytes - otaReceived);
|
|
444
|
+
System.arraycopy(data, 0, otaBuffer, otaReceived, toCopy);
|
|
445
|
+
otaReceived += toCopy;
|
|
446
|
+
logDebug("OTA accumulator: " + otaReceived + "/" + otaExpectedBytes + " bytes");
|
|
447
|
+
if (otaReceived >= otaExpectedBytes && otaLatch != null) {
|
|
448
|
+
otaReady = true;
|
|
449
|
+
otaLatch.countDown();
|
|
450
|
+
}
|
|
451
|
+
continue; // do NOT notify regular listener
|
|
452
|
+
}
|
|
453
|
+
}
|
|
454
|
+
// Non-OTA bytes — log them so we can see unexpected board messages
|
|
455
|
+
logDebug("📡 Non-OTA RX (" + bytesRead + " bytes): " + bytesToHex(data));
|
|
351
456
|
|
|
352
457
|
// Enhanced logging for received data (DEBUG only for detailed hex)
|
|
353
458
|
logDebug("=== 📥 RECEIVED FROM IOBOARD ===");
|
|
@@ -405,13 +510,9 @@ public class SerialConnectionManager {
|
|
|
405
510
|
notifyDataReceived(data);
|
|
406
511
|
}
|
|
407
512
|
} else {
|
|
408
|
-
|
|
409
|
-
Thread.sleep(
|
|
513
|
+
Log.w(TAG, "Serial input stream is null");
|
|
514
|
+
Thread.sleep(100);
|
|
410
515
|
}
|
|
411
|
-
} else {
|
|
412
|
-
Log.w(TAG, "Serial input stream is null");
|
|
413
|
-
Thread.sleep(100);
|
|
414
|
-
}
|
|
415
516
|
} catch (InterruptedException e) {
|
|
416
517
|
Log.d(TAG, "📡 Reader thread interrupted");
|
|
417
518
|
break;
|
|
@@ -91,6 +91,31 @@ export interface CapacitorIoboardPlugin {
|
|
|
91
91
|
* @param options OTA data parameters
|
|
92
92
|
*/
|
|
93
93
|
sendOTAData(options: OTADataOptions): Promise<IOBoardResponse>;
|
|
94
|
+
/**
|
|
95
|
+
* Send a raw frame and block until a complete response is received.
|
|
96
|
+
*
|
|
97
|
+
* This is the correct method for OTA updates. Unlike sendRawCommand():
|
|
98
|
+
* - Does NOT flush pending serial input before writing (no dropped ACKs)
|
|
99
|
+
* - Blocks with a drain-loop until exactly `expectedResponseBytes` bytes arrive
|
|
100
|
+
* - Returns the response bytes directly — no separate dataReceived listener needed
|
|
101
|
+
*
|
|
102
|
+
* @param options.data Frame bytes as number[] (0-255)
|
|
103
|
+
* @param options.expectedResponseBytes How many bytes to wait for (default 9 = F3 response)
|
|
104
|
+
* @param options.timeoutMs Max wait time in ms (default 5000)
|
|
105
|
+
* @param options.delayMs Optional pre-write delay in ms (default 0)
|
|
106
|
+
*/
|
|
107
|
+
sendFrameAndWaitResponse(options: {
|
|
108
|
+
data: number[];
|
|
109
|
+
expectedResponseBytes?: number;
|
|
110
|
+
timeoutMs?: number;
|
|
111
|
+
delayMs?: number;
|
|
112
|
+
}): Promise<{
|
|
113
|
+
success: boolean;
|
|
114
|
+
rawData: number[];
|
|
115
|
+
bytesSent?: number;
|
|
116
|
+
bytesReceived?: number;
|
|
117
|
+
error?: string;
|
|
118
|
+
}>;
|
|
94
119
|
}
|
|
95
120
|
export interface IOBoardResponse {
|
|
96
121
|
success: boolean;
|
package/dist/esm/web.d.ts
CHANGED
package/dist/esm/web.js
CHANGED
|
@@ -92,4 +92,16 @@ export class CapacitorIoboardWeb extends WebPlugin {
|
|
|
92
92
|
}
|
|
93
93
|
return { success: true, message: `OTA packet ${options.packetNumber} sent successfully` };
|
|
94
94
|
}
|
|
95
|
+
async sendFrameAndWaitResponse(options) {
|
|
96
|
+
var _a, _b;
|
|
97
|
+
console.log("Web: sendFrameAndWaitResponse (stub) — not supported in browser");
|
|
98
|
+
// Web stub: simulate a '#' ACK response (9-byte F3 frame with header '#' = 0x23)
|
|
99
|
+
await new Promise(resolve => setTimeout(resolve, 50));
|
|
100
|
+
return {
|
|
101
|
+
success: true,
|
|
102
|
+
rawData: [0x0D, 0x09, 0x01, 0xF3, 0x23, 0x00, 0x00, 0xCC, 0x0A],
|
|
103
|
+
bytesSent: (_b = (_a = options.data) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0,
|
|
104
|
+
bytesReceived: 9
|
|
105
|
+
};
|
|
106
|
+
}
|
|
95
107
|
}
|
package/dist/plugin.cjs.js
CHANGED
|
@@ -337,6 +337,18 @@ class CapacitorIoboardWeb extends core.WebPlugin {
|
|
|
337
337
|
}
|
|
338
338
|
return { success: true, message: `OTA packet ${options.packetNumber} sent successfully` };
|
|
339
339
|
}
|
|
340
|
+
async sendFrameAndWaitResponse(options) {
|
|
341
|
+
var _a, _b;
|
|
342
|
+
console.log("Web: sendFrameAndWaitResponse (stub) — not supported in browser");
|
|
343
|
+
// Web stub: simulate a '#' ACK response (9-byte F3 frame with header '#' = 0x23)
|
|
344
|
+
await new Promise(resolve => setTimeout(resolve, 50));
|
|
345
|
+
return {
|
|
346
|
+
success: true,
|
|
347
|
+
rawData: [0x0D, 0x09, 0x01, 0xF3, 0x23, 0x00, 0x00, 0xCC, 0x0A],
|
|
348
|
+
bytesSent: (_b = (_a = options.data) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0,
|
|
349
|
+
bytesReceived: 9
|
|
350
|
+
};
|
|
351
|
+
}
|
|
340
352
|
}
|
|
341
353
|
|
|
342
354
|
var web = /*#__PURE__*/Object.freeze({
|
package/dist/plugin.cjs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.cjs.js","sources":["esm/definitions.js","esm/protocol.js","esm/index.js","esm/web.js"],"sourcesContent":["// Protocol Constants\nexport const IOBOARD_PROTOCOL = {\n SOI: 0x0D,\n EOI: 0x0A,\n FRAME_TYPES: {\n STATUS_QUERY: 0x00,\n SINGLE_PALLET: 0x01,\n FULL_PALLET: 0x02,\n OTA_REQUEST: 0xF1,\n OTA_DATA: 0xF2,\n OTA_RESPONSE: 0xF3\n },\n DEFAULT_BAUD_RATE: 115200,\n DEFAULT_DATA_BITS: 8,\n DEFAULT_STOP_BITS: 1,\n DEFAULT_PARITY: 'none',\n DEFAULT_TIMEOUT: 5000,\n // Address range\n MIN_ADDRESS: 1,\n MAX_ADDRESS: 63,\n // Pallet range\n MIN_PALLET: 0,\n MAX_PALLET: 7,\n // OTA Constants\n OTA_PACKET_SIZE: 128,\n // Response codes\n OTA_RESPONSES: {\n AREA_REQUEST: 0x26,\n REQUEST_A_ZONE: 0x41,\n REQUEST_B_ZONE: 0x42,\n DATA_REQUEST: 0x23,\n COMPLETION: 0x4F,\n ERROR: 0x45, // 'E'\n },\n // Error codes\n OTA_ERROR_CODES: {\n ILLEGAL_VERSION: 9,\n NON_OTA_STATUS: 8,\n WRITE_FAILED: 7,\n VERIFICATION_FAILED: 6,\n TRANSFER_FAILED: 5\n }\n};\n","/**\n * IOBOARD Protocol utilities for frame construction and parsing\n */\nexport class IOBoardProtocol {\n /**\n * Calculate CRC-16 CCITT checksum\n */\n static calculateCRC16(data) {\n let crc = 0xFFFF;\n for (const byte of data) {\n crc ^= (byte << 8);\n for (let bit = 0; bit < 8; bit++) {\n if (crc & 0x8000) {\n crc = (crc << 1) ^ 0x1021;\n }\n else {\n crc = crc << 1;\n }\n crc &= 0xFFFF;\n }\n }\n return crc;\n }\n /**\n * Build a command frame for IOBOARD\n */\n static buildFrame(address, frameType, data) {\n const frame = [];\n // SOI\n frame.push(0x0D);\n // Address\n frame.push(address);\n // Frame Type\n frame.push(frameType);\n // Data\n frame.push(...data);\n // Calculate CRC for address + frameType + data\n const crcData = [address, frameType, ...data];\n const crc = this.calculateCRC16(crcData);\n // CRC (high byte first)\n frame.push((crc >> 8) & 0xFF);\n frame.push(crc & 0xFF);\n // EOI\n frame.push(0x0A);\n return frame;\n }\n /**\n * Parse a response frame from IOBOARD\n */\n static parseFrame(frame) {\n if (frame.length < 6) {\n return { success: false, error: 'Frame too short' };\n }\n // Check SOI and EOI\n if (frame[0] !== 0x0D || frame[frame.length - 1] !== 0x0A) {\n return { success: false, error: 'Invalid frame markers' };\n }\n const address = frame[1];\n const frameType = frame[2];\n const dataLength = frame.length - 6; // SOI + Address + FrameType + CRC(2) + EOI\n const data = frame.slice(3, 3 + dataLength);\n // Extract CRC from frame\n const receivedCRC = (frame[frame.length - 3] << 8) | frame[frame.length - 2];\n // Calculate expected CRC\n const crcData = [address, frameType, ...data];\n const expectedCRC = this.calculateCRC16(crcData);\n if (receivedCRC !== expectedCRC) {\n return {\n success: false,\n error: `CRC mismatch: expected ${expectedCRC.toString(16)}, got ${receivedCRC.toString(16)}`\n };\n }\n return {\n success: true,\n address,\n frameType,\n data\n };\n }\n /**\n * Build status query frame\n */\n static buildStatusQuery(address) {\n return this.buildFrame(address, 0x00, []);\n }\n /**\n * Build single pallet control frame\n */\n static buildSinglePalletControl(address, palletNumber, doorLock, ledControl) {\n const data = [];\n // Pallet number\n data.push(palletNumber);\n // Door lock control (1 = unlock, 0 = no action)\n data.push(doorLock ? 1 : 0);\n // LED control (6 bytes)\n data.push(ledControl.red);\n data.push(ledControl.green);\n data.push(ledControl.blue);\n data.push(ledControl.intensity);\n data.push(ledControl.blinkTimes);\n data.push(ledControl.blinkSpeed);\n return this.buildFrame(address, 0x01, data);\n }\n /**\n * Build full pallet control frame\n */\n static buildFullPalletControl(address, doorLockControl, extendedControl, ledControls) {\n const data = [];\n // Door lock control (8-bit mask)\n data.push(doorLockControl);\n // Extended control\n data.push(extendedControl);\n // LED controls for 8 pallets (48 bytes total)\n for (let i = 0; i < 8; i++) {\n const led = ledControls[i] || {\n red: 0, green: 0, blue: 0,\n intensity: 0, blinkTimes: 0, blinkSpeed: 0\n };\n data.push(led.red);\n data.push(led.green);\n data.push(led.blue);\n data.push(led.intensity);\n data.push(led.blinkTimes);\n data.push(led.blinkSpeed);\n }\n return this.buildFrame(address, 0x02, data);\n }\n /**\n * Build OTA notification frame\n */\n static buildOTANotification(address, majorVersion, minorVersion, patchVersion, firmwareSize) {\n const data = [];\n // Version (3 bytes)\n data.push(majorVersion);\n data.push(minorVersion);\n data.push(patchVersion);\n // Firmware size (4 bytes, little-endian)\n data.push(firmwareSize & 0xFF);\n data.push((firmwareSize >> 8) & 0xFF);\n data.push((firmwareSize >> 16) & 0xFF);\n data.push((firmwareSize >> 24) & 0xFF);\n return this.buildFrame(address, 0xF1, data);\n }\n /**\n * Build OTA data frame\n */\n static buildOTAData(address, packetNumber, data) {\n const frameData = [];\n // Packet number (4 bytes, little-endian)\n frameData.push(packetNumber & 0xFF);\n frameData.push((packetNumber >> 8) & 0xFF);\n frameData.push((packetNumber >> 16) & 0xFF);\n frameData.push((packetNumber >> 24) & 0xFF);\n // Data bytes (up to 128 bytes)\n for (let i = 0; i < data.length; i++) {\n frameData.push(data[i]);\n }\n return this.buildFrame(address, 0xF2, frameData);\n }\n /**\n * Parse status response\n */\n static parseStatusResponse(data) {\n if (data.length < 4) {\n return null;\n }\n return {\n doorLockStatus: data[0],\n softwareVersion: {\n major: data[1],\n minor: data[2],\n patch: data[3]\n }\n };\n }\n /**\n * Convert frame to hex string for debugging\n */\n static frameToHex(frame) {\n return frame.map(b => b.toString(16).padStart(2, '0')).join(' ').toUpperCase();\n }\n /**\n * Convert hex string to frame\n */\n static hexToFrame(hex) {\n return hex.split(' ')\n .map(h => h.trim())\n .filter(h => h.length > 0)\n .map(h => parseInt(h, 16));\n }\n}\n","import { registerPlugin } from '@capacitor/core';\nconst CapacitorIoboard = registerPlugin('CapacitorIoboard', {\n web: () => import('./web').then(m => new m.CapacitorIoboardWeb()),\n});\nexport * from './definitions';\nexport * from './protocol';\nexport { CapacitorIoboard };\n","import { WebPlugin } from \"@capacitor/core\";\nexport class CapacitorIoboardWeb extends WebPlugin {\n constructor() {\n super();\n console.log(\"IOBoard Web Plugin v2.0 initialized\");\n }\n async connect(options) {\n console.log(\"Web: Connecting to IOBoard...\", options);\n await new Promise(resolve => setTimeout(resolve, 1000));\n return { success: true, message: `Connected to IOBoard at ${options.portPath}` };\n }\n async disconnect() {\n console.log(\"Web: Disconnecting from IOBoard...\");\n return { success: true, message: \"Disconnected from IOBoard\" };\n }\n async isConnected() {\n return { connected: false, portPath: null };\n }\n async listPorts() {\n console.log(\"Web: Listing available ports...\");\n const ports = [\"/dev/ttyS0\", \"/dev/ttyS1\", \"/dev/ttyS2\", \"/dev/ttyUSB0\", \"COM1\", \"COM2\", \"COM3\"];\n return { success: true, ports };\n }\n async getStatus(options) {\n console.log(\"Web: Getting device status...\", options);\n await new Promise(resolve => setTimeout(resolve, 100));\n return {\n success: true,\n status: {\n address: options.address,\n connected: true,\n firmwareVersion: \"2.1.0\",\n palletStates: Array(8).fill(false),\n temperature: 25.5,\n voltage: 12.0,\n uptime: 86400\n }\n };\n }\n async unlockPallet(options) {\n console.log(\"Web: Unlocking pallet...\", options);\n await new Promise(resolve => setTimeout(resolve, 200));\n return {\n success: true,\n message: `Pallet ${options.palletNumber} unlocked with RGB(${options.red}, ${options.green}, ${options.blue})`\n };\n }\n async controlMultiplePallets(options) {\n console.log(\"Web: Controlling multiple pallets...\", options);\n await new Promise(resolve => setTimeout(resolve, 300));\n const { address, color, intensity, blinkTimes, blinkSpeed, pallets } = options;\n return {\n success: true,\n message: `Controlled ${pallets.length} pallets with ${color} color at ${intensity}% intensity`,\n details: {\n address,\n color,\n intensity,\n blinkTimes,\n blinkSpeed,\n palletsControlled: pallets\n }\n };\n }\n async executeMultipleActions(options) {\n console.log(\"Web: Executing multiple actions...\", options);\n const { actions, delayBetweenCommands = 100 } = options;\n await new Promise(resolve => setTimeout(resolve, actions.length * (delayBetweenCommands + 50)));\n return {\n success: true,\n totalActions: actions.length,\n successCount: actions.length,\n failCount: 0,\n message: `All ${actions.length} actions executed successfully`\n };\n }\n async controlMultiple(options) {\n console.log(\"Web: Controlling multiple LEDs...\", options);\n await new Promise(resolve => setTimeout(resolve, 300));\n return { success: true, message: `Controlled ${options.leds.length} LEDs successfully` };\n }\n async startOTAUpdate(options) {\n console.log(\"Web: Starting OTA update...\", options);\n await new Promise(resolve => setTimeout(resolve, 500));\n return { success: true, message: `OTA update started for ${options.fileName} (${options.fileSize} bytes)` };\n }\n async sendOTAData(options) {\n console.log(\"Web: Sending OTA data packet...\", options.packetNumber);\n await new Promise(resolve => setTimeout(resolve, 50));\n if (Math.random() < 0.05) {\n return { success: false, error: `Packet ${options.packetNumber} transmission failed` };\n }\n return { success: true, message: `OTA packet ${options.packetNumber} sent successfully` };\n }\n}\n"],"names":["registerPlugin","WebPlugin"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"plugin.cjs.js","sources":["esm/definitions.js","esm/protocol.js","esm/index.js","esm/web.js"],"sourcesContent":["// Protocol Constants\nexport const IOBOARD_PROTOCOL = {\n SOI: 0x0D,\n EOI: 0x0A,\n FRAME_TYPES: {\n STATUS_QUERY: 0x00,\n SINGLE_PALLET: 0x01,\n FULL_PALLET: 0x02,\n OTA_REQUEST: 0xF1,\n OTA_DATA: 0xF2,\n OTA_RESPONSE: 0xF3\n },\n DEFAULT_BAUD_RATE: 115200,\n DEFAULT_DATA_BITS: 8,\n DEFAULT_STOP_BITS: 1,\n DEFAULT_PARITY: 'none',\n DEFAULT_TIMEOUT: 5000,\n // Address range\n MIN_ADDRESS: 1,\n MAX_ADDRESS: 63,\n // Pallet range\n MIN_PALLET: 0,\n MAX_PALLET: 7,\n // OTA Constants\n OTA_PACKET_SIZE: 128,\n // Response codes\n OTA_RESPONSES: {\n AREA_REQUEST: 0x26,\n REQUEST_A_ZONE: 0x41,\n REQUEST_B_ZONE: 0x42,\n DATA_REQUEST: 0x23,\n COMPLETION: 0x4F,\n ERROR: 0x45, // 'E'\n },\n // Error codes\n OTA_ERROR_CODES: {\n ILLEGAL_VERSION: 9,\n NON_OTA_STATUS: 8,\n WRITE_FAILED: 7,\n VERIFICATION_FAILED: 6,\n TRANSFER_FAILED: 5\n }\n};\n","/**\n * IOBOARD Protocol utilities for frame construction and parsing\n */\nexport class IOBoardProtocol {\n /**\n * Calculate CRC-16 CCITT checksum\n */\n static calculateCRC16(data) {\n let crc = 0xFFFF;\n for (const byte of data) {\n crc ^= (byte << 8);\n for (let bit = 0; bit < 8; bit++) {\n if (crc & 0x8000) {\n crc = (crc << 1) ^ 0x1021;\n }\n else {\n crc = crc << 1;\n }\n crc &= 0xFFFF;\n }\n }\n return crc;\n }\n /**\n * Build a command frame for IOBOARD\n */\n static buildFrame(address, frameType, data) {\n const frame = [];\n // SOI\n frame.push(0x0D);\n // Address\n frame.push(address);\n // Frame Type\n frame.push(frameType);\n // Data\n frame.push(...data);\n // Calculate CRC for address + frameType + data\n const crcData = [address, frameType, ...data];\n const crc = this.calculateCRC16(crcData);\n // CRC (high byte first)\n frame.push((crc >> 8) & 0xFF);\n frame.push(crc & 0xFF);\n // EOI\n frame.push(0x0A);\n return frame;\n }\n /**\n * Parse a response frame from IOBOARD\n */\n static parseFrame(frame) {\n if (frame.length < 6) {\n return { success: false, error: 'Frame too short' };\n }\n // Check SOI and EOI\n if (frame[0] !== 0x0D || frame[frame.length - 1] !== 0x0A) {\n return { success: false, error: 'Invalid frame markers' };\n }\n const address = frame[1];\n const frameType = frame[2];\n const dataLength = frame.length - 6; // SOI + Address + FrameType + CRC(2) + EOI\n const data = frame.slice(3, 3 + dataLength);\n // Extract CRC from frame\n const receivedCRC = (frame[frame.length - 3] << 8) | frame[frame.length - 2];\n // Calculate expected CRC\n const crcData = [address, frameType, ...data];\n const expectedCRC = this.calculateCRC16(crcData);\n if (receivedCRC !== expectedCRC) {\n return {\n success: false,\n error: `CRC mismatch: expected ${expectedCRC.toString(16)}, got ${receivedCRC.toString(16)}`\n };\n }\n return {\n success: true,\n address,\n frameType,\n data\n };\n }\n /**\n * Build status query frame\n */\n static buildStatusQuery(address) {\n return this.buildFrame(address, 0x00, []);\n }\n /**\n * Build single pallet control frame\n */\n static buildSinglePalletControl(address, palletNumber, doorLock, ledControl) {\n const data = [];\n // Pallet number\n data.push(palletNumber);\n // Door lock control (1 = unlock, 0 = no action)\n data.push(doorLock ? 1 : 0);\n // LED control (6 bytes)\n data.push(ledControl.red);\n data.push(ledControl.green);\n data.push(ledControl.blue);\n data.push(ledControl.intensity);\n data.push(ledControl.blinkTimes);\n data.push(ledControl.blinkSpeed);\n return this.buildFrame(address, 0x01, data);\n }\n /**\n * Build full pallet control frame\n */\n static buildFullPalletControl(address, doorLockControl, extendedControl, ledControls) {\n const data = [];\n // Door lock control (8-bit mask)\n data.push(doorLockControl);\n // Extended control\n data.push(extendedControl);\n // LED controls for 8 pallets (48 bytes total)\n for (let i = 0; i < 8; i++) {\n const led = ledControls[i] || {\n red: 0, green: 0, blue: 0,\n intensity: 0, blinkTimes: 0, blinkSpeed: 0\n };\n data.push(led.red);\n data.push(led.green);\n data.push(led.blue);\n data.push(led.intensity);\n data.push(led.blinkTimes);\n data.push(led.blinkSpeed);\n }\n return this.buildFrame(address, 0x02, data);\n }\n /**\n * Build OTA notification frame\n */\n static buildOTANotification(address, majorVersion, minorVersion, patchVersion, firmwareSize) {\n const data = [];\n // Version (3 bytes)\n data.push(majorVersion);\n data.push(minorVersion);\n data.push(patchVersion);\n // Firmware size (4 bytes, little-endian)\n data.push(firmwareSize & 0xFF);\n data.push((firmwareSize >> 8) & 0xFF);\n data.push((firmwareSize >> 16) & 0xFF);\n data.push((firmwareSize >> 24) & 0xFF);\n return this.buildFrame(address, 0xF1, data);\n }\n /**\n * Build OTA data frame\n */\n static buildOTAData(address, packetNumber, data) {\n const frameData = [];\n // Packet number (4 bytes, little-endian)\n frameData.push(packetNumber & 0xFF);\n frameData.push((packetNumber >> 8) & 0xFF);\n frameData.push((packetNumber >> 16) & 0xFF);\n frameData.push((packetNumber >> 24) & 0xFF);\n // Data bytes (up to 128 bytes)\n for (let i = 0; i < data.length; i++) {\n frameData.push(data[i]);\n }\n return this.buildFrame(address, 0xF2, frameData);\n }\n /**\n * Parse status response\n */\n static parseStatusResponse(data) {\n if (data.length < 4) {\n return null;\n }\n return {\n doorLockStatus: data[0],\n softwareVersion: {\n major: data[1],\n minor: data[2],\n patch: data[3]\n }\n };\n }\n /**\n * Convert frame to hex string for debugging\n */\n static frameToHex(frame) {\n return frame.map(b => b.toString(16).padStart(2, '0')).join(' ').toUpperCase();\n }\n /**\n * Convert hex string to frame\n */\n static hexToFrame(hex) {\n return hex.split(' ')\n .map(h => h.trim())\n .filter(h => h.length > 0)\n .map(h => parseInt(h, 16));\n }\n}\n","import { registerPlugin } from '@capacitor/core';\nconst CapacitorIoboard = registerPlugin('CapacitorIoboard', {\n web: () => import('./web').then(m => new m.CapacitorIoboardWeb()),\n});\nexport * from './definitions';\nexport * from './protocol';\nexport { CapacitorIoboard };\n","import { WebPlugin } from \"@capacitor/core\";\nexport class CapacitorIoboardWeb extends WebPlugin {\n constructor() {\n super();\n console.log(\"IOBoard Web Plugin v2.0 initialized\");\n }\n async connect(options) {\n console.log(\"Web: Connecting to IOBoard...\", options);\n await new Promise(resolve => setTimeout(resolve, 1000));\n return { success: true, message: `Connected to IOBoard at ${options.portPath}` };\n }\n async disconnect() {\n console.log(\"Web: Disconnecting from IOBoard...\");\n return { success: true, message: \"Disconnected from IOBoard\" };\n }\n async isConnected() {\n return { connected: false, portPath: null };\n }\n async listPorts() {\n console.log(\"Web: Listing available ports...\");\n const ports = [\"/dev/ttyS0\", \"/dev/ttyS1\", \"/dev/ttyS2\", \"/dev/ttyUSB0\", \"COM1\", \"COM2\", \"COM3\"];\n return { success: true, ports };\n }\n async getStatus(options) {\n console.log(\"Web: Getting device status...\", options);\n await new Promise(resolve => setTimeout(resolve, 100));\n return {\n success: true,\n status: {\n address: options.address,\n connected: true,\n firmwareVersion: \"2.1.0\",\n palletStates: Array(8).fill(false),\n temperature: 25.5,\n voltage: 12.0,\n uptime: 86400\n }\n };\n }\n async unlockPallet(options) {\n console.log(\"Web: Unlocking pallet...\", options);\n await new Promise(resolve => setTimeout(resolve, 200));\n return {\n success: true,\n message: `Pallet ${options.palletNumber} unlocked with RGB(${options.red}, ${options.green}, ${options.blue})`\n };\n }\n async controlMultiplePallets(options) {\n console.log(\"Web: Controlling multiple pallets...\", options);\n await new Promise(resolve => setTimeout(resolve, 300));\n const { address, color, intensity, blinkTimes, blinkSpeed, pallets } = options;\n return {\n success: true,\n message: `Controlled ${pallets.length} pallets with ${color} color at ${intensity}% intensity`,\n details: {\n address,\n color,\n intensity,\n blinkTimes,\n blinkSpeed,\n palletsControlled: pallets\n }\n };\n }\n async executeMultipleActions(options) {\n console.log(\"Web: Executing multiple actions...\", options);\n const { actions, delayBetweenCommands = 100 } = options;\n await new Promise(resolve => setTimeout(resolve, actions.length * (delayBetweenCommands + 50)));\n return {\n success: true,\n totalActions: actions.length,\n successCount: actions.length,\n failCount: 0,\n message: `All ${actions.length} actions executed successfully`\n };\n }\n async controlMultiple(options) {\n console.log(\"Web: Controlling multiple LEDs...\", options);\n await new Promise(resolve => setTimeout(resolve, 300));\n return { success: true, message: `Controlled ${options.leds.length} LEDs successfully` };\n }\n async startOTAUpdate(options) {\n console.log(\"Web: Starting OTA update...\", options);\n await new Promise(resolve => setTimeout(resolve, 500));\n return { success: true, message: `OTA update started for ${options.fileName} (${options.fileSize} bytes)` };\n }\n async sendOTAData(options) {\n console.log(\"Web: Sending OTA data packet...\", options.packetNumber);\n await new Promise(resolve => setTimeout(resolve, 50));\n if (Math.random() < 0.05) {\n return { success: false, error: `Packet ${options.packetNumber} transmission failed` };\n }\n return { success: true, message: `OTA packet ${options.packetNumber} sent successfully` };\n }\n async sendFrameAndWaitResponse(options) {\n var _a, _b;\n console.log(\"Web: sendFrameAndWaitResponse (stub) — not supported in browser\");\n // Web stub: simulate a '#' ACK response (9-byte F3 frame with header '#' = 0x23)\n await new Promise(resolve => setTimeout(resolve, 50));\n return {\n success: true,\n rawData: [0x0D, 0x09, 0x01, 0xF3, 0x23, 0x00, 0x00, 0xCC, 0x0A],\n bytesSent: (_b = (_a = options.data) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0,\n bytesReceived: 9\n };\n }\n}\n"],"names":["registerPlugin","WebPlugin"],"mappings":"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"}
|
package/dist/plugin.js
CHANGED
|
@@ -334,6 +334,18 @@ var capacitorIoboard = (function (exports, core) {
|
|
|
334
334
|
}
|
|
335
335
|
return { success: true, message: `OTA packet ${options.packetNumber} sent successfully` };
|
|
336
336
|
}
|
|
337
|
+
async sendFrameAndWaitResponse(options) {
|
|
338
|
+
var _a, _b;
|
|
339
|
+
console.log("Web: sendFrameAndWaitResponse (stub) — not supported in browser");
|
|
340
|
+
// Web stub: simulate a '#' ACK response (9-byte F3 frame with header '#' = 0x23)
|
|
341
|
+
await new Promise(resolve => setTimeout(resolve, 50));
|
|
342
|
+
return {
|
|
343
|
+
success: true,
|
|
344
|
+
rawData: [0x0D, 0x09, 0x01, 0xF3, 0x23, 0x00, 0x00, 0xCC, 0x0A],
|
|
345
|
+
bytesSent: (_b = (_a = options.data) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0,
|
|
346
|
+
bytesReceived: 9
|
|
347
|
+
};
|
|
348
|
+
}
|
|
337
349
|
}
|
|
338
350
|
|
|
339
351
|
var web = /*#__PURE__*/Object.freeze({
|
package/dist/plugin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.js","sources":["esm/definitions.js","esm/protocol.js","esm/index.js","esm/web.js"],"sourcesContent":["// Protocol Constants\nexport const IOBOARD_PROTOCOL = {\n SOI: 0x0D,\n EOI: 0x0A,\n FRAME_TYPES: {\n STATUS_QUERY: 0x00,\n SINGLE_PALLET: 0x01,\n FULL_PALLET: 0x02,\n OTA_REQUEST: 0xF1,\n OTA_DATA: 0xF2,\n OTA_RESPONSE: 0xF3\n },\n DEFAULT_BAUD_RATE: 115200,\n DEFAULT_DATA_BITS: 8,\n DEFAULT_STOP_BITS: 1,\n DEFAULT_PARITY: 'none',\n DEFAULT_TIMEOUT: 5000,\n // Address range\n MIN_ADDRESS: 1,\n MAX_ADDRESS: 63,\n // Pallet range\n MIN_PALLET: 0,\n MAX_PALLET: 7,\n // OTA Constants\n OTA_PACKET_SIZE: 128,\n // Response codes\n OTA_RESPONSES: {\n AREA_REQUEST: 0x26,\n REQUEST_A_ZONE: 0x41,\n REQUEST_B_ZONE: 0x42,\n DATA_REQUEST: 0x23,\n COMPLETION: 0x4F,\n ERROR: 0x45, // 'E'\n },\n // Error codes\n OTA_ERROR_CODES: {\n ILLEGAL_VERSION: 9,\n NON_OTA_STATUS: 8,\n WRITE_FAILED: 7,\n VERIFICATION_FAILED: 6,\n TRANSFER_FAILED: 5\n }\n};\n","/**\n * IOBOARD Protocol utilities for frame construction and parsing\n */\nexport class IOBoardProtocol {\n /**\n * Calculate CRC-16 CCITT checksum\n */\n static calculateCRC16(data) {\n let crc = 0xFFFF;\n for (const byte of data) {\n crc ^= (byte << 8);\n for (let bit = 0; bit < 8; bit++) {\n if (crc & 0x8000) {\n crc = (crc << 1) ^ 0x1021;\n }\n else {\n crc = crc << 1;\n }\n crc &= 0xFFFF;\n }\n }\n return crc;\n }\n /**\n * Build a command frame for IOBOARD\n */\n static buildFrame(address, frameType, data) {\n const frame = [];\n // SOI\n frame.push(0x0D);\n // Address\n frame.push(address);\n // Frame Type\n frame.push(frameType);\n // Data\n frame.push(...data);\n // Calculate CRC for address + frameType + data\n const crcData = [address, frameType, ...data];\n const crc = this.calculateCRC16(crcData);\n // CRC (high byte first)\n frame.push((crc >> 8) & 0xFF);\n frame.push(crc & 0xFF);\n // EOI\n frame.push(0x0A);\n return frame;\n }\n /**\n * Parse a response frame from IOBOARD\n */\n static parseFrame(frame) {\n if (frame.length < 6) {\n return { success: false, error: 'Frame too short' };\n }\n // Check SOI and EOI\n if (frame[0] !== 0x0D || frame[frame.length - 1] !== 0x0A) {\n return { success: false, error: 'Invalid frame markers' };\n }\n const address = frame[1];\n const frameType = frame[2];\n const dataLength = frame.length - 6; // SOI + Address + FrameType + CRC(2) + EOI\n const data = frame.slice(3, 3 + dataLength);\n // Extract CRC from frame\n const receivedCRC = (frame[frame.length - 3] << 8) | frame[frame.length - 2];\n // Calculate expected CRC\n const crcData = [address, frameType, ...data];\n const expectedCRC = this.calculateCRC16(crcData);\n if (receivedCRC !== expectedCRC) {\n return {\n success: false,\n error: `CRC mismatch: expected ${expectedCRC.toString(16)}, got ${receivedCRC.toString(16)}`\n };\n }\n return {\n success: true,\n address,\n frameType,\n data\n };\n }\n /**\n * Build status query frame\n */\n static buildStatusQuery(address) {\n return this.buildFrame(address, 0x00, []);\n }\n /**\n * Build single pallet control frame\n */\n static buildSinglePalletControl(address, palletNumber, doorLock, ledControl) {\n const data = [];\n // Pallet number\n data.push(palletNumber);\n // Door lock control (1 = unlock, 0 = no action)\n data.push(doorLock ? 1 : 0);\n // LED control (6 bytes)\n data.push(ledControl.red);\n data.push(ledControl.green);\n data.push(ledControl.blue);\n data.push(ledControl.intensity);\n data.push(ledControl.blinkTimes);\n data.push(ledControl.blinkSpeed);\n return this.buildFrame(address, 0x01, data);\n }\n /**\n * Build full pallet control frame\n */\n static buildFullPalletControl(address, doorLockControl, extendedControl, ledControls) {\n const data = [];\n // Door lock control (8-bit mask)\n data.push(doorLockControl);\n // Extended control\n data.push(extendedControl);\n // LED controls for 8 pallets (48 bytes total)\n for (let i = 0; i < 8; i++) {\n const led = ledControls[i] || {\n red: 0, green: 0, blue: 0,\n intensity: 0, blinkTimes: 0, blinkSpeed: 0\n };\n data.push(led.red);\n data.push(led.green);\n data.push(led.blue);\n data.push(led.intensity);\n data.push(led.blinkTimes);\n data.push(led.blinkSpeed);\n }\n return this.buildFrame(address, 0x02, data);\n }\n /**\n * Build OTA notification frame\n */\n static buildOTANotification(address, majorVersion, minorVersion, patchVersion, firmwareSize) {\n const data = [];\n // Version (3 bytes)\n data.push(majorVersion);\n data.push(minorVersion);\n data.push(patchVersion);\n // Firmware size (4 bytes, little-endian)\n data.push(firmwareSize & 0xFF);\n data.push((firmwareSize >> 8) & 0xFF);\n data.push((firmwareSize >> 16) & 0xFF);\n data.push((firmwareSize >> 24) & 0xFF);\n return this.buildFrame(address, 0xF1, data);\n }\n /**\n * Build OTA data frame\n */\n static buildOTAData(address, packetNumber, data) {\n const frameData = [];\n // Packet number (4 bytes, little-endian)\n frameData.push(packetNumber & 0xFF);\n frameData.push((packetNumber >> 8) & 0xFF);\n frameData.push((packetNumber >> 16) & 0xFF);\n frameData.push((packetNumber >> 24) & 0xFF);\n // Data bytes (up to 128 bytes)\n for (let i = 0; i < data.length; i++) {\n frameData.push(data[i]);\n }\n return this.buildFrame(address, 0xF2, frameData);\n }\n /**\n * Parse status response\n */\n static parseStatusResponse(data) {\n if (data.length < 4) {\n return null;\n }\n return {\n doorLockStatus: data[0],\n softwareVersion: {\n major: data[1],\n minor: data[2],\n patch: data[3]\n }\n };\n }\n /**\n * Convert frame to hex string for debugging\n */\n static frameToHex(frame) {\n return frame.map(b => b.toString(16).padStart(2, '0')).join(' ').toUpperCase();\n }\n /**\n * Convert hex string to frame\n */\n static hexToFrame(hex) {\n return hex.split(' ')\n .map(h => h.trim())\n .filter(h => h.length > 0)\n .map(h => parseInt(h, 16));\n }\n}\n","import { registerPlugin } from '@capacitor/core';\nconst CapacitorIoboard = registerPlugin('CapacitorIoboard', {\n web: () => import('./web').then(m => new m.CapacitorIoboardWeb()),\n});\nexport * from './definitions';\nexport * from './protocol';\nexport { CapacitorIoboard };\n","import { WebPlugin } from \"@capacitor/core\";\nexport class CapacitorIoboardWeb extends WebPlugin {\n constructor() {\n super();\n console.log(\"IOBoard Web Plugin v2.0 initialized\");\n }\n async connect(options) {\n console.log(\"Web: Connecting to IOBoard...\", options);\n await new Promise(resolve => setTimeout(resolve, 1000));\n return { success: true, message: `Connected to IOBoard at ${options.portPath}` };\n }\n async disconnect() {\n console.log(\"Web: Disconnecting from IOBoard...\");\n return { success: true, message: \"Disconnected from IOBoard\" };\n }\n async isConnected() {\n return { connected: false, portPath: null };\n }\n async listPorts() {\n console.log(\"Web: Listing available ports...\");\n const ports = [\"/dev/ttyS0\", \"/dev/ttyS1\", \"/dev/ttyS2\", \"/dev/ttyUSB0\", \"COM1\", \"COM2\", \"COM3\"];\n return { success: true, ports };\n }\n async getStatus(options) {\n console.log(\"Web: Getting device status...\", options);\n await new Promise(resolve => setTimeout(resolve, 100));\n return {\n success: true,\n status: {\n address: options.address,\n connected: true,\n firmwareVersion: \"2.1.0\",\n palletStates: Array(8).fill(false),\n temperature: 25.5,\n voltage: 12.0,\n uptime: 86400\n }\n };\n }\n async unlockPallet(options) {\n console.log(\"Web: Unlocking pallet...\", options);\n await new Promise(resolve => setTimeout(resolve, 200));\n return {\n success: true,\n message: `Pallet ${options.palletNumber} unlocked with RGB(${options.red}, ${options.green}, ${options.blue})`\n };\n }\n async controlMultiplePallets(options) {\n console.log(\"Web: Controlling multiple pallets...\", options);\n await new Promise(resolve => setTimeout(resolve, 300));\n const { address, color, intensity, blinkTimes, blinkSpeed, pallets } = options;\n return {\n success: true,\n message: `Controlled ${pallets.length} pallets with ${color} color at ${intensity}% intensity`,\n details: {\n address,\n color,\n intensity,\n blinkTimes,\n blinkSpeed,\n palletsControlled: pallets\n }\n };\n }\n async executeMultipleActions(options) {\n console.log(\"Web: Executing multiple actions...\", options);\n const { actions, delayBetweenCommands = 100 } = options;\n await new Promise(resolve => setTimeout(resolve, actions.length * (delayBetweenCommands + 50)));\n return {\n success: true,\n totalActions: actions.length,\n successCount: actions.length,\n failCount: 0,\n message: `All ${actions.length} actions executed successfully`\n };\n }\n async controlMultiple(options) {\n console.log(\"Web: Controlling multiple LEDs...\", options);\n await new Promise(resolve => setTimeout(resolve, 300));\n return { success: true, message: `Controlled ${options.leds.length} LEDs successfully` };\n }\n async startOTAUpdate(options) {\n console.log(\"Web: Starting OTA update...\", options);\n await new Promise(resolve => setTimeout(resolve, 500));\n return { success: true, message: `OTA update started for ${options.fileName} (${options.fileSize} bytes)` };\n }\n async sendOTAData(options) {\n console.log(\"Web: Sending OTA data packet...\", options.packetNumber);\n await new Promise(resolve => setTimeout(resolve, 50));\n if (Math.random() < 0.05) {\n return { success: false, error: `Packet ${options.packetNumber} transmission failed` };\n }\n return { success: true, message: `OTA packet ${options.packetNumber} sent successfully` };\n }\n}\n"],"names":["registerPlugin","WebPlugin"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"plugin.js","sources":["esm/definitions.js","esm/protocol.js","esm/index.js","esm/web.js"],"sourcesContent":["// Protocol Constants\nexport const IOBOARD_PROTOCOL = {\n SOI: 0x0D,\n EOI: 0x0A,\n FRAME_TYPES: {\n STATUS_QUERY: 0x00,\n SINGLE_PALLET: 0x01,\n FULL_PALLET: 0x02,\n OTA_REQUEST: 0xF1,\n OTA_DATA: 0xF2,\n OTA_RESPONSE: 0xF3\n },\n DEFAULT_BAUD_RATE: 115200,\n DEFAULT_DATA_BITS: 8,\n DEFAULT_STOP_BITS: 1,\n DEFAULT_PARITY: 'none',\n DEFAULT_TIMEOUT: 5000,\n // Address range\n MIN_ADDRESS: 1,\n MAX_ADDRESS: 63,\n // Pallet range\n MIN_PALLET: 0,\n MAX_PALLET: 7,\n // OTA Constants\n OTA_PACKET_SIZE: 128,\n // Response codes\n OTA_RESPONSES: {\n AREA_REQUEST: 0x26,\n REQUEST_A_ZONE: 0x41,\n REQUEST_B_ZONE: 0x42,\n DATA_REQUEST: 0x23,\n COMPLETION: 0x4F,\n ERROR: 0x45, // 'E'\n },\n // Error codes\n OTA_ERROR_CODES: {\n ILLEGAL_VERSION: 9,\n NON_OTA_STATUS: 8,\n WRITE_FAILED: 7,\n VERIFICATION_FAILED: 6,\n TRANSFER_FAILED: 5\n }\n};\n","/**\n * IOBOARD Protocol utilities for frame construction and parsing\n */\nexport class IOBoardProtocol {\n /**\n * Calculate CRC-16 CCITT checksum\n */\n static calculateCRC16(data) {\n let crc = 0xFFFF;\n for (const byte of data) {\n crc ^= (byte << 8);\n for (let bit = 0; bit < 8; bit++) {\n if (crc & 0x8000) {\n crc = (crc << 1) ^ 0x1021;\n }\n else {\n crc = crc << 1;\n }\n crc &= 0xFFFF;\n }\n }\n return crc;\n }\n /**\n * Build a command frame for IOBOARD\n */\n static buildFrame(address, frameType, data) {\n const frame = [];\n // SOI\n frame.push(0x0D);\n // Address\n frame.push(address);\n // Frame Type\n frame.push(frameType);\n // Data\n frame.push(...data);\n // Calculate CRC for address + frameType + data\n const crcData = [address, frameType, ...data];\n const crc = this.calculateCRC16(crcData);\n // CRC (high byte first)\n frame.push((crc >> 8) & 0xFF);\n frame.push(crc & 0xFF);\n // EOI\n frame.push(0x0A);\n return frame;\n }\n /**\n * Parse a response frame from IOBOARD\n */\n static parseFrame(frame) {\n if (frame.length < 6) {\n return { success: false, error: 'Frame too short' };\n }\n // Check SOI and EOI\n if (frame[0] !== 0x0D || frame[frame.length - 1] !== 0x0A) {\n return { success: false, error: 'Invalid frame markers' };\n }\n const address = frame[1];\n const frameType = frame[2];\n const dataLength = frame.length - 6; // SOI + Address + FrameType + CRC(2) + EOI\n const data = frame.slice(3, 3 + dataLength);\n // Extract CRC from frame\n const receivedCRC = (frame[frame.length - 3] << 8) | frame[frame.length - 2];\n // Calculate expected CRC\n const crcData = [address, frameType, ...data];\n const expectedCRC = this.calculateCRC16(crcData);\n if (receivedCRC !== expectedCRC) {\n return {\n success: false,\n error: `CRC mismatch: expected ${expectedCRC.toString(16)}, got ${receivedCRC.toString(16)}`\n };\n }\n return {\n success: true,\n address,\n frameType,\n data\n };\n }\n /**\n * Build status query frame\n */\n static buildStatusQuery(address) {\n return this.buildFrame(address, 0x00, []);\n }\n /**\n * Build single pallet control frame\n */\n static buildSinglePalletControl(address, palletNumber, doorLock, ledControl) {\n const data = [];\n // Pallet number\n data.push(palletNumber);\n // Door lock control (1 = unlock, 0 = no action)\n data.push(doorLock ? 1 : 0);\n // LED control (6 bytes)\n data.push(ledControl.red);\n data.push(ledControl.green);\n data.push(ledControl.blue);\n data.push(ledControl.intensity);\n data.push(ledControl.blinkTimes);\n data.push(ledControl.blinkSpeed);\n return this.buildFrame(address, 0x01, data);\n }\n /**\n * Build full pallet control frame\n */\n static buildFullPalletControl(address, doorLockControl, extendedControl, ledControls) {\n const data = [];\n // Door lock control (8-bit mask)\n data.push(doorLockControl);\n // Extended control\n data.push(extendedControl);\n // LED controls for 8 pallets (48 bytes total)\n for (let i = 0; i < 8; i++) {\n const led = ledControls[i] || {\n red: 0, green: 0, blue: 0,\n intensity: 0, blinkTimes: 0, blinkSpeed: 0\n };\n data.push(led.red);\n data.push(led.green);\n data.push(led.blue);\n data.push(led.intensity);\n data.push(led.blinkTimes);\n data.push(led.blinkSpeed);\n }\n return this.buildFrame(address, 0x02, data);\n }\n /**\n * Build OTA notification frame\n */\n static buildOTANotification(address, majorVersion, minorVersion, patchVersion, firmwareSize) {\n const data = [];\n // Version (3 bytes)\n data.push(majorVersion);\n data.push(minorVersion);\n data.push(patchVersion);\n // Firmware size (4 bytes, little-endian)\n data.push(firmwareSize & 0xFF);\n data.push((firmwareSize >> 8) & 0xFF);\n data.push((firmwareSize >> 16) & 0xFF);\n data.push((firmwareSize >> 24) & 0xFF);\n return this.buildFrame(address, 0xF1, data);\n }\n /**\n * Build OTA data frame\n */\n static buildOTAData(address, packetNumber, data) {\n const frameData = [];\n // Packet number (4 bytes, little-endian)\n frameData.push(packetNumber & 0xFF);\n frameData.push((packetNumber >> 8) & 0xFF);\n frameData.push((packetNumber >> 16) & 0xFF);\n frameData.push((packetNumber >> 24) & 0xFF);\n // Data bytes (up to 128 bytes)\n for (let i = 0; i < data.length; i++) {\n frameData.push(data[i]);\n }\n return this.buildFrame(address, 0xF2, frameData);\n }\n /**\n * Parse status response\n */\n static parseStatusResponse(data) {\n if (data.length < 4) {\n return null;\n }\n return {\n doorLockStatus: data[0],\n softwareVersion: {\n major: data[1],\n minor: data[2],\n patch: data[3]\n }\n };\n }\n /**\n * Convert frame to hex string for debugging\n */\n static frameToHex(frame) {\n return frame.map(b => b.toString(16).padStart(2, '0')).join(' ').toUpperCase();\n }\n /**\n * Convert hex string to frame\n */\n static hexToFrame(hex) {\n return hex.split(' ')\n .map(h => h.trim())\n .filter(h => h.length > 0)\n .map(h => parseInt(h, 16));\n }\n}\n","import { registerPlugin } from '@capacitor/core';\nconst CapacitorIoboard = registerPlugin('CapacitorIoboard', {\n web: () => import('./web').then(m => new m.CapacitorIoboardWeb()),\n});\nexport * from './definitions';\nexport * from './protocol';\nexport { CapacitorIoboard };\n","import { WebPlugin } from \"@capacitor/core\";\nexport class CapacitorIoboardWeb extends WebPlugin {\n constructor() {\n super();\n console.log(\"IOBoard Web Plugin v2.0 initialized\");\n }\n async connect(options) {\n console.log(\"Web: Connecting to IOBoard...\", options);\n await new Promise(resolve => setTimeout(resolve, 1000));\n return { success: true, message: `Connected to IOBoard at ${options.portPath}` };\n }\n async disconnect() {\n console.log(\"Web: Disconnecting from IOBoard...\");\n return { success: true, message: \"Disconnected from IOBoard\" };\n }\n async isConnected() {\n return { connected: false, portPath: null };\n }\n async listPorts() {\n console.log(\"Web: Listing available ports...\");\n const ports = [\"/dev/ttyS0\", \"/dev/ttyS1\", \"/dev/ttyS2\", \"/dev/ttyUSB0\", \"COM1\", \"COM2\", \"COM3\"];\n return { success: true, ports };\n }\n async getStatus(options) {\n console.log(\"Web: Getting device status...\", options);\n await new Promise(resolve => setTimeout(resolve, 100));\n return {\n success: true,\n status: {\n address: options.address,\n connected: true,\n firmwareVersion: \"2.1.0\",\n palletStates: Array(8).fill(false),\n temperature: 25.5,\n voltage: 12.0,\n uptime: 86400\n }\n };\n }\n async unlockPallet(options) {\n console.log(\"Web: Unlocking pallet...\", options);\n await new Promise(resolve => setTimeout(resolve, 200));\n return {\n success: true,\n message: `Pallet ${options.palletNumber} unlocked with RGB(${options.red}, ${options.green}, ${options.blue})`\n };\n }\n async controlMultiplePallets(options) {\n console.log(\"Web: Controlling multiple pallets...\", options);\n await new Promise(resolve => setTimeout(resolve, 300));\n const { address, color, intensity, blinkTimes, blinkSpeed, pallets } = options;\n return {\n success: true,\n message: `Controlled ${pallets.length} pallets with ${color} color at ${intensity}% intensity`,\n details: {\n address,\n color,\n intensity,\n blinkTimes,\n blinkSpeed,\n palletsControlled: pallets\n }\n };\n }\n async executeMultipleActions(options) {\n console.log(\"Web: Executing multiple actions...\", options);\n const { actions, delayBetweenCommands = 100 } = options;\n await new Promise(resolve => setTimeout(resolve, actions.length * (delayBetweenCommands + 50)));\n return {\n success: true,\n totalActions: actions.length,\n successCount: actions.length,\n failCount: 0,\n message: `All ${actions.length} actions executed successfully`\n };\n }\n async controlMultiple(options) {\n console.log(\"Web: Controlling multiple LEDs...\", options);\n await new Promise(resolve => setTimeout(resolve, 300));\n return { success: true, message: `Controlled ${options.leds.length} LEDs successfully` };\n }\n async startOTAUpdate(options) {\n console.log(\"Web: Starting OTA update...\", options);\n await new Promise(resolve => setTimeout(resolve, 500));\n return { success: true, message: `OTA update started for ${options.fileName} (${options.fileSize} bytes)` };\n }\n async sendOTAData(options) {\n console.log(\"Web: Sending OTA data packet...\", options.packetNumber);\n await new Promise(resolve => setTimeout(resolve, 50));\n if (Math.random() < 0.05) {\n return { success: false, error: `Packet ${options.packetNumber} transmission failed` };\n }\n return { success: true, message: `OTA packet ${options.packetNumber} sent successfully` };\n }\n async sendFrameAndWaitResponse(options) {\n var _a, _b;\n console.log(\"Web: sendFrameAndWaitResponse (stub) — not supported in browser\");\n // Web stub: simulate a '#' ACK response (9-byte F3 frame with header '#' = 0x23)\n await new Promise(resolve => setTimeout(resolve, 50));\n return {\n success: true,\n rawData: [0x0D, 0x09, 0x01, 0xF3, 0x23, 0x00, 0x00, 0xCC, 0x0A],\n bytesSent: (_b = (_a = options.data) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0,\n bytesReceived: 9\n };\n }\n}\n"],"names":["registerPlugin","WebPlugin"],"mappings":";;;IAAA;AACY,UAAC,gBAAgB,GAAG;IAChC,IAAI,GAAG,EAAE,IAAI;IACb,IAAI,GAAG,EAAE,IAAI;IACb,IAAI,WAAW,EAAE;IACjB,QAAQ,YAAY,EAAE,IAAI;IAC1B,QAAQ,aAAa,EAAE,IAAI;IAC3B,QAAQ,WAAW,EAAE,IAAI;IACzB,QAAQ,WAAW,EAAE,IAAI;IACzB,QAAQ,QAAQ,EAAE,IAAI;IACtB,QAAQ,YAAY,EAAE,IAAI;IAC1B,KAAK;IACL,IAAI,iBAAiB,EAAE,MAAM;IAC7B,IAAI,iBAAiB,EAAE,CAAC;IACxB,IAAI,iBAAiB,EAAE,CAAC;IACxB,IAAI,cAAc,EAAE,MAAM;IAC1B,IAAI,eAAe,EAAE,IAAI;IACzB;IACA,IAAI,WAAW,EAAE,CAAC;IAClB,IAAI,WAAW,EAAE,EAAE;IACnB;IACA,IAAI,UAAU,EAAE,CAAC;IACjB,IAAI,UAAU,EAAE,CAAC;IACjB;IACA,IAAI,eAAe,EAAE,GAAG;IACxB;IACA,IAAI,aAAa,EAAE;IACnB,QAAQ,YAAY,EAAE,IAAI;IAC1B,QAAQ,cAAc,EAAE,IAAI;IAC5B,QAAQ,cAAc,EAAE,IAAI;IAC5B,QAAQ,YAAY,EAAE,IAAI;IAC1B,QAAQ,UAAU,EAAE,IAAI;IACxB,QAAQ,KAAK,EAAE,IAAI;IACnB,KAAK;IACL;IACA,IAAI,eAAe,EAAE;IACrB,QAAQ,eAAe,EAAE,CAAC;IAC1B,QAAQ,cAAc,EAAE,CAAC;IACzB,QAAQ,YAAY,EAAE,CAAC;IACvB,QAAQ,mBAAmB,EAAE,CAAC;IAC9B,QAAQ,eAAe,EAAE,CAAC;IAC1B,KAAK;IACL;;IC1CA;IACA;IACA;IACO,MAAM,eAAe,CAAC;IAC7B;IACA;IACA;IACA,IAAI,OAAO,cAAc,CAAC,IAAI,EAAE;IAChC,QAAQ,IAAI,GAAG,GAAG,MAAM,CAAC;IACzB,QAAQ,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE;IACjC,YAAY,GAAG,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC;IAC/B,YAAY,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE,EAAE;IAC9C,gBAAgB,IAAI,GAAG,GAAG,MAAM,EAAE;IAClC,oBAAoB,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,MAAM,CAAC;IAC9C,iBAAiB;IACjB,qBAAqB;IACrB,oBAAoB,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC;IACnC,iBAAiB;IACjB,gBAAgB,GAAG,IAAI,MAAM,CAAC;IAC9B,aAAa;IACb,SAAS;IACT,QAAQ,OAAO,GAAG,CAAC;IACnB,KAAK;IACL;IACA;IACA;IACA,IAAI,OAAO,UAAU,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE;IAChD,QAAQ,MAAM,KAAK,GAAG,EAAE,CAAC;IACzB;IACA,QAAQ,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzB;IACA,QAAQ,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC5B;IACA,QAAQ,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC9B;IACA,QAAQ,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;IAC5B;IACA,QAAQ,MAAM,OAAO,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,CAAC;IACtD,QAAQ,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;IACjD;IACA,QAAQ,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;IACtC,QAAQ,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC;IAC/B;IACA,QAAQ,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzB,QAAQ,OAAO,KAAK,CAAC;IACrB,KAAK;IACL;IACA;IACA;IACA,IAAI,OAAO,UAAU,CAAC,KAAK,EAAE;IAC7B,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;IAC9B,YAAY,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,iBAAiB,EAAE,CAAC;IAChE,SAAS;IACT;IACA,QAAQ,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE;IACnE,YAAY,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,uBAAuB,EAAE,CAAC;IACtE,SAAS;IACT,QAAQ,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACjC,QAAQ,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACnC,QAAQ,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IAC5C,QAAQ,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC;IACpD;IACA,QAAQ,MAAM,WAAW,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACrF;IACA,QAAQ,MAAM,OAAO,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,CAAC;IACtD,QAAQ,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;IACzD,QAAQ,IAAI,WAAW,KAAK,WAAW,EAAE;IACzC,YAAY,OAAO;IACnB,gBAAgB,OAAO,EAAE,KAAK;IAC9B,gBAAgB,KAAK,EAAE,CAAC,uBAAuB,EAAE,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5G,aAAa,CAAC;IACd,SAAS;IACT,QAAQ,OAAO;IACf,YAAY,OAAO,EAAE,IAAI;IACzB,YAAY,OAAO;IACnB,YAAY,SAAS;IACrB,YAAY,IAAI;IAChB,SAAS,CAAC;IACV,KAAK;IACL;IACA;IACA;IACA,IAAI,OAAO,gBAAgB,CAAC,OAAO,EAAE;IACrC,QAAQ,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;IAClD,KAAK;IACL;IACA;IACA;IACA,IAAI,OAAO,wBAAwB,CAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE;IACjF,QAAQ,MAAM,IAAI,GAAG,EAAE,CAAC;IACxB;IACA,QAAQ,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAChC;IACA,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IACpC;IACA,QAAQ,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IAClC,QAAQ,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IACpC,QAAQ,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACnC,QAAQ,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IACxC,QAAQ,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;IACzC,QAAQ,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;IACzC,QAAQ,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACpD,KAAK;IACL;IACA;IACA;IACA,IAAI,OAAO,sBAAsB,CAAC,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,WAAW,EAAE;IAC1F,QAAQ,MAAM,IAAI,GAAG,EAAE,CAAC;IACxB;IACA,QAAQ,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IACnC;IACA,QAAQ,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IACnC;IACA,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;IACpC,YAAY,MAAM,GAAG,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI;IAC1C,gBAAgB,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC;IACzC,gBAAgB,SAAS,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC;IAC1D,aAAa,CAAC;IACd,YAAY,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC/B,YAAY,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACjC,YAAY,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAChC,YAAY,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACrC,YAAY,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACtC,YAAY,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACtC,SAAS;IACT,QAAQ,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACpD,KAAK;IACL;IACA;IACA;IACA,IAAI,OAAO,oBAAoB,CAAC,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE;IACjG,QAAQ,MAAM,IAAI,GAAG,EAAE,CAAC;IACxB;IACA,QAAQ,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAChC,QAAQ,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAChC,QAAQ,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAChC;IACA,QAAQ,IAAI,CAAC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;IACvC,QAAQ,IAAI,CAAC,IAAI,CAAC,CAAC,YAAY,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;IAC9C,QAAQ,IAAI,CAAC,IAAI,CAAC,CAAC,YAAY,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC;IAC/C,QAAQ,IAAI,CAAC,IAAI,CAAC,CAAC,YAAY,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC;IAC/C,QAAQ,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACpD,KAAK;IACL;IACA;IACA;IACA,IAAI,OAAO,YAAY,CAAC,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE;IACrD,QAAQ,MAAM,SAAS,GAAG,EAAE,CAAC;IAC7B;IACA,QAAQ,SAAS,CAAC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;IAC5C,QAAQ,SAAS,CAAC,IAAI,CAAC,CAAC,YAAY,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;IACnD,QAAQ,SAAS,CAAC,IAAI,CAAC,CAAC,YAAY,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC;IACpD,QAAQ,SAAS,CAAC,IAAI,CAAC,CAAC,YAAY,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC;IACpD;IACA,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IAC9C,YAAY,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACpC,SAAS;IACT,QAAQ,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;IACzD,KAAK;IACL;IACA;IACA;IACA,IAAI,OAAO,mBAAmB,CAAC,IAAI,EAAE;IACrC,QAAQ,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;IAC7B,YAAY,OAAO,IAAI,CAAC;IACxB,SAAS;IACT,QAAQ,OAAO;IACf,YAAY,cAAc,EAAE,IAAI,CAAC,CAAC,CAAC;IACnC,YAAY,eAAe,EAAE;IAC7B,gBAAgB,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;IAC9B,gBAAgB,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;IAC9B,gBAAgB,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;IAC9B,aAAa;IACb,SAAS,CAAC;IACV,KAAK;IACL;IACA;IACA;IACA,IAAI,OAAO,UAAU,CAAC,KAAK,EAAE;IAC7B,QAAQ,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;IACvF,KAAK;IACL;IACA;IACA;IACA,IAAI,OAAO,UAAU,CAAC,GAAG,EAAE;IAC3B,QAAQ,OAAO,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC;IAC7B,aAAa,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;IAC/B,aAAa,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;IACtC,aAAa,GAAG,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IACvC,KAAK;IACL;;AC7LK,UAAC,gBAAgB,GAAGA,mBAAc,CAAC,kBAAkB,EAAE;IAC5D,IAAI,GAAG,EAAE,MAAM,mDAAe,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,mBAAmB,EAAE,CAAC;IACrE,CAAC;;ICFM,MAAM,mBAAmB,SAASC,cAAS,CAAC;IACnD,IAAI,WAAW,GAAG;IAClB,QAAQ,KAAK,EAAE,CAAC;IAChB,QAAQ,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;IAC3D,KAAK;IACL,IAAI,MAAM,OAAO,CAAC,OAAO,EAAE;IAC3B,QAAQ,OAAO,CAAC,GAAG,CAAC,+BAA+B,EAAE,OAAO,CAAC,CAAC;IAC9D,QAAQ,MAAM,IAAI,OAAO,CAAC,OAAO,IAAI,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;IAChE,QAAQ,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,wBAAwB,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;IACzF,KAAK;IACL,IAAI,MAAM,UAAU,GAAG;IACvB,QAAQ,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;IAC1D,QAAQ,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,2BAA2B,EAAE,CAAC;IACvE,KAAK;IACL,IAAI,MAAM,WAAW,GAAG;IACxB,QAAQ,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IACpD,KAAK;IACL,IAAI,MAAM,SAAS,GAAG;IACtB,QAAQ,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;IACvD,QAAQ,MAAM,KAAK,GAAG,CAAC,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACzG,QAAQ,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IACxC,KAAK;IACL,IAAI,MAAM,SAAS,CAAC,OAAO,EAAE;IAC7B,QAAQ,OAAO,CAAC,GAAG,CAAC,+BAA+B,EAAE,OAAO,CAAC,CAAC;IAC9D,QAAQ,MAAM,IAAI,OAAO,CAAC,OAAO,IAAI,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;IAC/D,QAAQ,OAAO;IACf,YAAY,OAAO,EAAE,IAAI;IACzB,YAAY,MAAM,EAAE;IACpB,gBAAgB,OAAO,EAAE,OAAO,CAAC,OAAO;IACxC,gBAAgB,SAAS,EAAE,IAAI;IAC/B,gBAAgB,eAAe,EAAE,OAAO;IACxC,gBAAgB,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;IAClD,gBAAgB,WAAW,EAAE,IAAI;IACjC,gBAAgB,OAAO,EAAE,IAAI;IAC7B,gBAAgB,MAAM,EAAE,KAAK;IAC7B,aAAa;IACb,SAAS,CAAC;IACV,KAAK;IACL,IAAI,MAAM,YAAY,CAAC,OAAO,EAAE;IAChC,QAAQ,OAAO,CAAC,GAAG,CAAC,0BAA0B,EAAE,OAAO,CAAC,CAAC;IACzD,QAAQ,MAAM,IAAI,OAAO,CAAC,OAAO,IAAI,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;IAC/D,QAAQ,OAAO;IACf,YAAY,OAAO,EAAE,IAAI;IACzB,YAAY,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,YAAY,CAAC,mBAAmB,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1H,SAAS,CAAC;IACV,KAAK;IACL,IAAI,MAAM,sBAAsB,CAAC,OAAO,EAAE;IAC1C,QAAQ,OAAO,CAAC,GAAG,CAAC,sCAAsC,EAAE,OAAO,CAAC,CAAC;IACrE,QAAQ,MAAM,IAAI,OAAO,CAAC,OAAO,IAAI,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;IAC/D,QAAQ,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IACvF,QAAQ,OAAO;IACf,YAAY,OAAO,EAAE,IAAI;IACzB,YAAY,OAAO,EAAE,CAAC,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,KAAK,CAAC,UAAU,EAAE,SAAS,CAAC,WAAW,CAAC;IAC1G,YAAY,OAAO,EAAE;IACrB,gBAAgB,OAAO;IACvB,gBAAgB,KAAK;IACrB,gBAAgB,SAAS;IACzB,gBAAgB,UAAU;IAC1B,gBAAgB,UAAU;IAC1B,gBAAgB,iBAAiB,EAAE,OAAO;IAC1C,aAAa;IACb,SAAS,CAAC;IACV,KAAK;IACL,IAAI,MAAM,sBAAsB,CAAC,OAAO,EAAE;IAC1C,QAAQ,OAAO,CAAC,GAAG,CAAC,oCAAoC,EAAE,OAAO,CAAC,CAAC;IACnE,QAAQ,MAAM,EAAE,OAAO,EAAE,oBAAoB,GAAG,GAAG,EAAE,GAAG,OAAO,CAAC;IAChE,QAAQ,MAAM,IAAI,OAAO,CAAC,OAAO,IAAI,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,IAAI,oBAAoB,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;IACxG,QAAQ,OAAO;IACf,YAAY,OAAO,EAAE,IAAI;IACzB,YAAY,YAAY,EAAE,OAAO,CAAC,MAAM;IACxC,YAAY,YAAY,EAAE,OAAO,CAAC,MAAM;IACxC,YAAY,SAAS,EAAE,CAAC;IACxB,YAAY,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,8BAA8B,CAAC;IAC1E,SAAS,CAAC;IACV,KAAK;IACL,IAAI,MAAM,eAAe,CAAC,OAAO,EAAE;IACnC,QAAQ,OAAO,CAAC,GAAG,CAAC,mCAAmC,EAAE,OAAO,CAAC,CAAC;IAClE,QAAQ,MAAM,IAAI,OAAO,CAAC,OAAO,IAAI,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;IAC/D,QAAQ,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,WAAW,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,EAAE,CAAC;IACjG,KAAK;IACL,IAAI,MAAM,cAAc,CAAC,OAAO,EAAE;IAClC,QAAQ,OAAO,CAAC,GAAG,CAAC,6BAA6B,EAAE,OAAO,CAAC,CAAC;IAC5D,QAAQ,MAAM,IAAI,OAAO,CAAC,OAAO,IAAI,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;IAC/D,QAAQ,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,uBAAuB,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;IACpH,KAAK;IACL,IAAI,MAAM,WAAW,CAAC,OAAO,EAAE;IAC/B,QAAQ,OAAO,CAAC,GAAG,CAAC,iCAAiC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAC7E,QAAQ,MAAM,IAAI,OAAO,CAAC,OAAO,IAAI,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;IAC9D,QAAQ,IAAI,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,EAAE;IAClC,YAAY,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,YAAY,CAAC,oBAAoB,CAAC,EAAE,CAAC;IACnG,SAAS;IACT,QAAQ,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,WAAW,EAAE,OAAO,CAAC,YAAY,CAAC,kBAAkB,CAAC,EAAE,CAAC;IAClG,KAAK;IACL,IAAI,MAAM,wBAAwB,CAAC,OAAO,EAAE;IAC5C,QAAQ,IAAI,EAAE,EAAE,EAAE,CAAC;IACnB,QAAQ,OAAO,CAAC,GAAG,CAAC,iEAAiE,CAAC,CAAC;IACvF;IACA,QAAQ,MAAM,IAAI,OAAO,CAAC,OAAO,IAAI,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;IAC9D,QAAQ,OAAO;IACf,YAAY,OAAO,EAAE,IAAI;IACzB,YAAY,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;IAC3E,YAAY,SAAS,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,MAAM,IAAI,IAAI,EAAE,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC;IACnI,YAAY,aAAa,EAAE,CAAC;IAC5B,SAAS,CAAC;IACV,KAAK;IACL;;;;;;;;;;;;;;;;;;;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@leonardojc/capacitor-ioboard",
|
|
3
|
-
"version": "2.0
|
|
3
|
+
"version": "2.1.0",
|
|
4
4
|
"description": "A comprehensive Capacitor plugin for IOBoard devices with integrated serial communication and complete MTC3P08L protocol support including OTA updates",
|
|
5
5
|
"main": "dist/plugin.cjs.js",
|
|
6
6
|
"module": "dist/esm/index.js",
|