Skip to main content
The WiFi API carries Protocol Buffer messages; the BLE API carries the same data packed into compact binary characteristics. This page covers the messages you meet most often and how they map onto BLE writes. The full schema.proto lives in a private repository — ask support for access.

Common Types

PlaybackProtocol

Purpose: select the active playback mode before sending control commands. The protocol is set through Auth.protocol when a client connects, or through DeviceRemoteControl.playback_protocol on an established connection.

Device Information

DebugInformation

Fields:
  • free_heap_size — available heap memory, in bytes
  • external_flash_size — external flash storage, in bytes
  • debug_logging_enabled — whether the device is currently emitting debug log frames (see Debug Logging)

Stroker (Linear Actuator)

StrokerStatus

Positions and velocities are reported twice: as an angle in radians, and normalized to the 0–10000 point range.

StrokerCalibrationInfo

Fields:
  • calib_low_position — lowest physical bound, where the stroker is mechanically blocked
  • calib_high_position — highest physical bound, where the stroker is mechanically blocked
  • calibration_length — full mechanical stroke length
  • hall_low_position — hall sensor reading at the low limit
  • hall_high_position — hall sensor reading at the high limit
  • calib_shift — offset applied after calibration when only the encoder is used
Every field of StrokerCalibrationInfo is in radians, not millimeters. The user-facing limits in StrokerSettings are the ones expressed in millimeters.

StrokerSettings

Fields:
  • low_position_shift — user-defined low position shift (mm)
  • high_position_shift — user-defined high position shift (mm)
  • max_velocity — user-defined velocity cap
  • playback_rate — playback speed multiplier (1.0 = normal speed)

Motion Control Commands

HDCCommand (direct position move, interruptible)

Move is the payload of a direct control command:
Fields:
  • position — target position, 0–10000 points (0.01% resolution)
  • time — travel duration, in milliseconds

BLE binary equivalent

Because BLE packs time into a uint16, a single BLE move is capped at 65535 ms; the WiFi API uses uint32 and has no such limit.
Important: BLE never queues HDC commands. Every new write interrupts active movement.

HPSSignal (point streaming)

Stream contract:
  • Velocity is always derived on the device from the time delta between consecutive points
  • At least 2 points are required before the stroker moves
  • Over BLE, at most 64 points per write and 128 points in the stream buffer
  • A negative time delta between consecutive points causes the earlier timestamp to be treated as 0

BLE binary layout (per point, characteristic 0x2002 → 0x0001)


Data Type Mapping


Two rules that catch people out: velocity is never transmitted in BLE point packets — the device derives it — and the playback protocol must be selected before commands are accepted.