23#ifndef PROTOCORE_ROAMING_H
24#define PROTOCORE_ROAMING_H
28#if PROTOCORE_ENABLE_ROAMING
38} protocore_roam_neighbor;
46 uint8_t preferred_bssid[6];
52 int8_t roam_rssi_threshold_dbm;
53 uint8_t hysteresis_db;
54} protocore_roam_policy;
59 PROTOCORE_ROAM_NONE = 0,
60 PROTOCORE_ROAM_BTM_IMMINENT,
61 PROTOCORE_ROAM_BTM_SUGGESTED,
62 PROTOCORE_ROAM_LOW_RSSI,
63} protocore_roam_reason;
69 uint8_t target_bssid[6];
70 uint8_t target_channel;
71 protocore_roam_reason reason;
72} protocore_roam_decision;
75#define PROTOCORE_ROAM_NR_ELEM_ID 52
77#define PROTOCORE_ROAM_RSSI_UNKNOWN ((int8_t)-128)
80#define PROTOCORE_ROAM_WNM_CATEGORY 0x0A
81#define PROTOCORE_ROAM_BTM_REQ_ACTION 0x07
82#define PROTOCORE_ROAM_BTM_PREF_LIST 0x01u
83#define PROTOCORE_ROAM_BTM_DISASSOC 0x04u
84#define PROTOCORE_ROAM_BTM_TERM_INCL 0x08u
85#define PROTOCORE_ROAM_BTM_ESS_DISASSOC 0x10
97 const protocore_roam_neighbor *list;
104 const protocore_roam_btm *request;
105 const protocore_roam_policy *policy;
111 const uint8_t *elems;
113 protocore_roam_neighbor *out;
120 const uint8_t *frame;
176 protocore_roam_decision decision;
177 protocore_roam_btm hint;
183extern RoamVars RoamV;
188 void (*
const decide)(uint8_t *work);
189 void (*
const parse_neighbor_report)(uint8_t *work);
190 void (*
const parse_btm_request)(uint8_t *work);
195void protocore_roam_decide(uint8_t *work);
196void protocore_roam_parse_neighbor_report(uint8_t *work);
197void protocore_roam_parse_btm_request(uint8_t *work);
203static const RoamNs Roam __attribute__((unused)) = {
204 .decide = protocore_roam_decide,
205 .parse_neighbor_report = protocore_roam_parse_neighbor_report,
206 .parse_btm_request = protocore_roam_parse_btm_request,
#define PROTOCORE_BEGIN_DECLS
Give a header's declarations C linkage, so their symbol names carry no parameter types.
_Bool proto_bool
The truth value.
#define PROTOCORE_END_DECLS