#include "buttons.h" std::vector buttonlist; c_button button1(SWITCH1, YELLOW, 1, type_switch); c_button button2(SWITCH2, RED, 2, type_switch); c_button button3(SWITCH3, GREEN, 3, type_switch); c_button button4(SWITCH12, YELLOW2, 4, type_momentary); c_button button5(SWITCH22, RED2, 5, type_momentary); c_button button6(SWITCH32, GREEN2, 6, type_momentary); void buttonbegin(c_button *thisbutton) { thisbutton->begin(); buttonlist.push_back(thisbutton); } void initButtons(void) { buttonbegin(&button1); buttonbegin(&button2); buttonbegin(&button3); buttonbegin(&button4); buttonbegin(&button5); buttonbegin(&button6); } void handleButtons(void) { for (auto &&i : buttonlist) { i->read(); } } bool anybutton(void) { handleButtons(); for (auto &&i : buttonlist) { if (i->isPressed()) { return true; } } return false; } bool anyButtonChanged(void) { handleButtons(); for (auto &&i : buttonlist) { if (i->isChanged()) { return true; } } return false; } bool allButtons(void) { for (auto &&thisbutton : buttonlist) { if (thisbutton->getType() == type_switch) { if (!thisbutton->isPressed()) { return false; } } } return true; } bool onlyButton(e_ledcolor color) { for (auto &&thisbutton : buttonlist) { if (thisbutton->isPressed() && thisbutton->getColor() != color) { return false; } } return getButton(color)->isPressed(); } bool buttonIsPressed(e_ledcolor index) { c_button *thisbutton = getButton(index); if (thisbutton == NULL) { return false; } else { return thisbutton->isPressed(); } } bool buttonIsPressed(uint16_t index) { c_button *thisbutton = getButton(index); if (thisbutton == NULL) { return false; } else { return thisbutton->isPressed(); } } bool buttonWasPressed(e_ledcolor index) { c_button *thisbutton = getButton(index); if (thisbutton == NULL) { return false; } else { return thisbutton->wasPressed(); } } c_button *getButton(unsigned int index) { if (index > buttonlist.size()) { return NULL; } return buttonlist[index - 1]; } c_button *getButton(e_ledcolor color) { for (auto &&button : buttonlist) { if (button->getColor() == color) { return button; } } return NULL; } std::vector *getButtonlist(void) { return &buttonlist; } uint8_t buttonPressedCount(void) { uint8_t count = 0; for (auto &&button : buttonlist) { if (button != NULL) { if (button->isPressed()) { count++; } } } return count; }