M module-bsp/board/rt1051/bellpx/bsp/rotary_encoder/rotary_encoder.cpp => module-bsp/board/rt1051/bellpx/bsp/rotary_encoder/rotary_encoder.cpp +4 -0
@@ 44,6 44,9 @@ namespace bsp::rotary_encoder
}
});
}
+ if (xTimerStart(gTimerHandle, 0) != pdPASS) {
+ LOG_ERROR("Couldn't start encoder timer");
+ }
LOG_DEBUG("Init rotary encoder driver");
const auto ret = (gTimerHandle && gHandleIrq) ? (kStatus_Success) : (kStatus_Fail);
LOG_DEBUG("Init rotary encoder driver status %i", ret);
@@ 86,6 89,7 @@ namespace bsp::rotary_encoder
ret = type::forward;
}
encCounter = tmp;
+
return ret;
}
M products/BellHybrid/services/evtmgr/WorkerEvent.cpp => products/BellHybrid/services/evtmgr/WorkerEvent.cpp +15 -1
@@ 45,10 45,24 @@ namespace bell
bsp::rotary_encoder::deinit();
}
+ void WorkerEvent::processRotaryAsShortRelease(bsp::KeyCodes code)
+ {
+ processKeyEvent(bsp::KeyEvents::Pressed, code);
+ processKeyEvent(bsp::KeyEvents::Released, code);
+ }
+
void WorkerEvent::handleRotaryEncoderEvent()
{
if (const auto &key = bsp::rotary_encoder::WorkerEventHandler(); key.has_value()) {
- LOG_DEBUG("Rotary encoder handler %i", int(key.value()));
+ if (key.value() == bsp::rotary_encoder::type::forward) {
+ processRotaryAsShortRelease(bsp::KeyCodes::JoystickUp);
+ }
+ else if (key.value() == bsp::rotary_encoder::type::backward) {
+ processRotaryAsShortRelease(bsp::KeyCodes::JoystickDown);
+ }
+ else {
+ LOG_ERROR("Unknown rotary event");
+ }
}
}
} // namespace bell
M products/BellHybrid/services/evtmgr/WorkerEvent.hpp => products/BellHybrid/services/evtmgr/WorkerEvent.hpp +1 -0
@@ 17,6 17,7 @@ namespace bell
void initProductHardware() final;
void deinitProductHardware() final;
bool handleMessage(std::uint32_t queueID) override;
+ void processRotaryAsShortRelease(bsp::KeyCodes code);
void handleRotaryEncoderEvent();
enum class EventQueues
{