From cd0c0f261643d1cf104cd54fa9a8532b02811db9 Mon Sep 17 00:00:00 2001 From: Mimmo La Fauci Date: Wed, 7 Mar 2012 00:05:54 +0100 Subject: [PATCH] Added comments --- WiFi/WiFi.cpp | 8 +-- WiFi/WiFi.h | 102 ++++++++++++++++++++++++------- WiFi/utility/wifi_drv.cpp | 8 +-- WiFi/utility/wifi_drv.h | 122 +++++++++++++++++++++++++++++++++++++- 4 files changed, 204 insertions(+), 36 deletions(-) diff --git a/WiFi/WiFi.cpp b/WiFi/WiFi.cpp index e613bc2f2..2dd59c76d 100755 --- a/WiFi/WiFi.cpp +++ b/WiFi/WiFi.cpp @@ -4,19 +4,13 @@ extern "C" { #include "utility/wl_definitions.h" #include "utility/wl_types.h" - #include "debug.h" + #include "debug.h" } // XXX: don't make assumptions about the value of MAX_SOCK_NUM. int16_t WiFiClass::_state[MAX_SOCK_NUM] = { 0, 0, 0, 0 }; uint16_t WiFiClass::_server_port[MAX_SOCK_NUM] = { 0, 0, 0, 0 }; -char WiFiClass::_ssid[] = { 0 }; -char WiFiClass::_key[] = { 0 }; -char WiFiClass::_passph[] = { 0 }; -wl_status_t WiFiClass::_status; - - WiFiClass::WiFiClass() { // Driver initialization diff --git a/WiFi/WiFi.h b/WiFi/WiFi.h index cabfd139a..1bdaf9fe0 100755 --- a/WiFi/WiFi.h +++ b/WiFi/WiFi.h @@ -15,12 +15,6 @@ extern "C" { class WiFiClass { private: - // this data are stored in EEPROM and loaded at begin - // The next connect overwrite these values - static char _ssid[WL_SSID_MAX_LENGTH]; - static char _key[WL_WEP_KEY_MAX_LENGTH]; - static char _passph[WL_WPA_KEY_MAX_LENGTH]; - static wl_status_t _status; static void init(); public: @@ -29,7 +23,9 @@ public: WiFiClass(); - // Get the first socket available + /* + * Get the first socket available + */ static uint8_t getSocket(); /* Start Wifi connection for OPEN networks @@ -51,51 +47,113 @@ public: /* Start Wifi connection with passphrase * the most secure supported mode will be automatically selected * + * param ssid: Pointer to the SSID string. * param passphrase: Passphrase. Valid characters in a passphrase * must be between ASCII 32-126 (decimal). */ int begin(char* ssid, const char *passphrase); - // Disconnect from the network + /* + * Disconnect from the network + * + * return: one value of wl_status_t enum + */ int disconnect(void); - //Get the interface MAC address. + /* + * Get the interface MAC address. + * + * return: pointer to uint8_t array with length WL_MAC_ADDR_LENGTH + */ uint8_t* macAddress(uint8_t* mac); - //Get the DHCP information related to IP + /* + * Get the interface IP address. + * + * return: Ip address value + */ IPAddress localIP(); - //Get the DHCP information related to subnetMask + /* + * Get the interface subnet mask address. + * + * return: subnet mask address value + */ IPAddress subnetMask(); - //Get the DHCP information related to gateway IP - IPAddress gatewayIP(); + /* + * Get the gateway ip address. + * + * return: gateway ip address value + */ + IPAddress gatewayIP(); - // Return the current SSID associated with the network + /* + * Return the current SSID associated with the network + * + * return: ssid string + */ char* SSID(); - // Return the current BSSID associated with the network + /* + * Return the current BSSID associated with the network. + * It is the MAC address of the Access Point + * + * return: pointer to uint8_t array with length WL_MAC_ADDR_LENGTH + */ uint8_t* BSSID(uint8_t* bssid); - // Return the current RSSI /Received Signal Strength in dBm) associated with the network + /* + * Return the current RSSI /Received Signal Strength in dBm) + * associated with the network + * + * return: signed value + */ int32_t RSSI(); - // Return the Encryption Type associated with the network + /* + * Return the Encryption Type associated with the network + * + * return: one value of wl_enc_type enum + */ uint8_t encryptionType(); - // Start scan WiFi networks available and return the discovered number + /* + * Start scan WiFi networks available + * + * return: Number of discovered networks + */ uint8_t scanNetworks(); - // Return SSID item associated with the network identified with networkItem + /* + * Return the SSID discovered during the network scan. + * + * param networkItem: specify from which network item want to get the information + * + * return: ssid string of the specified item on the networks scanned list + */ char* SSID(uint8_t networkItem); - // Return the Encryption Type associated with the network identified with networkItem + /* + * Return the encryption type of the networks discovered during the scanNetworks + * + * param networkItem: specify from which network item want to get the information + * + * return: encryption type (enum wl_enc_type) of the specified item on the networks scanned list + */ uint8_t encryptionType(uint8_t networkItem); - // Return the current RSSI /Received Signal Strength in dBm) associated with the network identified with networkItem + /* + * Return the RSSI of the networks discovered during the scanNetworks + * + * param networkItem: specify from which network item want to get the information + * + * return: signed value of RSSI of the specified item on the networks scanned list + */ int32_t RSSI(uint8_t networkItem); - /* Return Connection status. + /* + * Return Connection status. * * return: one of the value defined in wl_status_t */ diff --git a/WiFi/utility/wifi_drv.cpp b/WiFi/utility/wifi_drv.cpp index 6065107d6..00a52eb4b 100644 --- a/WiFi/utility/wifi_drv.cpp +++ b/WiFi/utility/wifi_drv.cpp @@ -14,10 +14,12 @@ extern "C" { #include "debug.h" } +// Array of data to cache the information related to the networks discovered char WiFiDrv::_networkSsid[][WL_SSID_MAX_LENGTH] = {{"1"},{"2"},{"3"},{"4"},{"5"}}; int32_t WiFiDrv::_networkRssi[WL_NETWORKS_LIST_MAXNUM] = { 0 }; uint8_t WiFiDrv::_networkEncr[WL_NETWORKS_LIST_MAXNUM] = { 0 }; +// Cached values of retrieved data char WiFiDrv::_ssid[] = {0}; uint8_t WiFiDrv::_bssid[] = {0}; uint8_t WiFiDrv::_mac[] = {0}; @@ -57,7 +59,6 @@ void WiFiDrv::wifiDriverInit() SpiDrv::begin(); } -// If ssid == NULL execute a wifi scan, otherwise try to connect to the network specified uint8_t WiFiDrv::wifiSetNetwork(char* ssid, uint8_t ssid_len) { WAIT_FOR_SLAVE_SELECT(); @@ -194,13 +195,12 @@ void WiFiDrv::getIpAddress(IPAddress& ip) { getNetworkData(_localIp, _subnetMask, _gatewayIp); ip = _localIp; - //memcpy(ip, _localIp, WL_IPV4_LENGTH); } - void WiFiDrv::getSubnetMask(IPAddress& ip) + void WiFiDrv::getSubnetMask(IPAddress& mask) { getNetworkData(_localIp, _subnetMask, _gatewayIp); - ip = _subnetMask; + mask = _subnetMask; } void WiFiDrv::getGatewayIP(IPAddress& ip) diff --git a/WiFi/utility/wifi_drv.h b/WiFi/utility/wifi_drv.h index 6a3e77dd4..a1a8a8383 100644 --- a/WiFi/utility/wifi_drv.h +++ b/WiFi/utility/wifi_drv.h @@ -5,9 +5,10 @@ #include "wifi_spi.h" #include "IPAddress.h" +// Key index length #define KEY_IDX_LEN 1 +// 5 secs of delay to have the connection established #define WL_DELAY_START_CONNECTION 5000 -#define WL_DELAY_RETRY_START_CONNECTION 1000 class WiFiDrv { @@ -25,44 +26,159 @@ private: static uint8_t _subnetMask[WL_IPV4_LENGTH]; static uint8_t _gatewayIp[WL_IPV4_LENGTH]; + /* + * Get network Data information + */ static void getNetworkData(uint8_t *ip, uint8_t *mask, uint8_t *gwip); public: + /* + * Driver initialization + */ static void wifiDriverInit(); + /* + * Set the desired network which the connection manager should try to + * connect to. + * + * The ssid of the desired network should be specified. + * + * param ssid: The ssid of the desired network. + * param ssid_len: Lenght of ssid string. + * return: WL_SUCCESS or WL_FAILURE + */ static uint8_t wifiSetNetwork(char* ssid, uint8_t ssid_len); + /* Start Wifi connection with passphrase + * the most secure supported mode will be automatically selected + * + * param ssid: Pointer to the SSID string. + * param ssid_len: Lenght of ssid string. + * param passphrase: Passphrase. Valid characters in a passphrase + * must be between ASCII 32-126 (decimal). + * param len: Lenght of passphrase string. + * return: WL_SUCCESS or WL_FAILURE + */ static uint8_t wifiSetPassphrase(char* ssid, uint8_t ssid_len, const char *passphrase, const uint8_t len); + /* Start Wifi connection with WEP encryption. + * Configure a key into the device. The key type (WEP-40, WEP-104) + * is determined by the size of the key (5 bytes for WEP-40, 13 bytes for WEP-104). + * + * param ssid: Pointer to the SSID string. + * param ssid_len: Lenght of ssid string. + * param key_idx: The key index to set. Valid values are 0-3. + * param key: Key input buffer. + * param len: Lenght of key string. + * return: WL_SUCCESS or WL_FAILURE + */ static uint8_t wifiSetKey(char* ssid, uint8_t ssid_len, uint8_t key_idx, const void *key, const uint8_t len); + /* + * Disconnect from the network + * + * return: WL_SUCCESS or WL_FAILURE + */ static uint8_t disconnect(); - + + /* + * Disconnect from the network + * + * return: one value of wl_status_t enum + */ static uint8_t getConnectionStatus(); + /* + * Get the interface MAC address. + * + * return: pointer to uint8_t array with length WL_MAC_ADDR_LENGTH + */ static uint8_t* getMacAddress(); + /* + * Get the interface IP address. + * + * return: copy the ip address value in IPAddress object + */ static void getIpAddress(IPAddress& ip); - static void getSubnetMask(IPAddress& ip); + /* + * Get the interface subnet mask address. + * + * return: copy the subnet mask address value in IPAddress object + */ + static void getSubnetMask(IPAddress& mask); + /* + * Get the gateway ip address. + * + * return: copy the gateway ip address value in IPAddress object + */ static void getGatewayIP(IPAddress& ip); + /* + * Return the current SSID associated with the network + * + * return: ssid string + */ static char* getCurrentSSID(); + /* + * Return the current BSSID associated with the network. + * It is the MAC address of the Access Point + * + * return: pointer to uint8_t array with length WL_MAC_ADDR_LENGTH + */ static uint8_t* getCurrentBSSID(); + /* + * Return the current RSSI /Received Signal Strength in dBm) + * associated with the network + * + * return: signed value + */ static int32_t getCurrentRSSI(); + /* + * Return the Encryption Type associated with the network + * + * return: one value of wl_enc_type enum + */ static uint8_t getCurrentEncryptionType(); + /* + * Start scan WiFi networks available + * + * return: Number of discovered networks + */ static uint8_t scanNetworks(); + /* + * Return the SSID discovered during the network scan. + * + * param networkItem: specify from which network item want to get the information + * + * return: ssid string of the specified item on the networks scanned list + */ static char* getSSIDNetoworks(uint8_t networkItem); + /* + * Return the RSSI of the networks discovered during the scanNetworks + * + * param networkItem: specify from which network item want to get the information + * + * return: signed value of RSSI of the specified item on the networks scanned list + */ static int32_t getRSSINetoworks(uint8_t networkItem); + /* + * Return the encryption type of the networks discovered during the scanNetworks + * + * param networkItem: specify from which network item want to get the information + * + * return: encryption type (enum wl_enc_type) of the specified item on the networks scanned list + */ static uint8_t getEncTypeNetowrks(uint8_t networkItem); };