@v5x/serial 0.5.0 → 0.5.2

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 (46) hide show
  1. package/dist/Vex.d.ts +235 -0
  2. package/dist/VexCRC.d.ts +19 -0
  3. package/dist/VexConnection.d.ts +45 -0
  4. package/dist/VexDevice.d.ts +177 -0
  5. package/dist/VexEvent.d.ts +16 -0
  6. package/dist/VexFirmwareVersion.d.ts +55 -0
  7. package/dist/VexIniConfig.d.ts +27 -0
  8. package/dist/VexPacket.d.ts +512 -0
  9. package/dist/VexPacketView.d.ts +18 -0
  10. package/dist/index.d.ts +9 -0
  11. package/dist/v5-serial-protocol.cjs.js +4516 -0
  12. package/dist/v5-serial-protocol.cjs.js.map +1 -0
  13. package/dist/v5-serial-protocol.es.js +4401 -0
  14. package/dist/v5-serial-protocol.es.js.map +1 -0
  15. package/dts/Vex.d.ts +235 -0
  16. package/dts/Vex.js +189 -0
  17. package/dts/Vex.js.map +1 -0
  18. package/dts/VexCRC.d.ts +19 -0
  19. package/dts/VexCRC.js +89 -0
  20. package/dts/VexCRC.js.map +1 -0
  21. package/dts/VexConnection.d.ts +45 -0
  22. package/dts/VexConnection.js +500 -0
  23. package/dts/VexConnection.js.map +1 -0
  24. package/dts/VexDevice.d.ts +177 -0
  25. package/dts/VexDevice.js +944 -0
  26. package/dts/VexDevice.js.map +1 -0
  27. package/dts/VexEvent.d.ts +16 -0
  28. package/dts/VexEvent.js +47 -0
  29. package/dts/VexEvent.js.map +1 -0
  30. package/dts/VexFirmwareVersion.d.ts +55 -0
  31. package/dts/VexFirmwareVersion.js +104 -0
  32. package/dts/VexFirmwareVersion.js.map +1 -0
  33. package/dts/VexIniConfig.d.ts +27 -0
  34. package/dts/VexIniConfig.js +122 -0
  35. package/dts/VexIniConfig.js.map +1 -0
  36. package/dts/VexPacket.d.ts +512 -0
  37. package/dts/VexPacket.js +1036 -0
  38. package/dts/VexPacket.js.map +1 -0
  39. package/dts/VexPacketView.d.ts +18 -0
  40. package/dts/VexPacketView.js +84 -0
  41. package/dts/VexPacketView.js.map +1 -0
  42. package/dts/index.d.ts +9 -0
  43. package/dts/index.js +10 -0
  44. package/dts/index.js.map +1 -0
  45. package/index.d.ts +1098 -0
  46. package/package.json +5 -4
