16#include "freertos/FreeRTOS.h"
17#include "freertos/queue.h"
47static constexpr uint8_t
UI_BOARD_MAC[6] = { 0xB0, 0x81, 0x84, 0x96, 0x90, 0x10 };
375inline uint16_t
Crc16Ccitt(
const uint8_t* data,
size_t len)
noexcept
377 uint16_t crc = 0xFFFF;
378 for (
size_t i = 0; i < len; ++i) {
379 crc ^=
static_cast<uint16_t
>(data[i]) << 8;
380 for (
int j = 0; j < 8; ++j) {
382 crc = (crc << 1) ^ 0x1021;
Compatibility include wrapper for ESP-IDF headers when building with -Wpedantic in C++.
static constexpr uint8_t DEVICE_ID_FATIGUE_TESTER
Definition espnow_protocol.hpp:33
static constexpr size_t ESPNOW_MAX_PAYLOAD
Definition espnow_protocol.hpp:36
MsgType
Wire-level message type identifiers.
Definition espnow_protocol.hpp:60
@ PairingConfirm
Final confirmation.
@ PairingRequest
Initiate pairing (broadcast)
@ PairingResponse
Response with HMAC proof.
@ Unpair
Remove a paired device.
@ PairingReject
Explicit rejection.
TestState
Protocol-visible test states encoded in STATUS_UPDATE.
Definition espnow_protocol.hpp:90
CommandId
Command IDs for COMMAND message type.
Definition espnow_protocol.hpp:103
@ ManualBoundsArmPlaced
Arm at left stop: engage motor, set reference.
@ ManualBoundsReZero
Re-zero motor position at current location.
@ ManualBoundsConfirm
Confirm bounds (center_deg f32, local_gap_deg f32)
@ ManualBoundsStart
Start manual bounds: disengage motor.
@ ManualBoundsCancel
Cancel manual bounds finding.
@ StartWithManualBounds
Start test reusing cached manual bounds (center, gap, fix_offset)
@ ManualBoundsJog
Jog to absolute position (float degrees)
@ StartWithManualRealign
Start test after manual encoder realignment (skip hard-drive)
static constexpr uint8_t UI_BOARD_MAC[6]
Definition espnow_protocol.hpp:47
static constexpr uint8_t WIFI_CHANNEL
Definition espnow_protocol.hpp:39
static constexpr uint8_t ESPNOW_SYNC_BYTE
Definition espnow_protocol.hpp:27
static constexpr uint8_t ESPNOW_PROTOCOL_VERSION
Definition espnow_protocol.hpp:30
ProtoEventType
Higher-level events emitted by the protocol layer.
Definition espnow_protocol.hpp:306
@ CommandManualBoundsConfirm
@ CommandManualBoundsArmPlaced
@ PairingComplete
Pairing completed successfully.
@ CommandRunBoundsFinding
@ CommandStartWithManualBounds
@ PairingFailed
Pairing failed (rejected or timeout)
@ CommandManualBoundsReZero
@ PeerUnpaired
A peer was unpaired.
@ CommandManualBoundsCancel
@ CommandManualBoundsStart
@ CommandStartWithManualRealign
uint16_t Crc16Ccitt(const uint8_t *data, size_t len) noexcept
Compute CRC16-CCITT (poly 0x1021, init 0xFFFF).
Definition espnow_protocol.hpp:375
ESP-NOW security and pairing protocol definitions.
static constexpr size_t MAX_DEVICE_NAME_LEN
Maximum device name length.
Definition espnow_security.hpp:120
Payload for BOUNDS_RESULT.
Definition espnow_protocol.hpp:131
float min_degrees_from_center
Definition espnow_protocol.hpp:136
float global_min_degrees
Definition espnow_protocol.hpp:138
uint8_t bounded
1=mechanical stops detected; 0=unbounded default window used
Definition espnow_protocol.hpp:133
uint8_t reserved
Definition espnow_protocol.hpp:135
float global_max_degrees
Definition espnow_protocol.hpp:139
uint8_t ok
1=success (bounded or intentionally unbounded default); 0=failure
Definition espnow_protocol.hpp:132
float max_degrees_from_center
Definition espnow_protocol.hpp:137
uint8_t cancelled
1=cancelled by user/STOP/PAUSE
Definition espnow_protocol.hpp:134
Payload for COMMAND message.
Definition espnow_protocol.hpp:224
uint8_t command_id
Definition espnow_protocol.hpp:225
Payload for CONFIG_ACK.
Definition espnow_protocol.hpp:216
uint8_t ok
Definition espnow_protocol.hpp:217
uint8_t err_code
Definition espnow_protocol.hpp:218
Payload for CONFIG_SET / CONFIG_RESPONSE.
Definition espnow_protocol.hpp:193
float oscillation_amax_rev_s2
Definition espnow_protocol.hpp:197
float bounds_search_accel_rev_s2
Definition espnow_protocol.hpp:205
float stall_detection_current_factor
Definition espnow_protocol.hpp:204
float stallguard_min_velocity_rpm
Definition espnow_protocol.hpp:203
int8_t stallguard_sgt
Definition espnow_protocol.hpp:210
uint8_t bounds_method
Definition espnow_protocol.hpp:199
uint32_t dwell_time_ms
Definition espnow_protocol.hpp:198
float oscillation_vmax_rpm
Definition espnow_protocol.hpp:196
uint32_t cycle_amount
Definition espnow_protocol.hpp:195
float bounds_search_velocity_rpm
Definition espnow_protocol.hpp:202
Payload for ERROR.
Definition espnow_protocol.hpp:244
uint32_t at_cycle
Definition espnow_protocol.hpp:246
uint8_t err_code
Definition espnow_protocol.hpp:245
Full packet representation (header + max payload + CRC field).
Definition espnow_protocol.hpp:176
uint16_t crc
Definition espnow_protocol.hpp:179
EspNowHeader hdr
Definition espnow_protocol.hpp:177
uint8_t payload[ESPNOW_MAX_PAYLOAD]
Definition espnow_protocol.hpp:178
Protocol event structure pushed through FreeRTOS queues.
Definition espnow_protocol.hpp:348
uint8_t err_code
Definition espnow_protocol.hpp:352
TestState state
Definition espnow_protocol.hpp:352
struct ProtoEvent::@27::@32 manual_jog
char device_name[MAX_DEVICE_NAME_LEN]
Definition espnow_protocol.hpp:357
union ProtoEvent::@27 data
struct ProtoEvent::@27::@28 status
uint8_t peer_mac[6]
Definition espnow_protocol.hpp:355
float target_deg
Definition espnow_protocol.hpp:360
float total_range_deg
Definition espnow_protocol.hpp:361
uint32_t cycle
Definition espnow_protocol.hpp:352
float right_backoff_deg
Definition espnow_protocol.hpp:361
uint8_t device_type
Definition espnow_protocol.hpp:356
struct ProtoEvent::@27::@30 pairing
struct ProtoEvent::@27::@29 error
ProtoEventType type
Definition espnow_protocol.hpp:349
float center_distance_deg
Definition espnow_protocol.hpp:359
struct ProtoEvent::@27::@34 manual_start
uint32_t at_cycle
Definition espnow_protocol.hpp:353
struct ProtoEvent::@27::@33 manual_confirm
TestUnitSettings config
Definition espnow_protocol.hpp:351
float left_backoff_deg
Definition espnow_protocol.hpp:361
struct ProtoEvent::@27::@31 manual_bounds
Complete settings structure containing both test unit and UI settings.
Definition espnow_protocol.hpp:290
TestUnitSettings test_unit
Test machine settings (synced via ESP-NOW)
Definition espnow_protocol.hpp:291
UISettings ui
UI board settings (local only)
Definition espnow_protocol.hpp:292
Payload for STATUS_UPDATE.
Definition espnow_protocol.hpp:231
uint8_t bounds_valid
Definition espnow_protocol.hpp:238
uint32_t cycle_number
Definition espnow_protocol.hpp:232
uint8_t err_code
Definition espnow_protocol.hpp:234
uint8_t state
Definition espnow_protocol.hpp:233
Test unit settings - synchronized with test machine via ESP-NOW.
Definition espnow_protocol.hpp:259
float bounds_search_velocity_rpm
Search speed during bounds finding (RPM, 0 = use test config default)
Definition espnow_protocol.hpp:267
float stall_detection_current_factor
Current reduction factor (0.0-1.0, 0 = use test config default)
Definition espnow_protocol.hpp:269
uint32_t cycle_amount
Target cycles (0 = infinite)
Definition espnow_protocol.hpp:260
bool bounds_method_stallguard
true = StallGuard2, false = encoder
Definition espnow_protocol.hpp:264
float oscillation_amax_rev_s2
Acceleration during oscillation (rev/s²)
Definition espnow_protocol.hpp:262
int8_t stallguard_sgt
StallGuard threshold [-64..63], 127 = use test config default.
Definition espnow_protocol.hpp:272
float stallguard_min_velocity_rpm
Min velocity for StallGuard2 (RPM, 0 = use test config default)
Definition espnow_protocol.hpp:268
uint32_t dwell_time_ms
Dwell at endpoints (ms)
Definition espnow_protocol.hpp:263
float bounds_search_accel_rev_s2
Search acceleration (rev/s², 0 = use test config default)
Definition espnow_protocol.hpp:270
float oscillation_vmax_rpm
Max velocity during oscillation (RPM)
Definition espnow_protocol.hpp:261
UI board settings - stored locally, never synchronized with test unit.
Definition espnow_protocol.hpp:280
bool orientation_flipped
Whether display orientation is flipped.
Definition espnow_protocol.hpp:281