diff --git a/esp32/include/communication/comm_base.hpp b/esp32/include/communication/comm_base.hpp index 410b8ef..5a25a4d 100644 --- a/esp32/include/communication/comm_base.hpp +++ b/esp32/include/communication/comm_base.hpp @@ -6,84 +6,14 @@ #include #include -template -struct MessageTraits; - -template <> -struct MessageTraits { - static constexpr pb_size_t tag = socket_message_WebsocketMessage_imu_tag; - static void assign(socket_message_WebsocketMessage& msg, const socket_message_IMUData& data) { - msg.message.imu = data; - } -}; - -template <> -struct MessageTraits { - static constexpr pb_size_t tag = socket_message_WebsocketMessage_mode_tag; - static void assign(socket_message_WebsocketMessage& msg, const socket_message_ModeData& data) { - msg.message.mode = data; - } -}; - -template <> -struct MessageTraits { - static constexpr pb_size_t tag = socket_message_WebsocketMessage_analytics_tag; - static void assign(socket_message_WebsocketMessage& msg, const socket_message_AnalyticsData& data) { - msg.message.analytics = data; - } -}; - -template <> -struct MessageTraits { - static constexpr pb_size_t tag = socket_message_WebsocketMessage_angles_tag; - static void assign(socket_message_WebsocketMessage& msg, const socket_message_AnglesData& data) { - msg.message.angles = data; - } -}; - -template <> -struct MessageTraits { - static constexpr pb_size_t tag = socket_message_WebsocketMessage_rssi_tag; - static void assign(socket_message_WebsocketMessage& msg, const socket_message_RSSIData& data) { - msg.message.rssi = data; - } -}; - -template <> -struct MessageTraits { - static constexpr pb_size_t tag = socket_message_WebsocketMessage_kinematic_data_tag; - static void assign(socket_message_WebsocketMessage& msg, const socket_message_KinematicData& data) { - msg.message.kinematic_data = data; - } -}; - -template <> -struct MessageTraits { - static constexpr pb_size_t tag = socket_message_WebsocketMessage_imu_calibrate_tag; - static void assign(socket_message_WebsocketMessage& msg, const socket_message_IMUCalibrateData& data) { - msg.message.imu_calibrate = data; - } -}; - -template <> -struct MessageTraits { - static constexpr pb_size_t tag = socket_message_WebsocketMessage_i2c_scan_tag; - static void assign(socket_message_WebsocketMessage& msg, const socket_message_I2CScanData& data) { - msg.message.i2c_scan = data; - } -}; - -template <> -struct MessageTraits { - static constexpr pb_size_t tag = socket_message_WebsocketMessage_peripheral_settings_tag; - static void assign(socket_message_WebsocketMessage& msg, const socket_message_PeripheralSettingsData& data) { - msg.message.peripheral_settings = data; - } -}; - class CommAdapterBase { public: - CommAdapterBase() { mutex_ = xSemaphoreCreateMutex(); } + CommAdapterBase() { + mutex_ = xSemaphoreCreateMutex(); + decoder_.onSubscribe([this](int32_t tag, int cid) { subscribe(tag, cid); }); + decoder_.onUnsubscribe([this](int32_t tag, int cid) { unsubscribe(tag, cid); }); + decoder_.onPing([this](int cid) { sendPong(cid); }); + } ~CommAdapterBase() { vSemaphoreDelete(mutex_); } virtual void begin() {} @@ -97,6 +27,11 @@ class CommAdapterBase { ProtoDecoder& decoder() { return decoder_; } + template + void on(std::function handler) { + decoder_.on(handler); + } + template void emit(const T& data, int clientId = -1) { constexpr pb_size_t tag = MessageTraits::tag; @@ -159,14 +94,6 @@ class CommAdapterBase { } } - void setupDecoderHandlers() { - decoder_.onSubscribe([this](int32_t tag, int cid) { subscribe(tag, cid); }); - - decoder_.onUnsubscribe([this](int32_t tag, int cid) { unsubscribe(tag, cid); }); - - decoder_.onPing([this](int cid) { sendPong(cid); }); - } - SemaphoreHandle_t mutex_; std::map> client_subscriptions_; ProtoDecoder decoder_; diff --git a/esp32/include/communication/proto_helpers.h b/esp32/include/communication/proto_helpers.h index e87476e..d9fb2cb 100644 --- a/esp32/include/communication/proto_helpers.h +++ b/esp32/include/communication/proto_helpers.h @@ -4,35 +4,59 @@ #include #include #include +#include #define PROTO_BUFFER_SIZE 512 +template +struct MessageTraits; + +#define DEFINE_MESSAGE_TRAITS(DataType, field) \ + template <> \ + struct MessageTraits { \ + static constexpr pb_size_t tag = socket_message_WebsocketMessage_##field##_tag; \ + static void assign(socket_message_WebsocketMessage& msg, const socket_message_##DataType& data) { \ + msg.message.field = data; \ + } \ + static const socket_message_##DataType& access(const socket_message_WebsocketMessage& msg) { \ + return msg.message.field; \ + } \ + }; + +DEFINE_MESSAGE_TRAITS(IMUData, imu) +DEFINE_MESSAGE_TRAITS(ModeData, mode) +DEFINE_MESSAGE_TRAITS(AnalyticsData, analytics) +DEFINE_MESSAGE_TRAITS(AnglesData, angles) +DEFINE_MESSAGE_TRAITS(RSSIData, rssi) +DEFINE_MESSAGE_TRAITS(KinematicData, kinematic_data) +DEFINE_MESSAGE_TRAITS(IMUCalibrateData, imu_calibrate) +DEFINE_MESSAGE_TRAITS(I2CScanData, i2c_scan) +DEFINE_MESSAGE_TRAITS(PeripheralSettingsData, peripheral_settings) +DEFINE_MESSAGE_TRAITS(HumanInputData, human_input_data) +DEFINE_MESSAGE_TRAITS(WalkGaitData, walk_gait) +DEFINE_MESSAGE_TRAITS(IMUCalibrateExecute, imu_calibrate_execute) +DEFINE_MESSAGE_TRAITS(I2CScanDataRequest, i2c_scan_data_request) +DEFINE_MESSAGE_TRAITS(PeripheralSettingsDataRequest, peripheral_settings_data_request) +DEFINE_MESSAGE_TRAITS(ServoPWMData, servo_pwm) +DEFINE_MESSAGE_TRAITS(ServoStateData, servo_state) + +#undef DEFINE_MESSAGE_TRAITS + class ProtoDecoder { public: using SubscribeHandler = std::function; using UnsubscribeHandler = std::function; using PingHandler = std::function; - using ModeHandler = std::function; - using InputHandler = std::function; - using AnglesHandler = std::function; - using KinematicHandler = std::function; - using WalkGaitHandler = std::function; - using IMUCalibrateExecHandler = std::function; - using I2CScanRequestHandler = std::function; - using PeripheralSettingsRequestHandler = std::function; - void onSubscribe(SubscribeHandler handler) { subscribeHandler = handler; } - void onUnsubscribe(UnsubscribeHandler handler) { unsubscribeHandler = handler; } - void onPing(PingHandler handler) { pingHandler = handler; } - void onMode(ModeHandler handler) { modeHandler = handler; } - void onInput(InputHandler handler) { inputHandler = handler; } - void onAngles(AnglesHandler handler) { anglesHandler = handler; } - void onKinematic(KinematicHandler handler) { kinematicHandler = handler; } - void onWalkGait(WalkGaitHandler handler) { walkGaitHandler = handler; } - void onIMUCalibrateExec(IMUCalibrateExecHandler handler) { imuCalibrateExecHandler = handler; } - void onI2CScanRequest(I2CScanRequestHandler handler) { i2cScanRequestHandler = handler; } - void onPeripheralSettingsRequest(PeripheralSettingsRequestHandler handler) { - peripheralSettingsRequestHandler = handler; + void onSubscribe(SubscribeHandler handler) { subscribeHandler_ = handler; } + void onUnsubscribe(UnsubscribeHandler handler) { unsubscribeHandler_ = handler; } + void onPing(PingHandler handler) { pingHandler_ = handler; } + + template + void on(std::function handler) { + handlers_[MessageTraits::tag] = [handler, this](int clientId) { + handler(MessageTraits::access(msg_), clientId); + }; } bool decode(const uint8_t* data, size_t len, int clientId) { @@ -44,66 +68,32 @@ class ProtoDecoder { switch (msg_.which_message) { case socket_message_WebsocketMessage_sub_notif_tag: - if (subscribeHandler) subscribeHandler(msg_.message.sub_notif.tag, clientId); - break; + if (subscribeHandler_) subscribeHandler_(msg_.message.sub_notif.tag, clientId); + return true; case socket_message_WebsocketMessage_unsub_notif_tag: - if (unsubscribeHandler) unsubscribeHandler(msg_.message.unsub_notif.tag, clientId); - break; + if (unsubscribeHandler_) unsubscribeHandler_(msg_.message.unsub_notif.tag, clientId); + return true; case socket_message_WebsocketMessage_pingmsg_tag: - if (pingHandler) pingHandler(clientId); - break; + if (pingHandler_) pingHandler_(clientId); + return true; - case socket_message_WebsocketMessage_mode_tag: - if (modeHandler) modeHandler(msg_.message.mode, clientId); - break; - - case socket_message_WebsocketMessage_human_input_data_tag: - if (inputHandler) inputHandler(msg_.message.human_input_data, clientId); - break; - - case socket_message_WebsocketMessage_angles_tag: - if (anglesHandler) anglesHandler(msg_.message.angles, clientId); - break; - - case socket_message_WebsocketMessage_kinematic_data_tag: - if (kinematicHandler) kinematicHandler(msg_.message.kinematic_data, clientId); - break; - - case socket_message_WebsocketMessage_walk_gait_tag: - if (walkGaitHandler) walkGaitHandler(msg_.message.walk_gait, clientId); - break; - - case socket_message_WebsocketMessage_imu_calibrate_execute_tag: - if (imuCalibrateExecHandler) imuCalibrateExecHandler(clientId); - break; - - case socket_message_WebsocketMessage_i2c_scan_data_request_tag: - if (i2cScanRequestHandler) i2cScanRequestHandler(clientId); - break; - - case socket_message_WebsocketMessage_peripheral_settings_data_request_tag: - if (peripheralSettingsRequestHandler) peripheralSettingsRequestHandler(clientId); - break; - - default: return false; + default: { + auto it = handlers_.find(msg_.which_message); + if (it != handlers_.end()) { + it->second(clientId); + return true; + } + return false; + } } - - return true; } private: socket_message_WebsocketMessage msg_ = socket_message_WebsocketMessage_init_zero; - SubscribeHandler subscribeHandler; - UnsubscribeHandler unsubscribeHandler; - PingHandler pingHandler; - ModeHandler modeHandler; - InputHandler inputHandler; - AnglesHandler anglesHandler; - KinematicHandler kinematicHandler; - WalkGaitHandler walkGaitHandler; - IMUCalibrateExecHandler imuCalibrateExecHandler; - I2CScanRequestHandler i2cScanRequestHandler; - PeripheralSettingsRequestHandler peripheralSettingsRequestHandler; + SubscribeHandler subscribeHandler_; + UnsubscribeHandler unsubscribeHandler_; + PingHandler pingHandler_; + std::map> handlers_; }; diff --git a/esp32/include/communication/websocket_adapter.h b/esp32/include/communication/websocket_adapter.h index f43a719..588fb3e 100644 --- a/esp32/include/communication/websocket_adapter.h +++ b/esp32/include/communication/websocket_adapter.h @@ -16,9 +16,9 @@ class Websocket : public CommAdapterBase { void begin() override; private: - PsychicWebSocketHandler _socket; - PsychicHttpServer &_server; - const char *_route; + PsychicWebSocketHandler socket_; + PsychicHttpServer &server_; + const char *route_; void onWSOpen(PsychicWebSocketClient *client); void onWSClose(PsychicWebSocketClient *client); diff --git a/esp32/include/message_types.h b/esp32/include/message_types.h index 8d505f3..cdef7e0 100644 --- a/esp32/include/message_types.h +++ b/esp32/include/message_types.h @@ -1,28 +1,17 @@ #pragma once -#include +#include struct CommandMsg { float lx, ly, rx, ry, h, s, s1; - friend void toJson(JsonVariant v, CommandMsg const &c) { - JsonArray arr = v.to(); - arr.add(c.lx); - arr.add(c.ly); - arr.add(c.rx); - arr.add(c.ry); - arr.add(c.h); - arr.add(c.s); - arr.add(c.s1); - } - void fromJson(JsonVariantConst o) { - JsonArrayConst arr = o.as(); - lx = arr[0].as(); - ly = arr[1].as(); - rx = arr[2].as(); - ry = arr[3].as(); - h = arr[4].as(); - s = arr[5].as(); - s1 = arr[6].as(); + void fromProto(const socket_message_HumanInputData& data) { + lx = data.has_left ? data.left.x : 0; + ly = data.has_left ? data.left.y : 0; + rx = data.has_right ? data.right.x : 0; + ry = data.has_right ? data.right.y : 0; + h = data.height; + s = data.speed; + s1 = data.s1; } }; \ No newline at end of file diff --git a/esp32/include/motion.h b/esp32/include/motion.h index 3cf2c31..50ba4a0 100644 --- a/esp32/include/motion.h +++ b/esp32/include/motion.h @@ -1,7 +1,6 @@ #ifndef MotionService_h #define MotionService_h -#include #include "esp_timer.h" #include @@ -22,23 +21,23 @@ class MotionService { public: void begin(); - void anglesEvent(JsonVariant &root, int originId); + void handleAngles(const socket_message_AnglesData& data); - void handleInput(JsonVariant &root, int originId); + void handleInput(const socket_message_HumanInputData& data); - void handleWalkGait(JsonVariant &root, int originId); + void handleWalkGait(const socket_message_WalkGaitData& data); - void handleMode(JsonVariant &root, int originId); + void handleMode(const socket_message_ModeData& data); - void setState(MotionState *newState); + void setState(MotionState* newState); void handleGestures(const gesture_t ges); - bool update(Peripherals *peripherals); + bool update(Peripherals* peripherals); bool update_angles(float new_angles[12], float angles[12]); - float *getAngles() { return angles; } + float* getAngles() { return angles; } inline bool isActive() { return state != nullptr; } @@ -49,7 +48,7 @@ class MotionService { friend class MotionState; - MotionState *state = nullptr; + MotionState* state = nullptr; RestState restState; StandState standState; diff --git a/esp32/include/peripherals/servo_controller.h b/esp32/include/peripherals/servo_controller.h index 6557283..4a2ad91 100644 --- a/esp32/include/peripherals/servo_controller.h +++ b/esp32/include/peripherals/servo_controller.h @@ -56,19 +56,11 @@ class ServoController : public StatefulService { _pca.sleep(); } - void stateUpdate(JsonVariant &root, int originId) { - bool active = root["active"].as(); - ESP_LOGI("SERVOCONTROLLER", "Setting state %d", active); - active ? activate() : deactivate(); - } - - void servoEvent(JsonVariant &root, int originId) { + void setServoPWM(int32_t servo_id, uint32_t pwm) { control_state = SERVO_CONTROL_STATE::PWM; - int8_t servo_id = root["servo_id"]; - uint16_t pwm = root["pwm"].as(); if (servo_id < 0) { uint16_t pwms[12]; - std::fill_n(pwms, 12, pwm); + std::fill_n(pwms, 12, static_cast(pwm)); _pca.setMultiplePWM(pwms, 12); } else { _pca.setPWM(servo_id, 0, pwm); diff --git a/esp32/src/communication/websocket_adapter.cpp b/esp32/src/communication/websocket_adapter.cpp index 3db85a1..f44de44 100644 --- a/esp32/src/communication/websocket_adapter.cpp +++ b/esp32/src/communication/websocket_adapter.cpp @@ -1,82 +1,42 @@ #include -#include -static const char *TAG = "Websocket"; +static const char* TAG = "Websocket"; -Websocket::Websocket(PsychicHttpServer &server, const char *route) : _server(server), _route(route) { - _socket.onOpen((std::bind(&Websocket::onWSOpen, this, std::placeholders::_1))); - _socket.onClose(std::bind(&Websocket::onWSClose, this, std::placeholders::_1)); - _socket.onFrame(std::bind(&Websocket::onFrame, this, std::placeholders::_1, std::placeholders::_2)); +Websocket::Websocket(PsychicHttpServer& server, const char* route) : server_(server), route_(route) { + socket_.onOpen(std::bind(&Websocket::onWSOpen, this, std::placeholders::_1)); + socket_.onClose(std::bind(&Websocket::onWSClose, this, std::placeholders::_1)); + socket_.onFrame(std::bind(&Websocket::onFrame, this, std::placeholders::_1, std::placeholders::_2)); } -void Websocket::begin() { _server.on(_route, &_socket); } +void Websocket::begin() { server_.on(route_, &socket_); } -void Websocket::onEvent(std::string event, EventCallback callback) { - //CommAdapterBase::onEvent(std::move(event), std::move(callback)); +void Websocket::onWSOpen(PsychicWebSocketClient* client) { + ESP_LOGI(TAG, "Client connected: %s [%u]", client->remoteIP().toString().c_str(), client->socket()); + sendPong(client->socket()); } -void Websocket::emit(const char *event, JsonVariant &payload, const char *originId, bool onlyToSameOrigin) { - //CommAdapterBase::emit(event, payload, originId, onlyToSameOrigin); +void Websocket::onWSClose(PsychicWebSocketClient* client) { + ESP_LOGI(TAG, "Client disconnected: %s [%u]", client->remoteIP().toString().c_str(), client->socket()); + removeClient(client->socket()); } - -void Websocket::onWSOpen(PsychicWebSocketClient *client) { - ESP_LOGI("EventSocket", "ws[%s][%u] connect", client->remoteIP().toString().c_str(), client->socket()); - ping(client->socket()); -} - -void Websocket::onWSClose(PsychicWebSocketClient *client) { - xSemaphoreTake(mutex_, portMAX_DELAY); - for (auto &event_subscriptions : client_subscriptions) { - event_subscriptions.second.remove(client->socket()); +esp_err_t Websocket::onFrame(PsychicWebSocketRequest* request, httpd_ws_frame* frame) { + if (frame->type != HTTPD_WS_TYPE_BINARY) { + ESP_LOGW(TAG, "Expected binary frame, got type %d", frame->type); + return ESP_OK; } - xSemaphoreGive(mutex_); - ESP_LOGI("EventSocket", "ws[%s][%u] disconnect", client->remoteIP().toString().c_str(), client->socket()); -} - -esp_err_t Websocket::onFrame(PsychicWebSocketRequest *request, httpd_ws_frame *frame) { -// ESP_LOGV(TAG, "ws[%s][%u] opcode[%d]", request->client()->remoteIP().toString().c_str(), -// request->client()->socket(), frame->type); - -// if (frame->type != HTTPD_WS_TYPE_TEXT && frame->type != HTTPD_WS_TYPE_BINARY) { -// ESP_LOGE(TAG, "Unsupported frame type: %d", frame->type); -// return ESP_OK; -// } - -// #if USE_MSGPACK -// if (frame->type == HTTPD_WS_TYPE_BINARY) { -// handleIncoming(frame->payload, frame->len, request->client()->socket()); -// } else { -// ESP_LOGE(TAG, "Expected binary, got text"); -// } -// #else -// if (frame->type == HTTPD_WS_TYPE_TEXT) { -// handleIncoming(frame->payload, frame->len, request->client()->socket()); -// } else { -// ESP_LOGE(TAG, "Expected text, got binary"); -// } -// #endif + handleIncoming(frame->payload, frame->len, request->client()->socket()); return ESP_OK; } -void Websocket::send(const uint8_t *data, size_t len, int cid) { - if (cid != -1) { - auto *client = _socket.getClient(cid); +void Websocket::send(const uint8_t* data, size_t len, int cid) { + if (cid >= 0) { + auto* client = socket_.getClient(cid); if (client) { - ESP_LOGV(TAG, "Sending to client %s: %s", client->remoteIP().toString().c_str(), data); -#if USE_MSGPACK client->sendMessage(HTTPD_WS_TYPE_BINARY, data, len); -#else - client->sendMessage(HTTPD_WS_TYPE_TEXT, data, len); -#endif } } else { - ESP_LOGV(TAG, "Sending to all clients: %s", data); -#if USE_MSGPACK - _socket.sendAll(HTTPD_WS_TYPE_BINARY, data, len); -#else - _socket.sendAll(HTTPD_WS_TYPE_TEXT, data, len); -#endif + socket_.sendAll(HTTPD_WS_TYPE_BINARY, data, len); } } diff --git a/esp32/src/main.cpp b/esp32/src/main.cpp index eff2afe..5ae0ba8 100644 --- a/esp32/src/main.cpp +++ b/esp32/src/main.cpp @@ -136,52 +136,41 @@ void setupServer() { DefaultHeaders::Instance().addHeader("Access-Control-Max-Age", "86400"); } -#define ANGLES_EVENT "angles" -#define INPUT_EVENT "input" -#define MODE_EVENT "mode" -#define WALK_GAIT_EVENT "walk_gait" -#define EVENT_I2C_SCAN "i2cScan" -#define EVENT_SERVO_CONFIGURATION_SETTINGS "servoPWM" -#define EVENT_SERVO_STATE "servoState" -#define EVENT_IMU_CALIBRATE "imuCalibrate" - void setupEventSocket() { - // Motion events - // socket.onEvent(INPUT_EVENT, [&](JsonVariant &root, int originId) { motionService.handleInput(root, originId); }); + socket.on( + [&](const socket_message_HumanInputData &data, int clientId) { motionService.handleInput(data); }); - // socket.onEvent(MODE_EVENT, [&](JsonVariant &root, int originId) { - // servoController.setMode(SERVO_CONTROL_STATE::ANGLE); - // motionService.handleMode(root, originId); - // motionService.isActive() ? servoController.activate() : servoController.deactivate(); - // }); + socket.on([&](const socket_message_ModeData &data, int clientId) { + servoController.setMode(SERVO_CONTROL_STATE::ANGLE); + motionService.handleMode(data); + motionService.isActive() ? servoController.activate() : servoController.deactivate(); + }); - // socket.onEvent(WALK_GAIT_EVENT, - // [&](JsonVariant &root, int originId) { motionService.handleWalkGait(root, originId); }); + socket.on( + [&](const socket_message_WalkGaitData &data, int clientId) { motionService.handleWalkGait(data); }); - // socket.onEvent(ANGLES_EVENT, [&](JsonVariant &root, int originId) { motionService.anglesEvent(root, originId); - // }); + socket.on( + [&](const socket_message_AnglesData &data, int clientId) { motionService.handleAngles(data); }); - // // Peripherals events - // socket.onEvent(EVENT_I2C_SCAN, [&](JsonVariant &root, int originId) { - // peripherals.scanI2C(); - // JsonDocument doc; - // JsonVariant results = doc.to(); - // peripherals.getI2CResult(results); - // socket.emit(EVENT_I2C_SCAN, results); - // }); + socket.on([&](const socket_message_I2CScanDataRequest &data, int clientId) { + peripherals.scanI2C(); + socket_message_I2CScanData result = socket_message_I2CScanData_init_zero; + peripherals.getI2CResultProto(result); + socket.emit(result, clientId); + }); - // socket.onEvent(EVENT_IMU_CALIBRATE, [&](JsonVariant &root, int originId) { - // JsonDocument doc; - // JsonVariant results = doc.to(); - // results["success"] = peripherals.calibrateIMU(); - // socket.emit(EVENT_IMU_CALIBRATE, results); - // }); + socket.on([&](const socket_message_IMUCalibrateExecute &data, int clientId) { + socket_message_IMUCalibrateData result = {.success = peripherals.calibrateIMU()}; + socket.emit(result, clientId); + }); - // // Servo controller events - // socket.onEvent(EVENT_SERVO_CONFIGURATION_SETTINGS, - // [&](JsonVariant &root, int originId) { servoController.servoEvent(root, originId); }); - // socket.onEvent(EVENT_SERVO_STATE, - // [&](JsonVariant &root, int originId) { servoController.stateUpdate(root, originId); }); + socket.on([&](const socket_message_ServoPWMData &data, int clientId) { + servoController.setServoPWM(data.servo_id, data.servo_pwm); + }); + + socket.on([&](const socket_message_ServoStateData &data, int clientId) { + data.active ? servoController.activate() : servoController.deactivate(); + }); } void IRAM_ATTR SpotControlLoopEntry(void *) { diff --git a/esp32/src/motion.cpp b/esp32/src/motion.cpp index dfef554..11f4304 100644 --- a/esp32/src/motion.cpp +++ b/esp32/src/motion.cpp @@ -2,14 +2,13 @@ void MotionService::begin() { body_state.updateFeet(KinConfig::default_feet_positions); } -void MotionService::anglesEvent(JsonVariant &root, int originId) { - JsonArray array = root.as(); - for (int i = 0; i < 12; i++) { - angles[i] = array[i]; +void MotionService::handleAngles(const socket_message_AnglesData& data) { + for (int i = 0; i < 12 && i < data.angles_count; i++) { + angles[i] = data.angles[i]; } } -void MotionService::setState(MotionState *newState) { +void MotionService::setState(MotionState* newState) { if (state) { state->end(); } @@ -19,23 +18,21 @@ void MotionService::setState(MotionState *newState) { } } -void MotionService::handleInput(JsonVariant &root, int originId) { - command.fromJson(root); +void MotionService::handleInput(const socket_message_HumanInputData& data) { + command.fromProto(data); if (state) state->handleCommand(command); } -void MotionService::handleWalkGait(JsonVariant &root, int originId) { - ESP_LOGI("MotionService", "Walk Gait %d", root.as()); - - WALK_GAIT walkGait = static_cast(root.as()); - if (walkGait == WALK_GAIT::TROT) +void MotionService::handleWalkGait(const socket_message_WalkGaitData& data) { + ESP_LOGI("MotionService", "Walk Gait %d", static_cast(data.gait)); + if (data.gait == socket_message_WalkGaits_TROT) walkState.set_mode_trot(); else walkState.set_mode_crawl(); } -void MotionService::handleMode(JsonVariant &root, int originId) { - MOTION_STATE mode = static_cast(root.as()); +void MotionService::handleMode(const socket_message_ModeData& data) { + MOTION_STATE mode = static_cast(data.mode); ESP_LOGV("MotionService", "Mode %d", static_cast(mode)); switch (mode) { case MOTION_STATE::REST: setState(&restState); break; @@ -60,7 +57,7 @@ void MotionService::handleGestures(const gesture_t ges) { } } -bool MotionService::update(Peripherals *peripherals) { +bool MotionService::update(Peripherals* peripherals) { handleGestures(peripherals->takeGesture()); if (!state) return false; int64_t now = esp_timer_get_time(); diff --git a/esp32/src/platform_shared/websocket_message.pb.h b/esp32/src/platform_shared/websocket_message.pb.h index db7a53e..57fffd4 100644 --- a/esp32/src/platform_shared/websocket_message.pb.h +++ b/esp32/src/platform_shared/websocket_message.pb.h @@ -94,7 +94,8 @@ typedef struct _socket_message_CorrelationRequest { uint32_t correlation_id; /* Used for request-response correlation */ pb_size_t which_request; union _socket_message_CorrelationRequest_request { - /* NOTE: requests must have same tag id as correlating to the response type (currently not enforced in C, but will be, and tests will fail) */ + /* NOTE: requests must have same tag id as correlating to the response type (currently not enforced in C, but + * will be, and tests will fail) */ socket_message_FeaturesDataRequest features_data_request; } request; } socket_message_CorrelationRequest; @@ -104,7 +105,8 @@ typedef struct _socket_message_CorrelationResponse { uint32_t stauts_code; pb_size_t which_response; union _socket_message_CorrelationResponse_response { - /* NOTE: responses must have same tag id as correlating to the request type (currently not enforced in C, but will be, and tests will fail) */ + /* NOTE: responses must have same tag id as correlating to the request type (currently not enforced in C, but + * will be, and tests will fail) */ socket_message_FeaturesDataResponse features_data_response; } response; } socket_message_CorrelationResponse; @@ -289,13 +291,14 @@ typedef struct _socket_message_WebsocketMessage { socket_message_PeripheralSettingsData peripheral_settings; socket_message_PeripheralSettingsDataRequest peripheral_settings_data_request; socket_message_KinematicData kinematic_data; + socket_message_ServoPWMData servo_pwm; + socket_message_ServoStateData servo_state; socket_message_WifiSettingsData wifi_settings; socket_message_HumanInputData human_input_data; socket_message_RSSIData rssi; } message; } socket_message_WebsocketMessage; - #ifdef __cplusplus extern "C" { #endif @@ -303,132 +306,258 @@ extern "C" { /* Helper constants for enums */ #define _socket_message_ModesEnum_MIN socket_message_ModesEnum_DEACTIVATED #define _socket_message_ModesEnum_MAX socket_message_ModesEnum_WALK -#define _socket_message_ModesEnum_ARRAYSIZE ((socket_message_ModesEnum)(socket_message_ModesEnum_WALK+1)) +#define _socket_message_ModesEnum_ARRAYSIZE ((socket_message_ModesEnum)(socket_message_ModesEnum_WALK + 1)) #define _socket_message_WalkGaits_MIN socket_message_WalkGaits_TROT #define _socket_message_WalkGaits_MAX socket_message_WalkGaits_CRAWL -#define _socket_message_WalkGaits_ARRAYSIZE ((socket_message_WalkGaits)(socket_message_WalkGaits_CRAWL+1)) - - - - - - - - - - - - +#define _socket_message_WalkGaits_ARRAYSIZE ((socket_message_WalkGaits)(socket_message_WalkGaits_CRAWL + 1)) #define socket_message_ModeData_mode_ENUMTYPE socket_message_ModesEnum - - - - - - - - - - - - - - - #define socket_message_WalkGaitData_gait_ENUMTYPE socket_message_WalkGaits - - - - - - - /* Initializer values for message structs */ -#define socket_message_Vector_init_default {0, 0} -#define socket_message_I2CDevice_init_default {0, "", ""} -#define socket_message_PinConfig_init_default {0, "", "", ""} -#define socket_message_KnownNetworkItem_init_default {"", "", 0, false, "", false, "", false, "", false, "", false, ""} -#define socket_message_IMUData_init_default {0, 0, 0, 0, 0, 0, 0} -#define socket_message_FeaturesDataResponse_init_default {{{NULL}, NULL}, {{NULL}, NULL}, {{NULL}, NULL}, {{NULL}, NULL}, 0, 0, 0, 0, 0, 0, 0, 0, 0} -#define socket_message_FeaturesDataRequest_init_default {0} -#define socket_message_CorrelationRequest_init_default {0, 0, {socket_message_FeaturesDataRequest_init_default}} -#define socket_message_CorrelationResponse_init_default {0, 0, 0, {socket_message_FeaturesDataResponse_init_default}} -#define socket_message_StaticSystemInformation_init_default {"", "", 0, "", 0, 0, 0, 0, "", "", 0, 0, ""} -#define socket_message_IMUCalibrateData_init_default {0} -#define socket_message_IMUCalibrateExecute_init_default {0} -#define socket_message_ModeData_init_default {_socket_message_ModesEnum_MIN} -#define socket_message_ControllerInputData_init_default {false, socket_message_Vector_init_default, false, socket_message_Vector_init_default, 0, 0, 0} -#define socket_message_AnalyticsData_init_default {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} -#define socket_message_ServoPWMData_init_default {0, 0} -#define socket_message_ServoStateData_init_default {0} -#define socket_message_AnglesData_init_default {0, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}} -#define socket_message_I2CScanData_init_default {0, {socket_message_I2CDevice_init_default, socket_message_I2CDevice_init_default, socket_message_I2CDevice_init_default, socket_message_I2CDevice_init_default, socket_message_I2CDevice_init_default, socket_message_I2CDevice_init_default, socket_message_I2CDevice_init_default, socket_message_I2CDevice_init_default, socket_message_I2CDevice_init_default, socket_message_I2CDevice_init_default, socket_message_I2CDevice_init_default, socket_message_I2CDevice_init_default, socket_message_I2CDevice_init_default, socket_message_I2CDevice_init_default, socket_message_I2CDevice_init_default, socket_message_I2CDevice_init_default}} -#define socket_message_I2CScanDataRequest_init_default {0} -#define socket_message_PeripheralSettingsData_init_default {0, 0, 0, 0, {socket_message_PinConfig_init_default, socket_message_PinConfig_init_default, socket_message_PinConfig_init_default, socket_message_PinConfig_init_default, socket_message_PinConfig_init_default, socket_message_PinConfig_init_default, socket_message_PinConfig_init_default, socket_message_PinConfig_init_default, socket_message_PinConfig_init_default, socket_message_PinConfig_init_default, socket_message_PinConfig_init_default, socket_message_PinConfig_init_default, socket_message_PinConfig_init_default, socket_message_PinConfig_init_default, socket_message_PinConfig_init_default, socket_message_PinConfig_init_default, socket_message_PinConfig_init_default, socket_message_PinConfig_init_default, socket_message_PinConfig_init_default, socket_message_PinConfig_init_default, socket_message_PinConfig_init_default, socket_message_PinConfig_init_default, socket_message_PinConfig_init_default, socket_message_PinConfig_init_default, socket_message_PinConfig_init_default, socket_message_PinConfig_init_default, socket_message_PinConfig_init_default, socket_message_PinConfig_init_default, socket_message_PinConfig_init_default, socket_message_PinConfig_init_default, socket_message_PinConfig_init_default, socket_message_PinConfig_init_default}} -#define socket_message_PeripheralSettingsDataRequest_init_default {0} -#define socket_message_WifiSettingsData_init_default {"", 0, 0, {socket_message_KnownNetworkItem_init_default, socket_message_KnownNetworkItem_init_default, socket_message_KnownNetworkItem_init_default, socket_message_KnownNetworkItem_init_default, socket_message_KnownNetworkItem_init_default, socket_message_KnownNetworkItem_init_default, socket_message_KnownNetworkItem_init_default, socket_message_KnownNetworkItem_init_default}} -#define socket_message_RSSIData_init_default {0} -#define socket_message_DownloadOTAData_init_default {"", 0, ""} -#define socket_message_SonarData_init_default {""} -#define socket_message_HumanInputData_init_default {false, socket_message_Vector_init_default, false, socket_message_Vector_init_default, 0, 0, 0} -#define socket_message_SystemInformation_init_default {false, socket_message_AnalyticsData_init_default, false, socket_message_StaticSystemInformation_init_default} -#define socket_message_WalkGaitData_init_default {_socket_message_WalkGaits_MIN} -#define socket_message_KinematicData_init_default {0, 0, 0, 0, 0, 0} -#define socket_message_SubscribeNotification_init_default {0} -#define socket_message_UnsubscribeNotification_init_default {0} -#define socket_message_PingMsg_init_default {0} -#define socket_message_PongMsg_init_default {0} -#define socket_message_WebsocketMessage_init_default {0, {socket_message_CorrelationRequest_init_default}} -#define socket_message_Vector_init_zero {0, 0} -#define socket_message_I2CDevice_init_zero {0, "", ""} -#define socket_message_PinConfig_init_zero {0, "", "", ""} -#define socket_message_KnownNetworkItem_init_zero {"", "", 0, false, "", false, "", false, "", false, "", false, ""} -#define socket_message_IMUData_init_zero {0, 0, 0, 0, 0, 0, 0} -#define socket_message_FeaturesDataResponse_init_zero {{{NULL}, NULL}, {{NULL}, NULL}, {{NULL}, NULL}, {{NULL}, NULL}, 0, 0, 0, 0, 0, 0, 0, 0, 0} -#define socket_message_FeaturesDataRequest_init_zero {0} -#define socket_message_CorrelationRequest_init_zero {0, 0, {socket_message_FeaturesDataRequest_init_zero}} -#define socket_message_CorrelationResponse_init_zero {0, 0, 0, {socket_message_FeaturesDataResponse_init_zero}} -#define socket_message_StaticSystemInformation_init_zero {"", "", 0, "", 0, 0, 0, 0, "", "", 0, 0, ""} -#define socket_message_IMUCalibrateData_init_zero {0} -#define socket_message_IMUCalibrateExecute_init_zero {0} -#define socket_message_ModeData_init_zero {_socket_message_ModesEnum_MIN} -#define socket_message_ControllerInputData_init_zero {false, socket_message_Vector_init_zero, false, socket_message_Vector_init_zero, 0, 0, 0} -#define socket_message_AnalyticsData_init_zero {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} -#define socket_message_ServoPWMData_init_zero {0, 0} -#define socket_message_ServoStateData_init_zero {0} -#define socket_message_AnglesData_init_zero {0, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}} -#define socket_message_I2CScanData_init_zero {0, {socket_message_I2CDevice_init_zero, socket_message_I2CDevice_init_zero, socket_message_I2CDevice_init_zero, socket_message_I2CDevice_init_zero, socket_message_I2CDevice_init_zero, socket_message_I2CDevice_init_zero, socket_message_I2CDevice_init_zero, socket_message_I2CDevice_init_zero, socket_message_I2CDevice_init_zero, socket_message_I2CDevice_init_zero, socket_message_I2CDevice_init_zero, socket_message_I2CDevice_init_zero, socket_message_I2CDevice_init_zero, socket_message_I2CDevice_init_zero, socket_message_I2CDevice_init_zero, socket_message_I2CDevice_init_zero}} -#define socket_message_I2CScanDataRequest_init_zero {0} -#define socket_message_PeripheralSettingsData_init_zero {0, 0, 0, 0, {socket_message_PinConfig_init_zero, socket_message_PinConfig_init_zero, socket_message_PinConfig_init_zero, socket_message_PinConfig_init_zero, socket_message_PinConfig_init_zero, socket_message_PinConfig_init_zero, socket_message_PinConfig_init_zero, socket_message_PinConfig_init_zero, socket_message_PinConfig_init_zero, socket_message_PinConfig_init_zero, socket_message_PinConfig_init_zero, socket_message_PinConfig_init_zero, socket_message_PinConfig_init_zero, socket_message_PinConfig_init_zero, socket_message_PinConfig_init_zero, socket_message_PinConfig_init_zero, socket_message_PinConfig_init_zero, socket_message_PinConfig_init_zero, socket_message_PinConfig_init_zero, socket_message_PinConfig_init_zero, socket_message_PinConfig_init_zero, socket_message_PinConfig_init_zero, socket_message_PinConfig_init_zero, socket_message_PinConfig_init_zero, socket_message_PinConfig_init_zero, socket_message_PinConfig_init_zero, socket_message_PinConfig_init_zero, socket_message_PinConfig_init_zero, socket_message_PinConfig_init_zero, socket_message_PinConfig_init_zero, socket_message_PinConfig_init_zero, socket_message_PinConfig_init_zero}} -#define socket_message_PeripheralSettingsDataRequest_init_zero {0} -#define socket_message_WifiSettingsData_init_zero {"", 0, 0, {socket_message_KnownNetworkItem_init_zero, socket_message_KnownNetworkItem_init_zero, socket_message_KnownNetworkItem_init_zero, socket_message_KnownNetworkItem_init_zero, socket_message_KnownNetworkItem_init_zero, socket_message_KnownNetworkItem_init_zero, socket_message_KnownNetworkItem_init_zero, socket_message_KnownNetworkItem_init_zero}} -#define socket_message_RSSIData_init_zero {0} -#define socket_message_DownloadOTAData_init_zero {"", 0, ""} -#define socket_message_SonarData_init_zero {""} -#define socket_message_HumanInputData_init_zero {false, socket_message_Vector_init_zero, false, socket_message_Vector_init_zero, 0, 0, 0} -#define socket_message_SystemInformation_init_zero {false, socket_message_AnalyticsData_init_zero, false, socket_message_StaticSystemInformation_init_zero} -#define socket_message_WalkGaitData_init_zero {_socket_message_WalkGaits_MIN} -#define socket_message_KinematicData_init_zero {0, 0, 0, 0, 0, 0} -#define socket_message_SubscribeNotification_init_zero {0} -#define socket_message_UnsubscribeNotification_init_zero {0} -#define socket_message_PingMsg_init_zero {0} -#define socket_message_PongMsg_init_zero {0} -#define socket_message_WebsocketMessage_init_zero {0, {socket_message_CorrelationRequest_init_zero}} +#define socket_message_Vector_init_default \ + { 0, 0 } +#define socket_message_I2CDevice_init_default \ + { 0, "", "" } +#define socket_message_PinConfig_init_default \ + { 0, "", "", "" } +#define socket_message_KnownNetworkItem_init_default \ + { "", "", 0, false, "", false, "", false, "", false, "", false, "" } +#define socket_message_IMUData_init_default \ + { 0, 0, 0, 0, 0, 0, 0 } +#define socket_message_FeaturesDataResponse_init_default \ + { {{NULL}, NULL}, {{NULL}, NULL}, {{NULL}, NULL}, {{NULL}, NULL}, 0, 0, 0, 0, 0, 0, 0, 0, 0 } +#define socket_message_FeaturesDataRequest_init_default \ + { 0 } +#define socket_message_CorrelationRequest_init_default \ + { \ + 0, 0, { socket_message_FeaturesDataRequest_init_default } \ + } +#define socket_message_CorrelationResponse_init_default \ + { \ + 0, 0, 0, { socket_message_FeaturesDataResponse_init_default } \ + } +#define socket_message_StaticSystemInformation_init_default \ + { "", "", 0, "", 0, 0, 0, 0, "", "", 0, 0, "" } +#define socket_message_IMUCalibrateData_init_default \ + { 0 } +#define socket_message_IMUCalibrateExecute_init_default \ + { 0 } +#define socket_message_ModeData_init_default \ + { _socket_message_ModesEnum_MIN } +#define socket_message_ControllerInputData_init_default \ + { false, socket_message_Vector_init_default, false, socket_message_Vector_init_default, 0, 0, 0 } +#define socket_message_AnalyticsData_init_default \ + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } +#define socket_message_ServoPWMData_init_default \ + { 0, 0 } +#define socket_message_ServoStateData_init_default \ + { 0 } +#define socket_message_AnglesData_init_default \ + { \ + 0, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } \ + } +#define socket_message_I2CScanData_init_default \ + { \ + 0, { \ + socket_message_I2CDevice_init_default, socket_message_I2CDevice_init_default, \ + socket_message_I2CDevice_init_default, socket_message_I2CDevice_init_default, \ + socket_message_I2CDevice_init_default, socket_message_I2CDevice_init_default, \ + socket_message_I2CDevice_init_default, socket_message_I2CDevice_init_default, \ + socket_message_I2CDevice_init_default, socket_message_I2CDevice_init_default, \ + socket_message_I2CDevice_init_default, socket_message_I2CDevice_init_default, \ + socket_message_I2CDevice_init_default, socket_message_I2CDevice_init_default, \ + socket_message_I2CDevice_init_default, socket_message_I2CDevice_init_default \ + } \ + } +#define socket_message_I2CScanDataRequest_init_default \ + { 0 } +#define socket_message_PeripheralSettingsData_init_default \ + { \ + 0, 0, 0, 0, { \ + socket_message_PinConfig_init_default, socket_message_PinConfig_init_default, \ + socket_message_PinConfig_init_default, socket_message_PinConfig_init_default, \ + socket_message_PinConfig_init_default, socket_message_PinConfig_init_default, \ + socket_message_PinConfig_init_default, socket_message_PinConfig_init_default, \ + socket_message_PinConfig_init_default, socket_message_PinConfig_init_default, \ + socket_message_PinConfig_init_default, socket_message_PinConfig_init_default, \ + socket_message_PinConfig_init_default, socket_message_PinConfig_init_default, \ + socket_message_PinConfig_init_default, socket_message_PinConfig_init_default, \ + socket_message_PinConfig_init_default, socket_message_PinConfig_init_default, \ + socket_message_PinConfig_init_default, socket_message_PinConfig_init_default, \ + socket_message_PinConfig_init_default, socket_message_PinConfig_init_default, \ + socket_message_PinConfig_init_default, socket_message_PinConfig_init_default, \ + socket_message_PinConfig_init_default, socket_message_PinConfig_init_default, \ + socket_message_PinConfig_init_default, socket_message_PinConfig_init_default, \ + socket_message_PinConfig_init_default, socket_message_PinConfig_init_default, \ + socket_message_PinConfig_init_default, socket_message_PinConfig_init_default \ + } \ + } +#define socket_message_PeripheralSettingsDataRequest_init_default \ + { 0 } +#define socket_message_WifiSettingsData_init_default \ + { \ + "", 0, 0, { \ + socket_message_KnownNetworkItem_init_default, socket_message_KnownNetworkItem_init_default, \ + socket_message_KnownNetworkItem_init_default, socket_message_KnownNetworkItem_init_default, \ + socket_message_KnownNetworkItem_init_default, socket_message_KnownNetworkItem_init_default, \ + socket_message_KnownNetworkItem_init_default, socket_message_KnownNetworkItem_init_default \ + } \ + } +#define socket_message_RSSIData_init_default \ + { 0 } +#define socket_message_DownloadOTAData_init_default \ + { "", 0, "" } +#define socket_message_SonarData_init_default \ + { "" } +#define socket_message_HumanInputData_init_default \ + { false, socket_message_Vector_init_default, false, socket_message_Vector_init_default, 0, 0, 0 } +#define socket_message_SystemInformation_init_default \ + { false, socket_message_AnalyticsData_init_default, false, socket_message_StaticSystemInformation_init_default } +#define socket_message_WalkGaitData_init_default \ + { _socket_message_WalkGaits_MIN } +#define socket_message_KinematicData_init_default \ + { 0, 0, 0, 0, 0, 0 } +#define socket_message_SubscribeNotification_init_default \ + { 0 } +#define socket_message_UnsubscribeNotification_init_default \ + { 0 } +#define socket_message_PingMsg_init_default \ + { 0 } +#define socket_message_PongMsg_init_default \ + { 0 } +#define socket_message_WebsocketMessage_init_default \ + { \ + 0, { socket_message_CorrelationRequest_init_default } \ + } +#define socket_message_Vector_init_zero \ + { 0, 0 } +#define socket_message_I2CDevice_init_zero \ + { 0, "", "" } +#define socket_message_PinConfig_init_zero \ + { 0, "", "", "" } +#define socket_message_KnownNetworkItem_init_zero \ + { "", "", 0, false, "", false, "", false, "", false, "", false, "" } +#define socket_message_IMUData_init_zero \ + { 0, 0, 0, 0, 0, 0, 0 } +#define socket_message_FeaturesDataResponse_init_zero \ + { {{NULL}, NULL}, {{NULL}, NULL}, {{NULL}, NULL}, {{NULL}, NULL}, 0, 0, 0, 0, 0, 0, 0, 0, 0 } +#define socket_message_FeaturesDataRequest_init_zero \ + { 0 } +#define socket_message_CorrelationRequest_init_zero \ + { \ + 0, 0, { socket_message_FeaturesDataRequest_init_zero } \ + } +#define socket_message_CorrelationResponse_init_zero \ + { \ + 0, 0, 0, { socket_message_FeaturesDataResponse_init_zero } \ + } +#define socket_message_StaticSystemInformation_init_zero \ + { "", "", 0, "", 0, 0, 0, 0, "", "", 0, 0, "" } +#define socket_message_IMUCalibrateData_init_zero \ + { 0 } +#define socket_message_IMUCalibrateExecute_init_zero \ + { 0 } +#define socket_message_ModeData_init_zero \ + { _socket_message_ModesEnum_MIN } +#define socket_message_ControllerInputData_init_zero \ + { false, socket_message_Vector_init_zero, false, socket_message_Vector_init_zero, 0, 0, 0 } +#define socket_message_AnalyticsData_init_zero \ + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } +#define socket_message_ServoPWMData_init_zero \ + { 0, 0 } +#define socket_message_ServoStateData_init_zero \ + { 0 } +#define socket_message_AnglesData_init_zero \ + { \ + 0, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } \ + } +#define socket_message_I2CScanData_init_zero \ + { \ + 0, { \ + socket_message_I2CDevice_init_zero, socket_message_I2CDevice_init_zero, \ + socket_message_I2CDevice_init_zero, socket_message_I2CDevice_init_zero, \ + socket_message_I2CDevice_init_zero, socket_message_I2CDevice_init_zero, \ + socket_message_I2CDevice_init_zero, socket_message_I2CDevice_init_zero, \ + socket_message_I2CDevice_init_zero, socket_message_I2CDevice_init_zero, \ + socket_message_I2CDevice_init_zero, socket_message_I2CDevice_init_zero, \ + socket_message_I2CDevice_init_zero, socket_message_I2CDevice_init_zero, \ + socket_message_I2CDevice_init_zero, socket_message_I2CDevice_init_zero \ + } \ + } +#define socket_message_I2CScanDataRequest_init_zero \ + { 0 } +#define socket_message_PeripheralSettingsData_init_zero \ + { \ + 0, 0, 0, 0, { \ + socket_message_PinConfig_init_zero, socket_message_PinConfig_init_zero, \ + socket_message_PinConfig_init_zero, socket_message_PinConfig_init_zero, \ + socket_message_PinConfig_init_zero, socket_message_PinConfig_init_zero, \ + socket_message_PinConfig_init_zero, socket_message_PinConfig_init_zero, \ + socket_message_PinConfig_init_zero, socket_message_PinConfig_init_zero, \ + socket_message_PinConfig_init_zero, socket_message_PinConfig_init_zero, \ + socket_message_PinConfig_init_zero, socket_message_PinConfig_init_zero, \ + socket_message_PinConfig_init_zero, socket_message_PinConfig_init_zero, \ + socket_message_PinConfig_init_zero, socket_message_PinConfig_init_zero, \ + socket_message_PinConfig_init_zero, socket_message_PinConfig_init_zero, \ + socket_message_PinConfig_init_zero, socket_message_PinConfig_init_zero, \ + socket_message_PinConfig_init_zero, socket_message_PinConfig_init_zero, \ + socket_message_PinConfig_init_zero, socket_message_PinConfig_init_zero, \ + socket_message_PinConfig_init_zero, socket_message_PinConfig_init_zero, \ + socket_message_PinConfig_init_zero, socket_message_PinConfig_init_zero, \ + socket_message_PinConfig_init_zero, socket_message_PinConfig_init_zero \ + } \ + } +#define socket_message_PeripheralSettingsDataRequest_init_zero \ + { 0 } +#define socket_message_WifiSettingsData_init_zero \ + { \ + "", 0, 0, { \ + socket_message_KnownNetworkItem_init_zero, socket_message_KnownNetworkItem_init_zero, \ + socket_message_KnownNetworkItem_init_zero, socket_message_KnownNetworkItem_init_zero, \ + socket_message_KnownNetworkItem_init_zero, socket_message_KnownNetworkItem_init_zero, \ + socket_message_KnownNetworkItem_init_zero, socket_message_KnownNetworkItem_init_zero \ + } \ + } +#define socket_message_RSSIData_init_zero \ + { 0 } +#define socket_message_DownloadOTAData_init_zero \ + { "", 0, "" } +#define socket_message_SonarData_init_zero \ + { "" } +#define socket_message_HumanInputData_init_zero \ + { false, socket_message_Vector_init_zero, false, socket_message_Vector_init_zero, 0, 0, 0 } +#define socket_message_SystemInformation_init_zero \ + { false, socket_message_AnalyticsData_init_zero, false, socket_message_StaticSystemInformation_init_zero } +#define socket_message_WalkGaitData_init_zero \ + { _socket_message_WalkGaits_MIN } +#define socket_message_KinematicData_init_zero \ + { 0, 0, 0, 0, 0, 0 } +#define socket_message_SubscribeNotification_init_zero \ + { 0 } +#define socket_message_UnsubscribeNotification_init_zero \ + { 0 } +#define socket_message_PingMsg_init_zero \ + { 0 } +#define socket_message_PongMsg_init_zero \ + { 0 } +#define socket_message_WebsocketMessage_init_zero \ + { \ + 0, { socket_message_CorrelationRequest_init_zero } \ + } /* Field tags (for use in manual encoding/decoding) */ -#define socket_message_Vector_x_tag 1 -#define socket_message_Vector_y_tag 2 -#define socket_message_I2CDevice_address_tag 1 +#define socket_message_Vector_x_tag 1 +#define socket_message_Vector_y_tag 2 +#define socket_message_I2CDevice_address_tag 1 #define socket_message_I2CDevice_part_number_tag 2 -#define socket_message_I2CDevice_name_tag 3 -#define socket_message_PinConfig_pin_tag 1 -#define socket_message_PinConfig_mode_tag 2 -#define socket_message_PinConfig_type_tag 3 -#define socket_message_PinConfig_role_tag 4 +#define socket_message_I2CDevice_name_tag 3 +#define socket_message_PinConfig_pin_tag 1 +#define socket_message_PinConfig_mode_tag 2 +#define socket_message_PinConfig_type_tag 3 +#define socket_message_PinConfig_role_tag 4 #define socket_message_KnownNetworkItem_ssid_tag 1 #define socket_message_KnownNetworkItem_password_tag 2 #define socket_message_KnownNetworkItem_static_ip_tag 3 @@ -437,13 +566,13 @@ extern "C" { #define socket_message_KnownNetworkItem_gateway_ip_tag 6 #define socket_message_KnownNetworkItem_dns_ip_1_tag 7 #define socket_message_KnownNetworkItem_dns_ip_2_tag 8 -#define socket_message_IMUData_x_tag 1 -#define socket_message_IMUData_y_tag 2 -#define socket_message_IMUData_z_tag 3 -#define socket_message_IMUData_heading_tag 4 -#define socket_message_IMUData_altitude_tag 5 -#define socket_message_IMUData_bmp_temp_tag 6 -#define socket_message_IMUData_pressure_tag 7 +#define socket_message_IMUData_x_tag 1 +#define socket_message_IMUData_y_tag 2 +#define socket_message_IMUData_z_tag 3 +#define socket_message_IMUData_heading_tag 4 +#define socket_message_IMUData_altitude_tag 5 +#define socket_message_IMUData_bmp_temp_tag 6 +#define socket_message_IMUData_pressure_tag 7 #define socket_message_FeaturesDataResponse_variant_tag 10 #define socket_message_FeaturesDataResponse_firmware_built_target_tag 20 #define socket_message_FeaturesDataResponse_firmware_name_tag 30 @@ -477,7 +606,7 @@ extern "C" { #define socket_message_StaticSystemInformation_flash_chip_speed_tag 12 #define socket_message_StaticSystemInformation_cpu_reset_reason_tag 13 #define socket_message_IMUCalibrateData_success_tag 1 -#define socket_message_ModeData_mode_tag 1 +#define socket_message_ModeData_mode_tag 1 #define socket_message_ControllerInputData_left_tag 1 #define socket_message_ControllerInputData_right_tag 2 #define socket_message_ControllerInputData_height_tag 3 @@ -492,15 +621,15 @@ extern "C" { #define socket_message_AnalyticsData_core_temp_tag 7 #define socket_message_AnalyticsData_fs_total_tag 8 #define socket_message_AnalyticsData_fs_used_tag 9 -#define socket_message_AnalyticsData_uptime_tag 10 +#define socket_message_AnalyticsData_uptime_tag 10 #define socket_message_AnalyticsData_cpu0_usage_tag 11 #define socket_message_AnalyticsData_cpu1_usage_tag 12 #define socket_message_AnalyticsData_cpu_usage_tag 13 #define socket_message_ServoPWMData_servo_id_tag 1 #define socket_message_ServoPWMData_servo_pwm_tag 2 #define socket_message_ServoStateData_active_tag 1 -#define socket_message_AnglesData_angles_tag 1 -#define socket_message_I2CScanData_devices_tag 1 +#define socket_message_AnglesData_angles_tag 1 +#define socket_message_I2CScanData_devices_tag 1 #define socket_message_PeripheralSettingsData_sda_tag 1 #define socket_message_PeripheralSettingsData_scl_tag 2 #define socket_message_PeripheralSettingsData_frequency_tag 3 @@ -508,25 +637,25 @@ extern "C" { #define socket_message_WifiSettingsData_hostname_tag 1 #define socket_message_WifiSettingsData_priority_rssi_tag 2 #define socket_message_WifiSettingsData_wifi_networks_tag 3 -#define socket_message_RSSIData_rssi_tag 1 +#define socket_message_RSSIData_rssi_tag 1 #define socket_message_DownloadOTAData_status_tag 1 #define socket_message_DownloadOTAData_progress_tag 2 #define socket_message_DownloadOTAData_error_tag 3 #define socket_message_SonarData_dummy_field_tag 1 -#define socket_message_HumanInputData_left_tag 10 -#define socket_message_HumanInputData_right_tag 11 +#define socket_message_HumanInputData_left_tag 10 +#define socket_message_HumanInputData_right_tag 11 #define socket_message_HumanInputData_height_tag 20 -#define socket_message_HumanInputData_speed_tag 21 -#define socket_message_HumanInputData_s1_tag 22 +#define socket_message_HumanInputData_speed_tag 21 +#define socket_message_HumanInputData_s1_tag 22 #define socket_message_SystemInformation_analytics_data_tag 1 #define socket_message_SystemInformation_static_system_information_tag 2 -#define socket_message_WalkGaitData_gait_tag 1 -#define socket_message_KinematicData_omega_tag 1 -#define socket_message_KinematicData_phi_tag 2 -#define socket_message_KinematicData_psi_tag 3 -#define socket_message_KinematicData_xm_tag 4 -#define socket_message_KinematicData_ym_tag 5 -#define socket_message_KinematicData_zm_tag 6 +#define socket_message_WalkGaitData_gait_tag 1 +#define socket_message_KinematicData_omega_tag 1 +#define socket_message_KinematicData_phi_tag 2 +#define socket_message_KinematicData_psi_tag 3 +#define socket_message_KinematicData_xm_tag 4 +#define socket_message_KinematicData_ym_tag 5 +#define socket_message_KinematicData_zm_tag 6 #define socket_message_SubscribeNotification_tag_tag 1 #define socket_message_UnsubscribeNotification_tag_tag 1 #define socket_message_WebsocketMessage_correlation_request_tag 10 @@ -535,7 +664,7 @@ extern "C" { #define socket_message_WebsocketMessage_unsub_notif_tag 21 #define socket_message_WebsocketMessage_pingmsg_tag 30 #define socket_message_WebsocketMessage_pongmsg_tag 31 -#define socket_message_WebsocketMessage_imu_tag 110 +#define socket_message_WebsocketMessage_imu_tag 110 #define socket_message_WebsocketMessage_imu_calibrate_tag 120 #define socket_message_WebsocketMessage_imu_calibrate_execute_tag 121 #define socket_message_WebsocketMessage_mode_tag 130 @@ -548,295 +677,289 @@ extern "C" { #define socket_message_WebsocketMessage_peripheral_settings_tag 190 #define socket_message_WebsocketMessage_peripheral_settings_data_request_tag 191 #define socket_message_WebsocketMessage_kinematic_data_tag 200 +#define socket_message_WebsocketMessage_servo_pwm_tag 210 +#define socket_message_WebsocketMessage_servo_state_tag 211 #define socket_message_WebsocketMessage_wifi_settings_tag 240 #define socket_message_WebsocketMessage_human_input_data_tag 250 #define socket_message_WebsocketMessage_rssi_tag 260 /* Struct field encoding specification for nanopb */ #define socket_message_Vector_FIELDLIST(X, a) \ -X(a, STATIC, SINGULAR, FLOAT, x, 1) \ -X(a, STATIC, SINGULAR, FLOAT, y, 2) + X(a, STATIC, SINGULAR, FLOAT, x, 1) \ + X(a, STATIC, SINGULAR, FLOAT, y, 2) #define socket_message_Vector_CALLBACK NULL #define socket_message_Vector_DEFAULT NULL -#define socket_message_I2CDevice_FIELDLIST(X, a) \ -X(a, STATIC, SINGULAR, INT32, address, 1) \ -X(a, STATIC, SINGULAR, STRING, part_number, 2) \ -X(a, STATIC, SINGULAR, STRING, name, 3) +#define socket_message_I2CDevice_FIELDLIST(X, a) \ + X(a, STATIC, SINGULAR, INT32, address, 1) \ + X(a, STATIC, SINGULAR, STRING, part_number, 2) \ + X(a, STATIC, SINGULAR, STRING, name, 3) #define socket_message_I2CDevice_CALLBACK NULL #define socket_message_I2CDevice_DEFAULT NULL #define socket_message_PinConfig_FIELDLIST(X, a) \ -X(a, STATIC, SINGULAR, INT32, pin, 1) \ -X(a, STATIC, SINGULAR, STRING, mode, 2) \ -X(a, STATIC, SINGULAR, STRING, type, 3) \ -X(a, STATIC, SINGULAR, STRING, role, 4) + X(a, STATIC, SINGULAR, INT32, pin, 1) \ + X(a, STATIC, SINGULAR, STRING, mode, 2) \ + X(a, STATIC, SINGULAR, STRING, type, 3) \ + X(a, STATIC, SINGULAR, STRING, role, 4) #define socket_message_PinConfig_CALLBACK NULL #define socket_message_PinConfig_DEFAULT NULL #define socket_message_KnownNetworkItem_FIELDLIST(X, a) \ -X(a, STATIC, SINGULAR, STRING, ssid, 1) \ -X(a, STATIC, SINGULAR, STRING, password, 2) \ -X(a, STATIC, SINGULAR, BOOL, static_ip, 3) \ -X(a, STATIC, OPTIONAL, STRING, local_ip, 4) \ -X(a, STATIC, OPTIONAL, STRING, subnet_mask, 5) \ -X(a, STATIC, OPTIONAL, STRING, gateway_ip, 6) \ -X(a, STATIC, OPTIONAL, STRING, dns_ip_1, 7) \ -X(a, STATIC, OPTIONAL, STRING, dns_ip_2, 8) + X(a, STATIC, SINGULAR, STRING, ssid, 1) \ + X(a, STATIC, SINGULAR, STRING, password, 2) \ + X(a, STATIC, SINGULAR, BOOL, static_ip, 3) \ + X(a, STATIC, OPTIONAL, STRING, local_ip, 4) \ + X(a, STATIC, OPTIONAL, STRING, subnet_mask, 5) \ + X(a, STATIC, OPTIONAL, STRING, gateway_ip, 6) \ + X(a, STATIC, OPTIONAL, STRING, dns_ip_1, 7) \ + X(a, STATIC, OPTIONAL, STRING, dns_ip_2, 8) #define socket_message_KnownNetworkItem_CALLBACK NULL #define socket_message_KnownNetworkItem_DEFAULT NULL #define socket_message_IMUData_FIELDLIST(X, a) \ -X(a, STATIC, SINGULAR, FLOAT, x, 1) \ -X(a, STATIC, SINGULAR, FLOAT, y, 2) \ -X(a, STATIC, SINGULAR, FLOAT, z, 3) \ -X(a, STATIC, SINGULAR, FLOAT, heading, 4) \ -X(a, STATIC, SINGULAR, FLOAT, altitude, 5) \ -X(a, STATIC, SINGULAR, FLOAT, bmp_temp, 6) \ -X(a, STATIC, SINGULAR, FLOAT, pressure, 7) + X(a, STATIC, SINGULAR, FLOAT, x, 1) \ + X(a, STATIC, SINGULAR, FLOAT, y, 2) \ + X(a, STATIC, SINGULAR, FLOAT, z, 3) \ + X(a, STATIC, SINGULAR, FLOAT, heading, 4) \ + X(a, STATIC, SINGULAR, FLOAT, altitude, 5) \ + X(a, STATIC, SINGULAR, FLOAT, bmp_temp, 6) \ + X(a, STATIC, SINGULAR, FLOAT, pressure, 7) #define socket_message_IMUData_CALLBACK NULL #define socket_message_IMUData_DEFAULT NULL -#define socket_message_FeaturesDataResponse_FIELDLIST(X, a) \ -X(a, CALLBACK, SINGULAR, STRING, variant, 10) \ -X(a, CALLBACK, SINGULAR, STRING, firmware_built_target, 20) \ -X(a, CALLBACK, SINGULAR, STRING, firmware_name, 30) \ -X(a, CALLBACK, SINGULAR, STRING, firmware_version, 40) \ -X(a, STATIC, SINGULAR, BOOL, camera, 50) \ -X(a, STATIC, SINGULAR, BOOL, imu, 60) \ -X(a, STATIC, SINGULAR, BOOL, mag, 70) \ -X(a, STATIC, SINGULAR, BOOL, bmp, 80) \ -X(a, STATIC, SINGULAR, BOOL, sonar, 90) \ -X(a, STATIC, SINGULAR, BOOL, servo, 100) \ -X(a, STATIC, SINGULAR, BOOL, ws2812, 110) \ -X(a, STATIC, SINGULAR, BOOL, mdns, 120) \ -X(a, STATIC, SINGULAR, BOOL, embed_www, 130) +#define socket_message_FeaturesDataResponse_FIELDLIST(X, a) \ + X(a, CALLBACK, SINGULAR, STRING, variant, 10) \ + X(a, CALLBACK, SINGULAR, STRING, firmware_built_target, 20) \ + X(a, CALLBACK, SINGULAR, STRING, firmware_name, 30) \ + X(a, CALLBACK, SINGULAR, STRING, firmware_version, 40) \ + X(a, STATIC, SINGULAR, BOOL, camera, 50) \ + X(a, STATIC, SINGULAR, BOOL, imu, 60) \ + X(a, STATIC, SINGULAR, BOOL, mag, 70) \ + X(a, STATIC, SINGULAR, BOOL, bmp, 80) \ + X(a, STATIC, SINGULAR, BOOL, sonar, 90) \ + X(a, STATIC, SINGULAR, BOOL, servo, 100) \ + X(a, STATIC, SINGULAR, BOOL, ws2812, 110) \ + X(a, STATIC, SINGULAR, BOOL, mdns, 120) \ + X(a, STATIC, SINGULAR, BOOL, embed_www, 130) #define socket_message_FeaturesDataResponse_CALLBACK pb_default_field_callback #define socket_message_FeaturesDataResponse_DEFAULT NULL -#define socket_message_FeaturesDataRequest_FIELDLIST(X, a) \ -X(a, STATIC, SINGULAR, BOOL, sonar_test, 1) +#define socket_message_FeaturesDataRequest_FIELDLIST(X, a) X(a, STATIC, SINGULAR, BOOL, sonar_test, 1) #define socket_message_FeaturesDataRequest_CALLBACK NULL #define socket_message_FeaturesDataRequest_DEFAULT NULL #define socket_message_CorrelationRequest_FIELDLIST(X, a) \ -X(a, STATIC, SINGULAR, UINT32, correlation_id, 1) \ -X(a, STATIC, ONEOF, MESSAGE, (request,features_data_request,request.features_data_request), 10) + X(a, STATIC, SINGULAR, UINT32, correlation_id, 1) \ + X(a, STATIC, ONEOF, MESSAGE, (request, features_data_request, request.features_data_request), 10) #define socket_message_CorrelationRequest_CALLBACK NULL #define socket_message_CorrelationRequest_DEFAULT NULL #define socket_message_CorrelationRequest_request_features_data_request_MSGTYPE socket_message_FeaturesDataRequest #define socket_message_CorrelationResponse_FIELDLIST(X, a) \ -X(a, STATIC, SINGULAR, UINT32, correlation_id, 1) \ -X(a, STATIC, SINGULAR, UINT32, stauts_code, 2) \ -X(a, STATIC, ONEOF, MESSAGE, (response,features_data_response,response.features_data_response), 10) + X(a, STATIC, SINGULAR, UINT32, correlation_id, 1) \ + X(a, STATIC, SINGULAR, UINT32, stauts_code, 2) \ + X(a, STATIC, ONEOF, MESSAGE, (response, features_data_response, response.features_data_response), 10) #define socket_message_CorrelationResponse_CALLBACK NULL #define socket_message_CorrelationResponse_DEFAULT NULL #define socket_message_CorrelationResponse_response_features_data_response_MSGTYPE socket_message_FeaturesDataResponse #define socket_message_StaticSystemInformation_FIELDLIST(X, a) \ -X(a, STATIC, SINGULAR, STRING, esp_platform, 1) \ -X(a, STATIC, SINGULAR, STRING, firmware_version, 2) \ -X(a, STATIC, SINGULAR, UINT32, cpu_freq_mhz, 3) \ -X(a, STATIC, SINGULAR, STRING, cpu_type, 4) \ -X(a, STATIC, SINGULAR, INT32, cpu_rev, 5) \ -X(a, STATIC, SINGULAR, UINT32, cpu_cores, 6) \ -X(a, STATIC, SINGULAR, UINT32, sketch_size, 7) \ -X(a, STATIC, SINGULAR, UINT32, free_sketch_space, 8) \ -X(a, STATIC, SINGULAR, STRING, sdk_version, 9) \ -X(a, STATIC, SINGULAR, STRING, arduino_version, 10) \ -X(a, STATIC, SINGULAR, UINT32, flash_chip_size, 11) \ -X(a, STATIC, SINGULAR, UINT32, flash_chip_speed, 12) \ -X(a, STATIC, SINGULAR, STRING, cpu_reset_reason, 13) + X(a, STATIC, SINGULAR, STRING, esp_platform, 1) \ + X(a, STATIC, SINGULAR, STRING, firmware_version, 2) \ + X(a, STATIC, SINGULAR, UINT32, cpu_freq_mhz, 3) \ + X(a, STATIC, SINGULAR, STRING, cpu_type, 4) \ + X(a, STATIC, SINGULAR, INT32, cpu_rev, 5) \ + X(a, STATIC, SINGULAR, UINT32, cpu_cores, 6) \ + X(a, STATIC, SINGULAR, UINT32, sketch_size, 7) \ + X(a, STATIC, SINGULAR, UINT32, free_sketch_space, 8) \ + X(a, STATIC, SINGULAR, STRING, sdk_version, 9) \ + X(a, STATIC, SINGULAR, STRING, arduino_version, 10) \ + X(a, STATIC, SINGULAR, UINT32, flash_chip_size, 11) \ + X(a, STATIC, SINGULAR, UINT32, flash_chip_speed, 12) \ + X(a, STATIC, SINGULAR, STRING, cpu_reset_reason, 13) #define socket_message_StaticSystemInformation_CALLBACK NULL #define socket_message_StaticSystemInformation_DEFAULT NULL -#define socket_message_IMUCalibrateData_FIELDLIST(X, a) \ -X(a, STATIC, SINGULAR, BOOL, success, 1) +#define socket_message_IMUCalibrateData_FIELDLIST(X, a) X(a, STATIC, SINGULAR, BOOL, success, 1) #define socket_message_IMUCalibrateData_CALLBACK NULL #define socket_message_IMUCalibrateData_DEFAULT NULL -#define socket_message_IMUCalibrateExecute_FIELDLIST(X, a) \ +#define socket_message_IMUCalibrateExecute_FIELDLIST(X, a) #define socket_message_IMUCalibrateExecute_CALLBACK NULL #define socket_message_IMUCalibrateExecute_DEFAULT NULL -#define socket_message_ModeData_FIELDLIST(X, a) \ -X(a, STATIC, SINGULAR, UENUM, mode, 1) +#define socket_message_ModeData_FIELDLIST(X, a) X(a, STATIC, SINGULAR, UENUM, mode, 1) #define socket_message_ModeData_CALLBACK NULL #define socket_message_ModeData_DEFAULT NULL #define socket_message_ControllerInputData_FIELDLIST(X, a) \ -X(a, STATIC, OPTIONAL, MESSAGE, left, 1) \ -X(a, STATIC, OPTIONAL, MESSAGE, right, 2) \ -X(a, STATIC, SINGULAR, FLOAT, height, 3) \ -X(a, STATIC, SINGULAR, FLOAT, speed, 4) \ -X(a, STATIC, SINGULAR, FLOAT, s1, 5) + X(a, STATIC, OPTIONAL, MESSAGE, left, 1) \ + X(a, STATIC, OPTIONAL, MESSAGE, right, 2) \ + X(a, STATIC, SINGULAR, FLOAT, height, 3) \ + X(a, STATIC, SINGULAR, FLOAT, speed, 4) \ + X(a, STATIC, SINGULAR, FLOAT, s1, 5) #define socket_message_ControllerInputData_CALLBACK NULL #define socket_message_ControllerInputData_DEFAULT NULL #define socket_message_ControllerInputData_left_MSGTYPE socket_message_Vector #define socket_message_ControllerInputData_right_MSGTYPE socket_message_Vector #define socket_message_AnalyticsData_FIELDLIST(X, a) \ -X(a, STATIC, SINGULAR, INT32, max_alloc_heap, 1) \ -X(a, STATIC, SINGULAR, INT32, psram_size, 2) \ -X(a, STATIC, SINGULAR, INT32, free_psram, 3) \ -X(a, STATIC, SINGULAR, INT32, free_heap, 4) \ -X(a, STATIC, SINGULAR, INT32, total_heap, 5) \ -X(a, STATIC, SINGULAR, INT32, min_free_heap, 6) \ -X(a, STATIC, SINGULAR, FLOAT, core_temp, 7) \ -X(a, STATIC, SINGULAR, INT32, fs_total, 8) \ -X(a, STATIC, SINGULAR, INT32, fs_used, 9) \ -X(a, STATIC, SINGULAR, INT64, uptime, 10) \ -X(a, STATIC, SINGULAR, INT32, cpu0_usage, 11) \ -X(a, STATIC, SINGULAR, INT32, cpu1_usage, 12) \ -X(a, STATIC, SINGULAR, INT32, cpu_usage, 13) + X(a, STATIC, SINGULAR, INT32, max_alloc_heap, 1) \ + X(a, STATIC, SINGULAR, INT32, psram_size, 2) \ + X(a, STATIC, SINGULAR, INT32, free_psram, 3) \ + X(a, STATIC, SINGULAR, INT32, free_heap, 4) \ + X(a, STATIC, SINGULAR, INT32, total_heap, 5) \ + X(a, STATIC, SINGULAR, INT32, min_free_heap, 6) \ + X(a, STATIC, SINGULAR, FLOAT, core_temp, 7) \ + X(a, STATIC, SINGULAR, INT32, fs_total, 8) \ + X(a, STATIC, SINGULAR, INT32, fs_used, 9) \ + X(a, STATIC, SINGULAR, INT64, uptime, 10) \ + X(a, STATIC, SINGULAR, INT32, cpu0_usage, 11) \ + X(a, STATIC, SINGULAR, INT32, cpu1_usage, 12) \ + X(a, STATIC, SINGULAR, INT32, cpu_usage, 13) #define socket_message_AnalyticsData_CALLBACK NULL #define socket_message_AnalyticsData_DEFAULT NULL #define socket_message_ServoPWMData_FIELDLIST(X, a) \ -X(a, STATIC, SINGULAR, INT32, servo_id, 1) \ -X(a, STATIC, SINGULAR, UINT32, servo_pwm, 2) + X(a, STATIC, SINGULAR, INT32, servo_id, 1) \ + X(a, STATIC, SINGULAR, UINT32, servo_pwm, 2) #define socket_message_ServoPWMData_CALLBACK NULL #define socket_message_ServoPWMData_DEFAULT NULL -#define socket_message_ServoStateData_FIELDLIST(X, a) \ -X(a, STATIC, SINGULAR, BOOL, active, 1) +#define socket_message_ServoStateData_FIELDLIST(X, a) X(a, STATIC, SINGULAR, BOOL, active, 1) #define socket_message_ServoStateData_CALLBACK NULL #define socket_message_ServoStateData_DEFAULT NULL -#define socket_message_AnglesData_FIELDLIST(X, a) \ -X(a, STATIC, REPEATED, INT32, angles, 1) +#define socket_message_AnglesData_FIELDLIST(X, a) X(a, STATIC, REPEATED, INT32, angles, 1) #define socket_message_AnglesData_CALLBACK NULL #define socket_message_AnglesData_DEFAULT NULL -#define socket_message_I2CScanData_FIELDLIST(X, a) \ -X(a, STATIC, REPEATED, MESSAGE, devices, 1) +#define socket_message_I2CScanData_FIELDLIST(X, a) X(a, STATIC, REPEATED, MESSAGE, devices, 1) #define socket_message_I2CScanData_CALLBACK NULL #define socket_message_I2CScanData_DEFAULT NULL #define socket_message_I2CScanData_devices_MSGTYPE socket_message_I2CDevice -#define socket_message_I2CScanDataRequest_FIELDLIST(X, a) \ +#define socket_message_I2CScanDataRequest_FIELDLIST(X, a) #define socket_message_I2CScanDataRequest_CALLBACK NULL #define socket_message_I2CScanDataRequest_DEFAULT NULL #define socket_message_PeripheralSettingsData_FIELDLIST(X, a) \ -X(a, STATIC, SINGULAR, INT32, sda, 1) \ -X(a, STATIC, SINGULAR, INT32, scl, 2) \ -X(a, STATIC, SINGULAR, INT32, frequency, 3) \ -X(a, STATIC, REPEATED, MESSAGE, pins, 4) + X(a, STATIC, SINGULAR, INT32, sda, 1) \ + X(a, STATIC, SINGULAR, INT32, scl, 2) \ + X(a, STATIC, SINGULAR, INT32, frequency, 3) \ + X(a, STATIC, REPEATED, MESSAGE, pins, 4) #define socket_message_PeripheralSettingsData_CALLBACK NULL #define socket_message_PeripheralSettingsData_DEFAULT NULL #define socket_message_PeripheralSettingsData_pins_MSGTYPE socket_message_PinConfig -#define socket_message_PeripheralSettingsDataRequest_FIELDLIST(X, a) \ +#define socket_message_PeripheralSettingsDataRequest_FIELDLIST(X, a) #define socket_message_PeripheralSettingsDataRequest_CALLBACK NULL #define socket_message_PeripheralSettingsDataRequest_DEFAULT NULL #define socket_message_WifiSettingsData_FIELDLIST(X, a) \ -X(a, STATIC, SINGULAR, STRING, hostname, 1) \ -X(a, STATIC, SINGULAR, BOOL, priority_rssi, 2) \ -X(a, STATIC, REPEATED, MESSAGE, wifi_networks, 3) + X(a, STATIC, SINGULAR, STRING, hostname, 1) \ + X(a, STATIC, SINGULAR, BOOL, priority_rssi, 2) \ + X(a, STATIC, REPEATED, MESSAGE, wifi_networks, 3) #define socket_message_WifiSettingsData_CALLBACK NULL #define socket_message_WifiSettingsData_DEFAULT NULL #define socket_message_WifiSettingsData_wifi_networks_MSGTYPE socket_message_KnownNetworkItem -#define socket_message_RSSIData_FIELDLIST(X, a) \ -X(a, STATIC, SINGULAR, INT32, rssi, 1) +#define socket_message_RSSIData_FIELDLIST(X, a) X(a, STATIC, SINGULAR, INT32, rssi, 1) #define socket_message_RSSIData_CALLBACK NULL #define socket_message_RSSIData_DEFAULT NULL #define socket_message_DownloadOTAData_FIELDLIST(X, a) \ -X(a, STATIC, SINGULAR, STRING, status, 1) \ -X(a, STATIC, SINGULAR, INT32, progress, 2) \ -X(a, STATIC, SINGULAR, STRING, error, 3) + X(a, STATIC, SINGULAR, STRING, status, 1) \ + X(a, STATIC, SINGULAR, INT32, progress, 2) \ + X(a, STATIC, SINGULAR, STRING, error, 3) #define socket_message_DownloadOTAData_CALLBACK NULL #define socket_message_DownloadOTAData_DEFAULT NULL -#define socket_message_SonarData_FIELDLIST(X, a) \ -X(a, STATIC, SINGULAR, STRING, dummy_field, 1) +#define socket_message_SonarData_FIELDLIST(X, a) X(a, STATIC, SINGULAR, STRING, dummy_field, 1) #define socket_message_SonarData_CALLBACK NULL #define socket_message_SonarData_DEFAULT NULL #define socket_message_HumanInputData_FIELDLIST(X, a) \ -X(a, STATIC, OPTIONAL, MESSAGE, left, 10) \ -X(a, STATIC, OPTIONAL, MESSAGE, right, 11) \ -X(a, STATIC, SINGULAR, FLOAT, height, 20) \ -X(a, STATIC, SINGULAR, FLOAT, speed, 21) \ -X(a, STATIC, SINGULAR, FLOAT, s1, 22) + X(a, STATIC, OPTIONAL, MESSAGE, left, 10) \ + X(a, STATIC, OPTIONAL, MESSAGE, right, 11) \ + X(a, STATIC, SINGULAR, FLOAT, height, 20) \ + X(a, STATIC, SINGULAR, FLOAT, speed, 21) \ + X(a, STATIC, SINGULAR, FLOAT, s1, 22) #define socket_message_HumanInputData_CALLBACK NULL #define socket_message_HumanInputData_DEFAULT NULL #define socket_message_HumanInputData_left_MSGTYPE socket_message_Vector #define socket_message_HumanInputData_right_MSGTYPE socket_message_Vector #define socket_message_SystemInformation_FIELDLIST(X, a) \ -X(a, STATIC, OPTIONAL, MESSAGE, analytics_data, 1) \ -X(a, STATIC, OPTIONAL, MESSAGE, static_system_information, 2) + X(a, STATIC, OPTIONAL, MESSAGE, analytics_data, 1) \ + X(a, STATIC, OPTIONAL, MESSAGE, static_system_information, 2) #define socket_message_SystemInformation_CALLBACK NULL #define socket_message_SystemInformation_DEFAULT NULL #define socket_message_SystemInformation_analytics_data_MSGTYPE socket_message_AnalyticsData #define socket_message_SystemInformation_static_system_information_MSGTYPE socket_message_StaticSystemInformation -#define socket_message_WalkGaitData_FIELDLIST(X, a) \ -X(a, STATIC, SINGULAR, UENUM, gait, 1) +#define socket_message_WalkGaitData_FIELDLIST(X, a) X(a, STATIC, SINGULAR, UENUM, gait, 1) #define socket_message_WalkGaitData_CALLBACK NULL #define socket_message_WalkGaitData_DEFAULT NULL #define socket_message_KinematicData_FIELDLIST(X, a) \ -X(a, STATIC, SINGULAR, FLOAT, omega, 1) \ -X(a, STATIC, SINGULAR, FLOAT, phi, 2) \ -X(a, STATIC, SINGULAR, FLOAT, psi, 3) \ -X(a, STATIC, SINGULAR, FLOAT, xm, 4) \ -X(a, STATIC, SINGULAR, FLOAT, ym, 5) \ -X(a, STATIC, SINGULAR, FLOAT, zm, 6) + X(a, STATIC, SINGULAR, FLOAT, omega, 1) \ + X(a, STATIC, SINGULAR, FLOAT, phi, 2) \ + X(a, STATIC, SINGULAR, FLOAT, psi, 3) \ + X(a, STATIC, SINGULAR, FLOAT, xm, 4) \ + X(a, STATIC, SINGULAR, FLOAT, ym, 5) \ + X(a, STATIC, SINGULAR, FLOAT, zm, 6) #define socket_message_KinematicData_CALLBACK NULL #define socket_message_KinematicData_DEFAULT NULL -#define socket_message_SubscribeNotification_FIELDLIST(X, a) \ -X(a, STATIC, SINGULAR, INT32, tag, 1) +#define socket_message_SubscribeNotification_FIELDLIST(X, a) X(a, STATIC, SINGULAR, INT32, tag, 1) #define socket_message_SubscribeNotification_CALLBACK NULL #define socket_message_SubscribeNotification_DEFAULT NULL -#define socket_message_UnsubscribeNotification_FIELDLIST(X, a) \ -X(a, STATIC, SINGULAR, INT32, tag, 1) +#define socket_message_UnsubscribeNotification_FIELDLIST(X, a) X(a, STATIC, SINGULAR, INT32, tag, 1) #define socket_message_UnsubscribeNotification_CALLBACK NULL #define socket_message_UnsubscribeNotification_DEFAULT NULL -#define socket_message_PingMsg_FIELDLIST(X, a) \ +#define socket_message_PingMsg_FIELDLIST(X, a) #define socket_message_PingMsg_CALLBACK NULL #define socket_message_PingMsg_DEFAULT NULL -#define socket_message_PongMsg_FIELDLIST(X, a) \ +#define socket_message_PongMsg_FIELDLIST(X, a) #define socket_message_PongMsg_CALLBACK NULL #define socket_message_PongMsg_DEFAULT NULL -#define socket_message_WebsocketMessage_FIELDLIST(X, a) \ -X(a, STATIC, ONEOF, MESSAGE, (message,correlation_request,message.correlation_request), 10) \ -X(a, STATIC, ONEOF, MESSAGE, (message,correlation_response,message.correlation_response), 11) \ -X(a, STATIC, ONEOF, MESSAGE, (message,sub_notif,message.sub_notif), 20) \ -X(a, STATIC, ONEOF, MESSAGE, (message,unsub_notif,message.unsub_notif), 21) \ -X(a, STATIC, ONEOF, MESSAGE, (message,pingmsg,message.pingmsg), 30) \ -X(a, STATIC, ONEOF, MESSAGE, (message,pongmsg,message.pongmsg), 31) \ -X(a, STATIC, ONEOF, MESSAGE, (message,imu,message.imu), 110) \ -X(a, STATIC, ONEOF, MESSAGE, (message,imu_calibrate,message.imu_calibrate), 120) \ -X(a, STATIC, ONEOF, MESSAGE, (message,imu_calibrate_execute,message.imu_calibrate_execute), 121) \ -X(a, STATIC, ONEOF, MESSAGE, (message,mode,message.mode), 130) \ -X(a, STATIC, ONEOF, MESSAGE, (message,input,message.input), 140) \ -X(a, STATIC, ONEOF, MESSAGE, (message,analytics,message.analytics), 150) \ -X(a, STATIC, ONEOF, MESSAGE, (message,walk_gait,message.walk_gait), 160) \ -X(a, STATIC, ONEOF, MESSAGE, (message,angles,message.angles), 170) \ -X(a, STATIC, ONEOF, MESSAGE, (message,i2c_scan,message.i2c_scan), 180) \ -X(a, STATIC, ONEOF, MESSAGE, (message,i2c_scan_data_request,message.i2c_scan_data_request), 181) \ -X(a, STATIC, ONEOF, MESSAGE, (message,peripheral_settings,message.peripheral_settings), 190) \ -X(a, STATIC, ONEOF, MESSAGE, (message,peripheral_settings_data_request,message.peripheral_settings_data_request), 191) \ -X(a, STATIC, ONEOF, MESSAGE, (message,kinematic_data,message.kinematic_data), 200) \ -X(a, STATIC, ONEOF, MESSAGE, (message,wifi_settings,message.wifi_settings), 240) \ -X(a, STATIC, ONEOF, MESSAGE, (message,human_input_data,message.human_input_data), 250) \ -X(a, STATIC, ONEOF, MESSAGE, (message,rssi,message.rssi), 260) +#define socket_message_WebsocketMessage_FIELDLIST(X, a) \ + X(a, STATIC, ONEOF, MESSAGE, (message, correlation_request, message.correlation_request), 10) \ + X(a, STATIC, ONEOF, MESSAGE, (message, correlation_response, message.correlation_response), 11) \ + X(a, STATIC, ONEOF, MESSAGE, (message, sub_notif, message.sub_notif), 20) \ + X(a, STATIC, ONEOF, MESSAGE, (message, unsub_notif, message.unsub_notif), 21) \ + X(a, STATIC, ONEOF, MESSAGE, (message, pingmsg, message.pingmsg), 30) \ + X(a, STATIC, ONEOF, MESSAGE, (message, pongmsg, message.pongmsg), 31) \ + X(a, STATIC, ONEOF, MESSAGE, (message, imu, message.imu), 110) \ + X(a, STATIC, ONEOF, MESSAGE, (message, imu_calibrate, message.imu_calibrate), 120) \ + X(a, STATIC, ONEOF, MESSAGE, (message, imu_calibrate_execute, message.imu_calibrate_execute), 121) \ + X(a, STATIC, ONEOF, MESSAGE, (message, mode, message.mode), 130) \ + X(a, STATIC, ONEOF, MESSAGE, (message, input, message.input), 140) \ + X(a, STATIC, ONEOF, MESSAGE, (message, analytics, message.analytics), 150) \ + X(a, STATIC, ONEOF, MESSAGE, (message, walk_gait, message.walk_gait), 160) \ + X(a, STATIC, ONEOF, MESSAGE, (message, angles, message.angles), 170) \ + X(a, STATIC, ONEOF, MESSAGE, (message, i2c_scan, message.i2c_scan), 180) \ + X(a, STATIC, ONEOF, MESSAGE, (message, i2c_scan_data_request, message.i2c_scan_data_request), 181) \ + X(a, STATIC, ONEOF, MESSAGE, (message, peripheral_settings, message.peripheral_settings), 190) \ + X(a, STATIC, ONEOF, MESSAGE, \ + (message, peripheral_settings_data_request, message.peripheral_settings_data_request), 191) \ + X(a, STATIC, ONEOF, MESSAGE, (message, kinematic_data, message.kinematic_data), 200) \ + X(a, STATIC, ONEOF, MESSAGE, (message, servo_pwm, message.servo_pwm), 210) \ + X(a, STATIC, ONEOF, MESSAGE, (message, servo_state, message.servo_state), 211) \ + X(a, STATIC, ONEOF, MESSAGE, (message, wifi_settings, message.wifi_settings), 240) \ + X(a, STATIC, ONEOF, MESSAGE, (message, human_input_data, message.human_input_data), 250) \ + X(a, STATIC, ONEOF, MESSAGE, (message, rssi, message.rssi), 260) #define socket_message_WebsocketMessage_CALLBACK NULL #define socket_message_WebsocketMessage_DEFAULT NULL #define socket_message_WebsocketMessage_message_correlation_request_MSGTYPE socket_message_CorrelationRequest @@ -856,8 +979,11 @@ X(a, STATIC, ONEOF, MESSAGE, (message,rssi,message.rssi), 260) #define socket_message_WebsocketMessage_message_i2c_scan_MSGTYPE socket_message_I2CScanData #define socket_message_WebsocketMessage_message_i2c_scan_data_request_MSGTYPE socket_message_I2CScanDataRequest #define socket_message_WebsocketMessage_message_peripheral_settings_MSGTYPE socket_message_PeripheralSettingsData -#define socket_message_WebsocketMessage_message_peripheral_settings_data_request_MSGTYPE socket_message_PeripheralSettingsDataRequest +#define socket_message_WebsocketMessage_message_peripheral_settings_data_request_MSGTYPE \ + socket_message_PeripheralSettingsDataRequest #define socket_message_WebsocketMessage_message_kinematic_data_MSGTYPE socket_message_KinematicData +#define socket_message_WebsocketMessage_message_servo_pwm_MSGTYPE socket_message_ServoPWMData +#define socket_message_WebsocketMessage_message_servo_state_MSGTYPE socket_message_ServoStateData #define socket_message_WebsocketMessage_message_wifi_settings_MSGTYPE socket_message_WifiSettingsData #define socket_message_WebsocketMessage_message_human_input_data_MSGTYPE socket_message_HumanInputData #define socket_message_WebsocketMessage_message_rssi_MSGTYPE socket_message_RSSIData @@ -940,38 +1066,38 @@ extern const pb_msgdesc_t socket_message_WebsocketMessage_msg; /* socket_message_CorrelationResponse_size depends on runtime parameters */ /* socket_message_WebsocketMessage_size depends on runtime parameters */ #define SOCKET_MESSAGE_WEBSOCKET_MESSAGE_PB_H_MAX_SIZE socket_message_PeripheralSettingsData_size -#define socket_message_AnalyticsData_size 137 -#define socket_message_AnglesData_size 132 -#define socket_message_ControllerInputData_size 39 -#define socket_message_CorrelationRequest_size 10 -#define socket_message_DownloadOTAData_size 109 -#define socket_message_FeaturesDataRequest_size 2 -#define socket_message_HumanInputData_size 42 -#define socket_message_I2CDevice_size 77 -#define socket_message_I2CScanDataRequest_size 0 -#define socket_message_I2CScanData_size 1264 -#define socket_message_IMUCalibrateData_size 2 -#define socket_message_IMUCalibrateExecute_size 0 -#define socket_message_IMUData_size 35 -#define socket_message_KinematicData_size 30 -#define socket_message_KnownNetworkItem_size 186 -#define socket_message_ModeData_size 2 +#define socket_message_AnalyticsData_size 137 +#define socket_message_AnglesData_size 132 +#define socket_message_ControllerInputData_size 39 +#define socket_message_CorrelationRequest_size 10 +#define socket_message_DownloadOTAData_size 109 +#define socket_message_FeaturesDataRequest_size 2 +#define socket_message_HumanInputData_size 42 +#define socket_message_I2CDevice_size 77 +#define socket_message_I2CScanDataRequest_size 0 +#define socket_message_I2CScanData_size 1264 +#define socket_message_IMUCalibrateData_size 2 +#define socket_message_IMUCalibrateExecute_size 0 +#define socket_message_IMUData_size 35 +#define socket_message_KinematicData_size 30 +#define socket_message_KnownNetworkItem_size 186 +#define socket_message_ModeData_size 2 #define socket_message_PeripheralSettingsDataRequest_size 0 #define socket_message_PeripheralSettingsData_size 2081 -#define socket_message_PinConfig_size 62 -#define socket_message_PingMsg_size 0 -#define socket_message_PongMsg_size 0 -#define socket_message_RSSIData_size 11 -#define socket_message_ServoPWMData_size 17 -#define socket_message_ServoStateData_size 2 -#define socket_message_SonarData_size 17 +#define socket_message_PinConfig_size 62 +#define socket_message_PingMsg_size 0 +#define socket_message_PongMsg_size 0 +#define socket_message_RSSIData_size 11 +#define socket_message_ServoPWMData_size 17 +#define socket_message_ServoStateData_size 2 +#define socket_message_SonarData_size 17 #define socket_message_StaticSystemInformation_size 213 #define socket_message_SubscribeNotification_size 11 -#define socket_message_SystemInformation_size 356 +#define socket_message_SystemInformation_size 356 #define socket_message_UnsubscribeNotification_size 11 -#define socket_message_Vector_size 10 -#define socket_message_WalkGaitData_size 2 -#define socket_message_WifiSettingsData_size 1547 +#define socket_message_Vector_size 10 +#define socket_message_WalkGaitData_size 2 +#define socket_message_WifiSettingsData_size 1547 #ifdef __cplusplus } /* extern "C" */ diff --git a/platform_shared/websocket_message.proto b/platform_shared/websocket_message.proto index faebcaf..193e191 100644 --- a/platform_shared/websocket_message.proto +++ b/platform_shared/websocket_message.proto @@ -178,6 +178,8 @@ message WebsocketMessage { PeripheralSettingsData peripheral_settings = 190; PeripheralSettingsDataRequest peripheral_settings_data_request = 191; KinematicData kinematic_data = 200; + ServoPWMData servo_pwm = 210; + ServoStateData servo_state = 211; WifiSettingsData wifi_settings = 240; HumanInputData human_input_data = 250; RSSIData rssi = 260;