omit sending hat if direction is not changed

This commit is contained in:
2021-01-01 21:53:43 +09:00
parent 9454fdc54e
commit f413eae2fd

View File

@@ -38,6 +38,7 @@ struct arrow newestYArrow;
#define ButtonInfoTableSize 9 #define ButtonInfoTableSize 9
struct ButtonInfo buttonInfoTable[ButtonInfoTableSize]; struct ButtonInfo buttonInfoTable[ButtonInfoTableSize];
Hat last = Hat::CENTER;
void perms() { void perms() {
if(val == 0){ if(val == 0){
@@ -125,6 +126,13 @@ void handleButtonInput(ButtonInfo *but){
but->prev = but->current; but->prev = but->current;
} }
void moveHat(Hat dir){
if(last != dir){
SwitchControlLibrary().MoveHat(static_cast<uint8_t>(dir));
last = dir;
}
}
void loop() void loop()
{ {
val = digitalRead(2); val = digitalRead(2);
@@ -150,27 +158,27 @@ void loop()
if(arrowTable[1].current == 0){ if(arrowTable[1].current == 0){
if(arrowTable[3].current == 0){ if(arrowTable[3].current == 0){
if(arrowTable[0].current == 0){ if(arrowTable[0].current == 0){
SwitchControlLibrary().MoveHat(static_cast<uint8_t>(Hat::TOP)); moveHat(Hat::TOP);
} }
else{ else{
if(arrowTable[2].current == 0){ if(arrowTable[2].current == 0){
SwitchControlLibrary().MoveHat(static_cast<uint8_t>(Hat::BOTTOM)); moveHat(Hat::BOTTOM);
} }
else{ else{
SwitchControlLibrary().MoveHat(static_cast<uint8_t>(Hat::CENTER)); moveHat(Hat::CENTER);
} }
} }
} }
else{ else{
if(arrowTable[0].current == 0){ if(arrowTable[0].current == 0){
SwitchControlLibrary().MoveHat(static_cast<uint8_t>(Hat::TOP_LEFT)); moveHat(Hat::TOP_LEFT);
} }
else{ else{
if(arrowTable[2].current == 0){ if(arrowTable[2].current == 0){
SwitchControlLibrary().MoveHat(static_cast<uint8_t>(Hat::BOTTOM_LEFT)); moveHat(Hat::BOTTOM_LEFT);
} }
else{ else{
SwitchControlLibrary().MoveHat(static_cast<uint8_t>(Hat::LEFT)); moveHat(Hat::LEFT);
} }
} }
} }
@@ -178,27 +186,27 @@ void loop()
else{ else{
if(arrowTable[3].current == 0){ if(arrowTable[3].current == 0){
if(arrowTable[0].current == 0){ if(arrowTable[0].current == 0){
SwitchControlLibrary().MoveHat(static_cast<uint8_t>(Hat::TOP_RIGHT)); moveHat(Hat::TOP_RIGHT);
} }
else{ else{
if(arrowTable[2].current == 0){ if(arrowTable[2].current == 0){
SwitchControlLibrary().MoveHat(static_cast<uint8_t>(Hat::BOTTOM_RIGHT)); moveHat(Hat::BOTTOM_RIGHT);
} }
else{ else{
SwitchControlLibrary().MoveHat(static_cast<uint8_t>(Hat::RIGHT)); moveHat(Hat::RIGHT);
} }
} }
} }
else{ else{
if(arrowTable[0].current == 0){ if(arrowTable[0].current == 0){
SwitchControlLibrary().MoveHat(static_cast<uint8_t>(Hat::TOP)); moveHat(Hat::TOP);
} }
else{ else{
if(arrowTable[2].current == 0){ if(arrowTable[2].current == 0){
SwitchControlLibrary().MoveHat(static_cast<uint8_t>(Hat::BOTTOM)); moveHat(Hat::BOTTOM);
} }
else{ else{
SwitchControlLibrary().MoveHat(static_cast<uint8_t>(Hat::CENTER)); moveHat(Hat::CENTER);
} }
} }
} }