@v5x/serial 0.5.4 → 0.5.5

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 (54) hide show
  1. package/README.md +72 -6
  2. package/dist/Vex.d.ts +4 -4
  3. package/dist/VexCRC.d.ts +0 -1
  4. package/dist/VexConnection.d.ts +81 -23
  5. package/dist/VexDevice.d.ts +41 -155
  6. package/{dts/VexDevice.d.ts → dist/VexDeviceState.d.ts} +63 -55
  7. package/dist/VexError.d.ts +47 -0
  8. package/dist/VexFirmware.d.ts +45 -0
  9. package/dist/VexIniConfig.d.ts +1 -1
  10. package/dist/VexPacket.d.ts +3 -512
  11. package/dist/VexPacketBase.d.ts +21 -0
  12. package/dist/VexPacketEncoder.d.ts +55 -0
  13. package/{dts/VexPacket.d.ts → dist/VexPacketModels.d.ts} +3 -107
  14. package/dist/VexPacketView.d.ts +3 -3
  15. package/dist/VexTransfers.d.ts +20 -0
  16. package/dist/index.cjs +4541 -0
  17. package/dist/index.cjs.map +25 -0
  18. package/dist/index.d.ts +9 -9
  19. package/dist/index.js +4460 -0
  20. package/dist/index.js.map +25 -0
  21. package/package.json +39 -71
  22. package/dist/v5-serial-protocol.cjs.js +0 -4516
  23. package/dist/v5-serial-protocol.cjs.js.map +0 -1
  24. package/dist/v5-serial-protocol.es.js +0 -4401
  25. package/dist/v5-serial-protocol.es.js.map +0 -1
  26. package/dts/Vex.d.ts +0 -235
  27. package/dts/Vex.js +0 -189
  28. package/dts/Vex.js.map +0 -1
  29. package/dts/VexCRC.d.ts +0 -19
  30. package/dts/VexCRC.js +0 -89
  31. package/dts/VexCRC.js.map +0 -1
  32. package/dts/VexConnection.d.ts +0 -45
  33. package/dts/VexConnection.js +0 -500
  34. package/dts/VexConnection.js.map +0 -1
  35. package/dts/VexDevice.js +0 -944
  36. package/dts/VexDevice.js.map +0 -1
  37. package/dts/VexEvent.d.ts +0 -16
  38. package/dts/VexEvent.js +0 -47
  39. package/dts/VexEvent.js.map +0 -1
  40. package/dts/VexFirmwareVersion.d.ts +0 -55
  41. package/dts/VexFirmwareVersion.js +0 -104
  42. package/dts/VexFirmwareVersion.js.map +0 -1
  43. package/dts/VexIniConfig.d.ts +0 -27
  44. package/dts/VexIniConfig.js +0 -122
  45. package/dts/VexIniConfig.js.map +0 -1
  46. package/dts/VexPacket.js +0 -1036
  47. package/dts/VexPacket.js.map +0 -1
  48. package/dts/VexPacketView.d.ts +0 -18
  49. package/dts/VexPacketView.js +0 -84
  50. package/dts/VexPacketView.js.map +0 -1
  51. package/dts/index.d.ts +0 -9
  52. package/dts/index.js +0 -10
  53. package/dts/index.js.map +0 -1
  54. package/index.d.ts +0 -1098
