mirror of
https://github.com/meshtastic/firmware.git
synced 2025-09-06 11:39:32 +00:00
64 lines
2.6 KiB
C++
64 lines
2.6 KiB
C++
#include "TrackballInterruptImpl1.h"
|
|
#include "InputBroker.h"
|
|
#include "configuration.h"
|
|
|
|
TrackballInterruptImpl1 *trackballInterruptImpl1;
|
|
|
|
TrackballInterruptImpl1::TrackballInterruptImpl1() : TrackballInterruptBase("trackball1") {}
|
|
|
|
void TrackballInterruptImpl1::init(uint8_t pinDown, uint8_t pinUp, uint8_t pinLeft, uint8_t pinRight, uint8_t pinPress)
|
|
{
|
|
input_broker_event eventDown = INPUT_BROKER_DOWN;
|
|
input_broker_event eventUp = INPUT_BROKER_UP;
|
|
input_broker_event eventLeft = INPUT_BROKER_LEFT;
|
|
input_broker_event eventRight = INPUT_BROKER_RIGHT;
|
|
input_broker_event eventPressed = INPUT_BROKER_SELECT;
|
|
|
|
TrackballInterruptBase::init(pinDown, pinUp, pinLeft, pinRight, pinPress, eventDown, eventUp, eventLeft, eventRight,
|
|
eventPressed, TrackballInterruptImpl1::handleIntDown, TrackballInterruptImpl1::handleIntUp,
|
|
TrackballInterruptImpl1::handleIntLeft, TrackballInterruptImpl1::handleIntRight,
|
|
TrackballInterruptImpl1::handleIntPressed);
|
|
inputBroker->registerSource(this);
|
|
}
|
|
|
|
void TrackballInterruptImpl1::handleIntDown()
|
|
{
|
|
if (TB_DIRECTION == RISING || millis() > trackballInterruptImpl1->lastTime + 10) {
|
|
trackballInterruptImpl1->lastTime = millis();
|
|
trackballInterruptImpl1->intDownHandler();
|
|
trackballInterruptImpl1->setIntervalFromNow(20);
|
|
}
|
|
}
|
|
void TrackballInterruptImpl1::handleIntUp()
|
|
{
|
|
if (TB_DIRECTION == RISING || millis() > trackballInterruptImpl1->lastTime + 10) {
|
|
trackballInterruptImpl1->lastTime = millis();
|
|
trackballInterruptImpl1->intUpHandler();
|
|
trackballInterruptImpl1->setIntervalFromNow(20);
|
|
}
|
|
}
|
|
void TrackballInterruptImpl1::handleIntLeft()
|
|
{
|
|
if (TB_DIRECTION == RISING || millis() > trackballInterruptImpl1->lastTime + 10) {
|
|
trackballInterruptImpl1->lastTime = millis();
|
|
trackballInterruptImpl1->intLeftHandler();
|
|
trackballInterruptImpl1->setIntervalFromNow(20);
|
|
}
|
|
}
|
|
void TrackballInterruptImpl1::handleIntRight()
|
|
{
|
|
if (TB_DIRECTION == RISING || millis() > trackballInterruptImpl1->lastTime + 10) {
|
|
trackballInterruptImpl1->lastTime = millis();
|
|
trackballInterruptImpl1->intRightHandler();
|
|
trackballInterruptImpl1->setIntervalFromNow(20);
|
|
}
|
|
}
|
|
void TrackballInterruptImpl1::handleIntPressed()
|
|
{
|
|
if (TB_DIRECTION == RISING || millis() > trackballInterruptImpl1->lastTime + 10) {
|
|
trackballInterruptImpl1->lastTime = millis();
|
|
trackballInterruptImpl1->intPressHandler();
|
|
trackballInterruptImpl1->setIntervalFromNow(20);
|
|
}
|
|
}
|