#pragma once

#include <Arduino.h>
#include "config.h"

constexpr size_t LORA_MAX_PAYLOAD = 230;

struct LoraPacket {
  uint8_t protocol_version;
  DeviceRole role;
  uint16_t device_id_short;
  PayloadType payload_type;
  uint8_t payload[LORA_MAX_PAYLOAD];
  size_t payload_len;
  int16_t rssi_dbm;
  float snr_db;
};

void lora_init();
bool lora_send(const LoraPacket &pkt);
bool lora_receive(LoraPacket &pkt, uint32_t timeout_ms);
void lora_sleep();
uint32_t lora_airtime_ms(size_t packet_len);
