diff --git a/esp32/include/peripherals/servo_controller.h b/esp32/include/peripherals/servo_controller.h index 388e436..1adb683 100644 --- a/esp32/include/peripherals/servo_controller.h +++ b/esp32/include/peripherals/servo_controller.h @@ -20,9 +20,6 @@ #define FACTORY_SERVO_OSCILLATOR_FREQUENCY 27000000 #endif -#define EVENT_SERVO_CONFIGURATION_SETTINGS "servoPWM" -#define EVENT_SERVO_STATE "servoState" - enum class SERVO_CONTROL_STATE { DEACTIVATED, PWM, ANGLE }; class ServoController : public StatefulService { @@ -32,16 +29,9 @@ class ServoController : public StatefulService { _persistence(ServoSettings::read, ServoSettings::update, this, SERVO_SETTINGS_FILE) {} void begin() { - // socket.onEvent(EVENT_SERVO_CONFIGURATION_SETTINGS, - // [&](JsonVariant &root, int originId) { servoEvent(root, originId); }); - // socket.onEvent(EVENT_SERVO_STATE, [&](JsonVariant &root, int originId) { stateUpdate(root, originId); }); _persistence.readFromFS(); initializePCA(); - // socket.onEvent(EVENT_SERVO_STATE, [&](JsonVariant &root, int originId) { - // is_active = root["active"] | false; - // is_active ? activate() : deactivate(); - // }); } void pcaWrite(int index, int value) { diff --git a/esp32/src/main.cpp b/esp32/src/main.cpp index 7c7f78e..acf8130 100644 --- a/esp32/src/main.cpp +++ b/esp32/src/main.cpp @@ -76,6 +76,8 @@ void setupServer() { #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" void setupEventSocket() { // Motion events @@ -96,6 +98,17 @@ void setupEventSocket() { peripherals.getI2CResult(results); socket.emit(EVENT_I2C_SCAN, results); }); + + // 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.onEvent(EVENT_SERVO_STATE, [&](JsonVariant &root, int originId) { + const bool is_active = root["active"] | false; + is_active ? servoController.activate() : servoController.deactivate(); + }); } void IRAM_ATTR SpotControlLoopEntry(void *) {