Access Point (AP) Node

Subclass of WlanExpNode that interfaces to an 802.11 Reference Design node running the Access Point (AP) application in CPU High. An AP node supports all the common node methods plus the AP-specific methods described below.

AP Node Methods

WlanExpNodeAp.configure_bss(bssid=False, ssid=None, channel=None, beacon_interval=False, dtim_period=None, ht_capable=None)[source]

Configure the BSS information of the node

Each node is either a member of no BSS (colloquially “unassociated”) or a member of one BSS. A node requires a minimum valid set of BSS information to be a member of a BSS. The minimum valid set of BSS information for an AP is:

  1. BSSID: 48-bit MAC address
  2. Channel: Logical channel for Tx/Rx by BSS members
  3. SSID: Variable length string (ie the name of the network)
  4. Beacon Interval: Interval (in TUs) for beacons

If a node is not a member of a BSS (i.e. n.get_network_info() returns None), then the node requires all parameters of a minimum valid set of BSS information be specified (i.e. Channel, SSID, and Beacon Interval). For an AP, if BSSID is not specified, then it is assumed to be the wlan_mac_address of the node.

See https://warpproject.org/trac/wiki/802.11/wlan_exp/bss for more documentation on BSS information / configuration.

Parameters:
  • bssid (int, str) – 48-bit ID of the BSS either None or the wlan_mac_address of the node. If not specified, it is by default the wlan_mac_address of the node.
  • ssid (str) – SSID string (Must be 32 characters or less)
  • channel (int) – Channel number on which the BSS operates
  • beacon_interval (int) – Integer number of beacon Time Units in [10, 65534] (http://en.wikipedia.org/wiki/TU_(Time_Unit); a TU is 1024 microseconds); A value of None will disable beacons; A value of False will not update the current beacon interval.
  • dtim_period (int) – Integer number of beacon intervals between DTIMs
  • ht_capable (bool) – Is the PHY mode HTMF (True) or NONHT (False)?
WlanExpNodeAp.add_association(device_list, disable_timeout=True)[source]

Adds each device in device_list to the list of associated stations at the AP. If a device is also an 802.11 Reference Design STA, the STA is also configured with the BSS of the AP. In this case the AP and STA attain the same association state as if they had associated via the standard wireless handshake. This method bypasses any any authentication address filtering at the AP.

Parameters:
  • device_list (list of WlanExpNode / WlanDevice) – List of 802.11 devices or single 802.11 device to add to the AP’s association table
  • disable_timeout (bool, optional) – Disables the AP’s normal inactivity timeout for the new associations.
  • The AP periodically checks for associated stations with no recent Tx/Rx activity and removes inactive
  • nodes from its list of associated stations. Set this parameter to True to force to AP to keep the new
  • associations created by this method, even if the stations are inactive.
WlanExpNodeAp.is_associated(device_list)[source]

Are the devices in the device_list in the AP association table?

Parameters:device_list (WlanDevice) – List of WLAN device (or sub-class of WLAN device)
Returns:associated – List of booleans describing whether each given device is associated with the AP
Return type:list of bool

If the device_list is a single device, then only a boolean is returned. If the device_list is a list of devices, then a list of booleans will be returned in the same order as the devices in the list.

WlanExpNodeAp.disassociate(device_list)[source]

De-authenticate specific devices and remove the devices from the AP’s association tables. This method triggers transmission of a de-authenticaion packet to the targeted STA nodes. The STA nodes are then removed from the AP association table.

Parameters:device_list (list of WlanExpNode / WlanDevice) – List of 802.11 devices or single 802.11 device for which to disassociate
WlanExpNodeAp.disassociate_all()[source]

De-authenticates all devices and removes all devices from the AP’s association tables. This method triggers transmission of a de-authenticaion packet to every associated STA node. The STA nodes are then removed from the AP association table.

WlanExpNodeAp.set_authentication_address_filter(allow)[source]

Command to set the authentication address filter on the node.

This command will reset the current address filter and then set the address filter to the values in the allow list. The filter only affects over-the-air associations. Assocaitions created by wlan_exp will bypass any filters configured by this method.

Clients will be allowed to associate if they pass any of the filters that are set.

Parameters:allow (list of tuple) – List of (address, mask) tuples that will be used to filter addresses on the node. A tuple can be substituted with a predefined string: “NONE”, “ALL”, or “MANGO-W3”

For the mask, bits that are 0 are treated as “any” and bits that are 1 are treated as “must equal”. For the address, locations of one bits in the mask must match the incoming addresses to pass the filter.

Examples:

  • Only allow client with MAC address 01:23:45:67:89:AB:

    >>> n_ap.set_authentication_address_filter(allow=(0x0123456789AB, 0xFFFFFFFFFFFF))
    
  • Only allow clients with MAC addresses starting with 01:23:45:

    >>> n_ap.set_authentication_address_filter(allow=(0x012345000000, 0xFFFFFF000000))
    
  • Allow clients with MAC addresses starting with 01:23:45 or 40:

    >>> n_ap.set_authentication_address_filter(allow=[(0x012345000000, 0xFFFFFF000000), (0x400000000000, 0xFF0000000000)])
    
  • Use one of the pre-defined address filter configurations:

    >>> n_ap.set_authentication_address_filter(allow='NONE')     # Same as allow=(0x000000000000, 0xFFFFFFFFFFFF)
    >>> n_ap.set_authentication_address_filter(allow='ALL')      # Same as allow=(0x000000000000, 0x000000000000)
    >>> n_ap.set_authentication_address_filter(allow='MANGO-W3') # Same as allow=(0x40d855042000, 0xFFFFFFFFF000)
    
WlanExpNodeAp.enable_DTIM_multicast_buffering(enable)[source]

Enable / Disable DTIM buffering of multicast data

The Delivery Traffic Indication Map (DTIM) keeps track of STA sleep states and will buffer traffic for the node based on those sleep states. When an AP is configured with enable_DTIM_multicast_buffering(False), it will include the multicast queue in the normal polling of queues, independent of any STA sleep states.

Parameters:enable (bool) – True - enable DTIM multicast buffering False - disable DTIM multicast buffering (Default value on Node: True)
WlanExpNodeAp.enable_beacon_mac_time_update(enable)[source]

Enable / Disable MAC time update from beacons

Raises NotImplementedError(). Current AP implementation does not support updating MAC time from beacon receptions

Parameters:enable (bool) – True - enable MAC time updates from beacons False - disable MAC time updates from beacons