#include "my_buttons.h"
#include "my_board.h"
#include "global.h"
#include "led_strip.h"
#include "my_buzzer.h"

static const char* tag = "button";

OneButton *btn[3];

void Init_ButtonEvents(void)
{ 
  btn[0] = new OneButton(btn1Pin, true, true);
  btn[1] = new OneButton(btn2Pin, true, true);
  btn[2] = new OneButton(btn3Pin, true, true);

  if(btn[0] != NULL){
    btn[0]->setDebounceTicks(DEBOUCE_TIME); // just below the update period to guarantee 1 sample delay
    btn[0]->attachClick(btn1_click);
    btn[0]->attachDoubleClick(btn1_doubleClick);
  }
  else {
    ESP_LOGW(tag, "Button1 Not Initialized");
  }

  if(btn[1] != NULL){
    btn[1]->setDebounceTicks(DEBOUCE_TIME);
    btn[1]->attachClick(btn2_click);
    btn[1]->attachDoubleClick(btn2_doubleClick);
    btn[1]->attachLongPressStart(btn2_LongPressStart);
  }
  else {
    ESP_LOGW(tag, "Button2 Not Initialized");
  }

  if(btn[2] != NULL){
    btn[2]->setDebounceTicks(DEBOUCE_TIME);
    btn[2]->attachClick(btn3_click);
    btn[2]->attachDoubleClick(btn3_doubleClick);
    btn[2]->attachLongPressStart(btn3_LongPressStart);
    btn[2]->attachLongPressStop(btn3_LongPressStop);
  }
  else {
    ESP_LOGW(tag, "Button3 Not Initialized");
  }

  ESP_LOGV(tag, "Initialized Buttons Events...\n");
}

void btn1_click() {
  IncrementEventIndex();
  Pulse_LED_Status(150);
  ESP_LOGD(tag, "btn1 1x");
}

void btn1_doubleClick() {
  ESP_LOGD(tag, "btn1 2x");
}

void btn2_click() {
  Pulse_LED_Status(150);
  Buzzer_Beep(150);
  // send packet
  ESP_LOGD(tag, "btn2 1x");
}

void btn2_doubleClick() {
  ESP_LOGD(tag, "btn2 2x");
}

void btn2_LongPressStart(){
  // scan for devices
}

void btn3_click() {
  Pulse_LED_Status(150);
  ESP_LOGD(tag, "btn3 1x");
}

void btn3_doubleClick() {
  ESP_LOGD(tag, "btn3 2x");
}

//bool IncFwd = true;
void btn3_LongPressStart(){
  ESP_LOGD(tag, "btn3 long press");
}

void btn3_LongPressStop(){
  //IncFwd = !IncFwd; // switch increment direction
}

