mirror of
https://github.com/meshtastic/firmware.git
synced 2025-05-06 21:58:24 +00:00
Double click sends ad-hoc position, triple turns off gps
This commit is contained in:
parent
4cfedc4b57
commit
6a5e0edb60
@ -17,7 +17,8 @@ void wakeOnIrq(int irq, int mode)
|
|||||||
{
|
{
|
||||||
attachInterrupt(
|
attachInterrupt(
|
||||||
irq,
|
irq,
|
||||||
[] {
|
[]
|
||||||
|
{
|
||||||
BaseType_t higherWake = 0;
|
BaseType_t higherWake = 0;
|
||||||
mainDelay.interruptFromISR(&higherWake);
|
mainDelay.interruptFromISR(&higherWake);
|
||||||
},
|
},
|
||||||
@ -115,8 +116,8 @@ class ButtonThread : public concurrency::OSThread
|
|||||||
{
|
{
|
||||||
// LOG_DEBUG("press!\n");
|
// LOG_DEBUG("press!\n");
|
||||||
#ifdef BUTTON_PIN
|
#ifdef BUTTON_PIN
|
||||||
if ((BUTTON_PIN != moduleConfig.canned_message.inputbroker_pin_press) ||
|
if ((BUTTON_PIN != moduleConfig.canned_message.inputbroker_pin_press) || !moduleConfig.canned_message.enabled)
|
||||||
!moduleConfig.canned_message.enabled) {
|
{
|
||||||
powerFSM.trigger(EVENT_PRESS);
|
powerFSM.trigger(EVENT_PRESS);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -128,16 +129,19 @@ class ButtonThread : public concurrency::OSThread
|
|||||||
screen->adjustBrightness();
|
screen->adjustBrightness();
|
||||||
#endif
|
#endif
|
||||||
// If user button is held down for 5 seconds, shutdown the device.
|
// If user button is held down for 5 seconds, shutdown the device.
|
||||||
if ((millis() - longPressTime > 5 * 1000) && (longPressTime > 0)) {
|
if ((millis() - longPressTime > 5 * 1000) && (longPressTime > 0))
|
||||||
|
{
|
||||||
#ifdef HAS_PMU
|
#ifdef HAS_PMU
|
||||||
if (pmu_found == true) {
|
if (pmu_found == true)
|
||||||
|
{
|
||||||
setLed(false);
|
setLed(false);
|
||||||
power->shutdown();
|
power->shutdown();
|
||||||
}
|
}
|
||||||
#elif defined(ARCH_NRF52)
|
#elif defined(ARCH_NRF52)
|
||||||
// Do actual shutdown when button released, otherwise the button release
|
// Do actual shutdown when button released, otherwise the button release
|
||||||
// may wake the board immediatedly.
|
// may wake the board immediatedly.
|
||||||
if ((!shutdown_on_long_stop) && (millis() > 30 * 1000)) {
|
if ((!shutdown_on_long_stop) && (millis() > 30 * 1000))
|
||||||
|
{
|
||||||
screen->startShutdownScreen();
|
screen->startShutdownScreen();
|
||||||
LOG_INFO("Shutdown from long press");
|
LOG_INFO("Shutdown from long press");
|
||||||
playBeep();
|
playBeep();
|
||||||
@ -153,7 +157,9 @@ class ButtonThread : public concurrency::OSThread
|
|||||||
shutdown_on_long_stop = true;
|
shutdown_on_long_stop = true;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
// LOG_DEBUG("Long press %u\n", (millis() - longPressTime));
|
// LOG_DEBUG("Long press %u\n", (millis() - longPressTime));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -163,6 +169,13 @@ class ButtonThread : public concurrency::OSThread
|
|||||||
#if defined(USE_EINK) && defined(PIN_EINK_EN)
|
#if defined(USE_EINK) && defined(PIN_EINK_EN)
|
||||||
digitalWrite(PIN_EINK_EN, digitalRead(PIN_EINK_EN) == LOW);
|
digitalWrite(PIN_EINK_EN, digitalRead(PIN_EINK_EN) == LOW);
|
||||||
#endif
|
#endif
|
||||||
|
screen->print("Sent ad-hoc ping\n");
|
||||||
|
service.refreshMyNodeInfo();
|
||||||
|
service.sendNetworkPing(NODENUM_BROADCAST, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void userButtonMultiPressed()
|
||||||
|
{
|
||||||
#if defined(GPS_POWER_TOGGLE)
|
#if defined(GPS_POWER_TOGGLE)
|
||||||
if (config.position.gps_enabled)
|
if (config.position.gps_enabled)
|
||||||
{
|
{
|
||||||
@ -177,16 +190,10 @@ class ButtonThread : public concurrency::OSThread
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static void userButtonMultiPressed()
|
|
||||||
{
|
|
||||||
screen->print("Sent ad-hoc ping\n");
|
|
||||||
service.refreshMyNodeInfo();
|
|
||||||
service.sendNetworkPing(NODENUM_BROADCAST, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void userButtonPressedLongStart()
|
static void userButtonPressedLongStart()
|
||||||
{
|
{
|
||||||
if (millis() > 30 * 1000) {
|
if (millis() > 30 * 1000)
|
||||||
|
{
|
||||||
LOG_DEBUG("Long press start!\n");
|
LOG_DEBUG("Long press start!\n");
|
||||||
longPressTime = millis();
|
longPressTime = millis();
|
||||||
}
|
}
|
||||||
@ -194,10 +201,12 @@ class ButtonThread : public concurrency::OSThread
|
|||||||
|
|
||||||
static void userButtonPressedLongStop()
|
static void userButtonPressedLongStop()
|
||||||
{
|
{
|
||||||
if (millis() > 30 * 1000) {
|
if (millis() > 30 * 1000)
|
||||||
|
{
|
||||||
LOG_DEBUG("Long press stop!\n");
|
LOG_DEBUG("Long press stop!\n");
|
||||||
longPressTime = 0;
|
longPressTime = 0;
|
||||||
if (shutdown_on_long_stop) {
|
if (shutdown_on_long_stop)
|
||||||
|
{
|
||||||
playShutdownMelody();
|
playShutdownMelody();
|
||||||
delay(3000);
|
delay(3000);
|
||||||
power->shutdown();
|
power->shutdown();
|
||||||
|
Loading…
Reference in New Issue
Block a user