Changes on the code

Dependencies:   BSP_B-L475E-IOT01

Committer:
ggaleote
Date:
Wed Mar 04 13:50:56 2020 +0000
Revision:
1:a7b38c2e10fc
Parent:
0:c61a93635433
Changes;

Who changed what in which revision?

UserRevisionLine numberNew 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>&copy; 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