Atmel Software Framework

wl_cm.c File Reference
#include <wl/wl_cm.h>
#include <util/util.h>
#include <string.h>

Data Structures

struct  cm
 
struct  cm_candidate
 

Macros

#define CM_DPRINTF(fmt...)
 
#define ROAMING_RSSI_DIFF   10
 
#define ROAMING_RSSI_THRESHOLD   -65
 Roaming configuration parameters. More...
 

Functions

static struct wl_network_t * find_best_candidate (struct cm *cm)
 This function can be modified to pick a network based on application specific criteria. More...
 
static void select_net (struct cm *cm)
 
wl_err_t wl_cm_set_network (struct wl_ssid_t *ssid, struct wl_mac_addr_t *bssid)
 Set the desired network which the connection manager should try to connect to. More...
 
wl_err_t wl_cm_start (cm_scan_cb_t scan_cb, cm_conn_cb_t conn_cb, cm_disconn_cb_t disconn_cb, void *ctx)
 Doesn't actually start the CM, just initializing. More...
 
static void wl_conn_failure_cb (void *ctx)
 
static void wl_conn_lost_cb (void *ctx)
 
static void wl_event_cb (struct wl_event_t event, void *ctx)
 
static void wl_media_connected_cb (void *ctx)
 
static void wl_scan_complete_cb (void *ctx)
 

Variables

static struct cmcm = NULL
 

#define ROAMING_RSSI_DIFF   10

The ROAMING_RSSI_DIFF setting defines how much better than the currently associated AP a new AP must be before we'll attempt to roam over to the new AP. If ROAMING_RSSI_DIFF is too high it might be too hard to roam (important if the STA is expected to move quickly through different AP coverage areas). If ROAMING_RSSI_DIFF is too low we might bounce between two APs with similar signal strengths. Unit is dBm.

Referenced by select_net().

#define ROAMING_RSSI_THRESHOLD   -65

Roaming configuration parameters.

The ROAMING_RSSI_THRESHOLD setting defines how bad the current signal strength should be before we'll consider roaming to an AP with better signal strength. The objective is to stay on the current AP as long as the RSSI is decent, even if there are other APs in the same BSS with better RSSI available. If ROAMING_RSSI_THRESHOLD is too high we might roam unecessarily. If ROAMING_RSSI_THRESHOLD is too low we might not roam in time to avoid packet loss. This also impacts power consumption, staying too long with an AP with poor RSSI will consume more power. Unit is dBm.

Referenced by select_net().