| /**@page mypage5 Demonstration application: call_qcsapi |
| * @brief An application is present to demonstrate the QCSAPI, <c>call_qcsapi</c>. |
| * It is a non-interactive command that takes all its parameter from the command line. |
| * This application is also the interface to the QSCAPI for scripting applications including web-based GUIs. |
| * |
| @section mysection5_1 Command Line Parameters |
| * The first command-line parameter specifies the API to be called. |
| * Remaining command-line parameters specify the arguments to that API. |
| * The order is the order of the arguments in the API. |
| * Thus the 2nd argument is usually the interface - e.g. wifi0 or eth1_0. |
| * For a generic QSCAPI, the 3rd argument will select the generic parameter - counter, option, etc. |
| * A set API will expect the new value as its final parameter. |
| * |
| * @anchor MAC_ADDRESS_DETAILS |
| * @subsection mysection5_1_1 Format for a MAC address |
| * MAC addresses are 48 bits, or 6 bytes long. They should be entered in this format:<br> |
| <c>xx:xx:xx:xx:xx:xx</c><br> |
| * where each "xx" represents the value of the corresponding byte in hexadecimal radix. |
| * The <c>call_qcsapi</c> command uses this same format to display MAC addresses, e.g. Get MAC Address (qcsapi_interface_get_mac_addr) |
| * or Get BSSID (qcsapi_wifi_get_BSSID). |
| * |
| * Not all sequences of 6 bytes represent valid MAC addresses for an individual interface. |
| * |
| * If the low-order bit is set in the 1st byte, the MAC address is interpreted as a multicast address. |
| * As this is a logical identifier for a group of interfaces on a network, it is not suitable as the address for an individual interface. |
| * Notice the broadcast address, <c>FF:FF:FF:FF:FF:FF</c>, is a special case of a multicast address. |
| * |
| * The MAC address that is all zeros (<c>00:00:00:00:00:00</c>) is also not valid as the MAC address for an individual interface. |
| * |
| * By convention, the all-zero MAC address is reported as the BSSID for a STA that is not in association. |
| * Since the BSSID for a STA is the MAC address of its partner AP, this means an AP cannot have a WiFi MAC address that is all zeros. |
| * This restriction applies to STAs as well as APs. |
| * |
| * All APIs that accept a MAC address as a parameter expect that MAC address to be valid for an individual interface. |
| * Thus a multicast address will not be accepted as a MAC address, and the selected API will return Invalid Value (<c>EINVAL</c>) as the error code. |
| * Additional details about command line parameters are listed with each individual QCSAPI. |
| * |
| * @section mysection5_2 Operation and Output |
| * Using its command line parameters, call_qcsapi calls the selected API, reports on the results and then exits. |
| * Its output depends on the nature of the API. For APIs that set a parameter, it displays the message complete. |
| * For APIs that get a parameter value, it reports the parameter value. |
| * |
| * If the API returns an error, the resulting message resembles the example below: |
| * |
| * <c>QCS API error 22: Invalid argument</c> |
| * |
| * The key is the word error, followed by the numeric error code (notice the actual returned error code will be less than 0, here -22). |
| * See @ref mysection4_1_4 "section QCS API Return Values" for more details on error codes. |
| * |
| * The <c>call_qcsapi</c> application also provides an interface to the QCSAPIs for scripting and web-based applications. |
| * |
| * @section mysection5_3 Examples |
| * |
| * The following examples are documented for the reader's reference. |
| * |
| * Example 1: Get the operational mode of a device: |
| * |
| * \code |
| quantenna # call_qcsapi get_mode wifi0 |
| Access point |
| quantenna # |
| \endcode |
| * |
| * Example 2: Disable the RF on a device: |
| * |
| * \code |
| quantenna # call_qcsapi rfenable wifi0 0 |
| killing cmdloop hostapd with pid: 275 |
| killing hostapd with pid: 278 |
| [93387.180000] wifi0: station 00:26:86:01:1a:be disassociated |
| [93387.185000] wifi0: station 00:26:86:01:1a:be disassociated |
| 01:56:27.304088 wifi0 Custom driver event:Dot11Msg:Client removed [00:26:86:01:1A:BE] [Deauthenticated - 3 - Deauthenticated because sendin[93387.210000] br0: port 2(wifi0) entering disabled state |
| g STA is leaving (or has left) IBSS or ESS] |
| 01:56:27.304449 wifi0 Custom driver event:STA-TRAFFIC-STAT |
| mac=00:26:86:01:1a:be |
| rx_packets=50036 |
| rx_bytes=13669562 |
| tx_packets=17931 |
| tx_bytes=3282979 |
| |
| 01:56:27.306999 wifi0 Custom driver event:Dot11Msg:Client disconnected [00:26:86:01:1A:BE] [Client sent disassociation - 8 - Disassociated because sending STA is leaving (or has left) BSS] |
| 01:56:27.307305 wifi0 Expired node:00:26:86:01:1A:BE |
| complete |
| quantenna # |
| \endcode |
| * |
| * Note in this example there was a single STA associated, which was removed when the RF was disabled on the AP via <c>call_qcsapi</c>. |
| */ |