#include <HijelHID_BLEKeyboard.h>

// Inicializace Bluetooth klávesnice
HijelHID_BLEKeyboard keyboard("ESP32-C3 Media Remote", "HijelHub", 100);

// Definice pinů podle tvého zadání
const int pinFastForward = 6;
const int pinRewind      = 7;
const int pinPlayPause1  = 5;
const int pinNext        = 4;
const int pinPrevious    = 21;
const int pinPlayPause2  = 3;

const int tlacitka[] = {pinFastForward, pinRewind, pinPlayPause1, pinNext, pinPrevious, pinPlayPause2};
const int pocetTlacitek = 6;

void setup() {
  Serial.begin(115200);
  Serial.println("Spouštím HijelHID BLE klávesnici (HIGH logika)...");
  
  keyboard.begin();

  // Nastavení pinů jako běžné vstupy (předpokládá se externí pull-down nebo spínání čistých 3.3V)
  for (int i = 0; i < pocetTlacitek; i++) {
    pinMode(tlacitka[i], INPUT_PULLDOWN);
  }
}

void loop() {
  // Klávesy posíláme, jen když jsme připojeni
  if (keyboard.isConnected()) {

    // D3: Fast Forward
    if (digitalRead(pinFastForward) == HIGH) { // Změna na HIGH
      Serial.println("Stisknuto: Fast Forward");
      for (int i = 0; i < 3; i++) { // Změněno na < 3 (aby se to opakovalo 0, 1, 2 = 3x)
       keyboard.tap(MEDIA_FAST_FORWARD);
       delay(200); // Tady je ta důležitá pauza mezi stisky!
      }
      //keyboard.write(MEDIA_FAST_FORWARD);
      delay(500); 
    }

    // D4: Rewind
    if (digitalRead(pinRewind) == HIGH) {
      Serial.println("Stisknuto: Rewind");
      for (int i = 0; i < 3; i++) { // Změněno na < 3 (aby se to opakovalo 0, 1, 2 = 3x)
       keyboard.tap(MEDIA_REWIND);
       delay(200); // Tady je ta důležitá pauza mezi stisky!
      }
      //keyboard.write(MEDIA_REWIND);
      delay(500);
    }

    // D5: Play/Pause (1)
    if (digitalRead(pinPlayPause1) == HIGH) {
      Serial.println("Stisknuto: Play/Pause (1)");
      keyboard.tap(MEDIA_PLAY_PAUSE);
      delay(500);
    }

    // D8: Next
    if (digitalRead(pinNext) == HIGH) {
      Serial.println("Stisknuto: Next");
      keyboard.tap(MEDIA_NEXT_TRACK);
      delay(500);
    }

    // D9: Previous
    if (digitalRead(pinPrevious) == HIGH) {
      Serial.println("Stisknuto: Previous");
      keyboard.tap(MEDIA_PREV_TRACK);
      delay(500);
    }

    // D10: Play/Pause (2)
    if (digitalRead(pinPlayPause2) == HIGH) {
      Serial.println("Stisknuto: Play/Pause (2)");
      keyboard.tap(MEDIA_PLAY_PAUSE);
      delay(500);
    }
  }

  delay(10);
}