26#ifndef PROTOCORE_ESPNOW_H
27#define PROTOCORE_ESPNOW_H
36#define PC_ESPNOW_HDR 3
38#define PC_ESPNOW_MAGIC 0xE5
40#define PC_ESPNOW_MAX_PAYLOAD 247
43extern const uint8_t PC_ESPNOW_BROADCAST[6];
53size_t pc_espnow_encode(uint8_t type,
const uint8_t *payload,
size_t len, uint8_t *out,
size_t cap);
62bool pc_espnow_decode(
const uint8_t *buf,
size_t len, uint8_t *type,
const uint8_t **payload,
size_t *plen);
69void pc_espnow_peers_reset(
void);
71bool pc_espnow_peer_add(
const uint8_t mac[6]);
73bool pc_espnow_peer_has(
const uint8_t mac[6]);
75bool pc_espnow_peer_remove(
const uint8_t mac[6]);
77int pc_espnow_peer_count(
void);
84typedef void (*pc_espnow_recv_fn)(
const uint8_t mac[6], uint8_t type,
const uint8_t *payload,
size_t len);
92bool pc_espnow_begin(uint8_t channel, pc_espnow_recv_fn cb);
95bool pc_espnow_add_peer(
const uint8_t mac[6]);
98bool pc_espnow_send(
const uint8_t mac[6], uint8_t type,
const uint8_t *payload,
size_t len);
101bool pc_espnow_broadcast(uint8_t type,
const uint8_t *payload,
size_t len);
User-facing configuration for ProtoCore.