Home | History | Annotate | Download | only in hardware_legacy
      1 /*
      2  * Copyright (C) 2008 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 
     17 #ifndef _WIFI_H
     18 #define _WIFI_H
     19 
     20 #if __cplusplus
     21 extern "C" {
     22 #endif
     23 
     24 /**
     25  * Load the Wi-Fi driver.
     26  *
     27  * @return 0 on success, < 0 on failure.
     28  */
     29 int wifi_load_driver();
     30 
     31 /**
     32  * Unload the Wi-Fi driver.
     33  *
     34  * @return 0 on success, < 0 on failure.
     35  */
     36 int wifi_unload_driver();
     37 
     38 /**
     39  * Check if the Wi-Fi driver is loaded.
     40  *
     41  * @return 0 on success, < 0 on failure.
     42  */
     43 int is_wifi_driver_loaded();
     44 
     45 
     46 /**
     47  * Start supplicant.
     48  *
     49  * @return 0 on success, < 0 on failure.
     50  */
     51 int wifi_start_supplicant(int p2pSupported);
     52 
     53 /**
     54  * Stop supplicant.
     55  *
     56  * @return 0 on success, < 0 on failure.
     57  */
     58 int wifi_stop_supplicant();
     59 
     60 /**
     61  * Open a connection to supplicant on interface
     62  *
     63  * @return 0 on success, < 0 on failure.
     64  */
     65 int wifi_connect_to_supplicant(const char *ifname);
     66 
     67 /**
     68  * Close connection to supplicant on interface
     69  *
     70  * @return 0 on success, < 0 on failure.
     71  */
     72 void wifi_close_supplicant_connection(const char *ifname);
     73 
     74 /**
     75  * wifi_wait_for_event() performs a blocking call to
     76  * get a Wi-Fi event and returns a string representing
     77  * a Wi-Fi event when it occurs.
     78  *
     79  * @param iface is the interface on which event is received
     80  * @param buf is the buffer that receives the event
     81  * @param len is the maximum length of the buffer
     82  *
     83  * @returns number of bytes in buffer, 0 if no
     84  * event (for instance, no connection), and less than 0
     85  * if there is an error.
     86  */
     87 int wifi_wait_for_event(const char *iface, char *buf, size_t len);
     88 
     89 /**
     90  * wifi_command() issues a command to the Wi-Fi driver.
     91  *
     92  * Android extends the standard commands listed at
     93  * /link http://hostap.epitest.fi/wpa_supplicant/devel/ctrl_iface_page.html
     94  * to include support for sending commands to the driver:
     95  *
     96  * See wifi/java/android/net/wifi/WifiNative.java for the details of
     97  * driver commands that are supported
     98  *
     99  * @param iface is the interface on which command is sent
    100  * @param command is the string command
    101  * @param reply is a buffer to receive a reply string
    102  * @param reply_len on entry, this is the maximum length of
    103  *        the reply buffer. On exit, the number of
    104  *        bytes in the reply buffer.
    105  *
    106  * @return 0 if successful, < 0 if an error.
    107  */
    108 int wifi_command(const char *iface, const char *command, char *reply, size_t *reply_len);
    109 
    110 /**
    111  * do_dhcp_request() issues a dhcp request and returns the acquired
    112  * information.
    113  *
    114  * All IPV4 addresses/mask are in network byte order.
    115  *
    116  * @param ipaddr return the assigned IPV4 address
    117  * @param gateway return the gateway being used
    118  * @param mask return the IPV4 mask
    119  * @param dns1 return the IPV4 address of a DNS server
    120  * @param dns2 return the IPV4 address of a DNS server
    121  * @param server return the IPV4 address of DHCP server
    122  * @param lease return the length of lease in seconds.
    123  *
    124  * @return 0 if successful, < 0 if error.
    125  */
    126 int do_dhcp_request(int *ipaddr, int *gateway, int *mask,
    127                    int *dns1, int *dns2, int *server, int *lease);
    128 
    129 /**
    130  * Return the error string of the last do_dhcp_request().
    131  */
    132 const char *get_dhcp_error_string();
    133 
    134 /**
    135  * Return the path to requested firmware
    136  */
    137 #define WIFI_GET_FW_PATH_STA	0
    138 #define WIFI_GET_FW_PATH_AP	1
    139 #define WIFI_GET_FW_PATH_P2P	2
    140 const char *wifi_get_fw_path(int fw_type);
    141 
    142 /**
    143  * Change the path to firmware for the wlan driver
    144  */
    145 int wifi_change_fw_path(const char *fwpath);
    146 
    147 /**
    148  * Check and create if necessary initial entropy file
    149  */
    150 #define WIFI_ENTROPY_FILE	"/data/misc/wifi/entropy.bin"
    151 int ensure_entropy_file_exists();
    152 
    153 #if __cplusplus
    154 };  // extern "C"
    155 #endif
    156 
    157 #endif  // _WIFI_H
    158