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