syntax = "proto3"; // Individual message data types message IMUData { float x = 1; float y = 2; float z = 3; float temp = 4; } message IMUCalibrateData {} message ModeData { int32 mode = 1; } message InputData {} message AnalyticsData {} message PositionData {} message AnglesData { repeated float angles = 1; } message I2CScanData {} message PeripheralSettingsData {} message OTAStatusData {} message GaitData {} message ServoStateData {} message ServoPWMData {} message WifiSettingsData {} message SonarData {} message RSSIData { int32 rssi = 1; } message SubscribeNotification {} message UnsubscribeNotification {} // 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; IMUData imu = 110; IMUCalibrateData imu_calibrate = 120; ModeData mode = 130; InputData input = 140; AnalyticsData analytics = 150; PositionData position = 160; AnglesData angles = 170; I2CScanData i2c_scan = 180; PeripheralSettingsData peripheral_settings = 190; OTAStatusData ota_status = 200; GaitData gait = 210; ServoStateData servo_state = 220; ServoPWMData servo_pwm = 230; WifiSettingsData wifi_settings = 240; SonarData sonar = 250; RSSIData rssi = 260; } }