Initial Contribution
diff --git a/include/hardware/wifi.h b/include/hardware/wifi.h
new file mode 100644
index 0000000..0b1acdc
--- /dev/null
+++ b/include/hardware/wifi.h
@@ -0,0 +1,153 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef _WIFI_H
+#define _WIFI_H
+
+#if __cplusplus
+extern "C" {
+#endif
+
+/**
+ * Load the wifi driver.
+ *
+ * @return 0 on success, < 0 on failure.
+ */
+int wifi_load_driver();
+
+/**
+ * Unload the wifi driver.
+ *
+ * @return 0 on success, < 0 on failure.
+ */
+int wifi_unload_driver();
+
+/**
+ * Start supplicant.
+ *
+ * @return 0 on success, < 0 on failure.
+ */
+int wifi_start_supplicant();
+
+/**
+ * Stop supplicant.
+ *
+ * @return 0 on success, < 0 on failure.
+ */
+int wifi_stop_supplicant();
+
+/**
+ * Open a connection to supplicant.
+ *
+ * @return 0 on success, < 0 on failure.
+ */
+int wifi_connect_to_supplicant();
+
+/**
+ * Close connection supplicant.
+ *
+ * @return 0 on success, < 0 on failure.
+ */
+void wifi_close_supplicant_connection();
+
+/**
+ * Do a blocking call to get a wifi event and
+ * return a string representing a wifi event
+ * when it occurs.
+ *
+ * @param buf is the buffer that receives the event
+ * @param len is the maximum length of the buffer
+ *
+ * @returns number of bytes in buffer, 0 if no
+ * event, for instance no connection, < 0 if an
+ * error.
+ */
+int wifi_wait_for_event(char *buf, size_t len);
+
+/**
+ * Issue a command to the wifi driver.
+ *
+ * see \link http://hostap.epitest.fi/wpa_supplicant/devel/ctrl_iface_page.html
+ * for the list of the standard commands. Android has extended these to include
+ * support for sending commands to the driver:
+ *
+ *------------------------------------------------------------------------------
+ * command form of response processing
+ * Summary of the command
+ *------------------------------------------------------------------------------
+ * "DRIVER START" -> "OK" if successful -> "OK" ? true : false
+ * Turn on WiFi Hardware
+ *
+ * "DRIVER STOP" -> "OK" if successful -> "OK" ? true : false
+ * Turn off WiFi Hardware
+ *
+ * "DRIVER RSSI" -> "<ssid> Rssi xx" -> "%*s %*s %d", &rssi
+ * Return received signal strength indicator in -db for current AP
+ *
+ * "DRIVER LINKSPEED" -> "LinkSpeed xx" -> "%*s %d", &linkspd
+ * Return link speed in MBPS
+ *
+ * "DRIVER MACADDR" -> "Macaddr = xx.xx.xx.xx.xx.xx" -> "%*s = %s", &macadr
+ * Return mac address of the station
+ *
+ * "DRIVER SCAN-ACTIVE" -> "OK" if successful -> "OK" ? true : false
+ * Set scan type to active
+ *
+ * "DRIVER SCAN-PASSIVE" -> "OK" if successful -> "OK" ? true : false
+ * Set scan type to passive
+ *------------------------------------------------------------------------------
+ *
+ * See libs/android_runtime/android_net_wifi_Wifi.cpp for more information
+ * on how these and other commands invoked.
+ *
+ * @param command is the string command
+ * @param reply is a buffer to receive a reply string
+ * @param reply_len on entry is the maximum length of
+ * reply buffer and on exit the number of
+ * bytes in the reply buffer.
+ *
+ * @return 0 if successful, < 0 if an error.
+ */
+int wifi_command(const char *command, char *reply, size_t *reply_len);
+
+/**
+ * Issues a dhcp request returning the acquired
+ * information. All IPV4 addresses/mask are in
+ * network byte order.
+ *
+ * @param ipaddr return the assigned IPV4 address
+ * @param gateway return the gateway being used
+ * @param mask return the IPV4 mask
+ * @param dns1 return the IPV4 address of a dns server
+ * @param dns2 return the IPV4 address of a dns server
+ * @param serverAddress return the IPV4 address of dhcp server
+ * @param lease return the length of lease in seconds.
+ *
+ * @return 0 if successful, < 0 if error.
+ */
+int do_dhcp_request(int *ipaddr, int *gateway, int *mask,
+ int *dns1, int *dns2, int *server, int *lease);
+
+/**
+ * Return the error string of the last do_dhcp_request.
+ */
+const char *get_dhcp_error_string();
+
+#if __cplusplus
+}; // extern "C"
+#endif
+
+#endif // _WIFI_H