Not yet verified on hardware. - shared/HexapodProtocol: CmdPacket (now 20 bytes, adds remote_roll / remote_pitch), FLAG_* bits and radio settings as the single protocol definition; static payload size = sizeof(CmdPacket) on both radios. - robot: use the shared protocol; vx = forward (harness w/x <-> q/e); InputMapper adds remote tilt on top of the right stick when FLAG_REMOTE_GYRO is set, and robot.ino no longer zeroes stick roll/pitch when it's off. - remote (Teensy 4.1): Sticks (calibration, EEPROM), RemoteIMU, RemoteState (interlocks, link-loss disarm, smoothing), PacketBuilder, RadioLink, NextionUI, SerialConsole. - CLAUDE.md, README.md, remote/README.md, remote/NEXTION.md. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
21 lines
644 B
C++
21 lines
644 B
C++
#pragma once
|
|
#include <Arduino.h>
|
|
#include <HexapodProtocol.h> // CmdPacket + FLAG_* + radio settings, shared with the remote (shared/)
|
|
|
|
class Comms {
|
|
public:
|
|
bool begin();
|
|
void update(); // call every loop; polls the radio if present
|
|
bool linkOk() const { return link_ok_; }
|
|
const CmdPacket& latest() const { return packet_; }
|
|
|
|
// Lets the serial test harness (or, later, real radio) inject a packet directly.
|
|
void injectPacket(const CmdPacket& p) { packet_ = p; last_rx_ms_ = millis(); }
|
|
|
|
private:
|
|
CmdPacket packet_;
|
|
uint32_t last_rx_ms_ = 0;
|
|
bool link_ok_ = false;
|
|
bool radio_present_ = false;
|
|
};
|