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  

Battery

Received as a uint16, XXYY. Voltage is calculated by:

XX + YY/256

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  
Output

1 bit per output. Stored LSB 0.

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