~aleteoryx/muditaos

c55a1aff41821d2770876b0d67d2d54886d1a15a — Maciej Janicki 4 years ago 67e51a7
[BH-511] Add encoder UI events handling

Add encoder rotation event handling.
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
        {