https://www.youtube.com/watch?v=FnNo10FYSTE
Dependencies: DISCO_L475VG_IOT01A_wifi
main.cpp@0:d4bf65e1d0d7, 2019-11-20 (annotated)
- Committer:
- hexfactory
- Date:
- Wed Nov 20 15:22:41 2019 +0000
- Revision:
- 0:d4bf65e1d0d7
add WOL-WIFI project
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
hexfactory | 0:d4bf65e1d0d7 | 1 | #include "mbed.h" |
hexfactory | 0:d4bf65e1d0d7 | 2 | #include "wifi.h" |
hexfactory | 0:d4bf65e1d0d7 | 3 | /*------------------------------------------------------------------------------ |
hexfactory | 0:d4bf65e1d0d7 | 4 | Hyperterminal settings: 115200 bauds, 8-bit data, no parity |
hexfactory | 0:d4bf65e1d0d7 | 5 | |
hexfactory | 0:d4bf65e1d0d7 | 6 | This example |
hexfactory | 0:d4bf65e1d0d7 | 7 | - connects to a wifi network (SSID & PWD to set in mbed_app.json) |
hexfactory | 0:d4bf65e1d0d7 | 8 | - Connects to a TCP server (set the address in RemoteIP) |
hexfactory | 0:d4bf65e1d0d7 | 9 | - Sends "Hello" to the server when data is received |
hexfactory | 0:d4bf65e1d0d7 | 10 | |
hexfactory | 0:d4bf65e1d0d7 | 11 | This example uses SPI3 ( PE_0 PC_10 PC_12 PC_11), wifi_wakeup pin (PB_13), |
hexfactory | 0:d4bf65e1d0d7 | 12 | wifi_dataready pin (PE_1), wifi reset pin (PE_8) |
hexfactory | 0:d4bf65e1d0d7 | 13 | ------------------------------------------------------------------------------*/ |
hexfactory | 0:d4bf65e1d0d7 | 14 | |
hexfactory | 0:d4bf65e1d0d7 | 15 | /* Private defines -----------------------------------------------------------*/ |
hexfactory | 0:d4bf65e1d0d7 | 16 | #define WIFI_WRITE_TIMEOUT 10000 |
hexfactory | 0:d4bf65e1d0d7 | 17 | #define WIFI_READ_TIMEOUT 10000 |
hexfactory | 0:d4bf65e1d0d7 | 18 | #define CONNECTION_TRIAL_MAX 10 |
hexfactory | 0:d4bf65e1d0d7 | 19 | |
hexfactory | 0:d4bf65e1d0d7 | 20 | /* Private typedef------------------------------------------------------------*/ |
hexfactory | 0:d4bf65e1d0d7 | 21 | /* Private macro -------------------------------------------------------------*/ |
hexfactory | 0:d4bf65e1d0d7 | 22 | /* Private variables ---------------------------------------------------------*/ |
hexfactory | 0:d4bf65e1d0d7 | 23 | Serial pc(SERIAL_TX, SERIAL_RX); |
hexfactory | 0:d4bf65e1d0d7 | 24 | 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}; |
hexfactory | 0:d4bf65e1d0d7 | 25 | uint8_t RxData [500]; |
hexfactory | 0:d4bf65e1d0d7 | 26 | char* modulename; |
hexfactory | 0:d4bf65e1d0d7 | 27 | uint8_t TxData[] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, |
hexfactory | 0:d4bf65e1d0d7 | 28 | 0x40, 0x8D, 0x5C, 0x1E, 0x3B, 0x75, |
hexfactory | 0:d4bf65e1d0d7 | 29 | 0x40, 0x8D, 0x5C, 0x1E, 0x3B, 0x75, |
hexfactory | 0:d4bf65e1d0d7 | 30 | 0x40, 0x8D, 0x5C, 0x1E, 0x3B, 0x75, |
hexfactory | 0:d4bf65e1d0d7 | 31 | 0x40, 0x8D, 0x5C, 0x1E, 0x3B, 0x75, |
hexfactory | 0:d4bf65e1d0d7 | 32 | 0x40, 0x8D, 0x5C, 0x1E, 0x3B, 0x75, |
hexfactory | 0:d4bf65e1d0d7 | 33 | 0x40, 0x8D, 0x5C, 0x1E, 0x3B, 0x75, |
hexfactory | 0:d4bf65e1d0d7 | 34 | 0x40, 0x8D, 0x5C, 0x1E, 0x3B, 0x75, |
hexfactory | 0:d4bf65e1d0d7 | 35 | 0x40, 0x8D, 0x5C, 0x1E, 0x3B, 0x75, |
hexfactory | 0:d4bf65e1d0d7 | 36 | 0x40, 0x8D, 0x5C, 0x1E, 0x3B, 0x75, |
hexfactory | 0:d4bf65e1d0d7 | 37 | 0x40, 0x8D, 0x5C, 0x1E, 0x3B, 0x75, |
hexfactory | 0:d4bf65e1d0d7 | 38 | 0x40, 0x8D, 0x5C, 0x1E, 0x3B, 0x75, |
hexfactory | 0:d4bf65e1d0d7 | 39 | 0x40, 0x8D, 0x5C, 0x1E, 0x3B, 0x75, |
hexfactory | 0:d4bf65e1d0d7 | 40 | 0x40, 0x8D, 0x5C, 0x1E, 0x3B, 0x75, |
hexfactory | 0:d4bf65e1d0d7 | 41 | 0x40, 0x8D, 0x5C, 0x1E, 0x3B, 0x75, |
hexfactory | 0:d4bf65e1d0d7 | 42 | 0x40, 0x8D, 0x5C, 0x1E, 0x3B, 0x75, |
hexfactory | 0:d4bf65e1d0d7 | 43 | 0x40, 0x8D, 0x5C, 0x1E, 0x3B, 0x75}; |
hexfactory | 0:d4bf65e1d0d7 | 44 | uint16_t RxLen; |
hexfactory | 0:d4bf65e1d0d7 | 45 | uint8_t MAC_Addr[6]; |
hexfactory | 0:d4bf65e1d0d7 | 46 | uint8_t IP_Addr[4]; |
hexfactory | 0:d4bf65e1d0d7 | 47 | |
hexfactory | 0:d4bf65e1d0d7 | 48 | int main() |
hexfactory | 0:d4bf65e1d0d7 | 49 | { |
hexfactory | 0:d4bf65e1d0d7 | 50 | int32_t Socket = -1; |
hexfactory | 0:d4bf65e1d0d7 | 51 | uint16_t Datalen; |
hexfactory | 0:d4bf65e1d0d7 | 52 | uint16_t Trials = CONNECTION_TRIAL_MAX; |
hexfactory | 0:d4bf65e1d0d7 | 53 | |
hexfactory | 0:d4bf65e1d0d7 | 54 | pc.baud(115200); |
hexfactory | 0:d4bf65e1d0d7 | 55 | |
hexfactory | 0:d4bf65e1d0d7 | 56 | /*Initialize WIFI module */ |
hexfactory | 0:d4bf65e1d0d7 | 57 | if(WIFI_Init() == WIFI_STATUS_OK) { |
hexfactory | 0:d4bf65e1d0d7 | 58 | printf("> WIFI Module Initialized.\n"); |
hexfactory | 0:d4bf65e1d0d7 | 59 | if(WIFI_GetMAC_Address(MAC_Addr) == WIFI_STATUS_OK) { |
hexfactory | 0:d4bf65e1d0d7 | 60 | printf("> es-wifi module MAC Address : %X:%X:%X:%X:%X:%X\n", |
hexfactory | 0:d4bf65e1d0d7 | 61 | MAC_Addr[0], |
hexfactory | 0:d4bf65e1d0d7 | 62 | MAC_Addr[1], |
hexfactory | 0:d4bf65e1d0d7 | 63 | MAC_Addr[2], |
hexfactory | 0:d4bf65e1d0d7 | 64 | MAC_Addr[3], |
hexfactory | 0:d4bf65e1d0d7 | 65 | MAC_Addr[4], |
hexfactory | 0:d4bf65e1d0d7 | 66 | MAC_Addr[5]); |
hexfactory | 0:d4bf65e1d0d7 | 67 | } else { |
hexfactory | 0:d4bf65e1d0d7 | 68 | printf("> ERROR : CANNOT get MAC address\n"); |
hexfactory | 0:d4bf65e1d0d7 | 69 | } |
hexfactory | 0:d4bf65e1d0d7 | 70 | |
hexfactory | 0:d4bf65e1d0d7 | 71 | if( WIFI_Connect(MBED_CONF_APP_WIFI_SSID, MBED_CONF_APP_WIFI_PASSWORD, WIFI_ECN_WPA2_PSK) == WIFI_STATUS_OK) { |
hexfactory | 0:d4bf65e1d0d7 | 72 | printf("> es-wifi module connected \n"); |
hexfactory | 0:d4bf65e1d0d7 | 73 | if(WIFI_GetIP_Address(IP_Addr) == WIFI_STATUS_OK) { |
hexfactory | 0:d4bf65e1d0d7 | 74 | printf("> es-wifi module got IP Address : %d.%d.%d.%d\n", |
hexfactory | 0:d4bf65e1d0d7 | 75 | IP_Addr[0], |
hexfactory | 0:d4bf65e1d0d7 | 76 | IP_Addr[1], |
hexfactory | 0:d4bf65e1d0d7 | 77 | IP_Addr[2], |
hexfactory | 0:d4bf65e1d0d7 | 78 | IP_Addr[3]); |
hexfactory | 0:d4bf65e1d0d7 | 79 | |
hexfactory | 0:d4bf65e1d0d7 | 80 | printf("> Trying to connect to Server: %d.%d.%d.%d:8002 ...\n", |
hexfactory | 0:d4bf65e1d0d7 | 81 | RemoteIP[0], |
hexfactory | 0:d4bf65e1d0d7 | 82 | RemoteIP[1], |
hexfactory | 0:d4bf65e1d0d7 | 83 | RemoteIP[2], |
hexfactory | 0:d4bf65e1d0d7 | 84 | RemoteIP[3]); |
hexfactory | 0:d4bf65e1d0d7 | 85 | |
hexfactory | 0:d4bf65e1d0d7 | 86 | if( WIFI_OpenClientConnection(0, WIFI_UDP_PROTOCOL, "UDP_WOL", RemoteIP, 8002, 0) == WIFI_STATUS_OK){ |
hexfactory | 0:d4bf65e1d0d7 | 87 | printf("> UDP configured successfully.\n"); |
hexfactory | 0:d4bf65e1d0d7 | 88 | Socket = 0; |
hexfactory | 0:d4bf65e1d0d7 | 89 | } |
hexfactory | 0:d4bf65e1d0d7 | 90 | } else { |
hexfactory | 0:d4bf65e1d0d7 | 91 | printf("> ERROR : es-wifi module CANNOT get IP address\n"); |
hexfactory | 0:d4bf65e1d0d7 | 92 | } |
hexfactory | 0:d4bf65e1d0d7 | 93 | } else { |
hexfactory | 0:d4bf65e1d0d7 | 94 | printf("> ERROR : es-wifi module NOT connected\n"); |
hexfactory | 0:d4bf65e1d0d7 | 95 | } |
hexfactory | 0:d4bf65e1d0d7 | 96 | } else { |
hexfactory | 0:d4bf65e1d0d7 | 97 | printf("> ERROR : WIFI Module cannot be initialized.\n"); |
hexfactory | 0:d4bf65e1d0d7 | 98 | } |
hexfactory | 0:d4bf65e1d0d7 | 99 | |
hexfactory | 0:d4bf65e1d0d7 | 100 | if(WIFI_SendData(Socket, TxData, sizeof(TxData), &Datalen, WIFI_WRITE_TIMEOUT) != WIFI_STATUS_OK) { |
hexfactory | 0:d4bf65e1d0d7 | 101 | printf("> ERROR : Failed to send Data.\n"); |
hexfactory | 0:d4bf65e1d0d7 | 102 | } else { |
hexfactory | 0:d4bf65e1d0d7 | 103 | printf("> WOL packet sent\n"); |
hexfactory | 0:d4bf65e1d0d7 | 104 | } |
hexfactory | 0:d4bf65e1d0d7 | 105 | |
hexfactory | 0:d4bf65e1d0d7 | 106 | } |