@v5x/serial 0.5.1 → 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.
- package/dist/Vex.d.ts +235 -0
- package/dist/VexCRC.d.ts +19 -0
- package/dist/VexConnection.d.ts +45 -0
- package/dist/VexDevice.d.ts +177 -0
- package/dist/VexEvent.d.ts +16 -0
- package/dist/VexFirmwareVersion.d.ts +55 -0
- package/dist/VexIniConfig.d.ts +27 -0
- package/dist/VexPacket.d.ts +512 -0
- package/dist/VexPacketView.d.ts +18 -0
- package/dist/index.d.ts +9 -0
- package/dist/v5-serial-protocol.cjs.js +4516 -0
- package/dist/v5-serial-protocol.cjs.js.map +1 -0
- package/dist/v5-serial-protocol.es.js +4401 -0
- package/dist/v5-serial-protocol.es.js.map +1 -0
- package/dts/VexPacket.js +5 -7
- package/dts/VexPacket.js.map +1 -1
- package/index.d.ts +1098 -0
- package/package.json +5 -4
package/dist/Vex.d.ts
ADDED
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
import { type VexFirmwareVersion } from "./VexFirmwareVersion";
|
|
2
|
+
import { type HostBoundPacket } from "./VexPacket";
|
|
3
|
+
export declare const USER_PROG_CHUNK_SIZE = 4096;
|
|
4
|
+
export declare const USER_FLASH_START = 50331648;
|
|
5
|
+
export declare const USER_FLASH_SYS_CODE_START = 54525952;
|
|
6
|
+
export declare const USER_FLASH_USR_CODE_START = 58720256;
|
|
7
|
+
export declare const USER_FLASH_END = 134217728;
|
|
8
|
+
export declare const USER_FLASH_MAX_FILE_SIZE = 2097152;
|
|
9
|
+
export declare const USER_FLASH_START_B = 270532608;
|
|
10
|
+
export declare const USER_FLASH_END_B = 272629760;
|
|
11
|
+
export declare const USER_FLASH_START_C = 807403520;
|
|
12
|
+
export declare const USER_FLASH_END_C = 822083584;
|
|
13
|
+
export interface ISmartDeviceInfo {
|
|
14
|
+
port: number;
|
|
15
|
+
type: SmartDeviceType;
|
|
16
|
+
status: number;
|
|
17
|
+
betaversion: number;
|
|
18
|
+
version: number;
|
|
19
|
+
bootversion: number;
|
|
20
|
+
}
|
|
21
|
+
export interface IFileBasicInfo {
|
|
22
|
+
filename: string;
|
|
23
|
+
vendor: FileVendor;
|
|
24
|
+
loadAddress?: number;
|
|
25
|
+
size?: number;
|
|
26
|
+
}
|
|
27
|
+
export interface IFileMetadata {
|
|
28
|
+
loadAddress: number;
|
|
29
|
+
size: number;
|
|
30
|
+
crc32: number;
|
|
31
|
+
type: string;
|
|
32
|
+
timestamp: number;
|
|
33
|
+
version: VexFirmwareVersion;
|
|
34
|
+
}
|
|
35
|
+
export interface IFileHandle extends IFileBasicInfo, IFileMetadata {
|
|
36
|
+
loadAddress: number;
|
|
37
|
+
size: number;
|
|
38
|
+
}
|
|
39
|
+
export interface IFileEntry extends IFileMetadata {
|
|
40
|
+
index: number;
|
|
41
|
+
filename: string;
|
|
42
|
+
}
|
|
43
|
+
export interface IFileWriteRequest {
|
|
44
|
+
filename: string;
|
|
45
|
+
vendor?: FileVendor;
|
|
46
|
+
loadAddress?: number;
|
|
47
|
+
buf?: Uint8Array;
|
|
48
|
+
downloadTarget: FileDownloadTarget;
|
|
49
|
+
exttype?: string;
|
|
50
|
+
autoRun: boolean;
|
|
51
|
+
linkedFile?: IFileWriteRequest;
|
|
52
|
+
}
|
|
53
|
+
export interface IProgramInfo {
|
|
54
|
+
name: string;
|
|
55
|
+
binfile: string;
|
|
56
|
+
size: number;
|
|
57
|
+
time: Date;
|
|
58
|
+
slot: number;
|
|
59
|
+
requestedSlot: number;
|
|
60
|
+
}
|
|
61
|
+
export interface IPacketCallback {
|
|
62
|
+
callback: (data: HostBoundPacket | ArrayBuffer | AckType) => void;
|
|
63
|
+
timeout: ReturnType<typeof setTimeout>;
|
|
64
|
+
wantedCommandId: number | undefined;
|
|
65
|
+
wantedCommandExId: number | undefined;
|
|
66
|
+
}
|
|
67
|
+
export type DataArray = ArrayBuffer | Uint8Array;
|
|
68
|
+
export type MatchMode = "driver" | "autonomous" | "disabled";
|
|
69
|
+
export declare enum FileVendor {
|
|
70
|
+
USER = 1,
|
|
71
|
+
SYS = 15,
|
|
72
|
+
DEV1 = 16,
|
|
73
|
+
DEV2 = 24,
|
|
74
|
+
DEV3 = 32,
|
|
75
|
+
DEV4 = 40,
|
|
76
|
+
DEV5 = 48,
|
|
77
|
+
DEV6 = 56,
|
|
78
|
+
VEXVM = 64,
|
|
79
|
+
VEX = 240,
|
|
80
|
+
UNDEFINED = 241
|
|
81
|
+
}
|
|
82
|
+
export declare enum FileDownloadTarget {
|
|
83
|
+
FILE_TARGET_DDR = 0,
|
|
84
|
+
FILE_TARGET_QSPI = 1,
|
|
85
|
+
FILE_TARGET_CBUF = 2,
|
|
86
|
+
FILE_TARGET_VBUF = 3,
|
|
87
|
+
FILE_TARGET_DDRC = 4,
|
|
88
|
+
FILE_TARGET_DDRE = 5,
|
|
89
|
+
FILE_TARGET_FLASH = 6,
|
|
90
|
+
FILE_TARGET_RADIO = 7,
|
|
91
|
+
FILE_TARGET_A1 = 13,
|
|
92
|
+
FILE_TARGET_B1 = 14,
|
|
93
|
+
FILE_TARGET_B2 = 15
|
|
94
|
+
}
|
|
95
|
+
export declare enum FileInitAction {
|
|
96
|
+
WRITE = 1,
|
|
97
|
+
READ = 2
|
|
98
|
+
}
|
|
99
|
+
export declare enum FileInitOption {
|
|
100
|
+
NONE = 0,
|
|
101
|
+
OVERWRITE = 1
|
|
102
|
+
}
|
|
103
|
+
export declare enum FileLoadAction {
|
|
104
|
+
RUN = 0,
|
|
105
|
+
STOP = 128
|
|
106
|
+
}
|
|
107
|
+
export declare enum FileExitAction {
|
|
108
|
+
EXIT_NONE = 0,
|
|
109
|
+
EXIT_RUN = 1,
|
|
110
|
+
EXIT_HALT = 3
|
|
111
|
+
}
|
|
112
|
+
export declare enum RadioChannelType {
|
|
113
|
+
PIT = 0,
|
|
114
|
+
DOWNLOAD = 1
|
|
115
|
+
}
|
|
116
|
+
export type SlotNumber = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8;
|
|
117
|
+
export type ZerobaseSlotNumber = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7;
|
|
118
|
+
export type PortNumber = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21;
|
|
119
|
+
export declare enum AckType {
|
|
120
|
+
CDC2_ACK = 118,
|
|
121
|
+
CDC2_NACK = 255,
|
|
122
|
+
CDC2_NACK_PACKET_CRC = 206,
|
|
123
|
+
CDC2_NACK_CMD_LENGTH = 208,
|
|
124
|
+
CDC2_NACK_SIZE = 209,
|
|
125
|
+
CDC2_NACK_CRC = 210,
|
|
126
|
+
CDC2_NACK_FILE = 211,
|
|
127
|
+
CDC2_NACK_INIT = 212,
|
|
128
|
+
CDC2_NACK_FUNC = 213,
|
|
129
|
+
CDC2_NACK_ALIGN = 214,
|
|
130
|
+
CDC2_NACK_ADDR = 215,
|
|
131
|
+
CDC2_NACK_INCOMPLETE = 216,
|
|
132
|
+
CDC2_NACK_DIR_INDEX = 217,
|
|
133
|
+
CDC2_NACK_MAX_USER_FILES = 218,
|
|
134
|
+
CDC2_NACK_FILE_EXISTS = 219,
|
|
135
|
+
CDC2_NACK_FILE_SYS_FULL = 220,
|
|
136
|
+
TIMEOUT = 256,
|
|
137
|
+
WRITE_ERROR = 257
|
|
138
|
+
}
|
|
139
|
+
export declare enum SmartDeviceType {
|
|
140
|
+
EMPTY = 0,
|
|
141
|
+
V5_POWER = 1,
|
|
142
|
+
MOTOR = 2,
|
|
143
|
+
LED = 3,
|
|
144
|
+
ABS_ENCODER_SENSOR = 4,
|
|
145
|
+
CR_MOTOR = 5,
|
|
146
|
+
IMU_SENSOR = 6,
|
|
147
|
+
DISTANCE_SENSOR = 7,
|
|
148
|
+
RADIO_SENSOR = 8,
|
|
149
|
+
CONTROLLER = 9,
|
|
150
|
+
BRAIN = 10,
|
|
151
|
+
VISION_SENSOR = 11,
|
|
152
|
+
ADI = 12,
|
|
153
|
+
PARTNER_CONTROLLER = 13,
|
|
154
|
+
BATTERY = 14,
|
|
155
|
+
SOL = 15,
|
|
156
|
+
OPTICAL_SENSOR = 16,
|
|
157
|
+
MAGNET = 17,
|
|
158
|
+
GPS_SENSOR = 20,
|
|
159
|
+
UNDEFINED_SENSOR = 255
|
|
160
|
+
}
|
|
161
|
+
export declare enum SerialDeviceType {
|
|
162
|
+
V5_BRAIN = 1281,
|
|
163
|
+
V5_BRAIN_DFU = 1282,
|
|
164
|
+
V5_CONTROLLER = 1283,
|
|
165
|
+
XILINX = 256,
|
|
166
|
+
IQ_BRAIN = 2,
|
|
167
|
+
IQ_BRAIN2 = 3,
|
|
168
|
+
IQ_BRAIN_DFU = 255,
|
|
169
|
+
IQ2_BRAIN = 512,
|
|
170
|
+
IQ2_BRAIN_DFU = 527,
|
|
171
|
+
IQ2_CONTROLLER = 528,
|
|
172
|
+
IQ2_CONTROLLER_DFU = 543,
|
|
173
|
+
EXP_BRAIN = 1536,
|
|
174
|
+
EXP_BRAIN_DFU = 1551,
|
|
175
|
+
EXP_CONTROLLER = 1552,
|
|
176
|
+
EXP_CONTROLLER_DFU = 1567,
|
|
177
|
+
PIXY = 61440,
|
|
178
|
+
PIXY_DFU = 12,
|
|
179
|
+
VEXCAM = 1287,
|
|
180
|
+
VEXCAM_DFU = 1288,
|
|
181
|
+
SENSOR_TEST = 1535,
|
|
182
|
+
CORTEX_PROGCBL = 10,
|
|
183
|
+
CORTEX_BRAIN = 11,
|
|
184
|
+
CORTEX_JOYSTK = 12,
|
|
185
|
+
VEXNET_KEY_20 = 7,
|
|
186
|
+
VEXNET_KEY_10 = 9587,
|
|
187
|
+
PROLIFIC = 8963
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* found from {@link https://gist.github.com/meisZWFLZ/9ebdd694060137b44959ff7ac80ff4e8 gist}
|
|
191
|
+
* @see {@link https://drive.google.com/drive/folders/11pSNKakbXp7hOYBQ3HNwprFaLalnXOgR screen images}
|
|
192
|
+
*/
|
|
193
|
+
export declare enum SelectDashScreen {
|
|
194
|
+
HOME = 0,
|
|
195
|
+
BATTERY = 1,
|
|
196
|
+
LED = 3,
|
|
197
|
+
MATCH_CONFIG = 4,
|
|
198
|
+
MATCH_CONFIG_MORE = 5,
|
|
199
|
+
WIRING = 6,
|
|
200
|
+
RADIO = 8,
|
|
201
|
+
BRAIN = 10,
|
|
202
|
+
RUN_PROGRAM = 13,
|
|
203
|
+
DRIVE_PROGRAM_CONTROL_LEFT_MAPPING = 14,
|
|
204
|
+
DRIVE_PROGRAM_MENU = 15,
|
|
205
|
+
DEVICES = 16,
|
|
206
|
+
USER_PROGRAM_FOLDER = 17,
|
|
207
|
+
VEX_PROGRAM_FOLDER = 18,
|
|
208
|
+
SETTINGS = 19,
|
|
209
|
+
/** theres some scary looking stuff in here */
|
|
210
|
+
SCARY_CONFIGURATION = 20,
|
|
211
|
+
LANGUAGE = 21,
|
|
212
|
+
DRIVE_MOTOR_CONFIG = 22,
|
|
213
|
+
PROGRAM_MENU = 24,
|
|
214
|
+
SHUTDOWN = 25,
|
|
215
|
+
CONTROLLER_2_MAPPING = 26,
|
|
216
|
+
/** theres some even more scary looking stuff in here */
|
|
217
|
+
SCARY_CONFIGURATION_MORE = 27,
|
|
218
|
+
/** maybe this is scarier.. */
|
|
219
|
+
CONFIRM_XX = 28,
|
|
220
|
+
CONTROLLER_1_MAPPING = 29,
|
|
221
|
+
DRIVE_PROGRAM_CONTROL_DUAL_MAPPING = 30,
|
|
222
|
+
DRIVE_PROGRAM_CONTROL_SPLIT_MAPPING = 31,
|
|
223
|
+
DRIVE_PROGRAM_CONTROL_RIGHT_MAPPING = 32,
|
|
224
|
+
/** thats such a bad name */
|
|
225
|
+
MATCH_2_4_PLAYERS = 33,
|
|
226
|
+
EVENT_LOG = 34,
|
|
227
|
+
USER_PROGRAM_WIRING = 40,
|
|
228
|
+
CLAWBOT_PROGRAM_MENU = 41,
|
|
229
|
+
/** aka regulatory */
|
|
230
|
+
ABOUT = 42,
|
|
231
|
+
LANGUAGE_MORE = 43,
|
|
232
|
+
OBJECT_COLOR = 45,
|
|
233
|
+
SIGNATURE_ID = 46,
|
|
234
|
+
LOG_DATA = 47
|
|
235
|
+
}
|
package/dist/VexCRC.d.ts
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export declare class CrcGenerator {
|
|
2
|
+
crc16Table: Uint32Array;
|
|
3
|
+
crc32Table: Uint32Array;
|
|
4
|
+
static POLYNOMIAL_CRC32: number;
|
|
5
|
+
static POLYNOMIAL_CRC16: number;
|
|
6
|
+
constructor();
|
|
7
|
+
/**
|
|
8
|
+
* Calculate CRC16 for buffer
|
|
9
|
+
*/
|
|
10
|
+
crc16(buf: Uint8Array, initValue: number): number;
|
|
11
|
+
/**
|
|
12
|
+
* Generate CRC32 reverse table
|
|
13
|
+
*/
|
|
14
|
+
crc32GenTable(): void;
|
|
15
|
+
/**
|
|
16
|
+
* Calculate CRC32 for buffer
|
|
17
|
+
*/
|
|
18
|
+
crc32(buf: Uint8Array, initValue: number): number;
|
|
19
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/// <reference types="dom-serial" />
|
|
2
|
+
import { AckType, FileDownloadTarget, type IFileBasicInfo, type IFileWriteRequest, type IPacketCallback, type MatchMode, type SlotNumber, type SelectDashScreen } from "./Vex";
|
|
3
|
+
import { VexEventTarget } from "./VexEvent";
|
|
4
|
+
import { type ProgramIniConfig } from "./VexIniConfig";
|
|
5
|
+
import { MatchStatusReplyD2HPacket, DeviceBoundPacket, MatchModeReplyD2HPacket, GetSystemStatusReplyD2HPacket, type HostBoundPacket, Query1ReplyD2HPacket, LoadFileActionReplyD2HPacket, GetSystemFlagsReplyD2HPacket, GetRadioStatusReplyD2HPacket, GetDeviceStatusReplyD2HPacket, SendDashTouchReplyD2HPacket, type SelectDashReplyD2HPacket } from "./VexPacket";
|
|
6
|
+
import { type VexFirmwareVersion } from "./VexFirmwareVersion";
|
|
7
|
+
/**
|
|
8
|
+
* A connection to a V5 device.
|
|
9
|
+
* Emit events: connected, disconnected
|
|
10
|
+
*/
|
|
11
|
+
export declare class VexSerialConnection extends VexEventTarget {
|
|
12
|
+
filters: SerialPortFilter[];
|
|
13
|
+
writer: WritableStreamDefaultWriter<unknown> | undefined;
|
|
14
|
+
reader: ReadableStreamDefaultReader<unknown> | undefined;
|
|
15
|
+
port: SerialPort | undefined;
|
|
16
|
+
serial: Serial;
|
|
17
|
+
callbacksQueue: IPacketCallback[];
|
|
18
|
+
get isConnected(): boolean;
|
|
19
|
+
constructor(serial: Serial);
|
|
20
|
+
close(): Promise<void>;
|
|
21
|
+
open(use?: number | undefined, askUser?: boolean): Promise<boolean | undefined>;
|
|
22
|
+
writeData(rawData: DeviceBoundPacket | Uint8Array, resolve: (data: HostBoundPacket | ArrayBuffer | AckType) => void, timeout?: number): void;
|
|
23
|
+
writeDataAsync(rawData: DeviceBoundPacket | Uint8Array, timeout?: number): Promise<HostBoundPacket | ArrayBuffer | AckType>;
|
|
24
|
+
protected readData(cache: Uint8Array, expectedSize: number): Promise<Uint8Array>;
|
|
25
|
+
protected startReader(): Promise<void>;
|
|
26
|
+
query1(): Promise<Query1ReplyD2HPacket | null>;
|
|
27
|
+
getSystemVersion(): Promise<VexFirmwareVersion | null>;
|
|
28
|
+
}
|
|
29
|
+
export declare class V5SerialConnection extends VexSerialConnection {
|
|
30
|
+
filters: SerialPortFilter[];
|
|
31
|
+
getDeviceStatus(): Promise<GetDeviceStatusReplyD2HPacket | null>;
|
|
32
|
+
getRadioStatus(): Promise<GetRadioStatusReplyD2HPacket | null>;
|
|
33
|
+
getSystemFlags(): Promise<GetSystemFlagsReplyD2HPacket | null>;
|
|
34
|
+
getSystemStatus(timeout?: number): Promise<GetSystemStatusReplyD2HPacket | null>;
|
|
35
|
+
getMatchStatus(): Promise<MatchStatusReplyD2HPacket | null>;
|
|
36
|
+
uploadProgramToDevice(iniConfig: ProgramIniConfig, binFileBuf: Uint8Array, coldFileBuf: Uint8Array | undefined, progressCallback: (state: string, current: number, total: number) => void): Promise<boolean | undefined>;
|
|
37
|
+
downloadFileToHost(request: IFileBasicInfo, downloadTarget?: FileDownloadTarget, progressCallback?: (current: number, total: number) => void): Promise<Uint8Array>;
|
|
38
|
+
uploadFileToDevice(request: IFileWriteRequest, progressCallback?: (current: number, total: number) => void): Promise<boolean>;
|
|
39
|
+
setMatchMode(mode: MatchMode): Promise<MatchModeReplyD2HPacket | null>;
|
|
40
|
+
loadProgram(value: SlotNumber | string): Promise<LoadFileActionReplyD2HPacket | null>;
|
|
41
|
+
stopProgram(): Promise<LoadFileActionReplyD2HPacket | null>;
|
|
42
|
+
mockTouch(x: number, y: number, press: boolean): Promise<SendDashTouchReplyD2HPacket | null>;
|
|
43
|
+
/** @param port untested */
|
|
44
|
+
openScreen(screen: number | SelectDashScreen, port: number): Promise<SelectDashReplyD2HPacket | null>;
|
|
45
|
+
}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
/// <reference types="dom-serial" />
|
|
2
|
+
import { type MatchMode, SerialDeviceType, type ISmartDeviceInfo, SmartDeviceType, FileVendor, type IProgramInfo, type IFileHandle, FileDownloadTarget, type IFileBasicInfo, type IFileWriteRequest, RadioChannelType } from "./Vex";
|
|
3
|
+
import { V5SerialConnection } from "./VexConnection";
|
|
4
|
+
import { VexEventTarget } from "./VexEvent";
|
|
5
|
+
import { VexFirmwareVersion } from "./VexFirmwareVersion";
|
|
6
|
+
import { type ProgramIniConfig } from "./VexIniConfig";
|
|
7
|
+
export declare function downloadFileFromInternet(link: string): Promise<ArrayBuffer>;
|
|
8
|
+
export declare function sleepUntilAsync(f: () => Promise<boolean>, timeout: number, interval?: number): Promise<boolean>;
|
|
9
|
+
export declare function sleepUntil(f: () => boolean, timeout: number, interval?: number): Promise<boolean>;
|
|
10
|
+
export declare function sleep(ms: number): Promise<unknown>;
|
|
11
|
+
export declare abstract class VexSerialDevice extends VexEventTarget {
|
|
12
|
+
connection: V5SerialConnection | undefined;
|
|
13
|
+
defaultSerial: Serial;
|
|
14
|
+
get isConnected(): boolean;
|
|
15
|
+
get deviceType(): SerialDeviceType | undefined;
|
|
16
|
+
constructor(defaultSerial: Serial);
|
|
17
|
+
abstract connect(conn?: V5SerialConnection): Promise<boolean>;
|
|
18
|
+
abstract disconnect(): void;
|
|
19
|
+
}
|
|
20
|
+
declare class V5SerialDeviceState {
|
|
21
|
+
_instance: V5SerialDevice;
|
|
22
|
+
_isFileTransferring: boolean;
|
|
23
|
+
brain: {
|
|
24
|
+
activeProgram: number;
|
|
25
|
+
battery: {
|
|
26
|
+
batteryPercent: number;
|
|
27
|
+
isCharging: boolean;
|
|
28
|
+
};
|
|
29
|
+
button: {
|
|
30
|
+
isPressed: boolean;
|
|
31
|
+
isDoublePressed: boolean;
|
|
32
|
+
};
|
|
33
|
+
cpu0Version: VexFirmwareVersion;
|
|
34
|
+
cpu1Version: VexFirmwareVersion;
|
|
35
|
+
isAvailable: boolean;
|
|
36
|
+
settings: {
|
|
37
|
+
isScreenReversed: boolean;
|
|
38
|
+
isWhiteTheme: boolean;
|
|
39
|
+
usingLanguage: number;
|
|
40
|
+
};
|
|
41
|
+
systemVersion: VexFirmwareVersion;
|
|
42
|
+
uniqueId: number;
|
|
43
|
+
};
|
|
44
|
+
controllers: ({
|
|
45
|
+
battery: number;
|
|
46
|
+
isAvailable: boolean;
|
|
47
|
+
isCharging: boolean;
|
|
48
|
+
} | {
|
|
49
|
+
battery: number;
|
|
50
|
+
isAvailable: boolean;
|
|
51
|
+
isCharging?: undefined;
|
|
52
|
+
})[];
|
|
53
|
+
devices: Array<ISmartDeviceInfo | undefined>;
|
|
54
|
+
isFieldControllerConnected: boolean;
|
|
55
|
+
matchMode: MatchMode;
|
|
56
|
+
radio: {
|
|
57
|
+
channel: number;
|
|
58
|
+
isAvailable: boolean;
|
|
59
|
+
isConnected: boolean;
|
|
60
|
+
isVexNet: boolean;
|
|
61
|
+
isRadioData: boolean;
|
|
62
|
+
latency: number;
|
|
63
|
+
signalQuality: number;
|
|
64
|
+
signalStrength: number;
|
|
65
|
+
};
|
|
66
|
+
constructor(instance: V5SerialDevice);
|
|
67
|
+
}
|
|
68
|
+
export declare class V5Brain {
|
|
69
|
+
private readonly state;
|
|
70
|
+
constructor(state: V5SerialDeviceState);
|
|
71
|
+
get isRunningProgram(): boolean;
|
|
72
|
+
get activeProgram(): number;
|
|
73
|
+
set activeProgram(value: number);
|
|
74
|
+
get battery(): V5Battery;
|
|
75
|
+
get button(): V5BrainButton;
|
|
76
|
+
get cpu0Version(): VexFirmwareVersion;
|
|
77
|
+
get cpu1Version(): VexFirmwareVersion;
|
|
78
|
+
get isAvailable(): boolean;
|
|
79
|
+
get settings(): V5BrainSettings;
|
|
80
|
+
get systemVersion(): VexFirmwareVersion;
|
|
81
|
+
get uniqueId(): number;
|
|
82
|
+
getValue(key: string): Promise<string | undefined>;
|
|
83
|
+
setValue(key: string, value: string): Promise<boolean>;
|
|
84
|
+
listFiles(vendor?: FileVendor): Promise<IFileHandle[] | undefined>;
|
|
85
|
+
listProgram(): Promise<IProgramInfo[] | undefined>;
|
|
86
|
+
readFile(request: IFileBasicInfo | string, downloadTarget?: FileDownloadTarget, progressCallback?: (current: number, total: number) => void): Promise<Uint8Array | undefined>;
|
|
87
|
+
removeFile(request: IFileBasicInfo | string): Promise<boolean | undefined>;
|
|
88
|
+
removeAllFiles(): Promise<boolean | undefined>;
|
|
89
|
+
uploadFirmware(publicUrl?: string, usingVersion?: string, progressCallback?: (state: string, current: number, total: number) => void): Promise<boolean | undefined>;
|
|
90
|
+
uploadProgram(iniConfig: ProgramIniConfig, binFileBuf: Uint8Array, coldFileBuf: Uint8Array | undefined, progressCallback: (state: string, current: number, total: number) => void): Promise<boolean | undefined>;
|
|
91
|
+
writeFile(request: IFileWriteRequest, progressCallback?: (current: number, total: number) => void): Promise<boolean | undefined>;
|
|
92
|
+
/**
|
|
93
|
+
*
|
|
94
|
+
* @param progressCallback Informs the progress of the download.
|
|
95
|
+
* @returns array of bytes where each pixel is represented by 3 consecutive bytes (rgb).
|
|
96
|
+
* This array's length is 272 width * 480 height * 3 channels = 391680 bytes.
|
|
97
|
+
*/
|
|
98
|
+
captureScreen(progressCallback?: (current: number, total: number) => void): Promise<Uint8Array | undefined>;
|
|
99
|
+
}
|
|
100
|
+
export declare class V5Battery {
|
|
101
|
+
private readonly state;
|
|
102
|
+
constructor(state: V5SerialDeviceState);
|
|
103
|
+
get batteryPercent(): number;
|
|
104
|
+
get isCharging(): boolean;
|
|
105
|
+
}
|
|
106
|
+
export declare class V5BrainButton {
|
|
107
|
+
private readonly state;
|
|
108
|
+
constructor(state: V5SerialDeviceState);
|
|
109
|
+
get isPressed(): boolean;
|
|
110
|
+
get isDoublePressed(): boolean;
|
|
111
|
+
}
|
|
112
|
+
export declare class V5BrainSettings {
|
|
113
|
+
private readonly state;
|
|
114
|
+
constructor(state: V5SerialDeviceState);
|
|
115
|
+
get isScreenReversed(): boolean;
|
|
116
|
+
get isWhiteTheme(): boolean;
|
|
117
|
+
get usingLanguage(): number;
|
|
118
|
+
}
|
|
119
|
+
export declare class V5Controller {
|
|
120
|
+
private readonly state;
|
|
121
|
+
private readonly controllerIndex;
|
|
122
|
+
constructor(state: V5SerialDeviceState, controllerIndex: number);
|
|
123
|
+
get batteryPercent(): number;
|
|
124
|
+
get isMasterController(): boolean;
|
|
125
|
+
get isAvailable(): boolean;
|
|
126
|
+
get isCharging(): boolean | undefined;
|
|
127
|
+
}
|
|
128
|
+
export declare class V5SmartDevice {
|
|
129
|
+
private readonly state;
|
|
130
|
+
private readonly deviceIndex;
|
|
131
|
+
constructor(state: V5SerialDeviceState, index: number);
|
|
132
|
+
protected getDeviceInfo(): ISmartDeviceInfo | undefined;
|
|
133
|
+
get isAvailable(): boolean;
|
|
134
|
+
get port(): number;
|
|
135
|
+
get type(): SmartDeviceType;
|
|
136
|
+
get version(): number;
|
|
137
|
+
}
|
|
138
|
+
export declare class V5Radio {
|
|
139
|
+
private readonly state;
|
|
140
|
+
constructor(state: V5SerialDeviceState);
|
|
141
|
+
get channel(): number;
|
|
142
|
+
get isAvailable(): boolean;
|
|
143
|
+
get isConnected(): boolean;
|
|
144
|
+
get isVexNet(): boolean;
|
|
145
|
+
get isRadioData(): boolean;
|
|
146
|
+
get latency(): number;
|
|
147
|
+
changeChannel(channel: RadioChannelType): Promise<boolean>;
|
|
148
|
+
}
|
|
149
|
+
export declare class V5SerialDevice extends VexSerialDevice {
|
|
150
|
+
autoReconnect: boolean;
|
|
151
|
+
autoRefresh: boolean;
|
|
152
|
+
pauseRefreshOnFileTransfer: boolean;
|
|
153
|
+
protected _isReconnecting: boolean;
|
|
154
|
+
private _refreshInterval;
|
|
155
|
+
state: V5SerialDeviceState;
|
|
156
|
+
constructor(defaultSerial: Serial);
|
|
157
|
+
get isV5Controller(): boolean;
|
|
158
|
+
get brain(): V5Brain;
|
|
159
|
+
get controllers(): [V5Controller, V5Controller];
|
|
160
|
+
get devices(): V5SmartDevice[];
|
|
161
|
+
get isFieldControllerConnected(): boolean;
|
|
162
|
+
get matchMode(): MatchMode;
|
|
163
|
+
set matchMode(value: MatchMode);
|
|
164
|
+
get radio(): V5Radio;
|
|
165
|
+
mockTouch(x: number, y: number, press: boolean): Promise<boolean>;
|
|
166
|
+
connect(conn?: V5SerialConnection): Promise<boolean>;
|
|
167
|
+
disconnect(): Promise<void>;
|
|
168
|
+
dispose(): Promise<void>;
|
|
169
|
+
/**
|
|
170
|
+
* @param timeout defaults to 0. If timeout is 0, then it will attempt to reconnect forever
|
|
171
|
+
* @returns
|
|
172
|
+
*/
|
|
173
|
+
reconnect(timeout?: number): Promise<boolean>;
|
|
174
|
+
private doAfterConnect;
|
|
175
|
+
refresh(): Promise<boolean>;
|
|
176
|
+
}
|
|
177
|
+
export {};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export declare class VexEventEmitter {
|
|
2
|
+
handlerMap: Map<string | symbol, Array<(...args: unknown[]) => void>>;
|
|
3
|
+
constructor();
|
|
4
|
+
on(eventName: string | symbol, listener: (...args: unknown[]) => void): void;
|
|
5
|
+
remove(eventName: string | symbol, listener: (...args: unknown[]) => void): void;
|
|
6
|
+
emit(eventName: string | symbol, data: unknown): void;
|
|
7
|
+
clearListeners(): void;
|
|
8
|
+
}
|
|
9
|
+
export declare class VexEventTarget {
|
|
10
|
+
emitter: VexEventEmitter;
|
|
11
|
+
constructor();
|
|
12
|
+
emit(eventName: string | symbol, data: unknown): void;
|
|
13
|
+
on(eventName: string | symbol, listener: (...args: unknown[]) => void): void;
|
|
14
|
+
remove(eventName: string | symbol, listener: (...args: unknown[]) => void): void;
|
|
15
|
+
clearListeners(): void;
|
|
16
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This is a class to make it easier to handle passing the VEXos version
|
|
3
|
+
* information around in the application. This provides ways to get any
|
|
4
|
+
* form of the string representation and quickly compare versions.
|
|
5
|
+
*/
|
|
6
|
+
export declare class VexFirmwareVersion {
|
|
7
|
+
major: number;
|
|
8
|
+
minor: number;
|
|
9
|
+
build: number;
|
|
10
|
+
beta: number;
|
|
11
|
+
constructor(major: number, minor: number, build: number, beta: number);
|
|
12
|
+
/**
|
|
13
|
+
* Take a a string of MAJOR.MINOR.BUILD.bBETA and converts it to a
|
|
14
|
+
* VexFirmwareVersion instance
|
|
15
|
+
* @param version the string to process
|
|
16
|
+
* @returns a VexFirmwareVersion representing the provided string
|
|
17
|
+
*/
|
|
18
|
+
static fromString(version: string): VexFirmwareVersion;
|
|
19
|
+
/**
|
|
20
|
+
* Take a a Uint8Array and converts it to a VexFirmwareVersion instance
|
|
21
|
+
* @param data the array to process
|
|
22
|
+
* @param offset the offset to start at
|
|
23
|
+
* @returns a VexFirmwareVersion representing the provided string
|
|
24
|
+
*/
|
|
25
|
+
static fromUint8Array(data: Uint8Array, offset?: number, reverse?: boolean): VexFirmwareVersion;
|
|
26
|
+
static allZero(): VexFirmwareVersion;
|
|
27
|
+
/**
|
|
28
|
+
* Take a a string of MAJOR_MINOR_BUILD_BETA and converts it to a
|
|
29
|
+
* VexFirmwareVersion instance
|
|
30
|
+
* @param version the string to process
|
|
31
|
+
* @returns a VexFirmwareVersion representing the provided string
|
|
32
|
+
*/
|
|
33
|
+
static fromCatalogString(version: string): VexFirmwareVersion;
|
|
34
|
+
isBeta(): boolean;
|
|
35
|
+
/**
|
|
36
|
+
* returns version as Uint Array
|
|
37
|
+
*/
|
|
38
|
+
toUint8Array(reverse?: boolean): Uint8Array;
|
|
39
|
+
/**
|
|
40
|
+
* returns version as major.minor.build
|
|
41
|
+
*/
|
|
42
|
+
toUserString(): string;
|
|
43
|
+
/**
|
|
44
|
+
* returns version as ${major}.${minor}.{build}.b${beta}
|
|
45
|
+
*/
|
|
46
|
+
toInternalString(): string;
|
|
47
|
+
/**
|
|
48
|
+
* compares this version to the provided version.
|
|
49
|
+
* * if this < b: negative
|
|
50
|
+
* * if this = b: 0
|
|
51
|
+
* * if this > b: positive
|
|
52
|
+
* @param that the version to compare again
|
|
53
|
+
*/
|
|
54
|
+
compare(that: VexFirmwareVersion): number;
|
|
55
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { type ZerobaseSlotNumber } from "./Vex";
|
|
2
|
+
export declare class ProgramIniConfig {
|
|
3
|
+
baseName: string;
|
|
4
|
+
autorun: boolean;
|
|
5
|
+
project: {
|
|
6
|
+
version: string;
|
|
7
|
+
ide: string;
|
|
8
|
+
file: string;
|
|
9
|
+
};
|
|
10
|
+
program: {
|
|
11
|
+
version: string;
|
|
12
|
+
name: string;
|
|
13
|
+
slot: ZerobaseSlotNumber;
|
|
14
|
+
icon: string;
|
|
15
|
+
iconalt: string;
|
|
16
|
+
description: string;
|
|
17
|
+
date: string;
|
|
18
|
+
timezone: string;
|
|
19
|
+
};
|
|
20
|
+
config: Record<number, string>;
|
|
21
|
+
controller1: Record<string, string>;
|
|
22
|
+
controller2: Record<string, string>;
|
|
23
|
+
constructor();
|
|
24
|
+
setProgramDate(date: Date): void;
|
|
25
|
+
createIni(): string;
|
|
26
|
+
dec2(value: number): string;
|
|
27
|
+
}
|