I am blind or visually impaired: the story in one minute

Engineering, firmware

Specified, not written.

No line of second generation firmware exists yet. What exists is this specification, from the record, precise enough that the code it describes has no decisions left to make.

Status: specification

The reflex loop

Five steps, every tick.

From docs/05. The loop runs on the RP2350 with no operating system; a stuck actuator write can never delay a sensor read because the two buses are separate; brownout and watchdog reset land in a safe state with all motors off.

  1. Read both laser grids on the sensor I2C bus and the radar on its UART.
  2. Fuse a per column nearest distance map and detect drop offs.
  3. Apply the three laws to produce twenty amplitude and rhythm commands.
  4. Write the commands through the actuator I2C bus to the DRV2605L drivers.
  5. Service the hardware watchdog every tick.

The one way link

The Reflex only transmits.

From docs/05 and docs/06. The Reflex has no data dependency on the Spine or the phone: its TX pin feeds the Spine's RX, and no wire runs back. Nothing upstream can block a warning.

Once per control tick, the Reflex emits one 20 byte T.E.K.-Link 0.1 frame, the team's own format, not a standard. The Spine logs it and forwards it to the phone over Bluetooth; the tens of milliseconds that link costs never touch the warning path.

T.e.k.-link 0.1

Twenty bytes, little endian, once per tick.

The T.E.K.-Link 0.1 frame, byte by byte, from docs/06. The team's own format, labeled as such.
OffsetBytesFieldMeaning
01SYNCframe start marker
11VERprotocol version, 0x01
21SEQrolling counter
31FLAGSdrop off, mover present, fault bits
48COLSeight belt column nearest distances
121HEADcollar nearest distance
132GNDground and drop off state
152MOVERnearest mover range and bearing
171AMPLglobal amplitude summary
181STATEreflex state machine code
191CRC8over bytes 0 to 18