wifi.h revision 2bb990bfd2580f9be93a413e3a5325057977a828
1cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project/* 2cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * Copyright (C) 2008 The Android Open Source Project 3cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * 4cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 5cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * you may not use this file except in compliance with the License. 6cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * You may obtain a copy of the License at 7cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * 8cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 9cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * 10cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 11cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 12cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * See the License for the specific language governing permissions and 14cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * limitations under the License. 15cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project */ 16cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project 17cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project#ifndef _WIFI_H 18cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project#define _WIFI_H 19cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project 20cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project#if __cplusplus 21cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Projectextern "C" { 22cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project#endif 23cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project 24cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project/** 25cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * Load the Wi-Fi driver. 26cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * 27cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * @return 0 on success, < 0 on failure. 28cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project */ 29cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Projectint wifi_load_driver(); 30cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project 31cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project/** 32cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * Unload the Wi-Fi driver. 33cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * 34cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * @return 0 on success, < 0 on failure. 35cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project */ 36cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Projectint wifi_unload_driver(); 37cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project 38cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project/** 392bb990bfd2580f9be93a413e3a5325057977a828Irfan Sheriff * Check if the Wi-Fi driver is loaded. 402bb990bfd2580f9be93a413e3a5325057977a828Irfan Sheriff * 412bb990bfd2580f9be93a413e3a5325057977a828Irfan Sheriff * @return 0 on success, < 0 on failure. 422bb990bfd2580f9be93a413e3a5325057977a828Irfan Sheriff */ 432bb990bfd2580f9be93a413e3a5325057977a828Irfan Sheriffint is_wifi_driver_loaded(); 442bb990bfd2580f9be93a413e3a5325057977a828Irfan Sheriff 452bb990bfd2580f9be93a413e3a5325057977a828Irfan Sheriff 462bb990bfd2580f9be93a413e3a5325057977a828Irfan Sheriff/** 47cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * Start supplicant. 48cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * 49cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * @return 0 on success, < 0 on failure. 50cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project */ 51cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Projectint wifi_start_supplicant(); 52cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project 53cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project/** 54cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * Stop supplicant. 55cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * 56cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * @return 0 on success, < 0 on failure. 57cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project */ 58cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Projectint wifi_stop_supplicant(); 59cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project 60cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project/** 61cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * Open a connection to supplicant. 62cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * 63cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * @return 0 on success, < 0 on failure. 64cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project */ 65cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Projectint wifi_connect_to_supplicant(); 66cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project 67cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project/** 68cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * Close connection supplicant. 69cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * 70cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * @return 0 on success, < 0 on failure. 71cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project */ 72cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Projectvoid wifi_close_supplicant_connection(); 73cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project 74cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project/** 75cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * wifi_wait_for_event() performs a blocking call to 76cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * get a Wi-Fi event and returns a string representing 77cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * a Wi-Fi event when it occurs. 78cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * 79cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * @param buf is the buffer that receives the event 80cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * @param len is the maximum length of the buffer 81cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * 82cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * @returns number of bytes in buffer, 0 if no 83cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * event (for instance, no connection), and less than 0 84cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * if there is an error. 85cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project */ 86cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Projectint wifi_wait_for_event(char *buf, size_t len); 87cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project 88cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project/** 89cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * wifi_command() issues a command to the Wi-Fi driver. 90cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * 91cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * Android extends the standard commands listed at 92cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * /link http://hostap.epitest.fi/wpa_supplicant/devel/ctrl_iface_page.html 93cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * to include support for sending commands to the driver: 94cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * 95cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * <table border="2" cellspacing="2" cellpadding="2"> 96cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * <tr> 97cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * <td><strong>Command / Command summary</strong></td> 98cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * <td><strong>Form of Response</strong></td> 99cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * <td><strong>Processing</strong></td> 100cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * </tr> 101cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * <tr> 102cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * <td>DRIVER START<BR> Turn on Wi-Fi Hardware</td> 103cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * <td>OK if successful</td> 104cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * <td>OK ? true : false</td> 105cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * </tr> 106cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * <tr> 107cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * <td>DRIVER STOP<BR> Turn off Wi-Fi hardware</td> 108cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * <td>OK if successful</td> 109cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * <td>OK ? true : false</td> 110cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * </tr> 111cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * <tr> 112cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * <td>DRIVER RSSI<BR> Return received signal strength indicator in -db for current AP</td> 113cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * <td><ssid> Rssi xx</td> 114cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * <td>%*s %*s %d", &rssi</td> 115cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * </tr> 116cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * <tr> 117cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * <td>DRIVER LINKSPEED<BR> Return link speed in MBPS</td> 118cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * <td>LinkSpeed xx</td> 119cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * <td>%*s %d", &linkspd</td> 120cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * </tr> 121cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * <tr> 122cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * <td>DRIVER MACADDR<BR> Return mac address of the station</td> 123cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * <td>Macaddr = xx.xx.xx.xx.xx.xx</td> 124cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * <td>"%*s = %s", &macadr</td> 125cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * </tr> 126cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * <tr> 127cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * <td>DRIVER SCAN-ACTIVE<BR> Set scan type to active</td> 128cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * <td>"OK" if successful</td> 129cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * <td>"OK" ? true : false</td> 130cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * </tr> 131cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * <tr> 132cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * <td>DRIVER SCAN-PASSIVE<BR> Set scan type to passive</td> 133cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * <td>"OK" if successful</td> 134cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * <td>"OK" ? true : false</td> 135cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * </tr> 136cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * </table> 137cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * 138cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * See libs/android_runtime/android_net_wifi_Wifi.cpp for more information 139cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * describing how these and other commands are invoked. 140cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * 141cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * @param command is the string command 142cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * @param reply is a buffer to receive a reply string 143cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * @param reply_len on entry, this is the maximum length of 144cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * the reply buffer. On exit, the number of 145cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * bytes in the reply buffer. 146cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * 147cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * @return 0 if successful, < 0 if an error. 148cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project */ 149cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Projectint wifi_command(const char *command, char *reply, size_t *reply_len); 150cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project 151cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project/** 152cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * do_dhcp_request() issues a dhcp request and returns the acquired 153cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * information. 154cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * 155cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * All IPV4 addresses/mask are in network byte order. 156cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * 157cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * @param ipaddr return the assigned IPV4 address 158cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * @param gateway return the gateway being used 159cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * @param mask return the IPV4 mask 160cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * @param dns1 return the IPV4 address of a DNS server 161cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * @param dns2 return the IPV4 address of a DNS server 162cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * @param server return the IPV4 address of DHCP server 163cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * @param lease return the length of lease in seconds. 164cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * 165cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * @return 0 if successful, < 0 if error. 166cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project */ 167cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Projectint do_dhcp_request(int *ipaddr, int *gateway, int *mask, 168cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project int *dns1, int *dns2, int *server, int *lease); 169cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project 170cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project/** 171cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project * Return the error string of the last do_dhcp_request(). 172cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project */ 173cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Projectconst char *get_dhcp_error_string(); 174cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project 175cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project#if __cplusplus 176cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project}; // extern "C" 177cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project#endif 178cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project 179cc490161f6af9e4a6842ee827e4bfc43bc4509d5The Android Open Source Project#endif // _WIFI_H 180