Skip to content
Snippets Groups Projects
functionspec.md 9.42 KiB
Newer Older
  • Learn to ignore specific revisions
  • Jakob Olsson's avatar
    Jakob Olsson committed
    # Function Specification
    
    The scope of wifimngr is to expose the libwifi APIs over ubus.
    
    ```
    root@dc667cfd1b01:/builds/iopsys/wifimngr# ubus -v list
    'wifi' @0af621bb
    	"status":{}
    
    Jakob Olsson's avatar
    Jakob Olsson committed
    	"status":{}
    	"stats":{}
    	"assoclist":{}
    	"stations":{"sta":"String"}
    
    	"disconnect":{"sta":"String","reason":"Integer"}
    	"monitor_add":{"sta":"String"}
    	"monitor_del":{"sta":"String"}
    	"monitor_get":{"sta":"String"}
    	"subscribe_frame":{"type":"Integer","stype":"Integer"}
    	"unsubscribe_frame":{"type":"Integer","stype":"Integer"}
    
    Jakob Olsson's avatar
    Jakob Olsson committed
    	"add_neighbor":{"bssid":"String","channel":"Integer","bssid_info":"String","reg":"Integer","phy":"Integer"}
    	"del_neighbor":{"bssid":"String"}
    	"list_neighbor":{"ssid":"String","client":"String"}
    	"request_neighbor":{"ssid":"String","client":"String"}
    	"request_transition":{"client":"String","bssid":"Array","timeout":"Integer"}
    	"add_vendor_ie":{"mgmt":"Integer","oui":"String","data":"String"}
    	"del_vendor_ie":{"mgmt":"Integer","oui":"String","data":"String"}
    
    	"dump_beacon":{}
    'wifi.radio.test5' @fac30612
    
    Jakob Olsson's avatar
    Jakob Olsson committed
    	"status":{}
    	"stats":{}
    	"get":{"param":"String"}
    	"scan":{"ssid":"String","bssid":"String","channel":"Integer"}
    	"scanresults":{"bssid":"String"}
    	"autochannel":{"interval":"Integer","algo":"Integer","scans":"Integer"}
    
    	"add_iface":{"args":"Table","config":"Boolean"}
    	"del_iface":{"ifname":"String","config":"Boolean"}
    'wifi.wps' @76eb99e4
    	"start":{"ifname":"String","mode":"String","role":"String","pin":"String"}
    
    Jakob Olsson's avatar
    Jakob Olsson committed
    	"stop":{}
    
    	"status":{"ifname":"String"}
    
    Jakob Olsson's avatar
    Jakob Olsson committed
    	"generate_pin":{}
    	"validate_pin":{"pin":"String"}
    
    	"showpin":{"ifname":"String"}
    	"setpin":{"ifname":"String","pin":"String"}
    
    Jakob Olsson's avatar
    Jakob Olsson committed
    ```
    
    # Contents
    * [wifi](#wifi)
    * [wifi.ap.\<name\>](#wifiapname)
    * [wifi.radio.\<name\>](#wifiradioname)
    * [wifi.wps](#wifiwps)
    
    ## APIs
    
    Wifimngr publishes four different types objects, `wifi`, `wifi.ap.<name>`,
    `wifi.radio.<name>` and `wifi.wps`.
    
    ### wifi
    
    An object that publishes wifi radio and interface information.
    
    | Method			| Function ID		|
    | :---				| :---        		|
    | [status](#status) | 1					|
    
    #### Methods
    
    Methods descriptions of the `wifi` object.
    
    ##### status
    
    Jakob Olsson's avatar
    Jakob Olsson committed
    Exposes wifi radio statistics over ubus.
    
    * [status documentation](./api/wifi.md#status)
    
    ### wifi.ap.\<name\>
    
    Jakob Olsson's avatar
    Jakob Olsson committed
    Object for wifi access point interface functionality. One object per access
    point interface will be published.
    ````bash
    
    Jakob Olsson's avatar
    Jakob Olsson committed
    	"status":{}
    	"stats":{}
    	"assoclist":{}
    	"stations":{"sta":"String"}
    
    	"disconnect":{"sta":"String","reason":"Integer"}
    	"monitor_add":{"sta":"String"}
    	"monitor_del":{"sta":"String"}
    	"monitor_get":{"sta":"String"}
    	"subscribe_frame":{"type":"Integer","stype":"Integer"}
    	"unsubscribe_frame":{"type":"Integer","stype":"Integer"}
    
    Jakob Olsson's avatar
    Jakob Olsson committed
    	"add_neighbor":{"bssid":"String","channel":"Integer","bssid_info":"String","reg":"Integer","phy":"Integer"}
    	"del_neighbor":{"bssid":"String"}
    	"list_neighbor":{"ssid":"String","client":"String"}
    	"request_neighbor":{"ssid":"String","client":"String"}
    	"request_transition":{"client":"String","bssid":"Array","timeout":"Integer"}
    	"add_vendor_ie":{"mgmt":"Integer","oui":"String","data":"String"}
    	"del_vendor_ie":{"mgmt":"Integer","oui":"String","data":"String"}
    
    Jakob Olsson's avatar
    Jakob Olsson committed
    ````
    
    Jakob Olsson's avatar
    Jakob Olsson committed
    | Method      								|Function ID	|
    | :--- 	  									| :---        	|
    | [status](#status-1)						| 2				|
    | [stats](#stats)							| 3				|
    | [assoclist](#assoclist)					| 4				|
    | [stations](#stations)						| 5				|
    | [disconnect](#disconnect)					| 6				|
    
    | [monitor_add](#monitor_add)				| 7				|
    | [monitor_del](#monitor_del)				| 8				|
    | [monitor_get](#monitor_get)			 	| 9				|
    | [subscribe_frame](#subscribe_frame)		| 10			|
    | [unsubscribe_frame](#unsubscribe_frame)	| 11			|
    | [add_neighbor](#add_neighbor)		 		| 12			|
    | [del_neighbor](#del_neighbor)		 		| 13			|
    | [list_neighbor](#list_neighbor)			| 14			|
    | [request_neighbor](#request_neighbor)		| 15			|
    | [request_transition](#request_transition)	| 16			|
    | [add_vendor_ie](#add_vendor_ie)			| 17			|
    | [del_vendor_ie](#del_vendor_ie)			| 18			|
    | [dump_beacon](#dump_beacon)				| 19			|
    
    Jakob Olsson's avatar
    Jakob Olsson committed
    
    #### Methods
    
    Method descriptions of the `wifi.ap.<name>` object.
    
    ##### status
    
    Exposes access point interface statistics over ubus.
    
    * [status documentation](./api/wifi.ap.md#status)
    
    ##### stats
    
    Exposes access point interface rx/tx statistics over ubus.
    
    * [stats documentation](./api/wifi.ap.md#stats)
    
    ##### assoclist
    
    Exposes connected wireless clients over ubus.
    
    * [assoclist documentation](./api/wifi.ap.md#assoclist)
    
    ##### stations
    
    Exposes client wifi client statistics over ubus.
    
    * [stations documentation](./api/wifi.ap.md#stations)
    
    ##### disconnect
    
    Issue a deauthenticate to a wireles client.
    
    * [disconnect documentation](./api/wifi.ap.md#disconnect)
    
    
    Jakob Olsson's avatar
    Jakob Olsson committed
    
    Monitor signal strength of unassociated station.
    
    
    * [monitor documentation](./api/wifi.ap.md#monitor_add)
    
    ##### monitor_del
    
    Stop monitoring signal strength of unassociated station.
    
    * [monitor documentation](./api/wifi.ap.md#monitor_del)
    
    ##### monitor_get
    
    Monitor signal strength of unassociated station.
    
    * [monitor documentation](./api/wifi.ap.md#monitor_get)
    
    ##### subscribe_frame
    
    Subscribe to 802.11 frames, which the driver/firmware needs to pass up to ubus.
    
    * [subscribe_frame documentation](./api/wifi.ap.md#subscribe_frame)
    
    
    ##### unsubscribe_frame
    
    Unsubscribe to 802.11 frames.
    
    * [unsubscribe_frame documentation](./api/wifi.ap.md#unsubscribe_frame)
    
    
    Jakob Olsson's avatar
    Jakob Olsson committed
    
    ##### add_neighbor
    
    Add an access point to the neighbor list.
    
    * [add_neighbor documentation](./api/wifi.ap.md#add_neighbor)
    
    ##### del_neighbor
    
    Delete an access point from the neighbor list
    
    * [del_neighbor documentation](./api/wifi.ap.md#del_neighbor)
    
    ##### list_neighbor
    
    Prints neighbor access points in the network.
    
    * [list_neighbor documentation](./api/wifi.ap.md#list_neighbor)
    
    ##### request_neighbor
    
    Triggers an 11k beacon report from an associated station.
    
    * [request_neighbor documentation](./api/wifi.ap.md#request_neighbor)
    
    ##### request_transition
    
    Triggers an 11k beacon report from an associated station.
    
    * [request_transition documentation](./api/wifi.ap.md#request_transition)
    
    ##### add_vendor_ie
    
    Appends vendor specific information element to an 802.11 management frame.
    
    * [add_vendor_ie documentation](./api/wifi.ap.md#add_vendor_ie)
    
    ##### del_vendor_ie
    
    Remove vendor specific information element from an 802.11 management frame.
    
    * [del_vendor_ie documentation](./api/wifi.ap.md#del_vendor_ie)
    
    
    ##### dump_beacon
    
    Dump beacon frame contents.
    
    * [dump_beacon documentation](./api/wifi.ap.md#dump_beacon)
    
    
    Jakob Olsson's avatar
    Jakob Olsson committed
    ### wifi.radio.\<name\>
    
    Object for wifi device functionality. One object per device will be published to
    ubus.
    
    ````bash
    
    Jakob Olsson's avatar
    Jakob Olsson committed
    	"status":{}
    	"stats":{}
    	"get":{"param":"String"}
    	"scan":{"ssid":"String","bssid":"String","channel":"Integer"}
    	"scanresults":{"bssid":"String"}
    	"autochannel":{"interval":"Integer","algo":"Integer","scans":"Integer"}
    
    	"add_iface":{"args":"Table","config":"Boolean"}
    	"del_iface":{"ifname":"String","config":"Boolean"}
    
    Jakob Olsson's avatar
    Jakob Olsson committed
    ````
    | Method     					| Function ID	|
    | :---							| :---        	|
    
    | [status](#status-2)			| 20			|
    | [stats](#stats-1)				| 21			|
    | [get](#get)					| 22			|
    | [scan](#scan)					| 23			|
    | [scanresults](#scanresults)	| 24			|
    | [autochannel](#autochannel)	| 25			|
    | [add_iface](#add_iface)		| 26			|
    | [del_iface](#del_iface)		| 27			|
    
    Jakob Olsson's avatar
    Jakob Olsson committed
    
    #### Methods
    
    Method descriptions of the `wifi.radio.<name>` object.
    
    ##### status
    
    Exposes radio statistics over ubus.
    
    * [status documentation](./api/wifi.radio.md#status)
    
    ##### stats
    
    Exposes radio stats over ubus.
    
    * [stats documentation](./api/wifi.radio.md#stats)
    
    ##### get
    
    Exposes temperature of the WiFi card.
    
    * [get documentation](./api/wifi.radio.md#get)
    
    ##### scan
    
    Scans the radio for broadcasted SSIDs.
    
    * [scan documentation](./api/wifi.radio.md#scan)
    
    ##### scanresults
    
    Exposes available SSIDs from a radio scan over ubus.
    
    * [scanresults documentation](./api/wifi.radio.md#scanresults)
    
    ##### autochannel
    
    Selects a channel for the radio to operate at.
    
    * [autochannel documentation](./api/wifi.radio.md#autochannel)
    
    ### wifi.wps
    
    Object for WiFi Protected Setup functionality.
    
    ````bash
    
    Jakob Olsson's avatar
    Jakob Olsson committed
    	"start":{"vif":"String","mode":"String","role":"String","pin":"String"}
    	"stop":{}
    	"status":{"vif":"String"}
    	"generate_pin":{}
    	"validate_pin":{"pin":"String"}
    	"showpin":{"vif":"String"}
    	"setpin":{"vif":"String","pin":"String"}
    ````
    | Method     						| Function ID	|
    | :--- 								| :---       	|
    
    | [start](#start)					| 28			|
    | [stop](#stop)						| 29			|
    | [status](#status-3)				| 30			|
    | [generate_pin](#generate_pin)		| 31			|
    | [validate_pin](#show_pin)			| 32			|
    | [showpin](#validate_pin)			| 33			|
    | [setpin](#setpin)					| 34			|
    
    Jakob Olsson's avatar
    Jakob Olsson committed
    
    #### Methods
    
    Descriptions of `wifi.wps` methods.
    
    
    ##### start
    
    Initiates WPS functionality, default uses push button configuration (PBC).
    
    * [start documentation](./api/wifi.wps.md#start)
    
    ##### stop
    
    Stops any WPS functionality.
    
    * [stop documentation](./api/wifi.wps.md#stop)
    
    ##### status
    
    Gives current state of the WPS.
    
    * [status documentation](./api/wifi.wps.md#status)
    
    ##### generate_pin
    
    Method generating a valid pin for WPS.
    
    * [generate_pin documentation](./api/wifi.wps.md#generate_pin)
    
    ##### show_pin
    
    Shows currently set PIN, if any.
    
    * [showpin documentation](./api/wifi.wps.md#showpin)
    
    
    ##### validate_pin
    
    Takes a pin input and shows whether it is a valid PIN or not.
    
    * [validate_pin documentation](./api/wifi.wps.md#validate_pin)
    
    ##### setpin
    
    Takes a pin input and sets it as the active WPS pin for the device.
    
    * [setpin documentation](./api/wifi.wps.md#setpin)