#ifndef ESP_NOW_COMM_H #define ESP_NOW_COMM_H #include "app_config.h" #include "client_registry.h" #include "esp_err.h" esp_err_t esp_now_comm_init(const app_config_t *config); /** Master: unicast accel deadzone to one slave (client_id is echoed for filtering). */ esp_err_t esp_now_comm_send_accel_deadzone(const uint8_t mac[CLIENT_MAC_LEN], uint32_t client_id, uint32_t deadzone); /** Master: send minimal unicast test payload to verify master→slave path. */ esp_err_t esp_now_comm_send_unicast_test(const uint8_t mac[CLIENT_MAC_LEN], uint32_t seq); /** Master → slave OTA (unicast). */ esp_err_t esp_now_comm_send_ota_start(const uint8_t mac[CLIENT_MAC_LEN], uint32_t total_size); esp_err_t esp_now_comm_send_ota_payload(const uint8_t mac[CLIENT_MAC_LEN], uint32_t seq, const uint8_t *data, size_t len); esp_err_t esp_now_comm_send_ota_end(const uint8_t mac[CLIENT_MAC_LEN]); /** Slave → master OTA status. */ esp_err_t esp_now_comm_send_ota_status(const uint8_t master_mac[CLIENT_MAC_LEN], uint32_t status, uint32_t bytes_written, uint32_t error); /** Slave: MAC of joined master (false if not joined). */ bool esp_now_comm_get_master_mac(uint8_t mac_out[CLIENT_MAC_LEN]); #endif