Browse Source

Switch buttons to match 3D housing, improve release ack handling

master
Riyyi 4 days ago
parent
commit
b103d21913
  1. 10
      client/src/connect.cpp
  2. 11
      client/src/connect.h
  3. 32
      client/src/main.cpp
  4. 8
      server/src/main.cpp

10
client/src/connect.cpp

@ -57,9 +57,9 @@ void onDataSent(const uint8_t* mac_addr, esp_now_send_status_t status)
// Flash PWR LED while still receiving acknowledgments
if (timerElapsed(&ack) > ack_speed * 2) {
timerStart(&ack);
digitalWrite(POWER_LED_PIN, HIGH);
digitalWrite(RESET_LED_PIN, HIGH);
delay(ack_speed);
digitalWrite(POWER_LED_PIN, LOW);
digitalWrite(RESET_LED_PIN, LOW);
}
}
@ -72,13 +72,11 @@ void onDataRecv(const uint8_t* mac_addr, const uint8_t* data, int data_len)
auto msg = String((const char*)data, data_len);
if (msg == "power_released_ack") {
need_power_ack = false;
wait_power_ack = false;
received_power_released_ack = true;
}
if (msg == "reset_released_ack") {
need_reset_ack = false;
wait_reset_ack = false;
received_reset_released_ack = true;
}
}

11
client/src/connect.h

@ -2,14 +2,11 @@
#define CHANNEL 11
#define POWER_LED_PIN 3
#define RESET_LED_PIN 1
#define POWER_LED_PIN 1
#define RESET_LED_PIN 3
extern bool need_power_ack;
extern bool need_reset_ack;
extern bool wait_power_ack;
extern bool wait_reset_ack;
extern bool received_power_released_ack;
extern bool received_reset_released_ack;
extern uint8_t client_mac[6];
extern uint8_t server_mac[6];

32
client/src/main.cpp

@ -3,17 +3,14 @@
#include "connect.h"
#define POWER_BUTTON_PIN 10
#define RESET_BUTTON_PIN 2
#define POWER_BUTTON_PIN 2
#define RESET_BUTTON_PIN 10
int previousPowerButtonState = HIGH;
int previousResetButtonState = HIGH;
bool need_power_ack = false;
bool need_reset_ack = false;
bool wait_power_ack = false;
bool wait_reset_ack = false;
bool received_power_released_ack = true;
bool received_reset_released_ack = true;
void setup()
{
@ -36,8 +33,8 @@ void loop()
{
delay(20); // used for button debounce
// digitalWrite(POWER_LED_PIN, LOW);
digitalWrite(RESET_LED_PIN, LOW);
digitalWrite(POWER_LED_PIN, LOW);
// digitalWrite(RESET_LED_PIN, LOW);
int powerButtonState = digitalRead(POWER_BUTTON_PIN);
int resetButtonState = digitalRead(RESET_BUTTON_PIN);
@ -55,7 +52,7 @@ void loop()
previousResetButtonState = resetButtonState;
if (isButtonPressed) {
digitalWrite(RESET_LED_PIN, HIGH);
digitalWrite(POWER_LED_PIN, HIGH);
String button = (powerButtonState == LOW) ? "power" : "reset";
@ -65,27 +62,20 @@ void loop()
esp_now_send(server_mac, (const uint8_t*)msg.c_str(), msg.length());
Serial.println("Sent " + button + " button press");
need_power_ack = true;
need_reset_ack = true;
wait_power_ack = false;
wait_reset_ack = false;
received_power_released_ack = false;
received_reset_released_ack = false;
return;
}
if (need_power_ack && !wait_power_ack) {
if (!received_power_released_ack) {
String msg = "power_released";
esp_now_send(server_mac, (const uint8_t*)msg.c_str(), msg.length());
Serial.println("Sent power button release");
wait_power_ack = true;
}
if (need_reset_ack && !wait_reset_ack) {
if (!received_reset_released_ack) {
String msg = "reset_released";
esp_now_send(server_mac, (const uint8_t*)msg.c_str(), msg.length());
Serial.println("Sent reset button release");
wait_reset_ack = true;
}
}

8
server/src/main.cpp

@ -2,11 +2,11 @@
#include "connect.h"
#define POWER_BUTTON_PIN 10
#define RESET_BUTTON_PIN 2
#define POWER_BUTTON_PIN 2
#define RESET_BUTTON_PIN 10
#define POWER_LED_PIN 3
#define RESET_LED_PIN 1
#define POWER_LED_PIN 1
#define RESET_LED_PIN 3
#define POWER_GATE_PIN 6
#define RESET_GATE_PIN 7

Loading…
Cancel
Save