Simple test application for the STMicroelectronics X-NUCLEO-IDW01M1 Wi-Fi expansion board.
Dependencies: NetworkSocketAPI X_NUCLEO_IDW01M1v2 mbed
Fork of HelloWorld_IDW01M1v2 by
Introduction
HelloWorld_IDW01M1 is an example application which uses the X_NUCLEO_IDW01M1v2 mbed library.
The software can be used for testing the X-NUCLEO-IDW01M1 expansion board on mbed platforms. Current supported platforms are NUCLEO-F401RE and NUCLEO-L476RG.
Example Application
The SpwfSAInterface class needs to be instantiated with the UART RX and TX pins used. Depending on the platform used, the pin numbers may vary.
E.g. For FRDM K64F board it is: D9 and D7.
For Nucleo it is D8 and D2.
SpwfSAInterface spwf(D8, D2, false);
First of all, the example application tries to connect to the SSID/AP which is provided in the program code. In order to connect to your desired SSID/AP please change the SSID/AP settings/text to the one which is used in the user's environment. Please also remember that the SSID needs to be connected to the internet.
char * ssid = "STM"; //Please change to local SSID/AP name char * seckey = "STMdemoPWD"; //Please change password
After connection the program prints its own IP address and MAC address on the serial terminal over UART.
Please launch a terminal application (e.g.: TeraTerm, PuTTY on Windows, Minicom on Linux) and set the UART port to 9600 bps, 8 bit, No Parity, 1 stop bit.
Thereafter the program retreives the IP address of the "st.com" webpage and outputs it to the serial terminal.
After outputting the IP address of st.com, the program tries to connect to the address "http://4.ifcfg.me" and socket 23. After connecting to the socket the program receives the IP Address from the server and outputs the IP Address it receives which denotes the public IP Address of the platform + X-Nucleo-IDW01M1 (node).
Further the program closes the socket, disconnects from the SSID and exits. This is just a simple "Hello World" style program for the X-NUCLEO-IDW01M1 Wi-Fi Expansion Board.
Diff: main.cpp
- Revision:
- 10:cc61a766cd1f
- Parent:
- 9:13bd9c989e6c
- Child:
- 11:0b4472769b08
--- a/main.cpp Tue Jan 10 09:20:31 2017 +0000 +++ b/main.cpp Tue Jan 10 10:56:37 2017 +0000 @@ -18,37 +18,29 @@ #include "SpwfInterface.h" #include "TCPSocket.h" - -//www.amazon.it CA certificate in PEM format +//www.mbed.com CA certificate in PEM format char CA_cert []="-----BEGIN CERTIFICATE-----\r\n" -"MIIE0zCCA7ugAwIBAgIQGNrRniZ96LtKIVjNzGs7SjANBgkqhkiG9w0BAQUFADCB\r\n" -"yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL\r\n" -"ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJp\r\n" -"U2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxW\r\n" -"ZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0\r\n" -"aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCByjEL\r\n" -"MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZW\r\n" -"ZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2ln\r\n" -"biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJp\r\n" -"U2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9y\r\n" -"aXR5IC0gRzUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvJAgIKXo1\r\n" -"nmAMqudLO07cfLw8RRy7K+D+KQL5VwijZIUVJ/XxrcgxiV0i6CqqpkKzj/i5Vbex\r\n" -"t0uz/o9+B1fs70PbZmIVYc9gDaTY3vjgw2IIPVQT60nKWVSFJuUrjxuf6/WhkcIz\r\n" -"SdhDY2pSS9KP6HBRTdGJaXvHcPaz3BJ023tdS1bTlr8Vd6Gw9KIl8q8ckmcY5fQG\r\n" -"BO+QueQA5N06tRn/Arr0PO7gi+s3i+z016zy9vA9r911kTMZHRxAy3QkGSGT2RT+\r\n" -"rCpSx4/VBEnkjWNHiDxpg8v+R70rfk/Fla4OndTRQ8Bnc+MUCH7lP59zuDMKz10/\r\n" -"NIeWiu5T6CUVAgMBAAGjgbIwga8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8E\r\n" -"BAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2UvZ2lmMCEwHzAH\r\n" -"BgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVy\r\n" -"aXNpZ24uY29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFH/TZafC3ey78DAJ80M5+gKv\r\n" -"MzEzMA0GCSqGSIb3DQEBBQUAA4IBAQCTJEowX2LP2BqYLz3q3JktvXf2pXkiOOzE\r\n" -"p6B4Eq1iDkVwZMXnl2YtmAl+X6/WzChl8gGqCBpH3vn5fJJaCGkgDdk+bW48DW7Y\r\n" -"5gaRQBi5+MHt39tBquCWIMnNZBU4gcmU7qKEKQsTb47bDN0lAtukixlE0kF6BWlK\r\n" -"WE9gyn6CagsCqiUXObXbf+eEZSqVir2G3l6BFoMtEMze/aiCKm0oHw0LxOXnGiYZ\r\n" -"4fQRbxC1lfznQgUy286dUV4otp6F01vvpX1FQHKOtw5rDgb7MzVIcbidJ4vEZV8N\r\n" -"hnacRHr2lVz2XTIIM6RUthg/aFzyQkqFOFSDX9HoLPKsEdao7WNq\r\n" +"MIIDVDCCAjygAwIBAgIDAjRWMA0GCSqGSIb3DQEBBQUAMEIxCzAJBgNVBAYTAlVT\r\n" +"MRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9i\r\n" +"YWwgQ0EwHhcNMDIwNTIxMDQwMDAwWhcNMjIwNTIxMDQwMDAwWjBCMQswCQYDVQQG\r\n" +"EwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEbMBkGA1UEAxMSR2VvVHJ1c3Qg\r\n" +"R2xvYmFsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2swYYzD9\r\n" +"9BcjGlZ+W988bDjkcbd4kdS8odhM+KhDtgPpTSEHCIjaWC9mOSm9BXiLnTjoBbdq\r\n" +"fnGk5sRgprDvgOSJKA+eJdbtg/OtppHHmMlCGDUUna2YRpIuT8rxh0PBFpVXLVDv\r\n" +"iS2Aelet8u5fa9IAjbkU+BQVNdnARqN7csiRv8lVK83Qlz6cJmTM386DGXHKTubU\r\n" +"1XupGc1V3sjs0l44U+VcT4wt/lAjNvxm5suOpDkZALeVAjmRCw7+OC7RHQWa9k0+\r\n" +"bw8HHa8sHo9gOeL6NlMTOdReJivbPagUvTLrGAMoUgRx5aszPeE4uwc2hGKceeoW\r\n" +"MPRfwCvocWvk+QIDAQABo1MwUTAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTA\r\n" +"ephojYn7qwVkDBF9qn1luMrMTjAfBgNVHSMEGDAWgBTAephojYn7qwVkDBF9qn1l\r\n" +"uMrMTjANBgkqhkiG9w0BAQUFAAOCAQEANeMpauUvXVSOKVCUn5kaFOSPeCpilKIn\r\n" +"Z57QzxpeR+nBsqTP3UEaBU6bS+5Kb1VSsyShNwrrZHYqLizz/Tt1kL/6cdjHPTfS\r\n" +"tQWVYrmm3ok9Nns4d0iXrKYgjy6myQzCsplFAMfOEVEiIuCl6rYVSAlk6l5PdPcF\r\n" +"PseKUgzbFbS9bZvlxrFUaKnjaZC2mqUPuLk/IH2uSrW4nOQdtqvmlKXBx4Ot2/Un\r\n" +"hw4EbNX/3aBd7YdStysVAq45pmp06drE57xNNB6pXE0zX5IJL4hmXXeXxx12E6nV\r\n" +"5fEWCRE11azbJHFwLJhWC9kXtNHjUStedejV0NxPNO3CBWaAocvmMw==\r\n" "-----END CERTIFICATE-----\r\n"; + //------------------------------------ // Hyperterminal configuration // 9600 bauds, 8-bit data, no parity @@ -150,20 +142,23 @@ if (!spwf.set_time(ctTime)) printf ("ERROR set_time\n\r"); if (!spwf.clean_TLS_certificate(ALL)) printf ("ERROR clean_TLS_certificate\n\r"); if (!spwf.set_TLS_certificate(CA_cert, sizeof(CA_cert), FLASH_CA_ROOT_CERT)) printf ("ERROR set_TLS_certificate\n\r"); - if (!spwf.set_TLS_SRV_domain("www.amazon.it",FLASH_DOMAIN)) printf ("ERROR set_TLS_CA_domain\n\r"); -// NOTE: DNS requires UDP socket. DNS is invoked while connecting a secure socket to resolve URL to IP, -// so DNS doesnt answer as it requires unsecure UDP socket connection. -// workaroud: convert URL to IP quering DNS before secure socket creation, then connect -// the secure socket created to the retrieved IP. - spwf.gethostbyname(&addr,"www.amazon.it"); // ask DNS - addr.set_port(443); - spwf.set_secure_sockets(); + if (!spwf.set_TLS_SRV_domain("*.mbed.com",FLASH_DOMAIN)) printf ("ERROR set_TLS_CA_domain\n\r"); +// NOTE: the Wifi API set_secure_mode() and set_unsecure_mode() refers to the whole interface so the socket must be created / opened after +// having set the desidered mode (deft unsecure). +//#define SEC_MODE1 // two possible ways to secure connect a socket are shown + spwf.gethostbyname(&addr,"www.mbed.com"); // ask DNS to resolve URL/IP + addr.set_port(443); + spwf.set_secure_mode(); socket.open(&spwf); - printf ("Connecting to www.amazon.it IP: %s ...\n\r", addr.get_ip_address()); + spwf.set_unsecure_mode(); + printf ("Connecting to www.mbed.com IP: %s ...\n\r", addr.get_ip_address()); +#ifdef SEC_MODE1 err = socket.connect(addr); +#else + err = socket.connect("www.mbed.com", 443); +#endif if (err != 0 )printf ("ERROR secure socket connection failed: %d\n\r", err); else printf ("--->>> Secure socket CONNECTED to: %s\n\r", addr.get_ip_address()); - spwf.set_unsecure_sockets(); socket.close(); printf ("Socket closed\n\r"); spwf.disconnect();