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; } }