Files
SpotMicroESP32-Leika/platform_shared/websocket_message.proto
T
2026-01-03 22:15:00 +01:00

73 lines
2.3 KiB
Protocol Buffer

syntax = "proto3";
message Vector { float x = 1; float y = 2; }
message I2CDevice { int32 address = 1; string part_number = 2; string name = 3; }
message PinConfig { int32 pin = 1; string mode = 2; string type = 3; string role = 4; }
message KnownNetworkItem { string ssid = 1; string password = 2; bool static_ip = 3; optional string local_ip = 4; optional string subnet_mask = 5; optional string gateway_ip = 6; optional string dns_ip_1 = 7; optional string dns_ip_2 = 8; }
// Individual message data types
message IMUData {
float x = 1;
float y = 2;
float z = 3;
float temp = 4;
}
message IMUCalibrateData { bool success = 1; }
message ModeData { int32 mode = 1; }
message ControllerInputData {
Vector left = 1;
Vector right = 2;
float height = 3;
float speed = 4;
float s1 = 5;
}
message AnalyticsData {
int32 max_alloc_heap = 1;
int32 psram_size = 2;
int32 free_psram = 3;
int32 free_heap = 4;
int32 total_heap = 5;
int32 min_free_heap = 6;
float core_temp = 7;
int32 fs_total = 8;
int32 fs_used = 9;
int64 uptime = 10;
int32 cpu0_usage = 11;
int32 cpu1_usage = 12;
int32 cpu_usage = 13;
}
message AnglesData { repeated int32 angles = 1; }
message I2CScanData { repeated I2CDevice devices = 1; }
message PeripheralSettingsData { int32 sda = 1; int32 scl = 2; int32 frequency = 3; repeated PinConfig pins = 4; }
message WifiSettingsData { string hostname = 1; bool priority_rssi = 2; repeated KnownNetworkItem wifi_networks = 3; }
message RSSIData { int32 rssi = 1; }
message SubscribeNotification { int32 tag = 1; }
message UnsubscribeNotification {int32 tag = 1; }
message PingMsg {}
message PongMsg {}
// WebSocket message wrapper
// Only ONE field will be set at a time (oneof ensures this)
message WebsocketMessage {
oneof message {
SubscribeNotification sub_notif = 20;
UnsubscribeNotification unsub_notif = 21;
PingMsg pingmsg = 30;
PongMsg pongmsg = 31;
IMUData imu = 110;
IMUCalibrateData imu_calibrate = 120;
ModeData mode = 130;
ControllerInputData input = 140;
AnalyticsData analytics = 150;
AnglesData angles = 170;
I2CScanData i2c_scan = 180;
PeripheralSettingsData peripheral_settings = 190;
WifiSettingsData wifi_settings = 240;
RSSIData rssi = 260;
}
}