diff --git a/src/examples/rotary/main.cpp b/src/examples/rotary/main.cpp index 6c4017e..1e24da6 100644 --- a/src/examples/rotary/main.cpp +++ b/src/examples/rotary/main.cpp @@ -5,20 +5,20 @@ Sprocket *sprocket; RotaryPlugin *r1; -void registerPlugin(Sprocket *s, Plugin *r, const char *topic) +void addRotary(Sprocket *s, Plugin *r, const char *topic) { + String btnTopic = String(topic) + String("/button"); s->addPlugin(r); s->subscribe(topic, bind([](String label, String val) { PRINT_MSG(Serial, label.c_str(), val.c_str()); }, topic, _1)); + s->subscribe(btnTopic, bind([](String label, String val) { PRINT_MSG(Serial, label.c_str(), val.c_str()); }, btnTopic, _1)); } void setup() { sprocket = new Sprocket({STARTUP_DELAY, SERIAL_BAUD_RATE}); - //r1 = new RotaryPlugin({35, 34, 21, -1, 50, 0, 255, true, "rotary1_enc", "rotary1_btn"}); r1 = new RotaryPlugin({35, 34, 21, -1, 50, 0, 255, true, "rotary1"}); r1->rotaryEncoder->setup([] { r1->rotaryEncoder->readEncoder_ISR(); }); - - registerPlugin(sprocket, r1, "rotary1"); + addRotary(sprocket, r1, "rotary1"); sprocket->activate(); } diff --git a/src/inputs/rotary/RotaryPlugin.cpp b/src/inputs/rotary/RotaryPlugin.cpp index df50c2d..cfe4428 100644 --- a/src/inputs/rotary/RotaryPlugin.cpp +++ b/src/inputs/rotary/RotaryPlugin.cpp @@ -24,9 +24,9 @@ void RotaryPlugin::checkInput() int encReading = rotaryEncoder->readEncoder(); publish(config.topic, String(encReading)); } - //ButtonState newBtnState = rotaryEncoder->currentButtonState(); - //if(newBtnState != btnState){ - // btnState = newBtnState; - // publish(config.topicButton, String(btnState)); - //} + ButtonState newBtnState = rotaryEncoder->currentButtonState(); + if(newBtnState != btnState){ + btnState = newBtnState; + publish(String(config.topic) + String("/button"), String(btnState)); + } } diff --git a/src/inputs/rotary/RotaryPlugin.h b/src/inputs/rotary/RotaryPlugin.h index c4a3b14..463e66f 100644 --- a/src/inputs/rotary/RotaryPlugin.h +++ b/src/inputs/rotary/RotaryPlugin.h @@ -34,7 +34,7 @@ class RotaryPlugin : public Plugin { public: Task inputTask; int currentVal = 0; - //ButtonState btnState = BUT_RELEASED; + ButtonState btnState = BUT_RELEASED; AiEsp32RotaryEncoder* rotaryEncoder; RotaryConfig config; RotaryPlugin(RotaryConfig cfg);