Safe Sprinkler
Master/slave irrigation system (ESP-NOW + LoRaWAN)
Loading...
Searching...
No Matches
lora_msg_serializer.h
Go to the documentation of this file.
1#ifndef LORA_MSG_SERIALIZER_H
2#define LORA_MSG_SERIALIZER_H
3
4#include "esp_err.h"
5#include "general/node_cfg.h"
7
8#include <stdbool.h>
9#include <stdint.h>
10
11// ============================================================================
12// LoRa Message Sizes (optimized for low bandwidth)
13// ============================================================================
14// Registration: 1 (type) + 1 (id) + 32 (name) + 4 (lon) + 4 (lat) = 42 bytes
15#define LORA_REG_MSG_SIZE 42
16
17// Periodic: 1 (type) + 1 (slave_count) + N * 3 (id + battery + moisture)
18// Max: 1 + 1 + 16 * 3 = 50 bytes
19#define LORA_PERIODIC_HEADER_SIZE 2
20#define LORA_PERIODIC_SLAVE_SIZE 3
21#define LORA_PERIODIC_MAX_SIZE (LORA_PERIODIC_HEADER_SIZE + MAX_SLAVE_NUM * LORA_PERIODIC_SLAVE_SIZE)
22
23// Alarm: 1 (type) + 1 (slave_id) = 2 bytes
24#define LORA_ALARM_MSG_SIZE 2
25
26// ============================================================================
27// Serialization Functions
28// ============================================================================
29
43uint8_t lora_serialize_registration(uint8_t* buffer, uint8_t slave_id, const char* name, int32_t longitude,
44 int32_t latitude);
45
59uint8_t lora_serialize_periodic(uint8_t* buffer, const slave_data* slaves, uint8_t slave_count);
60
71uint8_t lora_serialize_alarm(uint8_t* buffer, uint8_t slave_id);
72
73// ============================================================================
74// High-Level Send Functions
75// ============================================================================
76
86esp_err_t lora_send_registration(uint8_t slave_id, const char* name, int32_t longitude, int32_t latitude);
87
95esp_err_t lora_send_periodic(const slave_data* slaves, uint8_t slave_count);
96
103esp_err_t lora_send_alarm(uint8_t slave_id);
104
105#endif // LORA_MSG_SERIALIZER_H
uint8_t lora_serialize_registration(uint8_t *buffer, uint8_t slave_id, const char *name, int32_t longitude, int32_t latitude)
Serialize a registration message into a compact byte buffer.
int lora_send_alarm(uint8_t slave_id)
Send an alarm message via LoRaWAN.
uint8_t lora_serialize_periodic(uint8_t *buffer, const slave_data *slaves, uint8_t slave_count)
Serialize a periodic status message for all registered slaves.
uint8_t lora_serialize_alarm(uint8_t *buffer, uint8_t slave_id)
Serialize an alarm message.
int lora_send_periodic(const slave_data *slaves, uint8_t slave_count)
Send periodic status for all slaves via LoRaWAN.
int lora_send_registration(uint8_t slave_id, const char *name, int32_t longitude, int32_t latitude)
Send a registration message via LoRaWAN.
Definition node_cfg.h:16