mirror of
https://github.com/HASwitchPlate/openHASP.git
synced 2025-07-24 11:46:34 +00:00
Dont use Cladd constants to optimize memory
This commit is contained in:
parent
95a7ed74e1
commit
0d34efbd89
@ -5,13 +5,40 @@
|
||||
#include "hasp_conf.h"
|
||||
#include "lv_conf.h"
|
||||
|
||||
#include "hasp_mqtt.h" // testing memory consumption
|
||||
#include "hasp_button.h"
|
||||
#include "hasp_dispatch.h"
|
||||
|
||||
using namespace ace_button;
|
||||
AceButton * button[HASP_NUM_INPUTS]; // Connect your button between pin 2 and GND
|
||||
static AceButton * button[HASP_NUM_INPUTS]; // Connect your button between pin 2 and GND
|
||||
|
||||
void handleEvent(AceButton *, uint8_t, uint8_t);
|
||||
static void IRAM_ATTR button_event_cb(AceButton * button, uint8_t eventType, uint8_t buttonState)
|
||||
{
|
||||
char buffer[8];
|
||||
switch(eventType) {
|
||||
case 0: // AceButton::kEventPressed:
|
||||
memcpy_P(buffer, PSTR("DOWN"), sizeof(buffer));
|
||||
break;
|
||||
case 2: // AceButton::kEventClicked:
|
||||
memcpy_P(buffer, PSTR("SHORT"), sizeof(buffer));
|
||||
break;
|
||||
// case AceButton::kEventDoubleClicked:
|
||||
// memcpy_P(buffer, PSTR("DOUBLE"), sizeof(buffer));
|
||||
// break;
|
||||
case 4: // AceButton::kEventLongPressed:
|
||||
memcpy_P(buffer, PSTR("LONG"), sizeof(buffer));
|
||||
break;
|
||||
case 5: // AceButton::kEventRepeatPressed:
|
||||
return; // Fix needed for switches
|
||||
memcpy_P(buffer, PSTR("HOLD"), sizeof(buffer));
|
||||
break;
|
||||
case 1: // AceButton::kEventReleased:
|
||||
memcpy_P(buffer, PSTR("UP"), sizeof(buffer));
|
||||
break;
|
||||
}
|
||||
// dispatch_button(button->getId(), buffer);
|
||||
mqtt_send_input(button->getId(), buffer);
|
||||
}
|
||||
|
||||
void buttonSetup(void)
|
||||
{
|
||||
@ -19,8 +46,10 @@ void buttonSetup(void)
|
||||
button[1] = new AceButton(3, HIGH, 1);
|
||||
button[2] = new AceButton(4, HIGH, 2);
|
||||
|
||||
Log.verbose(F("BTNS: setup(): ready"));
|
||||
|
||||
ButtonConfig * buttonConfig = ButtonConfig::getSystemButtonConfig();
|
||||
buttonConfig->setEventHandler(handleEvent);
|
||||
buttonConfig->setEventHandler(button_event_cb);
|
||||
|
||||
// Features
|
||||
buttonConfig->setFeature(ButtonConfig::kFeatureClick);
|
||||
@ -35,50 +64,13 @@ void buttonSetup(void)
|
||||
buttonConfig->setLongPressDelay(LV_INDEV_DEF_LONG_PRESS_TIME);
|
||||
buttonConfig->setRepeatPressDelay(LV_INDEV_DEF_LONG_PRESS_TIME);
|
||||
buttonConfig->setRepeatPressInterval(LV_INDEV_DEF_LONG_PRESS_REP_TIME);
|
||||
|
||||
Log.verbose(F("BTNS: setup(): ready"));
|
||||
}
|
||||
|
||||
void buttonLoop(void)
|
||||
void IRAM_ATTR buttonLoop(void)
|
||||
{
|
||||
|
||||
// Should be called every 4-5ms or faster, for the default debouncing time
|
||||
// of ~20ms.
|
||||
for(uint8_t i = 0; i < (sizeof button / sizeof *button); i++) {
|
||||
for(uint8_t i = 0; i < HASP_NUM_INPUTS; i++) {
|
||||
if(button[i]) button[i]->check();
|
||||
}
|
||||
}
|
||||
|
||||
// The event handler for the button.
|
||||
void handleEvent(AceButton * button, uint8_t eventType, uint8_t buttonState)
|
||||
{
|
||||
char buffer[128];
|
||||
|
||||
// Print out a message for all events.
|
||||
/* Serial.print(F("handleEvent(): eventType: "));
|
||||
Serial.print(eventType);
|
||||
Serial.print(F("; buttonState: "));
|
||||
Serial.println(buttonState); */
|
||||
|
||||
switch(eventType) {
|
||||
case AceButton::kEventPressed:
|
||||
memcpy_P(buffer, PSTR("DOWN"), sizeof(buffer));
|
||||
break;
|
||||
case AceButton::kEventClicked:
|
||||
memcpy_P(buffer, PSTR("SHORT"), sizeof(buffer));
|
||||
break;
|
||||
case AceButton::kEventDoubleClicked:
|
||||
memcpy_P(buffer, PSTR("DOUBLE"), sizeof(buffer));
|
||||
break;
|
||||
case AceButton::kEventLongPressed:
|
||||
memcpy_P(buffer, PSTR("LONG"), sizeof(buffer));
|
||||
break;
|
||||
case AceButton::kEventRepeatPressed:
|
||||
memcpy_P(buffer, PSTR("HOLD"), sizeof(buffer));
|
||||
break;
|
||||
case AceButton::kEventReleased:
|
||||
memcpy_P(buffer, PSTR("UP"), sizeof(buffer));
|
||||
break;
|
||||
}
|
||||
dispatchButton(button->getId(), buffer);
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user