#include "arduino_base64.hpp"
#define MAX_DATA_ITEMS 10
// Przykładowa strukura na dane do wysłania
typedef struct
{
double t;
int a;
float b;
bool c;
} DataItem;
typedef struct
{
uint16_t numOfItems;
DataItem items[MAX_DATA_ITEMS];
} Data;
void prepareData(Data& data)
{
data.numOfItems = 5;
for (int i = 0; i < 5; i++)
{
data.items[i].t = 1.2 * i;
data.items[i].a = i;
data.items[i].b = 2.8 * i;
data.items[i].c = i > 2;
}
}
void printData(Data& data)
{
for (int i = 0; i < MAX_DATA_ITEMS; i++)
{
char buff[100];
sprintf(buff, "[%d]: t = %0.2f, a = %d, b = %0.2f, c = %d",
i, data.items[i].t, data.items[i].a, data.items[i].b, data.items[i].c);
Serial.println(buff);
}
}
void setup()
{
Serial.begin(115200);
// Przygotowanie danych do wysłania
Data data;
memset(&data, 0, sizeof(data));
prepareData(data);
printData(data);
// Zakodowanie danych w Base64 i "wysłanie" poprzez MQTT
char outputEncode[base64::encodeLength(sizeof(data))];
base64::encode((uint8_t*)&data, sizeof(data), outputEncode);
Serial.println(outputEncode);
// Zdekodowanie odebranych danych i ich wyświetlenie
Data dataDecoded;
memset(&dataDecoded, 0, sizeof(dataDecoded));
base64::decode(outputEncode, (uint8_t*)&dataDecoded);
printData(dataDecoded);
}
void loop()
{
delay(1000);
}