19#ifndef PROTOCORE_ROAMING_H
20#define PROTOCORE_ROAMING_H
30struct pc_roam_neighbor
41 bool disassoc_imminent;
43 uint8_t preferred_bssid[6];
49 int8_t roam_rssi_threshold_dbm;
50 uint8_t hysteresis_db;
58 PC_ROAM_BTM_SUGGESTED,
63struct pc_roam_decision
66 uint8_t target_bssid[6];
67 uint8_t target_channel;
68 pc_roam_reason reason;
86void pc_roam_decide(
const uint8_t current_bssid[6], int8_t current_rssi_dbm,
const pc_roam_neighbor *neighbors,
87 uint8_t n,
const pc_roam_btm *btm,
const pc_roam_policy *policy, pc_roam_decision *out);
90#define PC_ROAM_NR_ELEM_ID 52
92#define PC_ROAM_RSSI_UNKNOWN ((int8_t)-128)
105uint8_t pc_roam_parse_neighbor_report(
const uint8_t *elems,
size_t len, pc_roam_neighbor *out, uint8_t max);
108#define PC_ROAM_WNM_CATEGORY 0x0A
109#define PC_ROAM_BTM_REQ_ACTION 0x07
110#define PC_ROAM_BTM_PREF_LIST 0x01u
111#define PC_ROAM_BTM_DISASSOC 0x04u
112#define PC_ROAM_BTM_TERM_INCL 0x08u
113#define PC_ROAM_BTM_ESS_DISASSOC 0x10
125bool pc_roam_parse_btm_request(
const uint8_t *frame,
size_t len, pc_roam_btm *out);
User-facing configuration for ProtoCore.