Rework example code, fix bugs and get to compiling state. Also introduce missing logic for the Matrix code to keep track of what column is active.

This commit is contained in:
2021-11-22 20:10:08 +00:00
parent 8ebc1a5523
commit 690afdbce5
18 changed files with 194 additions and 26 deletions

View File

@ -32,9 +32,9 @@ LatchedButton::LatchedButton(uint8_t vbutton, Reader* reader) : Button(vbutton,
}
bool LatchedButton::Update(Joystick* js) {
if (!BouncerUpdate()) return false;
if (!reader->Update()) return false;
if (On()) {
if (reader->On()) {
if (!pressed) {
js->PressButton(vbutton);
pressed = true;
@ -48,7 +48,7 @@ bool LatchedButton::Update(Joystick* js) {
}
PulsedButton::PulsedButton(uint8_t pin, uint8_t vbutton, bool double_action, bool split, bool pullup, Mux* mux, bool analog_only) : SwitchButton(pin, vbutton, pullup, mux, analog_only) {
PulsedButton::PulsedButton(uint8_t vbutton, Reader* reader, bool double_action, bool split) : Button(vbutton, reader) {
this->release_time1 = 0;
this->release_time2 = 0;
if (double_action) {
@ -74,18 +74,18 @@ bool PulsedButton::Update(Joystick* js) {
release_time2 = 0;
}
if (!BouncerUpdate()) return false;
if (!reader->Update()) return false;
switch(type) {
case BUTTON_PULSED:
if (On()) js->PressButton(vbutton);
if (reader->On()) js->PressButton(vbutton);
break;
case BUTTON_PULSED_DOUBLE_ACTION:
js->PressButton(vbutton);
release_time1 = millis() + 250;
break;
case BUTTON_PULSED_DOUBLE_ACTION_SPLIT:
if (On()) {
if (reader->On()) {
js->PressButton(vbutton);
release_time1 = millis() + 250;
}
@ -100,7 +100,7 @@ bool PulsedButton::Update(Joystick* js) {
}
EncoderButton::EncoderButton(uint8_t pin1, uint8_t pin2, uint8_t vbutton) : Button(vbutton) {
EncoderButton::EncoderButton(uint8_t pin1, uint8_t pin2, uint8_t vbutton) : Button(vbutton, NULL) {
this->type = ENCODER_PULSED_SPLIT;
this->vbutton2 = vbutton + 1;
this->encoder = new Encoder(pin1, pin2);