GreatFET Classes
The new GreatFET Communications Protocol uses a simple Class/Verb scheme to organize protocol-independent commands. Classes organize groups of related functions, while verbs provide the functions themselves. This very much parallels the organization of GoodFET commands.
Examples of classes:
SPI functionality
FaceDancer (“GreatDancer”) functionality
Debug utilities
GPIO
Examples of verbs:
Configure the SPI bus to set e.g. polarity
Read a USB1 status register (for consumption by the FaceDancer host)
Return the contents of the device’s debug ring
Set a particular pin to a given value
Each class is identified by a unique 32-bit integer. Each verb is identified by a separately-namespaced 32-bit integer. To add a class to GreatFET, first reserve its number in the Class Registry below.
Class Registry
Class Number |
Class Name |
Description |
---|---|---|
0x0 |
core |
core device identification functionality |
0x1 |
firmware |
verbs for working with/updating device firmware |
0x10 |
debug |
debug utilities |
0x11 |
selftest |
utilities for self-testing libgreat-based boards |
0x100 |
example |
example verbs meant to illustrate the comms protocol |
0x101 |
spi_flash |
verbs for programming SPI flashes |
0x102 |
heartbeat |
control the GreatFET’s idle/”heartbeat” LED |
0x103 |
gpio |
raw control over the GreatFET’s GPIO pins |
0x104 |
greatdancer |
remote control over the GreatFET’s USB1 port in device mode, for e.g. FaceDancer |
0x105 |
usbhost |
remote control over the GreatFET’s USB port in host mode, for e.g. FaceDancer |
0x106 |
glitchkit c |
control over the GlitchKit API, and control over simple triggers |
0x107 |
glitchkit_usb |
control over functionality intended to help with timing USB fault injection |
0x108 |
i2c |
communication as an I2C controller |
0x109 |
spi |
communication as SPI controller |
0x10A |
leds |
control over a given board’s LEDs |
0x10B |
jtag |
functions for debugging over JTAG |
0x10C |
jtag_msp430 |
MSP430 specific JTAG functions |
0x10D |
logic_analyzer |
allows one to use the GreatFET’s SGPIO interface as a logic analyzer |
0x10E |
sdir |
Functionality for Software Defined Infrared |
0x10F |
usbproxy |
Firmware functionality supporting USBProxy |
0x110 |
pattern_generator |
allows one to use the GreatFET’s SGPIO interface as a pattern generator |
0x111 |
adc |
analog to digital converter functionality |
0x112 |
uart |
functionality for talking ‘serial’ |
0x113 |
usb_analysis |
functionality for USB analysis e.g. with Rhododendron |
0x114 |
swra124 |
debugging/programming for TI cc111x, cc243x, and cc251x |
0x115 |
loadables |
API for loading and running small firmware extensions |
0x116 |
clock_gen |
clock generation / control |
0x117 |
benchmarking |
measurement of GreatFET communications and functions |
0x118 |
can |
functionality for communication over CAN |
0x119 |
SWD |
functionality for communicating with ARM SWD interfaces |