mirror of
https://github.com/xoseperez/espurna.git
synced 2026-03-03 15:04:17 +01:00
fixup struct members, dual no longer allocates debouncer
This commit is contained in:
@@ -91,12 +91,12 @@ unsigned char buttonCount() {
|
||||
|
||||
#if MQTT_SUPPORT
|
||||
|
||||
std::bitset<BUTTONS_MAX> _buttons_mqtt_retain(
|
||||
(1 == BUTTON_MQTT_RETAIN) ? 0xFFFFFFFFUL : 0UL
|
||||
);
|
||||
std::bitset<BUTTONS_MAX> _buttons_mqtt_send_all(
|
||||
(1 == BUTTON_MQTT_SEND_ALL_EVENTS) ? 0xFFFFFFFFUL : 0UL
|
||||
);
|
||||
std::bitset<BUTTONS_MAX> _buttons_mqtt_retain(
|
||||
(1 == BUTTON_MQTT_RETAIN) ? 0xFFFFFFFFUL : 0UL
|
||||
);
|
||||
|
||||
void buttonMQTT(unsigned char id, uint8_t event) {
|
||||
char payload[4] = {0};
|
||||
@@ -130,7 +130,7 @@ void _buttonWebSocketOnConnected(JsonObject& root) {
|
||||
|
||||
JsonArray& schema = module.createNestedArray("_schema");
|
||||
|
||||
schema.add("Pin");
|
||||
schema.add("Pin"); // GPIO id?
|
||||
schema.add("Mode");
|
||||
|
||||
schema.add("Relay");
|
||||
@@ -150,17 +150,18 @@ void _buttonWebSocketOnConnected(JsonObject& root) {
|
||||
for (unsigned char i=0; i<buttonCount(); i++) {
|
||||
JsonArray& button = buttons.createNestedArray();
|
||||
|
||||
button.add(_buttons[i].pin);
|
||||
button.add(_buttons[i].mode);
|
||||
button.add(_buttons[i].event_handler.pin.pin);
|
||||
button.add(_buttons[i].event_handler.pin.mode);
|
||||
button.add(_buttons[i].relayID);
|
||||
button.add(_buttons[i].debounceDelay);
|
||||
button.add(_buttons[i].doubleClickDelay);
|
||||
button.add(_buttons[i].longClickDelay);
|
||||
button.add(_buttons[i].longLongClickDelay);
|
||||
button.add(_buttons[i].event_delays.debounce);
|
||||
button.add(_buttons[i].event_delays.dblclick);
|
||||
button.add(_buttons[i].event_delays.lngclick);
|
||||
button.add(_buttons[i].event_delays.lnglngclick);
|
||||
|
||||
// TODO: send bitmask as number?
|
||||
#if MQTT_SUPPORT
|
||||
button.add(_buttonMqttSendAllEvents(i));
|
||||
button.add(_buttonMqttRetain(i));
|
||||
button.add(_buttons_mqtt_send_all[i] ? 1 : 0);
|
||||
button.add(_buttons_mqtt_retain[i] ? 1 : 0);
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
@@ -258,20 +259,11 @@ struct DummyPin : virtual public DebounceEvent::PinBase {
|
||||
int digitalRead() { return 0; }
|
||||
};
|
||||
|
||||
unsigned char buttonAdd(unsigned char pin, unsigned char mode, unsigned long actions, unsigned char relayID) {
|
||||
const unsigned char index = _buttons.size();
|
||||
button_event_delays_t delays {
|
||||
getSetting({"btnDebDelay", index}, _buttonDebounceDelay(index)),
|
||||
getSetting({"btnDblCDelay", index}, _buttonDoubleClickDelay(index)),
|
||||
getSetting({"btnLngCDelay", index}, _buttonLongClickDelay(index)),
|
||||
getSetting({"btnLngLngCDelay", index}, _buttonLongLongClickDelay(index))
|
||||
};
|
||||
_buttons.emplace_back(std::make_shared<DummyPin>(GPIO_NONE), BUTTON_PUSHBUTTON, actions, relayID, delays);
|
||||
return _buttons.size() - 1;
|
||||
}
|
||||
|
||||
void buttonSetup() {
|
||||
|
||||
// Backwards compatibility
|
||||
moveSetting("btnDelay", "btnDblDel");
|
||||
|
||||
// Special hardware cases
|
||||
|
||||
#if (BUTTON_EVENTS_SOURCE == BUTTON_EVENTS_SOURCE_ITEAD_SONOFF_DUAL) || \
|
||||
@@ -299,10 +291,13 @@ void buttonSetup() {
|
||||
BUTTON_MODE_NONE, BUTTON_MODE_NONE, BUTTON_MODE_NONE
|
||||
);
|
||||
|
||||
const auto delays = button_event_delays_t();
|
||||
|
||||
for (unsigned char id = 0; id < buttons; ++id) {
|
||||
buttonAdd(
|
||||
GPIO_NONE, BUTTON_PUSHBUTTON,
|
||||
actions, getSetting({"btnRelay", id}, _buttonRelay(id))
|
||||
_buttons.emplace_back(
|
||||
nullptr, BUTTON_PUSHBUTTON,
|
||||
actions, getSetting({"btnRelay", id}, _buttonRelay(id)),
|
||||
delays
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user