powerpods/main/proto/uart_messages.pb.h
simon 59ca269407 Add UART OTA upload with A/B partition support.
Firmware buffers 200-byte chunks into 4 KiB blocks for esp_ota_write; goTool
uploads with per-block ACK flow control and larger UART buffers to avoid stalls.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-19 00:39:59 +02:00

448 lines
19 KiB
C

/* Automatically generated nanopb header */
/* Generated by nanopb-1.0.0-dev */
#ifndef PB_ALOX_MAIN_PROTO_UART_MESSAGES_PB_H_INCLUDED
#define PB_ALOX_MAIN_PROTO_UART_MESSAGES_PB_H_INCLUDED
#include <pb.h>
#if PB_PROTO_HEADER_VERSION != 40
#error Regenerate this file with the current version of nanopb generator.
#endif
/* Enum definitions */
typedef enum _alox_MessageType {
alox_MessageType_UNKNOWN = 0,
alox_MessageType_ACK = 1,
alox_MessageType_ECHO = 2,
alox_MessageType_VERSION = 3,
alox_MessageType_CLIENT_INFO = 4,
alox_MessageType_CLIENT_INPUT = 5,
alox_MessageType_ACCEL_DEADZONE = 6,
alox_MessageType_ESPNOW_UNICAST_TEST = 7,
alox_MessageType_OTA_START = 16,
alox_MessageType_OTA_PAYLOAD = 17,
alox_MessageType_OTA_END = 18,
alox_MessageType_OTA_STATUS = 19,
alox_MessageType_OTA_START_ESPNOW = 20
} alox_MessageType;
/* Struct definitions */
typedef struct _alox_Ack {
char dummy_field;
} alox_Ack;
typedef struct _alox_EchoPayload {
pb_callback_t data;
} alox_EchoPayload;
typedef struct _alox_VersionResponse {
uint32_t version;
pb_callback_t git_hash;
/* * Active OTA app partition label, e.g. "ota_0" or "ota_1". */
pb_callback_t running_partition;
} alox_VersionResponse;
typedef struct _alox_ClientInfo {
uint32_t id;
bool available;
bool used;
pb_callback_t mac;
uint32_t last_ping;
uint32_t last_success_ping;
uint32_t version;
} alox_ClientInfo;
typedef struct _alox_ClientInfoResponse {
pb_callback_t clients;
} alox_ClientInfoResponse;
typedef struct _alox_ClientInput {
uint32_t id;
float lage_x;
float lage_y;
uint32_t bitmask;
} alox_ClientInput;
typedef struct _alox_ClientInputResponse {
pb_callback_t clients;
} alox_ClientInputResponse;
/* write=false: read deadzone; write=true: apply deadzone (LSB per axis, raw accel units).
client_id 0 = local BMA456 on this node; >0 = slave id on master; ignored on slave.
all_clients = true (master only): push deadzone to every registered slave via ESP-NOW. */
typedef struct _alox_AccelDeadzoneRequest {
bool write;
uint32_t deadzone;
uint32_t client_id;
bool all_clients;
} alox_AccelDeadzoneRequest;
typedef struct _alox_AccelDeadzoneResponse {
uint32_t deadzone;
uint32_t client_id;
bool success;
uint32_t slaves_updated;
} alox_AccelDeadzoneResponse;
typedef struct _alox_EspNowUnicastTestRequest {
uint32_t client_id;
uint32_t seq;
} alox_EspNowUnicastTestRequest;
typedef struct _alox_EspNowUnicastTestResponse {
bool success;
uint32_t seq;
} alox_EspNowUnicastTestResponse;
/* Host → device: begin UART OTA (erase inactive OTA slot; device replies OTA_STATUS). */
typedef struct _alox_OtaStartPayload {
uint32_t total_size;
} alox_OtaStartPayload;
/* Host → device: firmware chunk (up to 200 bytes); device buffers 4 KiB before flash write. */
typedef PB_BYTES_ARRAY_T(200) alox_OtaPayload_data_t;
typedef struct _alox_OtaPayload {
uint32_t seq;
alox_OtaPayload_data_t data;
} alox_OtaPayload;
/* Host → device: no more payload; device flushes buffer and finalizes OTA. */
typedef struct _alox_OtaEndPayload {
char dummy_field;
} alox_OtaEndPayload;
/* Device → host status (also used as ACK after each 4 KiB written).
status: 1=preparing, 2=ready, 3=block_ack, 4=success, 5=failed */
typedef struct _alox_OtaStatusPayload {
uint32_t status;
uint32_t bytes_written;
uint32_t target_slot;
uint32_t error;
} alox_OtaStatusPayload;
typedef struct _alox_UartMessage {
alox_MessageType type;
pb_size_t which_payload;
union _alox_UartMessage_payload {
alox_Ack ack_payload;
alox_EchoPayload echo_payload;
alox_VersionResponse version_response;
alox_ClientInfoResponse client_info_response;
alox_ClientInputResponse client_input_response;
alox_OtaStartPayload ota_start;
alox_OtaPayload ota_payload;
alox_OtaEndPayload ota_end;
alox_OtaStatusPayload ota_status;
alox_AccelDeadzoneRequest accel_deadzone_request;
alox_AccelDeadzoneResponse accel_deadzone_response;
alox_EspNowUnicastTestRequest espnow_unicast_test_request;
alox_EspNowUnicastTestResponse espnow_unicast_test_response;
} payload;
} alox_UartMessage;
#ifdef __cplusplus
extern "C" {
#endif
/* Helper constants for enums */
#define _alox_MessageType_MIN alox_MessageType_UNKNOWN
#define _alox_MessageType_MAX alox_MessageType_OTA_START_ESPNOW
#define _alox_MessageType_ARRAYSIZE ((alox_MessageType)(alox_MessageType_OTA_START_ESPNOW+1))
#define alox_UartMessage_type_ENUMTYPE alox_MessageType
/* Initializer values for message structs */
#define alox_UartMessage_init_default {_alox_MessageType_MIN, 0, {alox_Ack_init_default}}
#define alox_Ack_init_default {0}
#define alox_EchoPayload_init_default {{{NULL}, NULL}}
#define alox_VersionResponse_init_default {0, {{NULL}, NULL}, {{NULL}, NULL}}
#define alox_ClientInfo_init_default {0, 0, 0, {{NULL}, NULL}, 0, 0, 0}
#define alox_ClientInfoResponse_init_default {{{NULL}, NULL}}
#define alox_ClientInput_init_default {0, 0, 0, 0}
#define alox_ClientInputResponse_init_default {{{NULL}, NULL}}
#define alox_AccelDeadzoneRequest_init_default {0, 0, 0, 0}
#define alox_AccelDeadzoneResponse_init_default {0, 0, 0, 0}
#define alox_EspNowUnicastTestRequest_init_default {0, 0}
#define alox_EspNowUnicastTestResponse_init_default {0, 0}
#define alox_OtaStartPayload_init_default {0}
#define alox_OtaPayload_init_default {0, {0, {0}}}
#define alox_OtaEndPayload_init_default {0}
#define alox_OtaStatusPayload_init_default {0, 0, 0, 0}
#define alox_UartMessage_init_zero {_alox_MessageType_MIN, 0, {alox_Ack_init_zero}}
#define alox_Ack_init_zero {0}
#define alox_EchoPayload_init_zero {{{NULL}, NULL}}
#define alox_VersionResponse_init_zero {0, {{NULL}, NULL}, {{NULL}, NULL}}
#define alox_ClientInfo_init_zero {0, 0, 0, {{NULL}, NULL}, 0, 0, 0}
#define alox_ClientInfoResponse_init_zero {{{NULL}, NULL}}
#define alox_ClientInput_init_zero {0, 0, 0, 0}
#define alox_ClientInputResponse_init_zero {{{NULL}, NULL}}
#define alox_AccelDeadzoneRequest_init_zero {0, 0, 0, 0}
#define alox_AccelDeadzoneResponse_init_zero {0, 0, 0, 0}
#define alox_EspNowUnicastTestRequest_init_zero {0, 0}
#define alox_EspNowUnicastTestResponse_init_zero {0, 0}
#define alox_OtaStartPayload_init_zero {0}
#define alox_OtaPayload_init_zero {0, {0, {0}}}
#define alox_OtaEndPayload_init_zero {0}
#define alox_OtaStatusPayload_init_zero {0, 0, 0, 0}
/* Field tags (for use in manual encoding/decoding) */
#define alox_EchoPayload_data_tag 1
#define alox_VersionResponse_version_tag 1
#define alox_VersionResponse_git_hash_tag 2
#define alox_VersionResponse_running_partition_tag 3
#define alox_ClientInfo_id_tag 1
#define alox_ClientInfo_available_tag 2
#define alox_ClientInfo_used_tag 3
#define alox_ClientInfo_mac_tag 4
#define alox_ClientInfo_last_ping_tag 5
#define alox_ClientInfo_last_success_ping_tag 6
#define alox_ClientInfo_version_tag 7
#define alox_ClientInfoResponse_clients_tag 1
#define alox_ClientInput_id_tag 1
#define alox_ClientInput_lage_x_tag 2
#define alox_ClientInput_lage_y_tag 3
#define alox_ClientInput_bitmask_tag 4
#define alox_ClientInputResponse_clients_tag 1
#define alox_AccelDeadzoneRequest_write_tag 1
#define alox_AccelDeadzoneRequest_deadzone_tag 2
#define alox_AccelDeadzoneRequest_client_id_tag 3
#define alox_AccelDeadzoneRequest_all_clients_tag 4
#define alox_AccelDeadzoneResponse_deadzone_tag 1
#define alox_AccelDeadzoneResponse_client_id_tag 2
#define alox_AccelDeadzoneResponse_success_tag 3
#define alox_AccelDeadzoneResponse_slaves_updated_tag 4
#define alox_EspNowUnicastTestRequest_client_id_tag 1
#define alox_EspNowUnicastTestRequest_seq_tag 2
#define alox_EspNowUnicastTestResponse_success_tag 1
#define alox_EspNowUnicastTestResponse_seq_tag 2
#define alox_OtaStartPayload_total_size_tag 1
#define alox_OtaPayload_seq_tag 1
#define alox_OtaPayload_data_tag 2
#define alox_OtaStatusPayload_status_tag 1
#define alox_OtaStatusPayload_bytes_written_tag 2
#define alox_OtaStatusPayload_target_slot_tag 3
#define alox_OtaStatusPayload_error_tag 4
#define alox_UartMessage_type_tag 1
#define alox_UartMessage_ack_payload_tag 2
#define alox_UartMessage_echo_payload_tag 3
#define alox_UartMessage_version_response_tag 4
#define alox_UartMessage_client_info_response_tag 5
#define alox_UartMessage_client_input_response_tag 6
#define alox_UartMessage_ota_start_tag 7
#define alox_UartMessage_ota_payload_tag 8
#define alox_UartMessage_ota_end_tag 9
#define alox_UartMessage_ota_status_tag 10
#define alox_UartMessage_accel_deadzone_request_tag 11
#define alox_UartMessage_accel_deadzone_response_tag 12
#define alox_UartMessage_espnow_unicast_test_request_tag 13
#define alox_UartMessage_espnow_unicast_test_response_tag 14
/* Struct field encoding specification for nanopb */
#define alox_UartMessage_FIELDLIST(X, a) \
X(a, STATIC, SINGULAR, UENUM, type, 1) \
X(a, STATIC, ONEOF, MESSAGE, (payload,ack_payload,payload.ack_payload), 2) \
X(a, STATIC, ONEOF, MESSAGE, (payload,echo_payload,payload.echo_payload), 3) \
X(a, STATIC, ONEOF, MESSAGE, (payload,version_response,payload.version_response), 4) \
X(a, STATIC, ONEOF, MESSAGE, (payload,client_info_response,payload.client_info_response), 5) \
X(a, STATIC, ONEOF, MESSAGE, (payload,client_input_response,payload.client_input_response), 6) \
X(a, STATIC, ONEOF, MESSAGE, (payload,ota_start,payload.ota_start), 7) \
X(a, STATIC, ONEOF, MESSAGE, (payload,ota_payload,payload.ota_payload), 8) \
X(a, STATIC, ONEOF, MESSAGE, (payload,ota_end,payload.ota_end), 9) \
X(a, STATIC, ONEOF, MESSAGE, (payload,ota_status,payload.ota_status), 10) \
X(a, STATIC, ONEOF, MESSAGE, (payload,accel_deadzone_request,payload.accel_deadzone_request), 11) \
X(a, STATIC, ONEOF, MESSAGE, (payload,accel_deadzone_response,payload.accel_deadzone_response), 12) \
X(a, STATIC, ONEOF, MESSAGE, (payload,espnow_unicast_test_request,payload.espnow_unicast_test_request), 13) \
X(a, STATIC, ONEOF, MESSAGE, (payload,espnow_unicast_test_response,payload.espnow_unicast_test_response), 14)
#define alox_UartMessage_CALLBACK NULL
#define alox_UartMessage_DEFAULT NULL
#define alox_UartMessage_payload_ack_payload_MSGTYPE alox_Ack
#define alox_UartMessage_payload_echo_payload_MSGTYPE alox_EchoPayload
#define alox_UartMessage_payload_version_response_MSGTYPE alox_VersionResponse
#define alox_UartMessage_payload_client_info_response_MSGTYPE alox_ClientInfoResponse
#define alox_UartMessage_payload_client_input_response_MSGTYPE alox_ClientInputResponse
#define alox_UartMessage_payload_ota_start_MSGTYPE alox_OtaStartPayload
#define alox_UartMessage_payload_ota_payload_MSGTYPE alox_OtaPayload
#define alox_UartMessage_payload_ota_end_MSGTYPE alox_OtaEndPayload
#define alox_UartMessage_payload_ota_status_MSGTYPE alox_OtaStatusPayload
#define alox_UartMessage_payload_accel_deadzone_request_MSGTYPE alox_AccelDeadzoneRequest
#define alox_UartMessage_payload_accel_deadzone_response_MSGTYPE alox_AccelDeadzoneResponse
#define alox_UartMessage_payload_espnow_unicast_test_request_MSGTYPE alox_EspNowUnicastTestRequest
#define alox_UartMessage_payload_espnow_unicast_test_response_MSGTYPE alox_EspNowUnicastTestResponse
#define alox_Ack_FIELDLIST(X, a) \
#define alox_Ack_CALLBACK NULL
#define alox_Ack_DEFAULT NULL
#define alox_EchoPayload_FIELDLIST(X, a) \
X(a, CALLBACK, SINGULAR, BYTES, data, 1)
#define alox_EchoPayload_CALLBACK pb_default_field_callback
#define alox_EchoPayload_DEFAULT NULL
#define alox_VersionResponse_FIELDLIST(X, a) \
X(a, STATIC, SINGULAR, UINT32, version, 1) \
X(a, CALLBACK, SINGULAR, STRING, git_hash, 2) \
X(a, CALLBACK, SINGULAR, STRING, running_partition, 3)
#define alox_VersionResponse_CALLBACK pb_default_field_callback
#define alox_VersionResponse_DEFAULT NULL
#define alox_ClientInfo_FIELDLIST(X, a) \
X(a, STATIC, SINGULAR, UINT32, id, 1) \
X(a, STATIC, SINGULAR, BOOL, available, 2) \
X(a, STATIC, SINGULAR, BOOL, used, 3) \
X(a, CALLBACK, SINGULAR, BYTES, mac, 4) \
X(a, STATIC, SINGULAR, UINT32, last_ping, 5) \
X(a, STATIC, SINGULAR, UINT32, last_success_ping, 6) \
X(a, STATIC, SINGULAR, UINT32, version, 7)
#define alox_ClientInfo_CALLBACK pb_default_field_callback
#define alox_ClientInfo_DEFAULT NULL
#define alox_ClientInfoResponse_FIELDLIST(X, a) \
X(a, CALLBACK, REPEATED, MESSAGE, clients, 1)
#define alox_ClientInfoResponse_CALLBACK pb_default_field_callback
#define alox_ClientInfoResponse_DEFAULT NULL
#define alox_ClientInfoResponse_clients_MSGTYPE alox_ClientInfo
#define alox_ClientInput_FIELDLIST(X, a) \
X(a, STATIC, SINGULAR, UINT32, id, 1) \
X(a, STATIC, SINGULAR, FLOAT, lage_x, 2) \
X(a, STATIC, SINGULAR, FLOAT, lage_y, 3) \
X(a, STATIC, SINGULAR, UINT32, bitmask, 4)
#define alox_ClientInput_CALLBACK NULL
#define alox_ClientInput_DEFAULT NULL
#define alox_ClientInputResponse_FIELDLIST(X, a) \
X(a, CALLBACK, REPEATED, MESSAGE, clients, 1)
#define alox_ClientInputResponse_CALLBACK pb_default_field_callback
#define alox_ClientInputResponse_DEFAULT NULL
#define alox_ClientInputResponse_clients_MSGTYPE alox_ClientInput
#define alox_AccelDeadzoneRequest_FIELDLIST(X, a) \
X(a, STATIC, SINGULAR, BOOL, write, 1) \
X(a, STATIC, SINGULAR, UINT32, deadzone, 2) \
X(a, STATIC, SINGULAR, UINT32, client_id, 3) \
X(a, STATIC, SINGULAR, BOOL, all_clients, 4)
#define alox_AccelDeadzoneRequest_CALLBACK NULL
#define alox_AccelDeadzoneRequest_DEFAULT NULL
#define alox_AccelDeadzoneResponse_FIELDLIST(X, a) \
X(a, STATIC, SINGULAR, UINT32, deadzone, 1) \
X(a, STATIC, SINGULAR, UINT32, client_id, 2) \
X(a, STATIC, SINGULAR, BOOL, success, 3) \
X(a, STATIC, SINGULAR, UINT32, slaves_updated, 4)
#define alox_AccelDeadzoneResponse_CALLBACK NULL
#define alox_AccelDeadzoneResponse_DEFAULT NULL
#define alox_EspNowUnicastTestRequest_FIELDLIST(X, a) \
X(a, STATIC, SINGULAR, UINT32, client_id, 1) \
X(a, STATIC, SINGULAR, UINT32, seq, 2)
#define alox_EspNowUnicastTestRequest_CALLBACK NULL
#define alox_EspNowUnicastTestRequest_DEFAULT NULL
#define alox_EspNowUnicastTestResponse_FIELDLIST(X, a) \
X(a, STATIC, SINGULAR, BOOL, success, 1) \
X(a, STATIC, SINGULAR, UINT32, seq, 2)
#define alox_EspNowUnicastTestResponse_CALLBACK NULL
#define alox_EspNowUnicastTestResponse_DEFAULT NULL
#define alox_OtaStartPayload_FIELDLIST(X, a) \
X(a, STATIC, SINGULAR, UINT32, total_size, 1)
#define alox_OtaStartPayload_CALLBACK NULL
#define alox_OtaStartPayload_DEFAULT NULL
#define alox_OtaPayload_FIELDLIST(X, a) \
X(a, STATIC, SINGULAR, UINT32, seq, 1) \
X(a, STATIC, SINGULAR, BYTES, data, 2)
#define alox_OtaPayload_CALLBACK NULL
#define alox_OtaPayload_DEFAULT NULL
#define alox_OtaEndPayload_FIELDLIST(X, a) \
#define alox_OtaEndPayload_CALLBACK NULL
#define alox_OtaEndPayload_DEFAULT NULL
#define alox_OtaStatusPayload_FIELDLIST(X, a) \
X(a, STATIC, SINGULAR, UINT32, status, 1) \
X(a, STATIC, SINGULAR, UINT32, bytes_written, 2) \
X(a, STATIC, SINGULAR, UINT32, target_slot, 3) \
X(a, STATIC, SINGULAR, UINT32, error, 4)
#define alox_OtaStatusPayload_CALLBACK NULL
#define alox_OtaStatusPayload_DEFAULT NULL
extern const pb_msgdesc_t alox_UartMessage_msg;
extern const pb_msgdesc_t alox_Ack_msg;
extern const pb_msgdesc_t alox_EchoPayload_msg;
extern const pb_msgdesc_t alox_VersionResponse_msg;
extern const pb_msgdesc_t alox_ClientInfo_msg;
extern const pb_msgdesc_t alox_ClientInfoResponse_msg;
extern const pb_msgdesc_t alox_ClientInput_msg;
extern const pb_msgdesc_t alox_ClientInputResponse_msg;
extern const pb_msgdesc_t alox_AccelDeadzoneRequest_msg;
extern const pb_msgdesc_t alox_AccelDeadzoneResponse_msg;
extern const pb_msgdesc_t alox_EspNowUnicastTestRequest_msg;
extern const pb_msgdesc_t alox_EspNowUnicastTestResponse_msg;
extern const pb_msgdesc_t alox_OtaStartPayload_msg;
extern const pb_msgdesc_t alox_OtaPayload_msg;
extern const pb_msgdesc_t alox_OtaEndPayload_msg;
extern const pb_msgdesc_t alox_OtaStatusPayload_msg;
/* Defines for backwards compatibility with code written before nanopb-0.4.0 */
#define alox_UartMessage_fields &alox_UartMessage_msg
#define alox_Ack_fields &alox_Ack_msg
#define alox_EchoPayload_fields &alox_EchoPayload_msg
#define alox_VersionResponse_fields &alox_VersionResponse_msg
#define alox_ClientInfo_fields &alox_ClientInfo_msg
#define alox_ClientInfoResponse_fields &alox_ClientInfoResponse_msg
#define alox_ClientInput_fields &alox_ClientInput_msg
#define alox_ClientInputResponse_fields &alox_ClientInputResponse_msg
#define alox_AccelDeadzoneRequest_fields &alox_AccelDeadzoneRequest_msg
#define alox_AccelDeadzoneResponse_fields &alox_AccelDeadzoneResponse_msg
#define alox_EspNowUnicastTestRequest_fields &alox_EspNowUnicastTestRequest_msg
#define alox_EspNowUnicastTestResponse_fields &alox_EspNowUnicastTestResponse_msg
#define alox_OtaStartPayload_fields &alox_OtaStartPayload_msg
#define alox_OtaPayload_fields &alox_OtaPayload_msg
#define alox_OtaEndPayload_fields &alox_OtaEndPayload_msg
#define alox_OtaStatusPayload_fields &alox_OtaStatusPayload_msg
/* Maximum encoded size of messages (where known) */
/* alox_UartMessage_size depends on runtime parameters */
/* alox_EchoPayload_size depends on runtime parameters */
/* alox_VersionResponse_size depends on runtime parameters */
/* alox_ClientInfo_size depends on runtime parameters */
/* alox_ClientInfoResponse_size depends on runtime parameters */
/* alox_ClientInputResponse_size depends on runtime parameters */
/* alox_OtaPayload_size depends on runtime parameters */
#define ALOX_MAIN_PROTO_UART_MESSAGES_PB_H_MAX_SIZE alox_OtaStatusPayload_size
#define alox_AccelDeadzoneRequest_size 16
#define alox_AccelDeadzoneResponse_size 20
#define alox_Ack_size 0
#define alox_ClientInput_size 22
#define alox_EspNowUnicastTestRequest_size 12
#define alox_EspNowUnicastTestResponse_size 8
#define alox_OtaEndPayload_size 0
#define alox_OtaStartPayload_size 6
#define alox_OtaStatusPayload_size 24
#ifdef __cplusplus
} /* extern "C" */
#endif
#endif