#include <Arduino.h>
#include <esp_now.h>
#include <WiFi.h>

uint8_t destinationAddress[] = {0xCC, 0xDB, 0xA7, 0x96, 0xD9, 0x4C};

// Callback volany po prijeti dat
void OnDataRecv(const uint8_t* mac, const uint8_t* incomingData, int len) {
  Serial.print("Data received: ");
  Serial.println((char*)incomingData);
}
  
// Callback when data is sent
void OnDataSent(const uint8_t *mac_addr, esp_now_send_status_t status) {
  Serial.print("\tStatus send: ");
  Serial.println(status == ESP_NOW_SEND_SUCCESS ? "Delivery Success" : "Delivery Fail");
}

void setup() {
  Serial.begin(115200);

  WiFi.mode(WIFI_STA);
  if (esp_now_init() != ESP_OK) {
    return;
  }

  // Registrace callback po prijeti dat
  esp_now_register_recv_cb(OnDataRecv);

  // Registrace callback po odeslani dat/potvrzeni doruceni dat
  esp_now_register_send_cb(OnDataSent);
  
  esp_now_peer_info_t peerInfo;
  memcpy(peerInfo.peer_addr, destinationAddress, 6);
  peerInfo.channel = 0;  
  peerInfo.encrypt = false; 

  if (esp_now_add_peer(&peerInfo) != ESP_OK){
    return;
  }

  Serial.println("Ready");
}
 
void loop() {
  char s[32];
  sprintf(s, "Answer: %4ld", millis() / 1000);
  esp_err_t result = esp_now_send(destinationAddress, (uint8_t*)s, strlen(s));
  
  if (result == ESP_OK) {
    Serial.print("Data sent");
  } else {
    Serial.println("Error sending the data");
  }

  delay(1000);  
}
