button handling improvment
This commit is contained in:
parent
2b82223d3d
commit
45b51441ec
@ -1,6 +1,9 @@
|
|||||||
#ifndef _BUTTON_H
|
#ifndef _BUTTON_H
|
||||||
#define _BUTTON_H
|
#define _BUTTON_H
|
||||||
|
|
||||||
|
#include <SimpleButton.h>
|
||||||
|
|
||||||
|
void button_init(int pin);
|
||||||
void readButton();
|
void readButton();
|
||||||
|
|
||||||
#endif
|
#endif
|
@ -31,7 +31,7 @@ description = Paxcounter is a proof-of-concept ESP32 device for metering passeng
|
|||||||
|
|
||||||
[common]
|
[common]
|
||||||
; for release_version use max. 10 chars total, use any decimal format like "a.b.c"
|
; for release_version use max. 10 chars total, use any decimal format like "a.b.c"
|
||||||
release_version = 1.7.55
|
release_version = 1.7.6
|
||||||
; DEBUG LEVEL: For production run set to 0, otherwise device will leak RAM while running!
|
; DEBUG LEVEL: For production run set to 0, otherwise device will leak RAM while running!
|
||||||
; 0=None, 1=Error, 2=Warn, 3=Info, 4=Debug, 5=Verbose
|
; 0=None, 1=Error, 2=Warn, 3=Info, 4=Debug, 5=Verbose
|
||||||
debug_level = 3
|
debug_level = 3
|
||||||
@ -60,6 +60,7 @@ lib_deps_basic =
|
|||||||
ArduinoJson@^5.13.1
|
ArduinoJson@^5.13.1
|
||||||
Timezone@^1.2.2
|
Timezone@^1.2.2
|
||||||
RTC@^2.3.0
|
RTC@^2.3.0
|
||||||
|
SimpleButton
|
||||||
lib_deps_all =
|
lib_deps_all =
|
||||||
${common.lib_deps_basic}
|
${common.lib_deps_basic}
|
||||||
${common.lib_deps_lora}
|
${common.lib_deps_lora}
|
||||||
|
@ -3,17 +3,44 @@
|
|||||||
#include "globals.h"
|
#include "globals.h"
|
||||||
#include "button.h"
|
#include "button.h"
|
||||||
|
|
||||||
|
using namespace simplebutton;
|
||||||
|
|
||||||
// Local logging tag
|
// Local logging tag
|
||||||
static const char TAG[] = __FILE__;
|
static const char TAG[] = __FILE__;
|
||||||
|
|
||||||
void readButton() {
|
static Button *b = NULL;
|
||||||
ESP_LOGI(TAG, "Button pressed");
|
|
||||||
#ifdef HAS_DISPLAY
|
void button_init(int pin) {
|
||||||
refreshtheDisplay(true); // switch to next display page
|
#ifdef BUTTON_PULLDOWN
|
||||||
|
b = new Button(pin);
|
||||||
#else
|
#else
|
||||||
payload.reset();
|
b = new ButtonPullup(pin);
|
||||||
payload.addButton(0x01);
|
|
||||||
SendPayload(BUTTONPORT, prio_normal);
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// attach events to the button
|
||||||
|
|
||||||
|
b->setOnDoubleClicked([]() {});
|
||||||
|
|
||||||
|
b->setOnClicked([]() {
|
||||||
|
#ifdef HAS_DISPLAY
|
||||||
|
refreshtheDisplay(true); // switch to next display page
|
||||||
|
#else
|
||||||
|
payload.reset();
|
||||||
|
payload.addButton(0x01);
|
||||||
|
SendPayload(BUTTONPORT, prio_normal);
|
||||||
|
#endif
|
||||||
|
});
|
||||||
|
|
||||||
|
b->setOnHolding([]() {
|
||||||
|
#if (HAS_LORA)
|
||||||
|
cfg.adrmode = !cfg.adrmode;
|
||||||
|
LMIC_setAdrMode(cfg.adrmode);
|
||||||
|
#endif
|
||||||
|
});
|
||||||
|
|
||||||
|
// attach interrupt to the button
|
||||||
|
attachInterrupt(digitalPinToInterrupt(pin), ButtonIRQ, CHANGE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void readButton() { b->update(); }
|
||||||
#endif
|
#endif
|
42
src/main.cpp
42
src/main.cpp
@ -265,20 +265,6 @@ void setup() {
|
|||||||
esp_coex_prefer_t)ESP_COEX_PREFER_WIFI)); // configure Wifi/BT coexist lib
|
esp_coex_prefer_t)ESP_COEX_PREFER_WIFI)); // configure Wifi/BT coexist lib
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// initialize button
|
|
||||||
#ifdef HAS_BUTTON
|
|
||||||
strcat_P(features, " BTN_");
|
|
||||||
#ifdef BUTTON_PULLUP
|
|
||||||
strcat_P(features, "PU");
|
|
||||||
// install button interrupt (pullup mode)
|
|
||||||
pinMode(HAS_BUTTON, INPUT_PULLUP);
|
|
||||||
#else
|
|
||||||
strcat_P(features, "PD");
|
|
||||||
// install button interrupt (pulldown mode)
|
|
||||||
pinMode(HAS_BUTTON, INPUT_PULLDOWN);
|
|
||||||
#endif // BUTTON_PULLUP
|
|
||||||
#endif // HAS_BUTTON
|
|
||||||
|
|
||||||
// initialize gps
|
// initialize gps
|
||||||
#if (HAS_GPS)
|
#if (HAS_GPS)
|
||||||
strcat_P(features, " GPS");
|
strcat_P(features, " GPS");
|
||||||
@ -364,9 +350,6 @@ void setup() {
|
|||||||
esp_wifi_deinit();
|
esp_wifi_deinit();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// show compiled features
|
|
||||||
ESP_LOGI(TAG, "Features:%s", features);
|
|
||||||
|
|
||||||
// start state machine
|
// start state machine
|
||||||
ESP_LOGI(TAG, "Starting Interrupt Handler...");
|
ESP_LOGI(TAG, "Starting Interrupt Handler...");
|
||||||
xTaskCreatePinnedToCore(irqHandler, // task function
|
xTaskCreatePinnedToCore(irqHandler, // task function
|
||||||
@ -410,7 +393,18 @@ void setup() {
|
|||||||
timerAlarmEnable(displayIRQ);
|
timerAlarmEnable(displayIRQ);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// gps buffer read interrupt
|
// initialize button
|
||||||
|
#ifdef HAS_BUTTON
|
||||||
|
strcat_P(features, " BTN_");
|
||||||
|
#ifdef BUTTON_PULLUP
|
||||||
|
strcat_P(features, "PU");
|
||||||
|
#else
|
||||||
|
strcat_P(features, "PD");
|
||||||
|
#endif // BUTTON_PULLUP
|
||||||
|
button_init(HAS_BUTTON);
|
||||||
|
#endif // HAS_BUTTON
|
||||||
|
|
||||||
|
// gps buffer read interrupt
|
||||||
#if (HAS_GPS)
|
#if (HAS_GPS)
|
||||||
gpsIRQ = timerBegin(2, 80, true);
|
gpsIRQ = timerBegin(2, 80, true);
|
||||||
timerAttachInterrupt(gpsIRQ, &GpsIRQ, true);
|
timerAttachInterrupt(gpsIRQ, &GpsIRQ, true);
|
||||||
@ -422,15 +416,6 @@ void setup() {
|
|||||||
sendcycler.attach(SENDCYCLE * 2, sendcycle);
|
sendcycler.attach(SENDCYCLE * 2, sendcycle);
|
||||||
housekeeper.attach(HOMECYCLE, housekeeping);
|
housekeeper.attach(HOMECYCLE, housekeeping);
|
||||||
|
|
||||||
// button interrupt
|
|
||||||
#ifdef HAS_BUTTON
|
|
||||||
#ifdef BUTTON_PULLUP
|
|
||||||
attachInterrupt(digitalPinToInterrupt(HAS_BUTTON), ButtonIRQ, RISING);
|
|
||||||
#else
|
|
||||||
attachInterrupt(digitalPinToInterrupt(HAS_BUTTON), ButtonIRQ, FALLING);
|
|
||||||
#endif
|
|
||||||
#endif // HAS_BUTTON
|
|
||||||
|
|
||||||
#if (TIME_SYNC_INTERVAL)
|
#if (TIME_SYNC_INTERVAL)
|
||||||
|
|
||||||
#if (!(TIME_SYNC_LORAWAN) && !(TIME_SYNC_LORASERVER) && !defined HAS_GPS && \
|
#if (!(TIME_SYNC_LORAWAN) && !(TIME_SYNC_LORASERVER) && !defined HAS_GPS && \
|
||||||
@ -453,6 +438,9 @@ void setup() {
|
|||||||
|
|
||||||
#endif // TIME_SYNC_INTERVAL
|
#endif // TIME_SYNC_INTERVAL
|
||||||
|
|
||||||
|
// show compiled features
|
||||||
|
ESP_LOGI(TAG, "Features:%s", features);
|
||||||
|
|
||||||
} // setup()
|
} // setup()
|
||||||
|
|
||||||
void loop() {
|
void loop() {
|
||||||
|
Loading…
Reference in New Issue
Block a user