RoboRIO to Driver Station¶
UDP¶
Sent every 20ms in response to Driver Station packets, UDP port 1150
Field | Length | Type | Comment |
---|---|---|---|
Sequence Num | 2 | uint16 | |
Comm Version | 1 | uint8 | 0x01 is currently the only observed value |
Status | 1 | Status | Basically an echo if everything is operating properly |
Trace | 1 | Trace | |
Battery | 2 | Battery | |
Request Date? | 1 | uint8 | 0x01 when first connecting, 0x00 otherwise |
Tags | n | Tags |
Status¶
Field | Mask | Comment |
---|---|---|
E-Stop | x....... |
|
Brownout | ...x.... |
0: Normal, 1: Voltage Brownout |
Code Start | ....x... |
0: Running, 1: Initializing |
Enabled | .....x.. |
|
Mode | ......xx |
0: Teleop, 1: Test, 2: Autonomous |
Trace¶
Field | Mask | Comment |
---|---|---|
Robot Code | ..x..... |
|
Is RoboRIO | ...x.... |
|
Test Mode | ....x... |
|
Autonomous Mode | .....x.. |
|
TeleOp Code | ......x. |
|
Disabled | .......x |
Tags¶
Field | Length | Type | Comment |
---|---|---|---|
Size | 1 | uint8 | |
ID | 1 | uint8 | See table below |
Data | n | Depends on tag type |
ID | Tag |
---|---|
0x01 |
Joystick Output |
0x04 |
Disk Info |
0x05 |
CPU Info |
0x06 |
RAM Info |
0x08 |
PDP Log |
0x09 |
Unknown |
0x0e |
CAN Metrics |
Joystick Output 0x01
¶
If multiple joysticks, the extended packets are concatenated together. If a joystick isn’t outputting anything, the size will be 1 (to include the packet type ID) and not contain any of the below. So if the 3rd joystick is outputting, it’ll output 01 01 01 01 09 01 <below structure>.
Field | Length | Type | Comment |
---|---|---|---|
Outputs | 4 | Output | |
Left Rumble | 2 | uint16 | |
Right Rumble | 2 | uint16 |
Disk Info 0x04
¶
Field | Length | Type | Comment |
Free Space | 4 | uint32 | Number of bytes available |
CPU Info 0x05
¶
Field | Length | Type | Comment |
---|---|---|---|
Num of CPUs | 4 | float | 0x02 on the RoboRIO |
CPUn Time Critical % | 4 | float | |
CPUn Above Normal % | 4 | float | |
CPUn Normal % | 4 | float | |
CPUn Low % | 4 | float |
RAM Info 0x06
¶
Field | Length | Type | Comment |
Block | 4 | uint32 | |
Free Space | 4 | uint32 | Number of bytes available |
PDP Log 0x08
¶
Field | Length | Type | Comment |
Unknown | 1 | ||
PDP Stats | 21 | ||
Unknown | 3 |
The statistics for each PDP port is 10 bits, padding together for a total of 21 bytes.
struct PDP {
uint16_t port_00 : 10; //
uint16_t port_01 : 10; // 8 bytes, 40 bits
uint16_t port_02 : 10; //
uint16_t port_03 : 10; //
uint16_t port_04 : 10; //
uint16_t port_05 : 10; //
uint16_t pad1 : 4; //
uint16_t port_06 : 10; //
uint16_t port_07 : 10; // 8 bytes, 40 bits
uint16_t port_08 : 10; //
uint16_t port_09 : 10; //
uint16_t port_10 : 10; //
uint16_t port_10 : 10; //
uint16_t pad2 : 4; //
uint16_t port_12 : 10; //
uint16_t port_13 : 10; // 5 bytes, 40 bits
uint16_t port_14 : 10; //
uint16_t port_15 : 10; //
}
Unknown 0x09
¶
Field | Length | Type | Comment |
Unknown | 9 |
CAN Metrics 0x0e
¶
Field | Length | Type | Comment |
Utilization % | 4 | float | |
Bus Off | 4 | uint32 | |
TX Full | 4 | uint32 | |
RX Errors | 1 | uint8 | |
TX Errors | 1 | uint8 |
TCP¶
Sent over TCP port 1740. Strings are either prefixed with a length (specified) or implied.
Field | Length | Type | Comment |
Size | 2 | uint16 | Including ID |
ID | 1 | uint8 | See table below (only if Size > 0) |
Tags | 1 | Depends on tag type |
Tags¶
ID | Tag |
0x00 |
Radio Events? |
0x01 |
Usage Report |
0x04 |
Disable Faults |
0x05 |
Rail Faults |
0x0a |
Version Info |
0x0b |
Error Message |
0x0c |
Standard Output |
0x0d |
Unknown |
Radio Events? 0x00
¶
Might just be generic “Error Strings” or something.
Field | Length | Type | Comment |
Message | n | string |
Usage Report 0x01
¶
Field | Length | Type | Comment |
---|---|---|---|
Team Num | 2 | string | |
Unknown | 1 | uint8 | |
Entries | n | Entry Data |
Disable Faults 0x04
¶
Field | Length | Type | Comment |
---|---|---|---|
Comms | 2 | uint16 | |
12V | 2 | uint16 |
Rail Faults 0x05
¶
Field | Length | Type | Comment |
---|---|---|---|
6V | 2 | uint16 | |
5V | 2 | uint16 | |
3.3V | 2 | uint16 |
Version Info 0x0a
¶
Field | Length | Type | Comment |
---|---|---|---|
Type | 1 | Device | See below |
Unknown | 2 | ||
ID | 1 | uint8 | CAN ID? |
Name | 1 + n | string | |
Version | 1 + n | string |
Empty message (00 00 00 00 00 00
) signifies end of list.
Device Type¶
Num | Type |
---|---|
0 | Software (roboRIO image , FRC_Lib_Version ) |
2 | CAN Talon |
8 | PDP |
9 | PCM |
Error Message 0x0b
¶
Shows up in main Driver Station log. Sequence Number increments along with Standard Output.
Field | Length | Type | Comment |
---|---|---|---|
Timestamp | 4 | float | Seconds since start of log |
SeqNum | 2 | uint16 | |
Unknown | 2 | Only seen as 01 ? |
|
Error Code | 4 | int32 | |
Flags | 1 | Flags | |
Details | 2 + n | string | |
Location | 2 + n | string | |
Call Stack | 2 + n | string |
Flags¶
Field | Mask | Comment |
---|---|---|
Error | .......x |
|
isLVcode | ......x. |
Standard Output 0x0c
¶
Sequence Number increments along with Error Message.
Field | Length | Type | Comment |
---|---|---|---|
Timestamp | 4 | float | Seconds since start of log |
SeqNum | 2 | uint16 | |
Message | n | string |
Unknown 0x0d
¶
00 00 04 04 04 04