@@ -1,500 +0,0 @@
1
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
- return new (P || (P = Promise))(function (resolve, reject) {
4
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
- step((generator = generator.apply(thisArg, _arguments || [])).next());
8
- });
9
- };
10
- import { AckType, FileDownloadTarget, FileExitAction, FileInitAction, FileInitOption, FileLoadAction, FileVendor, SerialDeviceType, USER_FLASH_USR_CODE_START, USER_PROG_CHUNK_SIZE, } from "./Vex";
11
- import { VexEventTarget } from "./VexEvent";
12
- import { MatchStatusReplyD2HPacket, DeviceBoundPacket, GetMatchStatusH2DPacket, UpdateMatchModeH2DPacket, MatchModeReplyD2HPacket, GetSystemStatusReplyD2HPacket, GetSystemStatusH2DPacket, InitFileTransferH2DPacket, InitFileTransferReplyD2HPacket, LinkFileH2DPacket, ExitFileTransferH2DPacket, ExitFileTransferReplyD2HPacket, WriteFileReplyD2HPacket, WriteFileH2DPacket, LinkFileReplyD2HPacket, ReadFileH2DPacket, ReadFileReplyD2HPacket, PacketEncoder, SystemVersionH2DPacket, SystemVersionReplyD2HPacket, Query1H2DPacket, Query1ReplyD2HPacket, LoadFileActionH2DPacket, LoadFileActionReplyD2HPacket, GetSystemFlagsH2DPacket, GetSystemFlagsReplyD2HPacket, GetRadioStatusH2DPacket, GetRadioStatusReplyD2HPacket, GetDeviceStatusH2DPacket, GetDeviceStatusReplyD2HPacket, SendDashTouchH2DPacket, SendDashTouchReplyD2HPacket, SelectDashH2DPacket, } from "./VexPacket";
13
- const thePacketEncoder = PacketEncoder.getInstance();
14
- /**
15
- * A connection to a V5 device.
16
- * Emit events: connected, disconnected
17
- */
18
- export class VexSerialConnection extends VexEventTarget {
19
- get isConnected() {
20
- return (this.port !== undefined &&
21
- this.reader !== undefined &&
22
- this.writer !== undefined);
23
- }
24
- constructor(serial) {
25
- super();
26
- this.filters = [{ usbVendorId: 10376 }];
27
- this.callbacksQueue = [];
28
- this.serial = serial;
29
- }
30
- close() {
31
- var _a, _b, _c;
32
- return __awaiter(this, void 0, void 0, function* () {
33
- if (!this.isConnected)
34
- return;
35
- try {
36
- yield ((_a = this.writer) === null || _a === void 0 ? void 0 : _a.close());
37
- this.writer = undefined;
38
- }
39
- catch (e) { }
40
- try {
41
- yield ((_b = this.reader) === null || _b === void 0 ? void 0 : _b.cancel());
42
- try {
43
- while (this.reader != null) {
44
- const { done } = yield this.reader.read();
45
- if (done)
46
- break;
47
- }
48
- }
49
- catch (e) { }
50
- this.reader = undefined;
51
- }
52
- catch (e) { }
53
- try {
54
- yield new Promise((resolve) => setTimeout(resolve, 1)); // HACK: wait for the lock to be released
55
- yield ((_c = this.port) === null || _c === void 0 ? void 0 : _c.close());
56
- this.port = undefined;
57
- }
58
- catch (e) {
59
- console.warn("Close port error.", e);
60
- }
61
- finally {
62
- this.emit("disconnected", undefined);
63
- }
64
- });
65
- }
66
- open(use = 0, askUser = true) {
67
- return __awaiter(this, void 0, void 0, function* () {
68
- if (this.port !== undefined)
69
- throw new Error("Already connected.");
70
- let port;
71
- if (use !== undefined) {
72
- const ports = (yield this.serial.getPorts())
73
- .filter((p) => {
74
- const info = p.getInfo();
75
- return this.filters.find((f) => (f.usbVendorId === undefined ||
76
- f.usbVendorId === info.usbVendorId) &&
77
- (f.usbProductId === undefined ||
78
- f.usbProductId === info.usbProductId));
79
- })
80
- .filter((e) => e.readable !== null);
81
- port = ports[use];
82
- }
83
- if (port == null && askUser) {
84
- try {
85
- port = yield this.serial.requestPort({ filters: this.filters });
86
- }
87
- catch (e) {
88
- //console.warn("No valid port selected.");
89
- }
90
- }
91
- if (port == null)
92
- return undefined;
93
- if (port.readable != null)
94
- return false;
95
- try {
96
- yield port.open({ baudRate: 115200 });
97
- this.port = port;
98
- this.port.addEventListener("disconnect", () => {
99
- void this.close();
100
- });
101
- this.emit("connected", undefined);
102
- this.writer = this.port.writable.getWriter();
103
- this.reader = this.port.readable.getReader();
104
- void this.startReader();
105
- return true;
106
- }
107
- catch (e) {
108
- return false;
109
- }
110
- });
111
- }
112
- writeData(rawData, resolve, timeout = 1000) {
113
- void this.writeDataAsync(rawData, timeout).then(resolve);
114
- }
115
- writeDataAsync(rawData, timeout = 1000) {
116
- return __awaiter(this, void 0, void 0, function* () {
117
- return yield new Promise((resolve) => {
118
- if (this.writer === undefined) {
119
- resolve(AckType.CDC2_NACK);
120
- return;
121
- }
122
- const data = rawData instanceof DeviceBoundPacket ? rawData.data : rawData;
123
- const cb = {
124
- callback: resolve,
125
- timeout: setTimeout(() => {
126
- var _a;
127
- (_a = this.callbacksQueue.shift()) === null || _a === void 0 ? void 0 : _a.callback(AckType.TIMEOUT);
128
- }, timeout),
129
- wantedCommandId: rawData instanceof DeviceBoundPacket
130
- ? // eslint-disable-next-line @typescript-eslint/no-explicit-any
131
- rawData.constructor.COMMAND_ID
132
- : undefined,
133
- wantedCommandExId: rawData instanceof DeviceBoundPacket
134
- ? // eslint-disable-next-line @typescript-eslint/no-explicit-any
135
- rawData.constructor.COMMAND_EXTENDED_ID
136
- : undefined,
137
- };
138
- this.callbacksQueue.push(cb);
139
- this.writer
140
- .write(data)
141
- .then(() => {
142
- logData(data, 100);
143
- })
144
- .catch(() => {
145
- this.callbacksQueue.splice(this.callbacksQueue.indexOf(cb), 1);
146
- resolve(AckType.WRITE_ERROR);
147
- });
148
- });
149
- });
150
- }
151
- readData(cache, expectedSize) {
152
- return __awaiter(this, void 0, void 0, function* () {
153
- if (this.reader == null)
154
- throw new Error("No reader");
155
- while (cache.byteLength < expectedSize) {
156
- const { value: readData, done: isDone } = yield this.reader.read();
157
- if (isDone)
158
- throw new Error("No data");
159
- cache = binaryArrayJoin(cache, readData);
160
- }
161
- return cache;
162
- });
163
- }
164
- startReader() {
165
- return __awaiter(this, void 0, void 0, function* () {
166
- let cache = new Uint8Array([]);
167
- let sliceIdx = 0;
168
- for (;;)
169
- try {
170
- cache = yield this.readData(cache, 5);
171
- sliceIdx = 0;
172
- if (!thePacketEncoder.validateHeader(cache))
173
- throw new Error("Invalid header");
174
- const payloadExpectedSize = thePacketEncoder.getPayloadSize(cache);
175
- const n = payloadExpectedSize > 128 ? 5 : 4;
176
- const totalSize = n + payloadExpectedSize;
177
- cache = yield this.readData(cache, totalSize);
178
- sliceIdx = totalSize;
179
- const cmdId = cache[2];
180
- const hasExtId = cmdId === 88 || cmdId === 86;
181
- const cmdExId = hasExtId ? cache[n] : undefined;
182
- const ack = cache[n + 1];
183
- if (hasExtId) {
184
- if (!thePacketEncoder.validateMessageCdc(cache))
185
- throw new Error("Invalid message CDC");
186
- }
187
- let callbackInfo;
188
- let wantedCmdId;
189
- let wantedCmdExId;
190
- let tryIdx = 0;
191
- while ((callbackInfo = this.callbacksQueue[tryIdx++]) !== null) {
192
- wantedCmdId = callbackInfo === null || callbackInfo === void 0 ? void 0 : callbackInfo.wantedCommandId;
193
- wantedCmdExId = callbackInfo === null || callbackInfo === void 0 ? void 0 : callbackInfo.wantedCommandExId;
194
- if ((wantedCmdId !== undefined && wantedCmdId !== cmdId) ||
195
- (wantedCmdExId !== undefined && wantedCmdExId !== cmdExId)) {
196
- continue;
197
- }
198
- break;
199
- }
200
- if (callbackInfo === undefined) {
201
- console.warn("Unexpected command", cmdId, cmdExId, ack);
202
- // TODO: trigger event
203
- continue;
204
- }
205
- const data = cache.slice(0, sliceIdx);
206
- const PackageType = thePacketEncoder.allPacketsTable[wantedCmdId + " " + wantedCmdExId];
207
- if ((wantedCmdId === undefined && wantedCmdExId === undefined) ||
208
- PackageType === undefined) {
209
- callbackInfo.callback(data.buffer.slice(data.byteOffset, data.byteOffset + data.byteLength));
210
- }
211
- else {
212
- if (!hasExtId || PackageType.isValidPacket(data, n)) {
213
- callbackInfo.callback(new PackageType(data));
214
- }
215
- else {
216
- console.warn("ack", ack);
217
- callbackInfo.callback(ack);
218
- }
219
- }
220
- clearTimeout(callbackInfo.timeout);
221
- this.callbacksQueue.splice(tryIdx - 1, 1);
222
- }
223
- catch (e) {
224
- if (!(e instanceof Error && e.message === "No data")) {
225
- console.warn("Read error.", e, cache);
226
- }
227
- yield this.close();
228
- break;
229
- }
230
- finally {
231
- cache = cache.slice(sliceIdx);
232
- }
233
- });
234
- }
235
- query1() {
236
- return __awaiter(this, void 0, void 0, function* () {
237
- const result = yield this.writeDataAsync(new Query1H2DPacket(), 100);
238
- return result instanceof Query1ReplyD2HPacket ? result : null;
239
- });
240
- }
241
- getSystemVersion() {
242
- return __awaiter(this, void 0, void 0, function* () {
243
- const result = yield this.writeDataAsync(new SystemVersionH2DPacket());
244
- return result instanceof SystemVersionReplyD2HPacket
245
- ? result.version
246
- : null;
247
- });
248
- }
249
- }
250
- export class V5SerialConnection extends VexSerialConnection {
251
- constructor() {
252
- super(...arguments);
253
- this.filters = [
254
- { usbVendorId: 10376, usbProductId: SerialDeviceType.V5_BRAIN },
255
- { usbVendorId: 10376, usbProductId: SerialDeviceType.V5_BRAIN_DFU },
256
- { usbVendorId: 10376, usbProductId: SerialDeviceType.V5_CONTROLLER },
257
- ];
258
- }
259
- getDeviceStatus() {
260
- return __awaiter(this, void 0, void 0, function* () {
261
- const result = yield this.writeDataAsync(new GetDeviceStatusH2DPacket());
262
- return result instanceof GetDeviceStatusReplyD2HPacket ? result : null;
263
- });
264
- }
265
- getRadioStatus() {
266
- return __awaiter(this, void 0, void 0, function* () {
267
- const result = yield this.writeDataAsync(new GetRadioStatusH2DPacket());
268
- return result instanceof GetRadioStatusReplyD2HPacket ? result : null;
269
- });
270
- }
271
- getSystemFlags() {
272
- return __awaiter(this, void 0, void 0, function* () {
273
- const result = yield this.writeDataAsync(new GetSystemFlagsH2DPacket());
274
- return result instanceof GetSystemFlagsReplyD2HPacket ? result : null;
275
- });
276
- }
277
- getSystemStatus(timeout = 1000) {
278
- return __awaiter(this, void 0, void 0, function* () {
279
- const result = yield this.writeDataAsync(new GetSystemStatusH2DPacket(), timeout);
280
- return result instanceof GetSystemStatusReplyD2HPacket ? result : null;
281
- });
282
- }
283
- getMatchStatus() {
284
- return __awaiter(this, void 0, void 0, function* () {
285
- const result = yield this.writeDataAsync(new GetMatchStatusH2DPacket());
286
- return result instanceof MatchStatusReplyD2HPacket ? result : null;
287
- });
288
- }
289
- uploadProgramToDevice(iniConfig, binFileBuf, coldFileBuf, progressCallback) {
290
- return __awaiter(this, void 0, void 0, function* () {
291
- const iniFileBuffer = new TextEncoder().encode(iniConfig.createIni());
292
- const basename = iniConfig.baseName;
293
- const iniRequest = {
294
- filename: basename + ".ini",
295
- buf: iniFileBuffer,
296
- downloadTarget: FileDownloadTarget.FILE_TARGET_QSPI,
297
- vendor: FileVendor.USER,
298
- autoRun: false,
299
- };
300
- const r1 = yield this.uploadFileToDevice(iniRequest, (current, total) => {
301
- progressCallback("INI", current, total);
302
- });
303
- if (!r1)
304
- return false;
305
- // let prjRequest = { filename: basename + '.prj', buf: prjfile, vid: FileVendor.USER, loadAddr: undefined, exttype: 0, linkedFile: undefined };
306
- // await this.uploadFileToDeviceAsync(prjRequest, onProgress);
307
- const coldRequest = coldFileBuf !== undefined
308
- ? {
309
- filename: basename + "_lib.bin",
310
- buf: coldFileBuf,
311
- downloadTarget: FileDownloadTarget.FILE_TARGET_QSPI,
312
- vendor: FileVendor.DEV2,
313
- autoRun: false,
314
- }
315
- : undefined;
316
- if (coldRequest != null) {
317
- const r2 = yield this.uploadFileToDevice(coldRequest, (current, total) => {
318
- progressCallback("COLD", current, total);
319
- });
320
- if (!r2)
321
- return;
322
- }
323
- const binRequest = {
324
- filename: basename + ".bin",
325
- buf: binFileBuf,
326
- downloadTarget: FileDownloadTarget.FILE_TARGET_QSPI,
327
- vendor: FileVendor.USER,
328
- loadAddress: coldFileBuf != null ? 0x07800000 : undefined,
329
- autoRun: iniConfig.autorun,
330
- linkedFile: coldRequest,
331
- };
332
- const r3 = yield this.uploadFileToDevice(binRequest, (current, total) => {
333
- progressCallback("BIN", current, total);
334
- });
335
- return r3;
336
- });
337
- }
338
- downloadFileToHost(request, downloadTarget = FileDownloadTarget.FILE_TARGET_QSPI, progressCallback) {
339
- return __awaiter(this, void 0, void 0, function* () {
340
- // TODO assert that the device is connected
341
- const { filename, vendor, loadAddress, size } = request;
342
- let nextAddress = loadAddress !== null && loadAddress !== void 0 ? loadAddress : USER_FLASH_USR_CODE_START;
343
- const p1 = yield this.writeDataAsync(new InitFileTransferH2DPacket(FileInitAction.READ, downloadTarget, vendor, FileInitOption.NONE, new Uint8Array(), nextAddress, filename, ""));
344
- if (!(p1 instanceof InitFileTransferReplyD2HPacket))
345
- throw new Error("InitFileTransferH2DPacket failed");
346
- const fileSize = size !== null && size !== void 0 ? size : p1.fileSize;
347
- // console.log("size:", fileSize);
348
- const bufferChunkSize = p1.windowSize > 0 && p1.windowSize <= USER_PROG_CHUNK_SIZE
349
- ? p1.windowSize
350
- : USER_PROG_CHUNK_SIZE;
351
- let bufferOffset = 0;
352
- let fileBuf = new Uint8Array(fileSize + bufferChunkSize);
353
- let lastBlock = false;
354
- while (!lastBlock) {
355
- if (fileSize <= bufferOffset + bufferChunkSize) {
356
- lastBlock = true;
357
- }
358
- const p2 = yield this.writeDataAsync(new ReadFileH2DPacket(nextAddress, bufferChunkSize), 3000);
359
- if (!(p2 instanceof ReadFileReplyD2HPacket))
360
- throw new Error("ReadFileReplyD2HPacket failed");
361
- fileBuf.set(new Uint8Array(p2.buf), bufferOffset);
362
- if (progressCallback != null)
363
- progressCallback(bufferOffset, fileSize);
364
- // next chunk
365
- bufferOffset += bufferChunkSize;
366
- nextAddress += bufferChunkSize;
367
- }
368
- yield this.writeDataAsync(new ExitFileTransferH2DPacket(FileExitAction.EXIT_HALT), 30000);
369
- // console.log(p3);
370
- fileBuf = fileBuf.slice(0, fileSize);
371
- return fileBuf;
372
- });
373
- }
374
- uploadFileToDevice(request, progressCallback) {
375
- var _a;
376
- return __awaiter(this, void 0, void 0, function* () {
377
- let { filename, buf, downloadTarget, vendor, loadAddress, exttype, autoRun, linkedFile, } = request;
378
- if (buf === undefined) {
379
- // TODO: check connection status
380
- return false;
381
- }
382
- // no download to special capture or vision buffers
383
- // if (this.downloadTarget === VexDeviceWebSerial.FILE_TARGET_CBUF || this.downloadTarget === VexDeviceWebSerial.FILE_TARGET_VBUF) {
384
- // // error !
385
- // if (doneCallback != undefined) {
386
- // doneCallback(false);
387
- // }
388
- // return;
389
- // }
390
- downloadTarget = downloadTarget !== null && downloadTarget !== void 0 ? downloadTarget : FileDownloadTarget.FILE_TARGET_QSPI;
391
- vendor = vendor !== null && vendor !== void 0 ? vendor : FileVendor.USER;
392
- let nextAddress = loadAddress !== null && loadAddress !== void 0 ? loadAddress : USER_FLASH_USR_CODE_START;
393
- // TODO if downloadTarget is FILE_TARGET_A1, FactoryEnable
394
- //console.log("init file transfer", filename);
395
- const p1 = yield this.writeDataAsync(new InitFileTransferH2DPacket(FileInitAction.WRITE, downloadTarget, vendor, FileInitOption.OVERWRITE, buf, nextAddress, filename, exttype));
396
- if (!(p1 instanceof InitFileTransferReplyD2HPacket))
397
- throw new Error("InitFileTransferH2DPacket failed");
398
- //console.log(p1);
399
- if (linkedFile !== undefined) {
400
- const p3 = yield this.writeDataAsync(new LinkFileH2DPacket((_a = linkedFile.vendor) !== null && _a !== void 0 ? _a : FileVendor.USER, linkedFile.filename, 0), 10000);
401
- if (!(p3 instanceof LinkFileReplyD2HPacket))
402
- throw new Error("LinkFileH2DPacket failed");
403
- }
404
- const bufferChunkSize = p1.windowSize > 0 && p1.windowSize <= USER_PROG_CHUNK_SIZE
405
- ? p1.windowSize
406
- : USER_PROG_CHUNK_SIZE;
407
- let bufferOffset = 0;
408
- let lastBlock = false;
409
- let transferFailed = true;
410
- let exitReply;
411
- try {
412
- while (!lastBlock) {
413
- let tmpbuf;
414
- if (buf.byteLength - bufferOffset > bufferChunkSize) {
415
- tmpbuf = buf.subarray(bufferOffset, bufferOffset + bufferChunkSize);
416
- }
417
- else {
418
- // last chunk
419
- // word align length
420
- const length = ((buf.byteLength - bufferOffset + 3) / 4) >>> 0;
421
- tmpbuf = new Uint8Array(length * 4);
422
- tmpbuf.set(buf.subarray(bufferOffset, buf.byteLength));
423
- lastBlock = true;
424
- }
425
- const p2 = yield this.writeDataAsync(new WriteFileH2DPacket(nextAddress, tmpbuf), 3000);
426
- if (!(p2 instanceof WriteFileReplyD2HPacket))
427
- throw new Error("WriteFileReplyD2HPacket failed");
428
- if (progressCallback != null)
429
- progressCallback(bufferOffset, buf.byteLength);
430
- // next chunk
431
- bufferOffset += bufferChunkSize;
432
- nextAddress += bufferChunkSize;
433
- }
434
- progressCallback === null || progressCallback === void 0 ? void 0 : progressCallback(buf.byteLength, buf.byteLength);
435
- transferFailed = false;
436
- }
437
- finally {
438
- exitReply = yield this.writeDataAsync(new ExitFileTransferH2DPacket(transferFailed
439
- ? FileExitAction.EXIT_HALT
440
- : autoRun
441
- ? FileExitAction.EXIT_RUN
442
- : FileExitAction.EXIT_HALT), 30000);
443
- }
444
- return exitReply instanceof ExitFileTransferReplyD2HPacket;
445
- });
446
- }
447
- setMatchMode(mode) {
448
- return __awaiter(this, void 0, void 0, function* () {
449
- const result = yield this.writeDataAsync(new UpdateMatchModeH2DPacket(mode, 0));
450
- return result instanceof MatchModeReplyD2HPacket ? result : null;
451
- });
452
- }
453
- loadProgram(value) {
454
- return __awaiter(this, void 0, void 0, function* () {
455
- const result = yield this.writeDataAsync(new LoadFileActionH2DPacket(FileVendor.USER, FileLoadAction.RUN, value));
456
- return result instanceof LoadFileActionReplyD2HPacket ? result : null;
457
- });
458
- }
459
- stopProgram() {
460
- return __awaiter(this, void 0, void 0, function* () {
461
- const result = yield this.writeDataAsync(new LoadFileActionH2DPacket(FileVendor.USER, FileLoadAction.STOP, ""));
462
- return result instanceof LoadFileActionReplyD2HPacket ? result : null;
463
- });
464
- }
465
- mockTouch(x, y, press) {
466
- return __awaiter(this, void 0, void 0, function* () {
467
- const result = yield this.writeDataAsync(new SendDashTouchH2DPacket(x, y, press));
468
- return result instanceof SendDashTouchReplyD2HPacket ? result : null;
469
- });
470
- }
471
- /** @param port untested */
472
- openScreen(screen, port) {
473
- return __awaiter(this, void 0, void 0, function* () {
474
- const result = yield this.writeDataAsync(new SelectDashH2DPacket(screen, port));
475
- return result instanceof SendDashTouchReplyD2HPacket ? result : null;
476
- });
477
- }
478
- }
479
- function logData(data, limitedSize) {
480
- if (data === undefined)
481
- return;
482
- limitedSize || (limitedSize = data.length);
483
- let a = "";
484
- for (let n = 0; n < data.length && n < limitedSize; n++)
485
- a += ("00" + data[n].toString(16)).substr(-2, 2) + " ";
486
- limitedSize < data.length && (a += " ... ");
487
- // console.log(a);
488
- // XXX: NOT USED?
489
- }
490
- function binaryArrayJoin(left, right) {
491
- const leftSize = left != null ? left.byteLength : 0;
492
- const rightSize = right != null ? right.byteLength : 0;
493
- const all = new Uint8Array(leftSize + rightSize);
494
- return all.length === 0
495
- ? new Uint8Array()
496
- : (left != null && all.set(new Uint8Array(left), 0),
497
- right != null && all.set(new Uint8Array(right), leftSize),
498
- all);
499
- }
500
- //# sourceMappingURL=VexConnection.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"VexConnection.js","sourceRoot":"","sources":["../src/VexConnection.ts"],"names":[],"mappings":"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"}