#include <esp_now.h>
#include <WiFi.h>

int tl = 1000; //ms
int tr;
String success;

// MAC del receptor
uint8_t broadcastAddress[] = {0x8C, 0xAA, 0xB5, 0x84, 0xFB, 0x90}; //1
//uint8_t broadcastAddress[] = {0x8C, 0xAA, 0xB5, 0x86, 0x36, 0x0C}; //2

esp_now_peer_info_t peerInfo;

//Funcion callback de envio
/*esp_now_send(uint8_t *da, uint8_t *data, uint8_t *len)
  Parámetros:
    uint8_t *da: array de la dirección MAC del par al que se envía el paquete de datos. Si la dirección es NULL los datos se envían a todas las direcciones de la Tabla de Comunicación.
    uint8_t *data: array con el paquete de datos a enviar.
    uint8_t len: longitud del array del paquete de datos.
    */
void OnDataSent(const uint8_t *mac_addr, esp_now_send_status_t status) {
  Serial.print("Last package sent: ");
  Serial.println(status == ESP_NOW_SEND_SUCCESS ? "Ok" : "Error");
}

//Funcion callback de recepcion
void OnDataRecv(const uint8_t * mac, const uint8_t *data, int len) {
  //memcpy(tr, incomingData, sizeof(tr));
  Serial.print("Bytes received: ");
  Serial.println(len);
  Serial.println(*data);
  //incomingTemp = incomingReadings.temp;
  //incomingHum = incomingReadings.hum;
  //incomingPres = incomingReadings.pres;
}

void setup() {
  Serial.begin(115200);
  WiFi.mode(WIFI_STA);

  // Init ESP-NOW
  if (esp_now_init() != ESP_OK) {
    Serial.println("Error initializing ESP-NOW");
    return;
  }
  //callback de envio
  esp_now_register_send_cb(OnDataSent);
  //callback de recepcion
  esp_now_register_recv_cb(OnDataRecv);
  
  // Registrando peer
  memcpy(peerInfo.peer_addr, broadcastAddress, 6);
  peerInfo.channel = 0;  
  peerInfo.encrypt = false;
  /* Add peer 
   esp_now_add_peer(uint8_t *mac_addr, uint8_t role, uint8_t channel, uint8_t *key, uint8_t key_len)
   Parámetros:
         uint8_t *mac_addr: array de la dirección MAC del par de comunicación.
         uint8_t role: papel del par de comunicación (0=ocioso, 1=maestro, 2 esclavo y 3=maestro + esclavo.
         uint8_t channel: canal de comunicación, por lo general de 1 a 13 (algunas áreas pueden utilizar el canal 14).
         uint8_t *key: array de 16 bytes con la clave de comunicación. NULL indica que no hay clave.
         uint8_t key_len: longitud de la clave de comunicación. Actualmente deben ser 16 bytes.*/

  if (esp_now_add_peer(&peerInfo) != ESP_OK){
    Serial.println("Failed to add peer");
    return;
  }

}
void loop() {
  String pp;
  // Send message via ESP-NOW
  esp_err_t result = esp_now_send(broadcastAddress,(uint8_t *)tl, sizeof(tl));   
  if (result == ESP_OK) {
    Serial.print("Submitted successfully ");
    Serial.println(sizeof(tl));
  }
  else {
    Serial.println("Send Error");
  }
  delay(1000);
}