hh

Dependencies:   DISCO_L475VG_IOT01A_wifi

Committer:
ascension2
Date:
Tue Aug 20 08:35:06 2019 +0000
Revision:
0:db42952db1a5
hh

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ascension2 0:db42952db1a5 1 #include "mbed.h"
ascension2 0:db42952db1a5 2 #include "wifi.h"
ascension2 0:db42952db1a5 3 #include "datacheck.h"
ascension2 0:db42952db1a5 4 /*------------------------------------------------------------------------------
ascension2 0:db42952db1a5 5 Hyperterminal settings: 115200 bauds, 8-bit data, no parity
ascension2 0:db42952db1a5 6
ascension2 0:db42952db1a5 7 This example
ascension2 0:db42952db1a5 8 - connects to a wifi network (SSID & PWD to set in mbed_app.json)
ascension2 0:db42952db1a5 9 - Connects to a TCP server (set the address in RemoteIP)
ascension2 0:db42952db1a5 10 - Sends "Hello" to the server when data is received
ascension2 0:db42952db1a5 11
ascension2 0:db42952db1a5 12 This example uses SPI3 ( PE_0 PC_10 PC_12 PC_11), wifi_wakeup pin (PB_13),
ascension2 0:db42952db1a5 13 wifi_dataready pin (PE_1), wifi reset pin (PE_8)
ascension2 0:db42952db1a5 14 ------------------------------------------------------------------------------*/
ascension2 0:db42952db1a5 15
ascension2 0:db42952db1a5 16 /* Private defines -----------------------------------------------------------*/
ascension2 0:db42952db1a5 17 #define WIFI_WRITE_TIMEOUT 10000
ascension2 0:db42952db1a5 18 #define WIFI_READ_TIMEOUT 10000
ascension2 0:db42952db1a5 19 #define CONNECTION_TRIAL_MAX 10
ascension2 0:db42952db1a5 20
ascension2 0:db42952db1a5 21 /* Private typedef------------------------------------------------------------*/
ascension2 0:db42952db1a5 22 /* Private macro -------------------------------------------------------------*/
ascension2 0:db42952db1a5 23 /* Private variables ---------------------------------------------------------*/
ascension2 0:db42952db1a5 24 Serial pc(SERIAL_TX, SERIAL_RX);
ascension2 0:db42952db1a5 25 uint8_t RemoteIP[] = {MBED_CONF_APP_SERVER_IP_1,MBED_CONF_APP_SERVER_IP_2,MBED_CONF_APP_SERVER_IP_3, MBED_CONF_APP_SERVER_IP_4};
ascension2 0:db42952db1a5 26 uint8_t RxData [500];
ascension2 0:db42952db1a5 27 char* modulename;
ascension2 0:db42952db1a5 28 uint8_t TxData[] = "STM32 : Hello!\n";
ascension2 0:db42952db1a5 29 uint16_t RxLen;
ascension2 0:db42952db1a5 30 uint8_t MAC_Addr[6];
ascension2 0:db42952db1a5 31 uint8_t IP_Addr[4];
ascension2 0:db42952db1a5 32
ascension2 0:db42952db1a5 33 void checkdata(uint8_t S[]);
ascension2 0:db42952db1a5 34 void update_state();
ascension2 0:db42952db1a5 35
ascension2 0:db42952db1a5 36 Ticker tick;
ascension2 0:db42952db1a5 37
ascension2 0:db42952db1a5 38 int wifi_connect()
ascension2 0:db42952db1a5 39 {
ascension2 0:db42952db1a5 40 int32_t Socket = -1;
ascension2 0:db42952db1a5 41 uint16_t Datalen;
ascension2 0:db42952db1a5 42 uint16_t Trials = CONNECTION_TRIAL_MAX;
ascension2 0:db42952db1a5 43
ascension2 0:db42952db1a5 44 pc.baud(115200);
ascension2 0:db42952db1a5 45
ascension2 0:db42952db1a5 46 printf("\n");
ascension2 0:db42952db1a5 47 printf("************************************************************\n");
ascension2 0:db42952db1a5 48 printf("*** STM32 IoT Discovery kit for STM32L475 MCU ***\n");
ascension2 0:db42952db1a5 49 printf("*** WIFI Module in TCP Client mode demonstration ***\n\n");
ascension2 0:db42952db1a5 50 printf("*** TCP Client Instructions :\n");
ascension2 0:db42952db1a5 51 printf("*** 1- Make sure your Phone is connected to the same network that\n");
ascension2 0:db42952db1a5 52 printf("*** you configured using the Configuration Access Point.\n");
ascension2 0:db42952db1a5 53 printf("*** 2- Create a server by using the android application TCP Server\n");
ascension2 0:db42952db1a5 54 printf("*** with port(8002).\n");
ascension2 0:db42952db1a5 55 printf("*** 3- Get the Network Name or IP Address of your phone from the step 2.\n\n");
ascension2 0:db42952db1a5 56 printf("************************************************************\n");
ascension2 0:db42952db1a5 57
ascension2 0:db42952db1a5 58 /*Initialize WIFI module */
ascension2 0:db42952db1a5 59 if(WIFI_Init() == WIFI_STATUS_OK) {
ascension2 0:db42952db1a5 60 printf("> WIFI Module Initialized.\n");
ascension2 0:db42952db1a5 61 if(WIFI_GetMAC_Address(MAC_Addr) == WIFI_STATUS_OK) {
ascension2 0:db42952db1a5 62 printf("> es-wifi module MAC Address : %X:%X:%X:%X:%X:%X\n",
ascension2 0:db42952db1a5 63 MAC_Addr[0],
ascension2 0:db42952db1a5 64 MAC_Addr[1],
ascension2 0:db42952db1a5 65 MAC_Addr[2],
ascension2 0:db42952db1a5 66 MAC_Addr[3],
ascension2 0:db42952db1a5 67 MAC_Addr[4],
ascension2 0:db42952db1a5 68 MAC_Addr[5]);
ascension2 0:db42952db1a5 69 } else {
ascension2 0:db42952db1a5 70 printf("> ERROR : CANNOT get MAC address\n");
ascension2 0:db42952db1a5 71 }
ascension2 0:db42952db1a5 72
ascension2 0:db42952db1a5 73 if( WIFI_Connect(MBED_CONF_APP_WIFI_SSID, MBED_CONF_APP_WIFI_PASSWORD, WIFI_ECN_WPA_PSK)== WIFI_STATUS_OK) {
ascension2 0:db42952db1a5 74
ascension2 0:db42952db1a5 75 printf("> es-wifi module connected \n");
ascension2 0:db42952db1a5 76 if(WIFI_GetIP_Address(IP_Addr) == WIFI_STATUS_OK) {
ascension2 0:db42952db1a5 77 printf("> es-wifi module got IP Address : %d.%d.%d.%d\n",
ascension2 0:db42952db1a5 78 IP_Addr[0],
ascension2 0:db42952db1a5 79 IP_Addr[1],
ascension2 0:db42952db1a5 80 IP_Addr[2],
ascension2 0:db42952db1a5 81 IP_Addr[3]);
ascension2 0:db42952db1a5 82
ascension2 0:db42952db1a5 83 printf("> Trying to connect to Server: %d.%d.%d.%d:8002 ...\n",
ascension2 0:db42952db1a5 84 RemoteIP[0],
ascension2 0:db42952db1a5 85 RemoteIP[1],
ascension2 0:db42952db1a5 86 RemoteIP[2],
ascension2 0:db42952db1a5 87 RemoteIP[3]);
ascension2 0:db42952db1a5 88
ascension2 0:db42952db1a5 89 while (Trials--){
ascension2 0:db42952db1a5 90 if( WIFI_OpenClientConnection(0, WIFI_TCP_PROTOCOL, "TCP_CLIENT", RemoteIP, 8002, 0) == WIFI_STATUS_OK){
ascension2 0:db42952db1a5 91 //if( WIFI_OpenClientConnection(0, WIFI_TCP_PROTOCOL, "TCP_CLIENT", RemoteIP, 80, 0) == WIFI_STATUS_OK){
ascension2 0:db42952db1a5 92 printf("> TCP Connection opened successfully.\n");
ascension2 0:db42952db1a5 93 Socket = 0;
ascension2 0:db42952db1a5 94 }
ascension2 0:db42952db1a5 95 }
ascension2 0:db42952db1a5 96 if(!Trials) {
ascension2 0:db42952db1a5 97 printf("> ERROR : Cannot open Connection\n");
ascension2 0:db42952db1a5 98 }
ascension2 0:db42952db1a5 99 } else {
ascension2 0:db42952db1a5 100 printf("> ERROR : es-wifi module CANNOT get IP address\n");
ascension2 0:db42952db1a5 101 }
ascension2 0:db42952db1a5 102 } else {
ascension2 0:db42952db1a5 103 printf("> ERROR : es-wifi module NOT connected\n");
ascension2 0:db42952db1a5 104 }
ascension2 0:db42952db1a5 105 } else {
ascension2 0:db42952db1a5 106 printf("> ERROR : WIFI Module cannot be initialized.\n");
ascension2 0:db42952db1a5 107 }
ascension2 0:db42952db1a5 108
ascension2 0:db42952db1a5 109 while(1){
ascension2 0:db42952db1a5 110 tick.attach(&update_state,5);
ascension2 0:db42952db1a5 111 if(Socket != -1) {
ascension2 0:db42952db1a5 112 if(WIFI_ReceiveData(Socket, RxData, sizeof(RxData), &Datalen, WIFI_READ_TIMEOUT) == WIFI_STATUS_OK){
ascension2 0:db42952db1a5 113 if(Datalen > 0) {
ascension2 0:db42952db1a5 114 //printf("%s \n",RxData);
ascension2 0:db42952db1a5 115 Data_Receive(RxData);
ascension2 0:db42952db1a5 116 if(WIFI_SendData(Socket, TxData, sizeof(TxData), &Datalen, WIFI_WRITE_TIMEOUT) != WIFI_STATUS_OK) {
ascension2 0:db42952db1a5 117 printf("> ERROR : Failed to send Data.\n");
ascension2 0:db42952db1a5 118 }
ascension2 0:db42952db1a5 119 }
ascension2 0:db42952db1a5 120 } else {
ascension2 0:db42952db1a5 121 printf("> ERROR : Failed to Receive Data.\n");
ascension2 0:db42952db1a5 122 }
ascension2 0:db42952db1a5 123 }
ascension2 0:db42952db1a5 124 }
ascension2 0:db42952db1a5 125 }
ascension2 0:db42952db1a5 126
ascension2 0:db42952db1a5 127
ascension2 0:db42952db1a5 128 int update_flag=0;
ascension2 0:db42952db1a5 129 void update_state()
ascension2 0:db42952db1a5 130 {
ascension2 0:db42952db1a5 131 update_flag++;
ascension2 0:db42952db1a5 132 printf("%d\n",update_flag);
ascension2 0:db42952db1a5 133 }