BLE_iBeacon / button.h /
20e35fa a year ago
1 contributor
70 lines | 1.799kb
#ifndef _BUTTON_H
#define _BUTTON_H

#include <EEPROM.h>
#include "beacon.h"

#define DEBOUNCE_TIME  100
int lastExecTime = 0;

int buttonState = 0;         // variable for reading the pushbutton status
#ifdef ARDUINO_HELTEC_WIFI_LORA_32
  const int BUTTON_PRG = 0;     // PRG Button
#elif ARDUINO_M5Stick_C
  const int BUTTON_PRG = M5_BUTTON_HOME; // Home Button
#elif ARDUINO_ESP32C3_DEV
  const int BUTTON_PRG =  9; // PRG Button
#endif // ARDUINO_HELTEC_WIFI_LORA_32 & ARDUINO_M5Stick_C &ARDUINO_ESP32C3_DEV

void onPrgFall(){
  int currentExecTime=millis();
  if(DEBOUNCE_TIME > (currentExecTime - lastExecTime)) {
    //Bouncing
    return;
  }
  Serial.println("onPrgFall");
  lastExecTime=currentExecTime;
  
  //delay(BEACON_SLEEP_ADV);
  switch( beacon_type ) {
  case EN_BEACON_TYPE_entry:
    beacon_type = EN_BEACON_TYPE_hazard;
    beaconTypeStr="Hazard     ";
    break;
  case EN_BEACON_TYPE_hazard:
    beacon_type = EN_BEACON_TYPE_safe;
    beaconTypeStr="Safe       ";
    break;
  case EN_BEACON_TYPE_safe:
    beacon_type = EN_BEACON_TYPE_exit;
    beaconTypeStr="Exit       ";
    break;
  case EN_BEACON_TYPE_exit:
    beacon_type = EN_BEACON_TYPE_entry;
    beaconTypeStr="Entry      ";
    break;
  default:
    beacon_type = EN_BEACON_TYPE_safe;
    beaconTypeStr="Safe       ";
    break;
  }
  Serial.println("Switching to "+beaconTypeStr);
  #ifdef _M5STICKC_H_
    M5.Lcd.fillRect(0, LINE2, 160, 10, BLACK);
    M5.Lcd.fillRect(0, LINE4, 160, 20, BLACK);
  #endif //_M5STICKC_H_
  beacon_changed = true;
}

void pollPrg() { 
  if(false != beacon_changed) {
    EEPROM.write(0, beacon_type);
    EEPROM.commit();
    DisplayButtonStatus();
    beacon_changed = false;
  }
}

#endif //_BUTTON_H