Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of DISCO_L475VG_IOT01A_wifi by
wifi.c@0:c61a93635433, 2017-08-17 (annotated)
- Committer:
- adustm
- Date:
- Thu Aug 17 15:26:02 2017 +0000
- Revision:
- 0:c61a93635433
- Child:
- 1:3743cb026b26
Wifi driver for ES_WIFI module of DISCO_L475VG_IOT1A platform; (ie Inventek ISM43362-M3G-L44M2)
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
adustm | 0:c61a93635433 | 1 | /** |
adustm | 0:c61a93635433 | 2 | ****************************************************************************** |
adustm | 0:c61a93635433 | 3 | * @file wifi.c |
adustm | 0:c61a93635433 | 4 | * @author MCD Application Team |
adustm | 0:c61a93635433 | 5 | * @version V1.8.0 |
adustm | 0:c61a93635433 | 6 | * @date 21-April-2017 |
adustm | 0:c61a93635433 | 7 | * @brief WIFI interface file. |
adustm | 0:c61a93635433 | 8 | ****************************************************************************** |
adustm | 0:c61a93635433 | 9 | * @attention |
adustm | 0:c61a93635433 | 10 | * |
adustm | 0:c61a93635433 | 11 | * <h2><center>© Copyright (c) 2017 STMicroelectronics International N.V. |
adustm | 0:c61a93635433 | 12 | * All rights reserved.</center></h2> |
adustm | 0:c61a93635433 | 13 | * |
adustm | 0:c61a93635433 | 14 | * Redistribution and use in source and binary forms, with or without |
adustm | 0:c61a93635433 | 15 | * modification, are permitted, provided that the following conditions are met: |
adustm | 0:c61a93635433 | 16 | * |
adustm | 0:c61a93635433 | 17 | * 1. Redistribution of source code must retain the above copyright notice, |
adustm | 0:c61a93635433 | 18 | * this list of conditions and the following disclaimer. |
adustm | 0:c61a93635433 | 19 | * 2. Redistributions in binary form must reproduce the above copyright notice, |
adustm | 0:c61a93635433 | 20 | * this list of conditions and the following disclaimer in the documentation |
adustm | 0:c61a93635433 | 21 | * and/or other materials provided with the distribution. |
adustm | 0:c61a93635433 | 22 | * 3. Neither the name of STMicroelectronics nor the names of other |
adustm | 0:c61a93635433 | 23 | * contributors to this software may be used to endorse or promote products |
adustm | 0:c61a93635433 | 24 | * derived from this software without specific written permission. |
adustm | 0:c61a93635433 | 25 | * 4. This software, including modifications and/or derivative works of this |
adustm | 0:c61a93635433 | 26 | * software, must execute solely and exclusively on microcontroller or |
adustm | 0:c61a93635433 | 27 | * microprocessor devices manufactured by or for STMicroelectronics. |
adustm | 0:c61a93635433 | 28 | * 5. Redistribution and use of this software other than as permitted under |
adustm | 0:c61a93635433 | 29 | * this license is void and will automatically terminate your rights under |
adustm | 0:c61a93635433 | 30 | * this license. |
adustm | 0:c61a93635433 | 31 | * |
adustm | 0:c61a93635433 | 32 | * THIS SOFTWARE IS PROVIDED BY STMICROELECTRONICS AND CONTRIBUTORS "AS IS" |
adustm | 0:c61a93635433 | 33 | * AND ANY EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING, BUT NOT |
adustm | 0:c61a93635433 | 34 | * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A |
adustm | 0:c61a93635433 | 35 | * PARTICULAR PURPOSE AND NON-INFRINGEMENT OF THIRD PARTY INTELLECTUAL PROPERTY |
adustm | 0:c61a93635433 | 36 | * RIGHTS ARE DISCLAIMED TO THE FULLEST EXTENT PERMITTED BY LAW. IN NO EVENT |
adustm | 0:c61a93635433 | 37 | * SHALL STMICROELECTRONICS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, |
adustm | 0:c61a93635433 | 38 | * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
adustm | 0:c61a93635433 | 39 | * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, |
adustm | 0:c61a93635433 | 40 | * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF |
adustm | 0:c61a93635433 | 41 | * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING |
adustm | 0:c61a93635433 | 42 | * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, |
adustm | 0:c61a93635433 | 43 | * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
adustm | 0:c61a93635433 | 44 | * |
adustm | 0:c61a93635433 | 45 | ****************************************************************************** |
adustm | 0:c61a93635433 | 46 | */ |
adustm | 0:c61a93635433 | 47 | /* Includes ------------------------------------------------------------------*/ |
adustm | 0:c61a93635433 | 48 | #include "wifi.h" |
adustm | 0:c61a93635433 | 49 | |
adustm | 0:c61a93635433 | 50 | /* Private define ------------------------------------------------------------*/ |
adustm | 0:c61a93635433 | 51 | /* Private variables ---------------------------------------------------------*/ |
adustm | 0:c61a93635433 | 52 | ES_WIFIObject_t EsWifiObj; |
adustm | 0:c61a93635433 | 53 | |
adustm | 0:c61a93635433 | 54 | /* Private functions ---------------------------------------------------------*/ |
adustm | 0:c61a93635433 | 55 | /** |
adustm | 0:c61a93635433 | 56 | * @brief Initialiaze the WIFI core |
adustm | 0:c61a93635433 | 57 | * @param None |
adustm | 0:c61a93635433 | 58 | * @retval Operation status |
adustm | 0:c61a93635433 | 59 | */ |
adustm | 0:c61a93635433 | 60 | WIFI_Status_t WIFI_Init(void) |
adustm | 0:c61a93635433 | 61 | { |
adustm | 0:c61a93635433 | 62 | WIFI_Status_t ret = WIFI_STATUS_ERROR; |
adustm | 0:c61a93635433 | 63 | |
adustm | 0:c61a93635433 | 64 | if(ES_WIFI_RegisterBusIO(&EsWifiObj, |
adustm | 0:c61a93635433 | 65 | SPI_WIFI_Init, |
adustm | 0:c61a93635433 | 66 | SPI_WIFI_DeInit, |
adustm | 0:c61a93635433 | 67 | SPI_WIFI_Delay, |
adustm | 0:c61a93635433 | 68 | SPI_WIFI_SendData, |
adustm | 0:c61a93635433 | 69 | SPI_WIFI_ReceiveData) == ES_WIFI_STATUS_OK) |
adustm | 0:c61a93635433 | 70 | { |
adustm | 0:c61a93635433 | 71 | |
adustm | 0:c61a93635433 | 72 | if(ES_WIFI_Init(&EsWifiObj) == ES_WIFI_STATUS_OK) |
adustm | 0:c61a93635433 | 73 | { |
adustm | 0:c61a93635433 | 74 | ret = WIFI_STATUS_OK; |
adustm | 0:c61a93635433 | 75 | } |
adustm | 0:c61a93635433 | 76 | } |
adustm | 0:c61a93635433 | 77 | return ret; |
adustm | 0:c61a93635433 | 78 | } |
adustm | 0:c61a93635433 | 79 | |
adustm | 0:c61a93635433 | 80 | /** |
adustm | 0:c61a93635433 | 81 | * @brief List a defined number of vailable access points |
adustm | 0:c61a93635433 | 82 | * @param APs : pointer to APs structure |
adustm | 0:c61a93635433 | 83 | * @param AP_MaxNbr : Max APs number to be listed |
adustm | 0:c61a93635433 | 84 | * @retval Operation status |
adustm | 0:c61a93635433 | 85 | */ |
adustm | 0:c61a93635433 | 86 | WIFI_Status_t WIFI_ListAccessPoints(WIFI_APs_t *APs, uint8_t AP_MaxNbr) |
adustm | 0:c61a93635433 | 87 | { |
adustm | 0:c61a93635433 | 88 | uint8_t APCount; |
adustm | 0:c61a93635433 | 89 | WIFI_Status_t ret = WIFI_STATUS_ERROR; |
adustm | 0:c61a93635433 | 90 | ES_WIFI_APs_t esWifiAPs; |
adustm | 0:c61a93635433 | 91 | |
adustm | 0:c61a93635433 | 92 | if(ES_WIFI_ListAccessPoints(&EsWifiObj, &esWifiAPs) == ES_WIFI_STATUS_OK) |
adustm | 0:c61a93635433 | 93 | { |
adustm | 0:c61a93635433 | 94 | if(esWifiAPs.nbr > 0) |
adustm | 0:c61a93635433 | 95 | { |
adustm | 0:c61a93635433 | 96 | APs->count = MIN(esWifiAPs.nbr, AP_MaxNbr); |
adustm | 0:c61a93635433 | 97 | for(APCount = 0; APCount < APs->count; APCount++) |
adustm | 0:c61a93635433 | 98 | { |
adustm | 0:c61a93635433 | 99 | APs->ap[APCount].Ecn = (WIFI_Ecn_t)esWifiAPs.AP[APCount].Security; |
adustm | 0:c61a93635433 | 100 | strncpy( (char *)APs->ap[APCount].SSID, (char *)esWifiAPs.AP[APCount].SSID, MIN (WIFI_MAX_SSID_NAME, WIFI_MAX_SSID_NAME)); |
adustm | 0:c61a93635433 | 101 | APs->ap[APCount].RSSI = esWifiAPs.AP[APCount].RSSI; |
adustm | 0:c61a93635433 | 102 | memcpy(APs->ap[APCount].MAC, esWifiAPs.AP[APCount].MAC, 6); |
adustm | 0:c61a93635433 | 103 | } |
adustm | 0:c61a93635433 | 104 | } |
adustm | 0:c61a93635433 | 105 | ret = WIFI_STATUS_OK; |
adustm | 0:c61a93635433 | 106 | } |
adustm | 0:c61a93635433 | 107 | return ret; |
adustm | 0:c61a93635433 | 108 | } |
adustm | 0:c61a93635433 | 109 | |
adustm | 0:c61a93635433 | 110 | /** |
adustm | 0:c61a93635433 | 111 | * @brief Join an Access Point |
adustm | 0:c61a93635433 | 112 | * @param SSID : SSID string |
adustm | 0:c61a93635433 | 113 | * @param Password : Password string |
adustm | 0:c61a93635433 | 114 | * @param ecn : Encryption type |
adustm | 0:c61a93635433 | 115 | * @param IP_Addr : Got IP Address |
adustm | 0:c61a93635433 | 116 | * @param IP_Mask : Network IP mask |
adustm | 0:c61a93635433 | 117 | * @param Gateway_Addr : Gateway IP address |
adustm | 0:c61a93635433 | 118 | * @param MAC : pointer to MAC Address |
adustm | 0:c61a93635433 | 119 | * @retval Operation status |
adustm | 0:c61a93635433 | 120 | */ |
adustm | 0:c61a93635433 | 121 | WIFI_Status_t WIFI_Connect( |
adustm | 0:c61a93635433 | 122 | const char* SSID, |
adustm | 0:c61a93635433 | 123 | const char* Password, |
adustm | 0:c61a93635433 | 124 | WIFI_Ecn_t ecn) |
adustm | 0:c61a93635433 | 125 | { |
adustm | 0:c61a93635433 | 126 | WIFI_Status_t ret = WIFI_STATUS_ERROR; |
adustm | 0:c61a93635433 | 127 | |
adustm | 0:c61a93635433 | 128 | if(ES_WIFI_Connect(&EsWifiObj, SSID, Password, (ES_WIFI_SecurityType_t) ecn) == ES_WIFI_STATUS_OK) |
adustm | 0:c61a93635433 | 129 | { |
adustm | 0:c61a93635433 | 130 | if(ES_WIFI_GetNetworkSettings(&EsWifiObj) == ES_WIFI_STATUS_OK) |
adustm | 0:c61a93635433 | 131 | { |
adustm | 0:c61a93635433 | 132 | ret = WIFI_STATUS_OK; |
adustm | 0:c61a93635433 | 133 | } |
adustm | 0:c61a93635433 | 134 | |
adustm | 0:c61a93635433 | 135 | } |
adustm | 0:c61a93635433 | 136 | return ret; |
adustm | 0:c61a93635433 | 137 | } |
adustm | 0:c61a93635433 | 138 | |
adustm | 0:c61a93635433 | 139 | /** |
adustm | 0:c61a93635433 | 140 | * @brief This function retrieves the WiFi interface's MAC address. |
adustm | 0:c61a93635433 | 141 | * @retval Operation Status. |
adustm | 0:c61a93635433 | 142 | */ |
adustm | 0:c61a93635433 | 143 | WIFI_Status_t WIFI_GetMAC_Address(uint8_t *mac) |
adustm | 0:c61a93635433 | 144 | { |
adustm | 0:c61a93635433 | 145 | WIFI_Status_t ret = WIFI_STATUS_ERROR; |
adustm | 0:c61a93635433 | 146 | |
adustm | 0:c61a93635433 | 147 | if(ES_WIFI_GetMACAddress(&EsWifiObj, mac) == ES_WIFI_STATUS_OK) |
adustm | 0:c61a93635433 | 148 | { |
adustm | 0:c61a93635433 | 149 | ret = WIFI_STATUS_OK; |
adustm | 0:c61a93635433 | 150 | } |
adustm | 0:c61a93635433 | 151 | return ret; |
adustm | 0:c61a93635433 | 152 | } |
adustm | 0:c61a93635433 | 153 | |
adustm | 0:c61a93635433 | 154 | /** |
adustm | 0:c61a93635433 | 155 | * @brief This function retrieves the WiFi interface's IP address. |
adustm | 0:c61a93635433 | 156 | * @retval Operation Status. |
adustm | 0:c61a93635433 | 157 | */ |
adustm | 0:c61a93635433 | 158 | WIFI_Status_t WIFI_GetIP_Address (uint8_t *ipaddr) |
adustm | 0:c61a93635433 | 159 | { |
adustm | 0:c61a93635433 | 160 | WIFI_Status_t ret = WIFI_STATUS_ERROR; |
adustm | 0:c61a93635433 | 161 | |
adustm | 0:c61a93635433 | 162 | if(EsWifiObj.NetSettings.IsConnected) |
adustm | 0:c61a93635433 | 163 | { |
adustm | 0:c61a93635433 | 164 | memcpy(ipaddr, EsWifiObj.NetSettings.IP_Addr, 4); |
adustm | 0:c61a93635433 | 165 | ret = WIFI_STATUS_OK; |
adustm | 0:c61a93635433 | 166 | } |
adustm | 0:c61a93635433 | 167 | return ret; |
adustm | 0:c61a93635433 | 168 | } |
adustm | 0:c61a93635433 | 169 | |
adustm | 0:c61a93635433 | 170 | /** |
adustm | 0:c61a93635433 | 171 | * @brief Disconnect from a network |
adustm | 0:c61a93635433 | 172 | * @param None |
adustm | 0:c61a93635433 | 173 | * @retval Operation status |
adustm | 0:c61a93635433 | 174 | */ |
adustm | 0:c61a93635433 | 175 | WIFI_Status_t WIFI_Disconnect(void) |
adustm | 0:c61a93635433 | 176 | { |
adustm | 0:c61a93635433 | 177 | WIFI_Status_t ret = WIFI_STATUS_ERROR; |
adustm | 0:c61a93635433 | 178 | if( ES_WIFI_Disconnect(&EsWifiObj)== ES_WIFI_STATUS_OK) |
adustm | 0:c61a93635433 | 179 | { |
adustm | 0:c61a93635433 | 180 | ret = WIFI_STATUS_OK; |
adustm | 0:c61a93635433 | 181 | } |
adustm | 0:c61a93635433 | 182 | |
adustm | 0:c61a93635433 | 183 | return ret; |
adustm | 0:c61a93635433 | 184 | } |
adustm | 0:c61a93635433 | 185 | |
adustm | 0:c61a93635433 | 186 | /** |
adustm | 0:c61a93635433 | 187 | * @brief Configure an Access Point |
adustm | 0:c61a93635433 | 188 | |
adustm | 0:c61a93635433 | 189 | * @param ssid : SSID string |
adustm | 0:c61a93635433 | 190 | * @param pass : Password string |
adustm | 0:c61a93635433 | 191 | * @param ecn : Encryption type |
adustm | 0:c61a93635433 | 192 | * @param channel : channel number |
adustm | 0:c61a93635433 | 193 | * @param max_conn : Max allowed connections |
adustm | 0:c61a93635433 | 194 | * @retval Operation status |
adustm | 0:c61a93635433 | 195 | */ |
adustm | 0:c61a93635433 | 196 | WIFI_Status_t WIFI_ConfigureAP(uint8_t *ssid, uint8_t *pass, WIFI_Ecn_t ecn, uint8_t channel, uint8_t max_conn) |
adustm | 0:c61a93635433 | 197 | { |
adustm | 0:c61a93635433 | 198 | WIFI_Status_t ret = WIFI_STATUS_ERROR; |
adustm | 0:c61a93635433 | 199 | ES_WIFI_APConfig_t ApConfig; |
adustm | 0:c61a93635433 | 200 | |
adustm | 0:c61a93635433 | 201 | strncpy((char*)ApConfig.SSID, (char*)ssid, ES_WIFI_MAX_SSID_NAME_SIZE); |
adustm | 0:c61a93635433 | 202 | strncpy((char*)ApConfig.Pass, (char*)pass, ES_WIFI_MAX_PSWD_NAME_SIZE); |
adustm | 0:c61a93635433 | 203 | ApConfig.Channel = channel; |
adustm | 0:c61a93635433 | 204 | ApConfig.MaxConnections = WIFI_MAX_CONNECTED_STATIONS; |
adustm | 0:c61a93635433 | 205 | ApConfig.Security = (ES_WIFI_SecurityType_t)ecn; |
adustm | 0:c61a93635433 | 206 | |
adustm | 0:c61a93635433 | 207 | if(ES_WIFI_ActivateAP(&EsWifiObj, &ApConfig) == ES_WIFI_STATUS_OK) |
adustm | 0:c61a93635433 | 208 | { |
adustm | 0:c61a93635433 | 209 | ret = WIFI_STATUS_OK; |
adustm | 0:c61a93635433 | 210 | } |
adustm | 0:c61a93635433 | 211 | return ret; |
adustm | 0:c61a93635433 | 212 | } |
adustm | 0:c61a93635433 | 213 | |
adustm | 0:c61a93635433 | 214 | /** |
adustm | 0:c61a93635433 | 215 | * @brief Handle the background events of the wifi module |
adustm | 0:c61a93635433 | 216 | |
adustm | 0:c61a93635433 | 217 | * @retval None |
adustm | 0:c61a93635433 | 218 | */ |
adustm | 0:c61a93635433 | 219 | WIFI_Status_t WIFI_HandleAPEvents(WIFI_APSettings_t *setting) |
adustm | 0:c61a93635433 | 220 | { |
adustm | 0:c61a93635433 | 221 | WIFI_Status_t ret = WIFI_STATUS_OK; |
adustm | 0:c61a93635433 | 222 | ES_WIFI_APState_t State; |
adustm | 0:c61a93635433 | 223 | |
adustm | 0:c61a93635433 | 224 | State= ES_WIFI_WaitAPStateChange(&EsWifiObj); |
adustm | 0:c61a93635433 | 225 | |
adustm | 0:c61a93635433 | 226 | switch (State) |
adustm | 0:c61a93635433 | 227 | { |
adustm | 0:c61a93635433 | 228 | case ES_WIFI_AP_ASSIGNED: |
adustm | 0:c61a93635433 | 229 | memcpy(setting->IP_Addr, EsWifiObj.APSettings.IP_Addr, 4); |
adustm | 0:c61a93635433 | 230 | memcpy(setting->MAC_Addr, EsWifiObj.APSettings.MAC_Addr, 6); |
adustm | 0:c61a93635433 | 231 | ret = WIFI_STATUS_ASSIGNED; |
adustm | 0:c61a93635433 | 232 | break; |
adustm | 0:c61a93635433 | 233 | |
adustm | 0:c61a93635433 | 234 | case ES_WIFI_AP_JOINED: |
adustm | 0:c61a93635433 | 235 | strncpy((char *)setting->SSID, (char *)EsWifiObj.APSettings.SSID, WIFI_MAX_SSID_NAME); |
adustm | 0:c61a93635433 | 236 | memcpy(setting->IP_Addr, EsWifiObj.APSettings.IP_Addr, 4); |
adustm | 0:c61a93635433 | 237 | ret = WIFI_STATUS_JOINED; |
adustm | 0:c61a93635433 | 238 | break; |
adustm | 0:c61a93635433 | 239 | |
adustm | 0:c61a93635433 | 240 | case ES_WIFI_AP_ERROR: |
adustm | 0:c61a93635433 | 241 | ret = WIFI_STATUS_ERROR; |
adustm | 0:c61a93635433 | 242 | break; |
adustm | 0:c61a93635433 | 243 | |
adustm | 0:c61a93635433 | 244 | default: |
adustm | 0:c61a93635433 | 245 | break; |
adustm | 0:c61a93635433 | 246 | } |
adustm | 0:c61a93635433 | 247 | |
adustm | 0:c61a93635433 | 248 | return ret; |
adustm | 0:c61a93635433 | 249 | } |
adustm | 0:c61a93635433 | 250 | |
adustm | 0:c61a93635433 | 251 | /** |
adustm | 0:c61a93635433 | 252 | * @brief Ping an IP address in the network |
adustm | 0:c61a93635433 | 253 | * @param ipaddr : array of the IP address |
adustm | 0:c61a93635433 | 254 | * @retval Operation status |
adustm | 0:c61a93635433 | 255 | */ |
adustm | 0:c61a93635433 | 256 | WIFI_Status_t WIFI_Ping(uint8_t* ipaddr, uint16_t count, uint16_t interval_ms) |
adustm | 0:c61a93635433 | 257 | { |
adustm | 0:c61a93635433 | 258 | WIFI_Status_t ret = WIFI_STATUS_ERROR; |
adustm | 0:c61a93635433 | 259 | |
adustm | 0:c61a93635433 | 260 | if(ES_WIFI_Ping(&EsWifiObj, ipaddr, count, interval_ms) == ES_WIFI_STATUS_OK) |
adustm | 0:c61a93635433 | 261 | { |
adustm | 0:c61a93635433 | 262 | ret = WIFI_STATUS_OK; |
adustm | 0:c61a93635433 | 263 | } |
adustm | 0:c61a93635433 | 264 | return ret; |
adustm | 0:c61a93635433 | 265 | } |
adustm | 0:c61a93635433 | 266 | |
adustm | 0:c61a93635433 | 267 | /** |
adustm | 0:c61a93635433 | 268 | * @brief Get IP address from URL using DNS |
adustm | 0:c61a93635433 | 269 | * @param location : Host URL |
adustm | 0:c61a93635433 | 270 | * @param ipaddr : array of the IP address |
adustm | 0:c61a93635433 | 271 | * @retval Operation status |
adustm | 0:c61a93635433 | 272 | */ |
adustm | 0:c61a93635433 | 273 | WIFI_Status_t WIFI_GetHostAddress( char* location, uint8_t* ipaddr) |
adustm | 0:c61a93635433 | 274 | { |
adustm | 0:c61a93635433 | 275 | WIFI_Status_t ret = WIFI_STATUS_ERROR; |
adustm | 0:c61a93635433 | 276 | |
adustm | 0:c61a93635433 | 277 | if (ES_WIFI_DNS_LookUp(&EsWifiObj, location, ipaddr) == ES_WIFI_STATUS_OK) |
adustm | 0:c61a93635433 | 278 | { |
adustm | 0:c61a93635433 | 279 | return WIFI_STATUS_OK; |
adustm | 0:c61a93635433 | 280 | } |
adustm | 0:c61a93635433 | 281 | |
adustm | 0:c61a93635433 | 282 | return ret; |
adustm | 0:c61a93635433 | 283 | } |
adustm | 0:c61a93635433 | 284 | /** |
adustm | 0:c61a93635433 | 285 | * @brief Configure and start a client connection |
adustm | 0:c61a93635433 | 286 | * @param type : Connection type TCP/UDP |
adustm | 0:c61a93635433 | 287 | * @param name : name of the connection |
adustm | 0:c61a93635433 | 288 | * @param ipaddr : Client IP address |
adustm | 0:c61a93635433 | 289 | * @param port : Remote port |
adustm | 0:c61a93635433 | 290 | * @param local_port : Local port |
adustm | 0:c61a93635433 | 291 | * @retval Operation status |
adustm | 0:c61a93635433 | 292 | */ |
adustm | 0:c61a93635433 | 293 | WIFI_Status_t WIFI_OpenClientConnection(uint32_t socket, WIFI_Protocol_t type, const char* name, uint8_t* ipaddr, uint16_t port, uint16_t local_port) |
adustm | 0:c61a93635433 | 294 | { |
adustm | 0:c61a93635433 | 295 | WIFI_Status_t ret = WIFI_STATUS_ERROR; |
adustm | 0:c61a93635433 | 296 | ES_WIFI_Conn_t conn; |
adustm | 0:c61a93635433 | 297 | |
adustm | 0:c61a93635433 | 298 | conn.Number = socket; |
adustm | 0:c61a93635433 | 299 | conn.RemotePort = port; |
adustm | 0:c61a93635433 | 300 | conn.LocalPort = local_port; |
adustm | 0:c61a93635433 | 301 | conn.Type = (type == WIFI_TCP_PROTOCOL)? ES_WIFI_TCP_CONNECTION : ES_WIFI_UDP_CONNECTION; |
adustm | 0:c61a93635433 | 302 | conn.RemoteIP[0] = ipaddr[0]; |
adustm | 0:c61a93635433 | 303 | conn.RemoteIP[1] = ipaddr[1]; |
adustm | 0:c61a93635433 | 304 | conn.RemoteIP[2] = ipaddr[2]; |
adustm | 0:c61a93635433 | 305 | conn.RemoteIP[3] = ipaddr[3]; |
adustm | 0:c61a93635433 | 306 | if(ES_WIFI_StartClientConnection(&EsWifiObj, &conn)== ES_WIFI_STATUS_OK) |
adustm | 0:c61a93635433 | 307 | { |
adustm | 0:c61a93635433 | 308 | ret = WIFI_STATUS_OK; |
adustm | 0:c61a93635433 | 309 | } |
adustm | 0:c61a93635433 | 310 | return ret; |
adustm | 0:c61a93635433 | 311 | } |
adustm | 0:c61a93635433 | 312 | |
adustm | 0:c61a93635433 | 313 | /** |
adustm | 0:c61a93635433 | 314 | * @brief Close client connection |
adustm | 0:c61a93635433 | 315 | * @param type : Connection type TCP/UDP |
adustm | 0:c61a93635433 | 316 | * @param name : name of the connection |
adustm | 0:c61a93635433 | 317 | * @param location : Client address |
adustm | 0:c61a93635433 | 318 | * @param port : Remote port |
adustm | 0:c61a93635433 | 319 | * @param local_port : Local port |
adustm | 0:c61a93635433 | 320 | * @retval Operation status |
adustm | 0:c61a93635433 | 321 | */ |
adustm | 0:c61a93635433 | 322 | WIFI_Status_t WIFI_CloseClientConnection(uint32_t socket) |
adustm | 0:c61a93635433 | 323 | { |
adustm | 0:c61a93635433 | 324 | WIFI_Status_t ret = WIFI_STATUS_ERROR; |
adustm | 0:c61a93635433 | 325 | ES_WIFI_Conn_t conn; |
adustm | 0:c61a93635433 | 326 | conn.Number = socket; |
adustm | 0:c61a93635433 | 327 | |
adustm | 0:c61a93635433 | 328 | if(ES_WIFI_StopClientConnection(&EsWifiObj, &conn)== ES_WIFI_STATUS_OK) |
adustm | 0:c61a93635433 | 329 | { |
adustm | 0:c61a93635433 | 330 | ret = WIFI_STATUS_OK; |
adustm | 0:c61a93635433 | 331 | } |
adustm | 0:c61a93635433 | 332 | return ret; |
adustm | 0:c61a93635433 | 333 | } |
adustm | 0:c61a93635433 | 334 | |
adustm | 0:c61a93635433 | 335 | /** |
adustm | 0:c61a93635433 | 336 | * @brief Configure and start a Server |
adustm | 0:c61a93635433 | 337 | * @param type : Connection type TCP/UDP |
adustm | 0:c61a93635433 | 338 | * @param name : name of the connection |
adustm | 0:c61a93635433 | 339 | * @param port : Remote port |
adustm | 0:c61a93635433 | 340 | * @retval Operation status |
adustm | 0:c61a93635433 | 341 | */ |
adustm | 0:c61a93635433 | 342 | WIFI_Status_t WIFI_StartServer(uint32_t socket, WIFI_Protocol_t protocol, const char* name, uint16_t port) |
adustm | 0:c61a93635433 | 343 | { |
adustm | 0:c61a93635433 | 344 | WIFI_Status_t ret = WIFI_STATUS_ERROR; |
adustm | 0:c61a93635433 | 345 | ES_WIFI_Conn_t conn; |
adustm | 0:c61a93635433 | 346 | conn.Number = socket; |
adustm | 0:c61a93635433 | 347 | conn.LocalPort = port; |
adustm | 0:c61a93635433 | 348 | conn.Type = (protocol == WIFI_TCP_PROTOCOL)? ES_WIFI_TCP_CONNECTION : ES_WIFI_UDP_CONNECTION; |
adustm | 0:c61a93635433 | 349 | if(ES_WIFI_StartServerSingleConn(&EsWifiObj, &conn)== ES_WIFI_STATUS_OK) |
adustm | 0:c61a93635433 | 350 | { |
adustm | 0:c61a93635433 | 351 | ret = WIFI_STATUS_OK; |
adustm | 0:c61a93635433 | 352 | } |
adustm | 0:c61a93635433 | 353 | return ret; |
adustm | 0:c61a93635433 | 354 | } |
adustm | 0:c61a93635433 | 355 | |
adustm | 0:c61a93635433 | 356 | /** |
adustm | 0:c61a93635433 | 357 | * @brief Stop a server |
adustm | 0:c61a93635433 | 358 | * @retval Operation status |
adustm | 0:c61a93635433 | 359 | */ |
adustm | 0:c61a93635433 | 360 | WIFI_Status_t WIFI_StopServer(uint32_t socket) |
adustm | 0:c61a93635433 | 361 | { |
adustm | 0:c61a93635433 | 362 | WIFI_Status_t ret = WIFI_STATUS_ERROR; |
adustm | 0:c61a93635433 | 363 | |
adustm | 0:c61a93635433 | 364 | if(ES_WIFI_StopServerSingleConn(&EsWifiObj)== ES_WIFI_STATUS_OK) |
adustm | 0:c61a93635433 | 365 | { |
adustm | 0:c61a93635433 | 366 | ret = WIFI_STATUS_OK; |
adustm | 0:c61a93635433 | 367 | } |
adustm | 0:c61a93635433 | 368 | return ret; |
adustm | 0:c61a93635433 | 369 | } |
adustm | 0:c61a93635433 | 370 | /** |
adustm | 0:c61a93635433 | 371 | * @brief Send Data on a socket |
adustm | 0:c61a93635433 | 372 | * @param pdata : pointer to data to be sent |
adustm | 0:c61a93635433 | 373 | * @param len : length of data to be sent |
adustm | 0:c61a93635433 | 374 | * @retval Operation status |
adustm | 0:c61a93635433 | 375 | */ |
adustm | 0:c61a93635433 | 376 | WIFI_Status_t WIFI_SendData(uint8_t socket, uint8_t *pdata, uint16_t Reqlen, uint16_t *SentDatalen, uint32_t Timeout) |
adustm | 0:c61a93635433 | 377 | { |
adustm | 0:c61a93635433 | 378 | WIFI_Status_t ret = WIFI_STATUS_ERROR; |
adustm | 0:c61a93635433 | 379 | |
adustm | 0:c61a93635433 | 380 | if(ES_WIFI_SendData(&EsWifiObj, socket, pdata, Reqlen, SentDatalen, Timeout) == ES_WIFI_STATUS_OK) |
adustm | 0:c61a93635433 | 381 | { |
adustm | 0:c61a93635433 | 382 | ret = WIFI_STATUS_OK; |
adustm | 0:c61a93635433 | 383 | } |
adustm | 0:c61a93635433 | 384 | |
adustm | 0:c61a93635433 | 385 | return ret; |
adustm | 0:c61a93635433 | 386 | } |
adustm | 0:c61a93635433 | 387 | |
adustm | 0:c61a93635433 | 388 | /** |
adustm | 0:c61a93635433 | 389 | * @brief Receive Data from a socket |
adustm | 0:c61a93635433 | 390 | * @param pdata : pointer to Rx buffer |
adustm | 0:c61a93635433 | 391 | * @param *len : pointer to length of data |
adustm | 0:c61a93635433 | 392 | * @retval Operation status |
adustm | 0:c61a93635433 | 393 | */ |
adustm | 0:c61a93635433 | 394 | WIFI_Status_t WIFI_ReceiveData(uint8_t socket, uint8_t *pdata, uint16_t Reqlen, uint16_t *RcvDatalen, uint32_t Timeout) |
adustm | 0:c61a93635433 | 395 | { |
adustm | 0:c61a93635433 | 396 | WIFI_Status_t ret = WIFI_STATUS_ERROR; |
adustm | 0:c61a93635433 | 397 | |
adustm | 0:c61a93635433 | 398 | if(ES_WIFI_ReceiveData(&EsWifiObj, socket, pdata, Reqlen, RcvDatalen, Timeout) == ES_WIFI_STATUS_OK) |
adustm | 0:c61a93635433 | 399 | { |
adustm | 0:c61a93635433 | 400 | ret = WIFI_STATUS_OK; |
adustm | 0:c61a93635433 | 401 | } |
adustm | 0:c61a93635433 | 402 | return ret; |
adustm | 0:c61a93635433 | 403 | } |
adustm | 0:c61a93635433 | 404 | |
adustm | 0:c61a93635433 | 405 | /** |
adustm | 0:c61a93635433 | 406 | * @brief Customize module data |
adustm | 0:c61a93635433 | 407 | * @param name : MFC name |
adustm | 0:c61a93635433 | 408 | * @param Mac : Mac Address |
adustm | 0:c61a93635433 | 409 | * @retval Operation status |
adustm | 0:c61a93635433 | 410 | */ |
adustm | 0:c61a93635433 | 411 | WIFI_Status_t WIFI_SetOEMProperties(const char *name, uint8_t *Mac) |
adustm | 0:c61a93635433 | 412 | { |
adustm | 0:c61a93635433 | 413 | WIFI_Status_t ret = WIFI_STATUS_ERROR; |
adustm | 0:c61a93635433 | 414 | |
adustm | 0:c61a93635433 | 415 | if(ES_WIFI_SetProductName(&EsWifiObj, (uint8_t *)name) == ES_WIFI_STATUS_OK) |
adustm | 0:c61a93635433 | 416 | { |
adustm | 0:c61a93635433 | 417 | if(ES_WIFI_SetMACAddress(&EsWifiObj, Mac) == ES_WIFI_STATUS_OK) |
adustm | 0:c61a93635433 | 418 | { |
adustm | 0:c61a93635433 | 419 | ret = WIFI_STATUS_OK; |
adustm | 0:c61a93635433 | 420 | } |
adustm | 0:c61a93635433 | 421 | } |
adustm | 0:c61a93635433 | 422 | return ret; |
adustm | 0:c61a93635433 | 423 | } |
adustm | 0:c61a93635433 | 424 | |
adustm | 0:c61a93635433 | 425 | /** |
adustm | 0:c61a93635433 | 426 | * @brief Reset the WIFI module |
adustm | 0:c61a93635433 | 427 | * @retval Operation status |
adustm | 0:c61a93635433 | 428 | */ |
adustm | 0:c61a93635433 | 429 | WIFI_Status_t WIFI_ResetModule(void) |
adustm | 0:c61a93635433 | 430 | { |
adustm | 0:c61a93635433 | 431 | WIFI_Status_t ret = WIFI_STATUS_ERROR; |
adustm | 0:c61a93635433 | 432 | |
adustm | 0:c61a93635433 | 433 | if(ES_WIFI_ResetModule(&EsWifiObj) == ES_WIFI_STATUS_OK) |
adustm | 0:c61a93635433 | 434 | { |
adustm | 0:c61a93635433 | 435 | ret = WIFI_STATUS_OK; |
adustm | 0:c61a93635433 | 436 | } |
adustm | 0:c61a93635433 | 437 | return ret; |
adustm | 0:c61a93635433 | 438 | } |
adustm | 0:c61a93635433 | 439 | |
adustm | 0:c61a93635433 | 440 | /** |
adustm | 0:c61a93635433 | 441 | * @brief Restore module default configuration |
adustm | 0:c61a93635433 | 442 | * @retval Operation status |
adustm | 0:c61a93635433 | 443 | */ |
adustm | 0:c61a93635433 | 444 | WIFI_Status_t WIFI_SetModuleDefault(void) |
adustm | 0:c61a93635433 | 445 | { |
adustm | 0:c61a93635433 | 446 | WIFI_Status_t ret = WIFI_STATUS_ERROR; |
adustm | 0:c61a93635433 | 447 | |
adustm | 0:c61a93635433 | 448 | if(ES_WIFI_ResetToFactoryDefault(&EsWifiObj) == ES_WIFI_STATUS_OK) |
adustm | 0:c61a93635433 | 449 | { |
adustm | 0:c61a93635433 | 450 | ret = WIFI_STATUS_OK; |
adustm | 0:c61a93635433 | 451 | } |
adustm | 0:c61a93635433 | 452 | return ret; |
adustm | 0:c61a93635433 | 453 | } |
adustm | 0:c61a93635433 | 454 | |
adustm | 0:c61a93635433 | 455 | |
adustm | 0:c61a93635433 | 456 | /** |
adustm | 0:c61a93635433 | 457 | * @brief Update module firmware |
adustm | 0:c61a93635433 | 458 | * @param location : Binary Location IP address |
adustm | 0:c61a93635433 | 459 | * @retval Operation status |
adustm | 0:c61a93635433 | 460 | */ |
adustm | 0:c61a93635433 | 461 | WIFI_Status_t WIFI_ModuleFirmwareUpdate(const char *location) |
adustm | 0:c61a93635433 | 462 | { |
adustm | 0:c61a93635433 | 463 | return WIFI_STATUS_NOT_SUPPORTED; |
adustm | 0:c61a93635433 | 464 | } |
adustm | 0:c61a93635433 | 465 | |
adustm | 0:c61a93635433 | 466 | /** |
adustm | 0:c61a93635433 | 467 | * @brief Return Module firmware revision |
adustm | 0:c61a93635433 | 468 | * @param rev : revision string |
adustm | 0:c61a93635433 | 469 | * @retval Operation status |
adustm | 0:c61a93635433 | 470 | */ |
adustm | 0:c61a93635433 | 471 | WIFI_Status_t WIFI_GetModuleFwRevision(char *rev) |
adustm | 0:c61a93635433 | 472 | { |
adustm | 0:c61a93635433 | 473 | WIFI_Status_t ret = WIFI_STATUS_ERROR; |
adustm | 0:c61a93635433 | 474 | |
adustm | 0:c61a93635433 | 475 | if(EsWifiObj.FW_Rev != NULL) |
adustm | 0:c61a93635433 | 476 | { |
adustm | 0:c61a93635433 | 477 | strncpy(rev, (char *)EsWifiObj.FW_Rev, ES_WIFI_FW_REV_SIZE); |
adustm | 0:c61a93635433 | 478 | ret = WIFI_STATUS_OK; |
adustm | 0:c61a93635433 | 479 | } |
adustm | 0:c61a93635433 | 480 | return ret; |
adustm | 0:c61a93635433 | 481 | } |
adustm | 0:c61a93635433 | 482 | |
adustm | 0:c61a93635433 | 483 | /** |
adustm | 0:c61a93635433 | 484 | * @brief Return Module ID |
adustm | 0:c61a93635433 | 485 | * @param Info : Module ID string |
adustm | 0:c61a93635433 | 486 | * @retval Operation status |
adustm | 0:c61a93635433 | 487 | */ |
adustm | 0:c61a93635433 | 488 | WIFI_Status_t WIFI_GetModuleID(char *Id) |
adustm | 0:c61a93635433 | 489 | { |
adustm | 0:c61a93635433 | 490 | WIFI_Status_t ret = WIFI_STATUS_ERROR; |
adustm | 0:c61a93635433 | 491 | |
adustm | 0:c61a93635433 | 492 | if(EsWifiObj.Product_ID != NULL) |
adustm | 0:c61a93635433 | 493 | { |
adustm | 0:c61a93635433 | 494 | strncpy(Id, (char *)EsWifiObj.Product_ID, ES_WIFI_PRODUCT_ID_SIZE); |
adustm | 0:c61a93635433 | 495 | ret = WIFI_STATUS_OK; |
adustm | 0:c61a93635433 | 496 | } |
adustm | 0:c61a93635433 | 497 | return ret; |
adustm | 0:c61a93635433 | 498 | } |
adustm | 0:c61a93635433 | 499 | |
adustm | 0:c61a93635433 | 500 | /** |
adustm | 0:c61a93635433 | 501 | * @brief Return Module Name |
adustm | 0:c61a93635433 | 502 | * @param Info : Module Name string |
adustm | 0:c61a93635433 | 503 | * @retval Operation status |
adustm | 0:c61a93635433 | 504 | */ |
adustm | 0:c61a93635433 | 505 | WIFI_Status_t WIFI_GetModuleName(char *ModuleName) |
adustm | 0:c61a93635433 | 506 | { |
adustm | 0:c61a93635433 | 507 | WIFI_Status_t ret = WIFI_STATUS_ERROR; |
adustm | 0:c61a93635433 | 508 | |
adustm | 0:c61a93635433 | 509 | if(EsWifiObj.Product_Name != NULL) |
adustm | 0:c61a93635433 | 510 | { |
adustm | 0:c61a93635433 | 511 | strncpy(ModuleName, (char *)EsWifiObj.Product_Name, ES_WIFI_PRODUCT_NAME_SIZE); |
adustm | 0:c61a93635433 | 512 | ret = WIFI_STATUS_OK; |
adustm | 0:c61a93635433 | 513 | } |
adustm | 0:c61a93635433 | 514 | return ret; |
adustm | 0:c61a93635433 | 515 | } |
adustm | 0:c61a93635433 | 516 | /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ |
adustm | 0:c61a93635433 | 517 |