package/index.d.ts ADDED
@@ -0,0 +1,1098 @@
1
+ /**
2
+ * V5 Serial Protocol v0.5.2
3
+ * Copyright 2022-2026 jerrylum <me@jerryio.com>
4
+ */
5
+
6
+ /// <reference types="dom-serial" />
7
+ /**
8
+ * This is a class to make it easier to handle passing the VEXos version
9
+ * information around in the application. This provides ways to get any
10
+ * form of the string representation and quickly compare versions.
11
+ */
12
+ declare class VexFirmwareVersion {
13
+ major: number;
14
+ minor: number;
15
+ build: number;
16
+ beta: number;
17
+ constructor(major: number, minor: number, build: number, beta: number);
18
+ /**
19
+ * Take a a string of MAJOR.MINOR.BUILD.bBETA and converts it to a
20
+ * VexFirmwareVersion instance
21
+ * @param version the string to process
22
+ * @returns a VexFirmwareVersion representing the provided string
23
+ */
24
+ static fromString(version: string): VexFirmwareVersion;
25
+ /**
26
+ * Take a a Uint8Array and converts it to a VexFirmwareVersion instance
27
+ * @param data the array to process
28
+ * @param offset the offset to start at
29
+ * @returns a VexFirmwareVersion representing the provided string
30
+ */
31
+ static fromUint8Array(data: Uint8Array, offset?: number, reverse?: boolean): VexFirmwareVersion;
32
+ static allZero(): VexFirmwareVersion;
33
+ /**
34
+ * Take a a string of MAJOR_MINOR_BUILD_BETA and converts it to a
35
+ * VexFirmwareVersion instance
36
+ * @param version the string to process
37
+ * @returns a VexFirmwareVersion representing the provided string
38
+ */
39
+ static fromCatalogString(version: string): VexFirmwareVersion;
40
+ isBeta(): boolean;
41
+ /**
42
+ * returns version as Uint Array
43
+ */
44
+ toUint8Array(reverse?: boolean): Uint8Array;
45
+ /**
46
+ * returns version as major.minor.build
47
+ */
48
+ toUserString(): string;
49
+ /**
50
+ * returns version as ${major}.${minor}.{build}.b${beta}
51
+ */
52
+ toInternalString(): string;
53
+ /**
54
+ * compares this version to the provided version.
55
+ * * if this < b: negative
56
+ * * if this = b: 0
57
+ * * if this > b: positive
58
+ * @param that the version to compare again
59
+ */
60
+ compare(that: VexFirmwareVersion): number;
61
+ }
62
+
63
+ declare class CrcGenerator {
64
+ crc16Table: Uint32Array;
65
+ crc32Table: Uint32Array;
66
+ static POLYNOMIAL_CRC32: number;
67
+ static POLYNOMIAL_CRC16: number;
68
+ constructor();
69
+ /**
70
+ * Calculate CRC16 for buffer
71
+ */
72
+ crc16(buf: Uint8Array, initValue: number): number;
73
+ /**
74
+ * Generate CRC32 reverse table
75
+ */
76
+ crc32GenTable(): void;
77
+ /**
78
+ * Calculate CRC32 for buffer
79
+ */
80
+ crc32(buf: Uint8Array, initValue: number): number;
81
+ }
82
+
83
+ declare class PacketEncoder {
84
+ static HEADERS_LENGTH: number;
85
+ static HEADER_TO_DEVICE: number[];
86
+ static HEADER_TO_HOST: number[];
87
+ static J2000_EPOCH: number;
88
+ vexVersion: number;
89
+ crcgen: CrcGenerator;
90
+ allPacketsTable: Record<string, typeof HostBoundPacket>;
91
+ static getInstance(): PacketEncoder;
92
+ private constructor();
93
+ /**
94
+ * Create the vex CDC header
95
+ * @param buf the bytes to send
96
+ */
97
+ createHeader(buf: ArrayBuffer | undefined): Uint8Array;
98
+ /**
99
+ * Create the vex CDC simple message
100
+ * @param cmd the CDC command byte
101
+ */
102
+ cdcCommand(cmd: number): Uint8Array;
103
+ /**
104
+ * Create the vex CDC simple message
105
+ * @param cmd the CDC command byte
106
+ * @param data the data to send
107
+ */
108
+ cdcCommandWithData(cmd: number, data: Uint8Array): Uint8Array;
109
+ /**
110
+ * Create the vex CDC extended message
111
+ * @param cmd the CDC command byte
112
+ * @param ext the CDC extended command byte
113
+ * @return a message
114
+ */
115
+ cdc2Command(cmd: number, ext: number): Uint8Array;
116
+ /**
117
+ * Calculate buffer length for new CDC extended command
118
+ * @param data the CDC extended command payload
119
+ * @returns the required buffer length of the command message
120
+ */
121
+ cdc2CommandBufferLength(data: Uint8Array): number;
122
+ /**
123
+ * Create the vex CDC extended message with some data
124
+ * @param cmd the CDC command byte
125
+ * @param ext the CDC extended command byte
126
+ * @param data the CDC extended command payload
127
+ * @return a message
128
+ */
129
+ cdc2CommandWithData(cmd: number, ext: number, data: Uint8Array): Uint8Array;
130
+ validateHeader(data: Uint8Array): boolean;
131
+ validateMessageCdc(data: Uint8Array): boolean;
132
+ getPayloadSize(data: Uint8Array): number;
133
+ }
134
+ declare abstract class Packet {
135
+ data: Uint8Array;
136
+ static ENCODER: PacketEncoder;
137
+ constructor(rawData: DataArray);
138
+ }
139
+ declare class DeviceBoundPacket extends Packet {
140
+ constructor(payload?: Uint8Array);
141
+ }
142
+ declare class Query1H2DPacket extends DeviceBoundPacket {
143
+ static COMMAND_ID: number;
144
+ static COMMAND_EXTENDED_ID: undefined;
145
+ constructor();
146
+ }
147
+ declare class SystemVersionH2DPacket extends DeviceBoundPacket {
148
+ static COMMAND_ID: number;
149
+ static COMMAND_EXTENDED_ID: undefined;
150
+ constructor();
151
+ }
152
+ declare class UpdateMatchModeH2DPacket extends DeviceBoundPacket {
153
+ static COMMAND_ID: number;
154
+ static COMMAND_EXTENDED_ID: number;
155
+ constructor(mode: MatchMode, matchClock: number);
156
+ }
157
+ declare class GetMatchStatusH2DPacket extends DeviceBoundPacket {
158
+ static COMMAND_ID: number;
159
+ static COMMAND_EXTENDED_ID: number;
160
+ constructor();
161
+ }
162
+ declare class GetRadioModeH2DPacket extends DeviceBoundPacket {
163
+ static COMMAND_ID: number;
164
+ static COMMAND_EXTENDED_ID: number;
165
+ constructor(mode: number);
166
+ }
167
+ declare class FileControlH2DPacket extends DeviceBoundPacket {
168
+ static COMMAND_ID: number;
169
+ static COMMAND_EXTENDED_ID: number;
170
+ constructor(a: number, b: number);
171
+ }
172
+ declare class InitFileTransferH2DPacket extends DeviceBoundPacket {
173
+ static COMMAND_ID: number;
174
+ static COMMAND_EXTENDED_ID: number;
175
+ constructor(operation: FileInitAction, target: FileDownloadTarget, vendor: FileVendor, options: FileInitOption, binary: Uint8Array, addr: number, name: string, type?: string, version?: VexFirmwareVersion);
176
+ }
177
+ declare class ExitFileTransferH2DPacket extends DeviceBoundPacket {
178
+ static COMMAND_ID: number;
179
+ static COMMAND_EXTENDED_ID: number;
180
+ constructor(action: FileExitAction);
181
+ }
182
+ declare class WriteFileH2DPacket extends DeviceBoundPacket {
183
+ static COMMAND_ID: number;
184
+ static COMMAND_EXTENDED_ID: number;
185
+ constructor(addr: number, buf: Uint8Array);
186
+ }
187
+ declare class ReadFileH2DPacket extends DeviceBoundPacket {
188
+ static COMMAND_ID: number;
189
+ static COMMAND_EXTENDED_ID: number;
190
+ constructor(addr: number, size: number);
191
+ }
192
+ declare class LinkFileH2DPacket extends DeviceBoundPacket {
193
+ static COMMAND_ID: number;
194
+ static COMMAND_EXTENDED_ID: number;
195
+ constructor(vendor: FileVendor, fileName: string, options: number);
196
+ }
197
+ declare class GetDirectoryFileCountH2DPacket extends DeviceBoundPacket {
198
+ static COMMAND_ID: number;
199
+ static COMMAND_EXTENDED_ID: number;
200
+ constructor(vendor: FileVendor);
201
+ }
202
+ declare class GetDirectoryEntryH2DPacket extends DeviceBoundPacket {
203
+ static COMMAND_ID: number;
204
+ static COMMAND_EXTENDED_ID: number;
205
+ constructor(index: number);
206
+ }
207
+ declare class LoadFileActionH2DPacket extends DeviceBoundPacket {
208
+ static COMMAND_ID: number;
209
+ static COMMAND_EXTENDED_ID: number;
210
+ constructor(vendor: FileVendor, actionId: FileLoadAction, fileNameOrSlotNumber: SlotNumber | string);
211
+ }
212
+ declare class GetFileMetadataH2DPacket extends DeviceBoundPacket {
213
+ static COMMAND_ID: number;
214
+ static COMMAND_EXTENDED_ID: number;
215
+ constructor(vendor: FileVendor, fileName: string, options: number);
216
+ }
217
+ declare class SetFileMetadataH2DPacket extends DeviceBoundPacket {
218
+ static COMMAND_ID: number;
219
+ static COMMAND_EXTENDED_ID: number;
220
+ constructor(vendor: FileVendor, fileName: string, fileInfo: IFileMetadata, options: number);
221
+ }
222
+ declare class EraseFileH2DPacket extends DeviceBoundPacket {
223
+ static COMMAND_ID: number;
224
+ static COMMAND_EXTENDED_ID: number;
225
+ constructor(vendor: FileVendor, fileName: string);
226
+ }
227
+ declare class GetProgramSlotInfoH2DPacket extends DeviceBoundPacket {
228
+ static COMMAND_ID: number;
229
+ static COMMAND_EXTENDED_ID: number;
230
+ constructor(vendor: FileVendor, fileName: string);
231
+ }
232
+ declare class FileClearUpH2DPacket extends DeviceBoundPacket {
233
+ static COMMAND_ID: number;
234
+ static COMMAND_EXTENDED_ID: number;
235
+ constructor(vendor: FileVendor);
236
+ }
237
+ declare class FileFormatH2DPacket extends DeviceBoundPacket {
238
+ static COMMAND_ID: number;
239
+ static COMMAND_EXTENDED_ID: number;
240
+ constructor();
241
+ }
242
+ declare class GetSystemFlagsH2DPacket extends DeviceBoundPacket {
243
+ static COMMAND_ID: number;
244
+ static COMMAND_EXTENDED_ID: number;
245
+ }
246
+ declare class GetDeviceStatusH2DPacket extends DeviceBoundPacket {
247
+ static COMMAND_ID: number;
248
+ static COMMAND_EXTENDED_ID: number;
249
+ constructor();
250
+ }
251
+ declare class GetSystemStatusH2DPacket extends DeviceBoundPacket {
252
+ static COMMAND_ID: number;
253
+ static COMMAND_EXTENDED_ID: number;
254
+ constructor();
255
+ }
256
+ declare class GetFdtStatusH2DPacket extends DeviceBoundPacket {
257
+ static COMMAND_ID: number;
258
+ static COMMAND_EXTENDED_ID: number;
259
+ constructor();
260
+ }
261
+ declare class GetLogCountH2DPacket extends DeviceBoundPacket {
262
+ static COMMAND_ID: number;
263
+ static COMMAND_EXTENDED_ID: number;
264
+ constructor();
265
+ }
266
+ declare class ReadLogPageH2DPacket extends DeviceBoundPacket {
267
+ static COMMAND_ID: number;
268
+ static COMMAND_EXTENDED_ID: number;
269
+ constructor(offset: number, count: number);
270
+ }
271
+ declare class GetRadioStatusH2DPacket extends DeviceBoundPacket {
272
+ static COMMAND_ID: number;
273
+ static COMMAND_EXTENDED_ID: number;
274
+ constructor();
275
+ }
276
+ declare class GetUserDataH2DPacket extends DeviceBoundPacket {
277
+ static COMMAND_ID: number;
278
+ static COMMAND_EXTENDED_ID: number;
279
+ constructor(e?: Uint8Array);
280
+ }
281
+ declare class ScreenCaptureH2DPacket extends DeviceBoundPacket {
282
+ static COMMAND_ID: number;
283
+ static COMMAND_EXTENDED_ID: number;
284
+ constructor(e: number);
285
+ }
286
+ declare class SendDashTouchH2DPacket extends DeviceBoundPacket {
287
+ static COMMAND_ID: number;
288
+ static COMMAND_EXTENDED_ID: number;
289
+ constructor(x: number, y: number, press: boolean);
290
+ }
291
+ declare class SelectDashH2DPacket extends DeviceBoundPacket {
292
+ static COMMAND_ID: number;
293
+ static COMMAND_EXTENDED_ID: number;
294
+ /** @param port untested */
295
+ constructor(screen: number | SelectDashScreen, port: number);
296
+ }
297
+ declare class EnableDashH2DPacket extends DeviceBoundPacket {
298
+ static COMMAND_ID: number;
299
+ static COMMAND_EXTENDED_ID: number;
300
+ constructor(unknown1?: number);
301
+ }
302
+ declare class DisableDashH2DPacket extends DeviceBoundPacket {
303
+ static COMMAND_ID: number;
304
+ static COMMAND_EXTENDED_ID: number;
305
+ constructor();
306
+ }
307
+ declare class ReadKeyValueH2DPacket extends DeviceBoundPacket {
308
+ static COMMAND_ID: number;
309
+ static COMMAND_EXTENDED_ID: number;
310
+ constructor(key: string);
311
+ }
312
+ declare class WriteKeyValueH2DPacket extends DeviceBoundPacket {
313
+ static COMMAND_ID: number;
314
+ static COMMAND_EXTENDED_ID: number;
315
+ constructor(key: string, value: string);
316
+ }
317
+ declare class GetSlot1to4InfoH2DPacket extends DeviceBoundPacket {
318
+ static COMMAND_ID: number;
319
+ static COMMAND_EXTENDED_ID: number;
320
+ constructor();
321
+ }
322
+ declare class GetSlot5to8InfoH2DPacket extends DeviceBoundPacket {
323
+ static COMMAND_ID: number;
324
+ static COMMAND_EXTENDED_ID: number;
325
+ constructor();
326
+ }
327
+ declare class FactoryStatusH2DPacket extends DeviceBoundPacket {
328
+ static COMMAND_ID: number;
329
+ static COMMAND_EXTENDED_ID: number;
330
+ }
331
+ declare class FactoryEnableH2DPacket extends DeviceBoundPacket {
332
+ static COMMAND_ID: number;
333
+ static COMMAND_EXTENDED_ID: number;
334
+ constructor();
335
+ }
336
+ declare class HostBoundPacket extends Packet {
337
+ ack: AckType;
338
+ payloadSize: number;
339
+ ackIndex: number;
340
+ constructor(data: DataArray);
341
+ static isValidPacket(data: Uint8Array, n: number): boolean;
342
+ }
343
+ declare class Query1ReplyD2HPacket extends HostBoundPacket {
344
+ static COMMAND_ID: number;
345
+ static COMMAND_EXTENDED_ID: undefined;
346
+ joystickFlag1: number;
347
+ joystickFlag2: number;
348
+ brainFlag1: number;
349
+ brainFlag2: number;
350
+ bootloadFlag1: number;
351
+ bootloadFlag2: number;
352
+ constructor(data: DataArray);
353
+ }
354
+ declare class SystemVersionReplyD2HPacket extends HostBoundPacket {
355
+ static COMMAND_ID: number;
356
+ static COMMAND_EXTENDED_ID: undefined;
357
+ version: VexFirmwareVersion;
358
+ hardware: number;
359
+ constructor(data: DataArray);
360
+ }
361
+ declare class MatchModeReplyD2HPacket extends HostBoundPacket {
362
+ static COMMAND_ID: number;
363
+ static COMMAND_EXTENDED_ID: number;
364
+ modebit: number;
365
+ constructor(data: DataArray);
366
+ }
367
+ declare class MatchStatusReplyD2HPacket extends HostBoundPacket {
368
+ static COMMAND_ID: number;
369
+ static COMMAND_EXTENDED_ID: number;
370
+ rssi: number;
371
+ systemStatusBits: number;
372
+ radioStatusBits: number;
373
+ fieldStatusBits: number;
374
+ matchClock: number;
375
+ brainBatteryPercent: number;
376
+ controllerBatteryPercent: number;
377
+ partnerControllerBatteryPercent: number;
378
+ pad: number;
379
+ buttons: number;
380
+ activeProgram: number;
381
+ radioType: number;
382
+ radioChannel: number;
383
+ radioSlot: number;
384
+ robotName: string;
385
+ controllerFlags: number;
386
+ rxSignalQuality: number;
387
+ constructor(data: DataArray);
388
+ }
389
+ declare class FileControlReplyD2HPacket extends HostBoundPacket {
390
+ static COMMAND_ID: number;
391
+ static COMMAND_EXTENDED_ID: number;
392
+ }
393
+ declare class InitFileTransferReplyD2HPacket extends HostBoundPacket {
394
+ static COMMAND_ID: number;
395
+ static COMMAND_EXTENDED_ID: number;
396
+ windowSize: number;
397
+ fileSize: number;
398
+ crc32: number;
399
+ constructor(data: DataArray);
400
+ }
401
+ declare class ExitFileTransferReplyD2HPacket extends HostBoundPacket {
402
+ static COMMAND_ID: number;
403
+ static COMMAND_EXTENDED_ID: number;
404
+ }
405
+ declare class WriteFileReplyD2HPacket extends HostBoundPacket {
406
+ static COMMAND_ID: number;
407
+ static COMMAND_EXTENDED_ID: number;
408
+ }
409
+ declare class ReadFileReplyD2HPacket extends HostBoundPacket {
410
+ static COMMAND_ID: number;
411
+ static COMMAND_EXTENDED_ID: number;
412
+ addr: number;
413
+ length: number;
414
+ buf: ArrayBuffer;
415
+ constructor(data: DataArray);
416
+ static isValidPacket(data: Uint8Array, n: number): boolean;
417
+ }
418
+ declare class LinkFileReplyD2HPacket extends HostBoundPacket {
419
+ static COMMAND_ID: number;
420
+ static COMMAND_EXTENDED_ID: number;
421
+ }
422
+ declare class GetDirectoryFileCountReplyD2HPacket extends HostBoundPacket {
423
+ static COMMAND_ID: number;
424
+ static COMMAND_EXTENDED_ID: number;
425
+ count: number;
426
+ constructor(data: DataArray);
427
+ }
428
+ declare class GetDirectoryEntryReplyD2HPacket extends HostBoundPacket {
429
+ static COMMAND_ID: number;
430
+ static COMMAND_EXTENDED_ID: number;
431
+ file?: IFileEntry;
432
+ constructor(data: DataArray);
433
+ }
434
+ declare class LoadFileActionReplyD2HPacket extends HostBoundPacket {
435
+ static COMMAND_ID: number;
436
+ static COMMAND_EXTENDED_ID: number;
437
+ }
438
+ declare class GetFileMetadataReplyD2HPacket extends HostBoundPacket {
439
+ static COMMAND_ID: number;
440
+ static COMMAND_EXTENDED_ID: number;
441
+ file?: IFileMetadata;
442
+ constructor(data: DataArray);
443
+ }
444
+ declare class SetFileMetadataReplyD2HPacket extends HostBoundPacket {
445
+ static COMMAND_ID: number;
446
+ static COMMAND_EXTENDED_ID: number;
447
+ }
448
+ declare class EraseFileReplyD2HPacket extends HostBoundPacket {
449
+ static COMMAND_ID: number;
450
+ static COMMAND_EXTENDED_ID: number;
451
+ }
452
+ declare class GetProgramSlotInfoReplyD2HPacket extends HostBoundPacket {
453
+ static COMMAND_ID: number;
454
+ static COMMAND_EXTENDED_ID: number;
455
+ requestedSlot: number;
456
+ slot: number;
457
+ constructor(data: DataArray);
458
+ }
459
+ declare class FileClearUpReplyD2HPacket extends HostBoundPacket {
460
+ static COMMAND_ID: number;
461
+ static COMMAND_EXTENDED_ID: number;
462
+ }
463
+ declare class FileFormatReplyD2HPacket extends HostBoundPacket {
464
+ static COMMAND_ID: number;
465
+ static COMMAND_EXTENDED_ID: number;
466
+ }
467
+ declare class GetSystemFlagsReplyD2HPacket extends HostBoundPacket {
468
+ static COMMAND_ID: number;
469
+ static COMMAND_EXTENDED_ID: number;
470
+ flags: number;
471
+ radioSearching: boolean;
472
+ radioQuality?: number;
473
+ controllerBatteryPercent?: number;
474
+ partnerControllerBatteryPercent?: number;
475
+ battery?: number;
476
+ currentProgram: number;
477
+ constructor(data: DataArray);
478
+ }
479
+ declare class GetDeviceStatusReplyD2HPacket extends HostBoundPacket {
480
+ static COMMAND_ID: number;
481
+ static COMMAND_EXTENDED_ID: number;
482
+ count: number;
483
+ devices: ISmartDeviceInfo[];
484
+ constructor(data: DataArray);
485
+ }
486
+ declare class GetSystemStatusReplyD2HPacket extends HostBoundPacket {
487
+ static COMMAND_ID: number;
488
+ static COMMAND_EXTENDED_ID: number;
489
+ systemVersion: VexFirmwareVersion;
490
+ cpu0Version: VexFirmwareVersion;
491
+ cpu1Version: VexFirmwareVersion;
492
+ nxpVersion: VexFirmwareVersion;
493
+ touchVersion: VexFirmwareVersion;
494
+ uniqueId: number;
495
+ sysflags: number[];
496
+ eventBrain: boolean;
497
+ romBootloaderActive: boolean;
498
+ ramBootloaderActive: boolean;
499
+ goldenVersion: VexFirmwareVersion;
500
+ constructor(data: DataArray);
501
+ }
502
+ declare class GetFdtStatusReplyD2HPacket extends HostBoundPacket {
503
+ static COMMAND_ID: number;
504
+ static COMMAND_EXTENDED_ID: number;
505
+ count: number;
506
+ status: unknown[];
507
+ constructor(data: DataArray);
508
+ }
509
+ declare class GetLogCountReplyD2HPacket extends HostBoundPacket {
510
+ static COMMAND_ID: number;
511
+ static COMMAND_EXTENDED_ID: number;
512
+ count: number;
513
+ constructor(data: DataArray);
514
+ }
515
+ declare class ReadLogPageReplyD2HPacket extends HostBoundPacket {
516
+ static COMMAND_ID: number;
517
+ static COMMAND_EXTENDED_ID: number;
518
+ offset: number;
519
+ count: number;
520
+ entries: unknown[];
521
+ constructor(data: DataArray);
522
+ }
523
+ declare class GetRadioStatusReplyD2HPacket extends HostBoundPacket {
524
+ static COMMAND_ID: number;
525
+ static COMMAND_EXTENDED_ID: number;
526
+ device: number;
527
+ quality: number;
528
+ strength: number;
529
+ channel: number;
530
+ timeslot: number;
531
+ constructor(data: DataArray);
532
+ }
533
+ declare class GetUserDataReplyD2HPacket extends HostBoundPacket {
534
+ static COMMAND_ID: number;
535
+ static COMMAND_EXTENDED_ID: number;
536
+ }
537
+ declare class ScreenCaptureReplyD2HPacket extends HostBoundPacket {
538
+ static COMMAND_ID: number;
539
+ static COMMAND_EXTENDED_ID: number;
540
+ }
541
+ declare class SendDashTouchReplyD2HPacket extends HostBoundPacket {
542
+ static COMMAND_ID: number;
543
+ static COMMAND_EXTENDED_ID: number;
544
+ }
545
+ declare class SelectDashReplyD2HPacket extends HostBoundPacket {
546
+ static COMMAND_ID: number;
547
+ static COMMAND_EXTENDED_ID: number;
548
+ }
549
+ declare class EnableDashReplyD2HPacket extends HostBoundPacket {
550
+ static COMMAND_ID: number;
551
+ static COMMAND_EXTENDED_ID: number;
552
+ }
553
+ declare class DisableDashReplyD2HPacket extends HostBoundPacket {
554
+ static COMMAND_ID: number;
555
+ static COMMAND_EXTENDED_ID: number;
556
+ }
557
+ declare class ReadKeyValueReplyD2HPacket extends HostBoundPacket {
558
+ static COMMAND_ID: number;
559
+ static COMMAND_EXTENDED_ID: number;
560
+ value: string;
561
+ constructor(data: DataArray);
562
+ }
563
+ declare class WriteKeyValueReplyD2HPacket extends HostBoundPacket {
564
+ static COMMAND_ID: number;
565
+ static COMMAND_EXTENDED_ID: number;
566
+ }
567
+ declare class GetSlot1to4InfoReplyD2HPacket extends HostBoundPacket {
568
+ static COMMAND_ID: number;
569
+ static COMMAND_EXTENDED_ID: number;
570
+ slotFlags: number;
571
+ slots: unknown[];
572
+ constructor(data: DataArray, start?: number);
573
+ }
574
+ declare class GetSlot5to8InfoReplyD2HPacket extends GetSlot1to4InfoReplyD2HPacket {
575
+ static COMMAND_ID: number;
576
+ static COMMAND_EXTENDED_ID: number;
577
+ slotStartIndex: number;
578
+ constructor(data: DataArray);
579
+ }
580
+ declare class FactoryStatusReplyD2HPacket extends HostBoundPacket {
581
+ static COMMAND_ID: number;
582
+ static COMMAND_EXTENDED_ID: number;
583
+ status: number;
584
+ percent: number;
585
+ constructor(data: DataArray);
586
+ }
587
+ declare class FactoryEnableReplyD2HPacket extends HostBoundPacket {
588
+ static COMMAND_ID: number;
589
+ static COMMAND_EXTENDED_ID: number;
590
+ }
591
+
592
+ declare const USER_PROG_CHUNK_SIZE = 4096;
593
+ declare const USER_FLASH_START = 50331648;
594
+ declare const USER_FLASH_SYS_CODE_START = 54525952;
595
+ declare const USER_FLASH_USR_CODE_START = 58720256;
596
+ declare const USER_FLASH_END = 134217728;
597
+ declare const USER_FLASH_MAX_FILE_SIZE = 2097152;
598
+ declare const USER_FLASH_START_B = 270532608;
599
+ declare const USER_FLASH_END_B = 272629760;
600
+ declare const USER_FLASH_START_C = 807403520;
601
+ declare const USER_FLASH_END_C = 822083584;
602
+ interface ISmartDeviceInfo {
603
+ port: number;
604
+ type: SmartDeviceType;
605
+ status: number;
606
+ betaversion: number;
607
+ version: number;
608
+ bootversion: number;
609
+ }
610
+ interface IFileBasicInfo {
611
+ filename: string;
612
+ vendor: FileVendor;
613
+ loadAddress?: number;
614
+ size?: number;
615
+ }
616
+ interface IFileMetadata {
617
+ loadAddress: number;
618
+ size: number;
619
+ crc32: number;
620
+ type: string;
621
+ timestamp: number;
622
+ version: VexFirmwareVersion;
623
+ }
624
+ interface IFileHandle extends IFileBasicInfo, IFileMetadata {
625
+ loadAddress: number;
626
+ size: number;
627
+ }
628
+ interface IFileEntry extends IFileMetadata {
629
+ index: number;
630
+ filename: string;
631
+ }
632
+ interface IFileWriteRequest {
633
+ filename: string;
634
+ vendor?: FileVendor;
635
+ loadAddress?: number;
636
+ buf?: Uint8Array;
637
+ downloadTarget: FileDownloadTarget;
638
+ exttype?: string;
639
+ autoRun: boolean;
640
+ linkedFile?: IFileWriteRequest;
641
+ }
642
+ interface IProgramInfo {
643
+ name: string;
644
+ binfile: string;
645
+ size: number;
646
+ time: Date;
647
+ slot: number;
648
+ requestedSlot: number;
649
+ }
650
+ interface IPacketCallback {
651
+ callback: (data: HostBoundPacket | ArrayBuffer | AckType) => void;
652
+ timeout: ReturnType<typeof setTimeout>;
653
+ wantedCommandId: number | undefined;
654
+ wantedCommandExId: number | undefined;
655
+ }
656
+ type DataArray = ArrayBuffer | Uint8Array;
657
+ type MatchMode = "driver" | "autonomous" | "disabled";
658
+ declare enum FileVendor {
659
+ USER = 1,
660
+ SYS = 15,
661
+ DEV1 = 16,
662
+ DEV2 = 24,
663
+ DEV3 = 32,
664
+ DEV4 = 40,
665
+ DEV5 = 48,
666
+ DEV6 = 56,
667
+ VEXVM = 64,
668
+ VEX = 240,
669
+ UNDEFINED = 241
670
+ }
671
+ declare enum FileDownloadTarget {
672
+ FILE_TARGET_DDR = 0,
673
+ FILE_TARGET_QSPI = 1,
674
+ FILE_TARGET_CBUF = 2,
675
+ FILE_TARGET_VBUF = 3,
676
+ FILE_TARGET_DDRC = 4,
677
+ FILE_TARGET_DDRE = 5,
678
+ FILE_TARGET_FLASH = 6,
679
+ FILE_TARGET_RADIO = 7,
680
+ FILE_TARGET_A1 = 13,
681
+ FILE_TARGET_B1 = 14,
682
+ FILE_TARGET_B2 = 15
683
+ }
684
+ declare enum FileInitAction {
685
+ WRITE = 1,
686
+ READ = 2
687
+ }
688
+ declare enum FileInitOption {
689
+ NONE = 0,
690
+ OVERWRITE = 1
691
+ }
692
+ declare enum FileLoadAction {
693
+ RUN = 0,
694
+ STOP = 128
695
+ }
696
+ declare enum FileExitAction {
697
+ EXIT_NONE = 0,
698
+ EXIT_RUN = 1,
699
+ EXIT_HALT = 3
700
+ }
701
+ declare enum RadioChannelType {
702
+ PIT = 0,
703
+ DOWNLOAD = 1
704
+ }
705
+ type SlotNumber = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8;
706
+ type ZerobaseSlotNumber = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7;
707
+ type PortNumber = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21;
708
+ declare enum AckType {
709
+ CDC2_ACK = 118,
710
+ CDC2_NACK = 255,
711
+ CDC2_NACK_PACKET_CRC = 206,
712
+ CDC2_NACK_CMD_LENGTH = 208,
713
+ CDC2_NACK_SIZE = 209,
714
+ CDC2_NACK_CRC = 210,
715
+ CDC2_NACK_FILE = 211,
716
+ CDC2_NACK_INIT = 212,
717
+ CDC2_NACK_FUNC = 213,
718
+ CDC2_NACK_ALIGN = 214,
719
+ CDC2_NACK_ADDR = 215,
720
+ CDC2_NACK_INCOMPLETE = 216,
721
+ CDC2_NACK_DIR_INDEX = 217,
722
+ CDC2_NACK_MAX_USER_FILES = 218,
723
+ CDC2_NACK_FILE_EXISTS = 219,
724
+ CDC2_NACK_FILE_SYS_FULL = 220,
725
+ TIMEOUT = 256,
726
+ WRITE_ERROR = 257
727
+ }
728
+ declare enum SmartDeviceType {
729
+ EMPTY = 0,
730
+ V5_POWER = 1,
731
+ MOTOR = 2,
732
+ LED = 3,
733
+ ABS_ENCODER_SENSOR = 4,
734
+ CR_MOTOR = 5,
735
+ IMU_SENSOR = 6,
736
+ DISTANCE_SENSOR = 7,
737
+ RADIO_SENSOR = 8,
738
+ CONTROLLER = 9,
739
+ BRAIN = 10,
740
+ VISION_SENSOR = 11,
741
+ ADI = 12,
742
+ PARTNER_CONTROLLER = 13,
743
+ BATTERY = 14,
744
+ SOL = 15,
745
+ OPTICAL_SENSOR = 16,
746
+ MAGNET = 17,
747
+ GPS_SENSOR = 20,
748
+ UNDEFINED_SENSOR = 255
749
+ }
750
+ declare enum SerialDeviceType {
751
+ V5_BRAIN = 1281,
752
+ V5_BRAIN_DFU = 1282,
753
+ V5_CONTROLLER = 1283,
754
+ XILINX = 256,
755
+ IQ_BRAIN = 2,
756
+ IQ_BRAIN2 = 3,
757
+ IQ_BRAIN_DFU = 255,
758
+ IQ2_BRAIN = 512,
759
+ IQ2_BRAIN_DFU = 527,
760
+ IQ2_CONTROLLER = 528,
761
+ IQ2_CONTROLLER_DFU = 543,
762
+ EXP_BRAIN = 1536,
763
+ EXP_BRAIN_DFU = 1551,
764
+ EXP_CONTROLLER = 1552,
765
+ EXP_CONTROLLER_DFU = 1567,
766
+ PIXY = 61440,
767
+ PIXY_DFU = 12,
768
+ VEXCAM = 1287,
769
+ VEXCAM_DFU = 1288,
770
+ SENSOR_TEST = 1535,
771
+ CORTEX_PROGCBL = 10,
772
+ CORTEX_BRAIN = 11,
773
+ CORTEX_JOYSTK = 12,
774
+ VEXNET_KEY_20 = 7,
775
+ VEXNET_KEY_10 = 9587,
776
+ PROLIFIC = 8963
777
+ }
778
+ /**
779
+ * found from {@link https://gist.github.com/meisZWFLZ/9ebdd694060137b44959ff7ac80ff4e8 gist}
780
+ * @see {@link https://drive.google.com/drive/folders/11pSNKakbXp7hOYBQ3HNwprFaLalnXOgR screen images}
781
+ */
782
+ declare enum SelectDashScreen {
783
+ HOME = 0,
784
+ BATTERY = 1,
785
+ LED = 3,
786
+ MATCH_CONFIG = 4,
787
+ MATCH_CONFIG_MORE = 5,
788
+ WIRING = 6,
789
+ RADIO = 8,
790
+ BRAIN = 10,
791
+ RUN_PROGRAM = 13,
792
+ DRIVE_PROGRAM_CONTROL_LEFT_MAPPING = 14,
793
+ DRIVE_PROGRAM_MENU = 15,
794
+ DEVICES = 16,
795
+ USER_PROGRAM_FOLDER = 17,
796
+ VEX_PROGRAM_FOLDER = 18,
797
+ SETTINGS = 19,
798
+ /** theres some scary looking stuff in here */
799
+ SCARY_CONFIGURATION = 20,
800
+ LANGUAGE = 21,
801
+ DRIVE_MOTOR_CONFIG = 22,
802
+ PROGRAM_MENU = 24,
803
+ SHUTDOWN = 25,
804
+ CONTROLLER_2_MAPPING = 26,
805
+ /** theres some even more scary looking stuff in here */
806
+ SCARY_CONFIGURATION_MORE = 27,
807
+ /** maybe this is scarier.. */
808
+ CONFIRM_XX = 28,
809
+ CONTROLLER_1_MAPPING = 29,
810
+ DRIVE_PROGRAM_CONTROL_DUAL_MAPPING = 30,
811
+ DRIVE_PROGRAM_CONTROL_SPLIT_MAPPING = 31,
812
+ DRIVE_PROGRAM_CONTROL_RIGHT_MAPPING = 32,
813
+ /** thats such a bad name */
814
+ MATCH_2_4_PLAYERS = 33,
815
+ EVENT_LOG = 34,
816
+ USER_PROGRAM_WIRING = 40,
817
+ CLAWBOT_PROGRAM_MENU = 41,
818
+ /** aka regulatory */
819
+ ABOUT = 42,
820
+ LANGUAGE_MORE = 43,
821
+ OBJECT_COLOR = 45,
822
+ SIGNATURE_ID = 46,
823
+ LOG_DATA = 47
824
+ }
825
+
826
+ declare class VexEventEmitter {
827
+ handlerMap: Map<string | symbol, Array<(...args: unknown[]) => void>>;
828
+ constructor();
829
+ on(eventName: string | symbol, listener: (...args: unknown[]) => void): void;
830
+ remove(eventName: string | symbol, listener: (...args: unknown[]) => void): void;
831
+ emit(eventName: string | symbol, data: unknown): void;
832
+ clearListeners(): void;
833
+ }
834
+ declare class VexEventTarget {
835
+ emitter: VexEventEmitter;
836
+ constructor();
837
+ emit(eventName: string | symbol, data: unknown): void;
838
+ on(eventName: string | symbol, listener: (...args: unknown[]) => void): void;
839
+ remove(eventName: string | symbol, listener: (...args: unknown[]) => void): void;
840
+ clearListeners(): void;
841
+ }
842
+
843
+ declare class ProgramIniConfig {
844
+ baseName: string;
845
+ autorun: boolean;
846
+ project: {
847
+ version: string;
848
+ ide: string;
849
+ file: string;
850
+ };
851
+ program: {
852
+ version: string;
853
+ name: string;
854
+ slot: ZerobaseSlotNumber;
855
+ icon: string;
856
+ iconalt: string;
857
+ description: string;
858
+ date: string;
859
+ timezone: string;
860
+ };
861
+ config: Record<number, string>;
862
+ controller1: Record<string, string>;
863
+ controller2: Record<string, string>;
864
+ constructor();
865
+ setProgramDate(date: Date): void;
866
+ createIni(): string;
867
+ dec2(value: number): string;
868
+ }
869
+
870
+ /**
871
+ * A connection to a V5 device.
872
+ * Emit events: connected, disconnected
873
+ */
874
+ declare class VexSerialConnection extends VexEventTarget {
875
+ filters: SerialPortFilter[];
876
+ writer: WritableStreamDefaultWriter<unknown> | undefined;
877
+ reader: ReadableStreamDefaultReader<unknown> | undefined;
878
+ port: SerialPort | undefined;
879
+ serial: Serial;
880
+ callbacksQueue: IPacketCallback[];
881
+ get isConnected(): boolean;
882
+ constructor(serial: Serial);
883
+ close(): Promise<void>;
884
+ open(use?: number | undefined, askUser?: boolean): Promise<boolean | undefined>;
885
+ writeData(rawData: DeviceBoundPacket | Uint8Array, resolve: (data: HostBoundPacket | ArrayBuffer | AckType) => void, timeout?: number): void;
886
+ writeDataAsync(rawData: DeviceBoundPacket | Uint8Array, timeout?: number): Promise<HostBoundPacket | ArrayBuffer | AckType>;
887
+ protected readData(cache: Uint8Array, expectedSize: number): Promise<Uint8Array>;
888
+ protected startReader(): Promise<void>;
889
+ query1(): Promise<Query1ReplyD2HPacket | null>;
890
+ getSystemVersion(): Promise<VexFirmwareVersion | null>;
891
+ }
892
+ declare class V5SerialConnection extends VexSerialConnection {
893
+ filters: SerialPortFilter[];
894
+ getDeviceStatus(): Promise<GetDeviceStatusReplyD2HPacket | null>;
895
+ getRadioStatus(): Promise<GetRadioStatusReplyD2HPacket | null>;
896
+ getSystemFlags(): Promise<GetSystemFlagsReplyD2HPacket | null>;
897
+ getSystemStatus(timeout?: number): Promise<GetSystemStatusReplyD2HPacket | null>;
898
+ getMatchStatus(): Promise<MatchStatusReplyD2HPacket | null>;
899
+ uploadProgramToDevice(iniConfig: ProgramIniConfig, binFileBuf: Uint8Array, coldFileBuf: Uint8Array | undefined, progressCallback: (state: string, current: number, total: number) => void): Promise<boolean | undefined>;
900
+ downloadFileToHost(request: IFileBasicInfo, downloadTarget?: FileDownloadTarget, progressCallback?: (current: number, total: number) => void): Promise<Uint8Array>;
901
+ uploadFileToDevice(request: IFileWriteRequest, progressCallback?: (current: number, total: number) => void): Promise<boolean>;
902
+ setMatchMode(mode: MatchMode): Promise<MatchModeReplyD2HPacket | null>;
903
+ loadProgram(value: SlotNumber | string): Promise<LoadFileActionReplyD2HPacket | null>;
904
+ stopProgram(): Promise<LoadFileActionReplyD2HPacket | null>;
905
+ mockTouch(x: number, y: number, press: boolean): Promise<SendDashTouchReplyD2HPacket | null>;
906
+ /** @param port untested */
907
+ openScreen(screen: number | SelectDashScreen, port: number): Promise<SelectDashReplyD2HPacket | null>;
908
+ }
909
+
910
+ declare function downloadFileFromInternet(link: string): Promise<ArrayBuffer>;
911
+ declare function sleepUntilAsync(f: () => Promise<boolean>, timeout: number, interval?: number): Promise<boolean>;
912
+ declare function sleepUntil(f: () => boolean, timeout: number, interval?: number): Promise<boolean>;
913
+ declare function sleep(ms: number): Promise<unknown>;
914
+ declare abstract class VexSerialDevice extends VexEventTarget {
915
+ connection: V5SerialConnection | undefined;
916
+ defaultSerial: Serial;
917
+ get isConnected(): boolean;
918
+ get deviceType(): SerialDeviceType | undefined;
919
+ constructor(defaultSerial: Serial);
920
+ abstract connect(conn?: V5SerialConnection): Promise<boolean>;
921
+ abstract disconnect(): void;
922
+ }
923
+ declare class V5SerialDeviceState {
924
+ _instance: V5SerialDevice;
925
+ _isFileTransferring: boolean;
926
+ brain: {
927
+ activeProgram: number;
928
+ battery: {
929
+ batteryPercent: number;
930
+ isCharging: boolean;
931
+ };
932
+ button: {
933
+ isPressed: boolean;
934
+ isDoublePressed: boolean;
935
+ };
936
+ cpu0Version: VexFirmwareVersion;
937
+ cpu1Version: VexFirmwareVersion;
938
+ isAvailable: boolean;
939
+ settings: {
940
+ isScreenReversed: boolean;
941
+ isWhiteTheme: boolean;
942
+ usingLanguage: number;
943
+ };
944
+ systemVersion: VexFirmwareVersion;
945
+ uniqueId: number;
946
+ };
947
+ controllers: ({
948
+ battery: number;
949
+ isAvailable: boolean;
950
+ isCharging: boolean;
951
+ } | {
952
+ battery: number;
953
+ isAvailable: boolean;
954
+ isCharging?: undefined;
955
+ })[];
956
+ devices: Array<ISmartDeviceInfo | undefined>;
957
+ isFieldControllerConnected: boolean;
958
+ matchMode: MatchMode;
959
+ radio: {
960
+ channel: number;
961
+ isAvailable: boolean;
962
+ isConnected: boolean;
963
+ isVexNet: boolean;
964
+ isRadioData: boolean;
965
+ latency: number;
966
+ signalQuality: number;
967
+ signalStrength: number;
968
+ };
969
+ constructor(instance: V5SerialDevice);
970
+ }
971
+ declare class V5Brain {
972
+ private readonly state;
973
+ constructor(state: V5SerialDeviceState);
974
+ get isRunningProgram(): boolean;
975
+ get activeProgram(): number;
976
+ set activeProgram(value: number);
977
+ get battery(): V5Battery;
978
+ get button(): V5BrainButton;
979
+ get cpu0Version(): VexFirmwareVersion;
980
+ get cpu1Version(): VexFirmwareVersion;
981
+ get isAvailable(): boolean;
982
+ get settings(): V5BrainSettings;
983
+ get systemVersion(): VexFirmwareVersion;
984
+ get uniqueId(): number;
985
+ getValue(key: string): Promise<string | undefined>;
986
+ setValue(key: string, value: string): Promise<boolean>;
987
+ listFiles(vendor?: FileVendor): Promise<IFileHandle[] | undefined>;
988
+ listProgram(): Promise<IProgramInfo[] | undefined>;
989
+ readFile(request: IFileBasicInfo | string, downloadTarget?: FileDownloadTarget, progressCallback?: (current: number, total: number) => void): Promise<Uint8Array | undefined>;
990
+ removeFile(request: IFileBasicInfo | string): Promise<boolean | undefined>;
991
+ removeAllFiles(): Promise<boolean | undefined>;
992
+ uploadFirmware(publicUrl?: string, usingVersion?: string, progressCallback?: (state: string, current: number, total: number) => void): Promise<boolean | undefined>;
993
+ uploadProgram(iniConfig: ProgramIniConfig, binFileBuf: Uint8Array, coldFileBuf: Uint8Array | undefined, progressCallback: (state: string, current: number, total: number) => void): Promise<boolean | undefined>;
994
+ writeFile(request: IFileWriteRequest, progressCallback?: (current: number, total: number) => void): Promise<boolean | undefined>;
995
+ /**
996
+ *
997
+ * @param progressCallback Informs the progress of the download.
998
+ * @returns array of bytes where each pixel is represented by 3 consecutive bytes (rgb).
999
+ * This array's length is 272 width * 480 height * 3 channels = 391680 bytes.
1000
+ */
1001
+ captureScreen(progressCallback?: (current: number, total: number) => void): Promise<Uint8Array | undefined>;
1002
+ }
1003
+ declare class V5Battery {
1004
+ private readonly state;
1005
+ constructor(state: V5SerialDeviceState);
1006
+ get batteryPercent(): number;
1007
+ get isCharging(): boolean;
1008
+ }
1009
+ declare class V5BrainButton {
1010
+ private readonly state;
1011
+ constructor(state: V5SerialDeviceState);
1012
+ get isPressed(): boolean;
1013
+ get isDoublePressed(): boolean;
1014
+ }
1015
+ declare class V5BrainSettings {
1016
+ private readonly state;
1017
+ constructor(state: V5SerialDeviceState);
1018
+ get isScreenReversed(): boolean;
1019
+ get isWhiteTheme(): boolean;
1020
+ get usingLanguage(): number;
1021
+ }
1022
+ declare class V5Controller {
1023
+ private readonly state;
1024
+ private readonly controllerIndex;
1025
+ constructor(state: V5SerialDeviceState, controllerIndex: number);
1026
+ get batteryPercent(): number;
1027
+ get isMasterController(): boolean;
1028
+ get isAvailable(): boolean;
1029
+ get isCharging(): boolean | undefined;
1030
+ }
1031
+ declare class V5SmartDevice {
1032
+ private readonly state;
1033
+ private readonly deviceIndex;
1034
+ constructor(state: V5SerialDeviceState, index: number);
1035
+ protected getDeviceInfo(): ISmartDeviceInfo | undefined;
1036
+ get isAvailable(): boolean;
1037
+ get port(): number;
1038
+ get type(): SmartDeviceType;
1039
+ get version(): number;
1040
+ }
1041
+ declare class V5Radio {
1042
+ private readonly state;
1043
+ constructor(state: V5SerialDeviceState);
1044
+ get channel(): number;
1045
+ get isAvailable(): boolean;
1046
+ get isConnected(): boolean;
1047
+ get isVexNet(): boolean;
1048
+ get isRadioData(): boolean;
1049
+ get latency(): number;
1050
+ changeChannel(channel: RadioChannelType): Promise<boolean>;
1051
+ }
1052
+ declare class V5SerialDevice extends VexSerialDevice {
1053
+ autoReconnect: boolean;
1054
+ autoRefresh: boolean;
1055
+ pauseRefreshOnFileTransfer: boolean;
1056
+ protected _isReconnecting: boolean;
1057
+ private _refreshInterval;
1058
+ state: V5SerialDeviceState;
1059
+ constructor(defaultSerial: Serial);
1060
+ get isV5Controller(): boolean;
1061
+ get brain(): V5Brain;
1062
+ get controllers(): [V5Controller, V5Controller];
1063
+ get devices(): V5SmartDevice[];
1064
+ get isFieldControllerConnected(): boolean;
1065
+ get matchMode(): MatchMode;
1066
+ set matchMode(value: MatchMode);
1067
+ get radio(): V5Radio;
1068
+ mockTouch(x: number, y: number, press: boolean): Promise<boolean>;
1069
+ connect(conn?: V5SerialConnection): Promise<boolean>;
1070
+ disconnect(): Promise<void>;
1071
+ dispose(): Promise<void>;
1072
+ /**
1073
+ * @param timeout defaults to 0. If timeout is 0, then it will attempt to reconnect forever
1074
+ * @returns
1075
+ */
1076
+ reconnect(timeout?: number): Promise<boolean>;
1077
+ private doAfterConnect;
1078
+ refresh(): Promise<boolean>;
1079
+ }
1080
+
1081
+ declare class PacketView extends DataView {
1082
+ position: number;
1083
+ littleEndianDefault: boolean;
1084
+ constructor(buffer: ArrayBuffer, offset?: number, length?: number);
1085
+ static fromPacket(packet: HostBoundPacket): PacketView;
1086
+ nextInt8(): number;
1087
+ nextUint8(): number;
1088
+ nextInt16(littleEndian?: boolean): number;
1089
+ nextUint16(littleEndian?: boolean): number;
1090
+ nextInt32(littleEndian?: boolean): number;
1091
+ nextUint32(littleEndian?: boolean): number;
1092
+ nextString(length: number): string;
1093
+ nextNTBS(length: number): string;
1094
+ nextVarNTBS(length: number): string;
1095
+ nextVersion(reverse?: boolean): VexFirmwareVersion;
1096
+ }
1097
+
1098
+ export { AckType, CrcGenerator, DataArray, DeviceBoundPacket, DisableDashH2DPacket, DisableDashReplyD2HPacket, EnableDashH2DPacket, EnableDashReplyD2HPacket, EraseFileH2DPacket, EraseFileReplyD2HPacket, ExitFileTransferH2DPacket, ExitFileTransferReplyD2HPacket, FactoryEnableH2DPacket, FactoryEnableReplyD2HPacket, FactoryStatusH2DPacket, FactoryStatusReplyD2HPacket, FileClearUpH2DPacket, FileClearUpReplyD2HPacket, FileControlH2DPacket, FileControlReplyD2HPacket, FileDownloadTarget, FileExitAction, FileFormatH2DPacket, FileFormatReplyD2HPacket, FileInitAction, FileInitOption, FileLoadAction, FileVendor, GetDeviceStatusH2DPacket, GetDeviceStatusReplyD2HPacket, GetDirectoryEntryH2DPacket, GetDirectoryEntryReplyD2HPacket, GetDirectoryFileCountH2DPacket, GetDirectoryFileCountReplyD2HPacket, GetFdtStatusH2DPacket, GetFdtStatusReplyD2HPacket, GetFileMetadataH2DPacket, GetFileMetadataReplyD2HPacket, GetLogCountH2DPacket, GetLogCountReplyD2HPacket, GetMatchStatusH2DPacket, GetProgramSlotInfoH2DPacket, GetProgramSlotInfoReplyD2HPacket, GetRadioModeH2DPacket, GetRadioStatusH2DPacket, GetRadioStatusReplyD2HPacket, GetSlot1to4InfoH2DPacket, GetSlot1to4InfoReplyD2HPacket, GetSlot5to8InfoH2DPacket, GetSlot5to8InfoReplyD2HPacket, GetSystemFlagsH2DPacket, GetSystemFlagsReplyD2HPacket, GetSystemStatusH2DPacket, GetSystemStatusReplyD2HPacket, GetUserDataH2DPacket, GetUserDataReplyD2HPacket, HostBoundPacket, IFileBasicInfo, IFileEntry, IFileHandle, IFileMetadata, IFileWriteRequest, IPacketCallback, IProgramInfo, ISmartDeviceInfo, InitFileTransferH2DPacket, InitFileTransferReplyD2HPacket, LinkFileH2DPacket, LinkFileReplyD2HPacket, LoadFileActionH2DPacket, LoadFileActionReplyD2HPacket, MatchMode, MatchModeReplyD2HPacket, MatchStatusReplyD2HPacket, Packet, PacketEncoder, PacketView, PortNumber, ProgramIniConfig, Query1H2DPacket, Query1ReplyD2HPacket, RadioChannelType, ReadFileH2DPacket, ReadFileReplyD2HPacket, ReadKeyValueH2DPacket, ReadKeyValueReplyD2HPacket, ReadLogPageH2DPacket, ReadLogPageReplyD2HPacket, ScreenCaptureH2DPacket, ScreenCaptureReplyD2HPacket, SelectDashH2DPacket, SelectDashReplyD2HPacket, SelectDashScreen, SendDashTouchH2DPacket, SendDashTouchReplyD2HPacket, SerialDeviceType, SetFileMetadataH2DPacket, SetFileMetadataReplyD2HPacket, SlotNumber, SmartDeviceType, SystemVersionH2DPacket, SystemVersionReplyD2HPacket, USER_FLASH_END, USER_FLASH_END_B, USER_FLASH_END_C, USER_FLASH_MAX_FILE_SIZE, USER_FLASH_START, USER_FLASH_START_B, USER_FLASH_START_C, USER_FLASH_SYS_CODE_START, USER_FLASH_USR_CODE_START, USER_PROG_CHUNK_SIZE, UpdateMatchModeH2DPacket, V5Battery, V5Brain, V5BrainButton, V5BrainSettings, V5Controller, V5Radio, V5SerialConnection, V5SerialDevice, V5SmartDevice, VexEventEmitter, VexEventTarget, VexFirmwareVersion, VexSerialConnection, VexSerialDevice, WriteFileH2DPacket, WriteFileReplyD2HPacket, WriteKeyValueH2DPacket, WriteKeyValueReplyD2HPacket, ZerobaseSlotNumber, downloadFileFromInternet, sleep, sleepUntil, sleepUntilAsync };