OneNet_IoT_demo for ASC platform

Dependencies:   Common_lib ESP8266 EdpKit_lib cJSON_lib driver_mbed_HP20x driver_mbed_TH02 wifi_example

Fork of mbed-os-example-esp8266 by ESP8266

Committer:
group-ESP8266
Date:
Thu Jan 12 20:21:45 2017 +0000
Revision:
0:b887535f68bf
Child:
2:1dbc3aa8ae3a
Initial commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
group-ESP8266 0:b887535f68bf 1 /* WiFi Example
group-ESP8266 0:b887535f68bf 2 * Copyright (c) 2016 ARM Limited
group-ESP8266 0:b887535f68bf 3 *
group-ESP8266 0:b887535f68bf 4 * Licensed under the Apache License, Version 2.0 (the "License");
group-ESP8266 0:b887535f68bf 5 * you may not use this file except in compliance with the License.
group-ESP8266 0:b887535f68bf 6 * You may obtain a copy of the License at
group-ESP8266 0:b887535f68bf 7 *
group-ESP8266 0:b887535f68bf 8 * http://www.apache.org/licenses/LICENSE-2.0
group-ESP8266 0:b887535f68bf 9 *
group-ESP8266 0:b887535f68bf 10 * Unless required by applicable law or agreed to in writing, software
group-ESP8266 0:b887535f68bf 11 * distributed under the License is distributed on an "AS IS" BASIS,
group-ESP8266 0:b887535f68bf 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
group-ESP8266 0:b887535f68bf 13 * See the License for the specific language governing permissions and
group-ESP8266 0:b887535f68bf 14 * limitations under the License.
group-ESP8266 0:b887535f68bf 15 */
group-ESP8266 0:b887535f68bf 16
group-ESP8266 0:b887535f68bf 17 #include "mbed.h"
group-ESP8266 0:b887535f68bf 18 #include "TCPSocket.h"
group-ESP8266 0:b887535f68bf 19
group-ESP8266 0:b887535f68bf 20
group-ESP8266 0:b887535f68bf 21 #include "ESP8266Interface.h"
group-ESP8266 0:b887535f68bf 22 ESP8266Interface wifi(D1, D0);
group-ESP8266 0:b887535f68bf 23
group-ESP8266 0:b887535f68bf 24 const char *sec2str(nsapi_security_t sec)
group-ESP8266 0:b887535f68bf 25 {
group-ESP8266 0:b887535f68bf 26 switch (sec) {
group-ESP8266 0:b887535f68bf 27 case NSAPI_SECURITY_NONE:
group-ESP8266 0:b887535f68bf 28 return "None";
group-ESP8266 0:b887535f68bf 29 case NSAPI_SECURITY_WEP:
group-ESP8266 0:b887535f68bf 30 return "WEP";
group-ESP8266 0:b887535f68bf 31 case NSAPI_SECURITY_WPA:
group-ESP8266 0:b887535f68bf 32 return "WPA";
group-ESP8266 0:b887535f68bf 33 case NSAPI_SECURITY_WPA2:
group-ESP8266 0:b887535f68bf 34 return "WPA2";
group-ESP8266 0:b887535f68bf 35 case NSAPI_SECURITY_WPA_WPA2:
group-ESP8266 0:b887535f68bf 36 return "WPA/WPA2";
group-ESP8266 0:b887535f68bf 37 case NSAPI_SECURITY_UNKNOWN:
group-ESP8266 0:b887535f68bf 38 default:
group-ESP8266 0:b887535f68bf 39 return "Unknown";
group-ESP8266 0:b887535f68bf 40 }
group-ESP8266 0:b887535f68bf 41 }
group-ESP8266 0:b887535f68bf 42
group-ESP8266 0:b887535f68bf 43 void scan_demo(WiFiInterface *wifi)
group-ESP8266 0:b887535f68bf 44 {
group-ESP8266 0:b887535f68bf 45 WiFiAccessPoint *ap;
group-ESP8266 0:b887535f68bf 46
group-ESP8266 0:b887535f68bf 47 printf("Scan:\r\n");
group-ESP8266 0:b887535f68bf 48
group-ESP8266 0:b887535f68bf 49 int count = wifi->scan(NULL,0);
group-ESP8266 0:b887535f68bf 50
group-ESP8266 0:b887535f68bf 51 /* Limit number of network arbitrary to 15 */
group-ESP8266 0:b887535f68bf 52 count = count < 15 ? count : 15;
group-ESP8266 0:b887535f68bf 53
group-ESP8266 0:b887535f68bf 54 ap = new WiFiAccessPoint[count];
group-ESP8266 0:b887535f68bf 55 count = wifi->scan(ap, count);
group-ESP8266 0:b887535f68bf 56 for (int i = 0; i < count; i++)
group-ESP8266 0:b887535f68bf 57 {
group-ESP8266 0:b887535f68bf 58 printf("Network: %s secured: %s BSSID: %hhX:%hhX:%hhX:%hhx:%hhx:%hhx RSSI: %hhd Ch: %hhd\r\n", ap[i].get_ssid(),
group-ESP8266 0:b887535f68bf 59 sec2str(ap[i].get_security()), ap[i].get_bssid()[0], ap[i].get_bssid()[1], ap[i].get_bssid()[2],
group-ESP8266 0:b887535f68bf 60 ap[i].get_bssid()[3], ap[i].get_bssid()[4], ap[i].get_bssid()[5], ap[i].get_rssi(), ap[i].get_channel());
group-ESP8266 0:b887535f68bf 61 }
group-ESP8266 0:b887535f68bf 62 printf("%d networks available.\r\n", count);
group-ESP8266 0:b887535f68bf 63
group-ESP8266 0:b887535f68bf 64 delete[] ap;
group-ESP8266 0:b887535f68bf 65 }
group-ESP8266 0:b887535f68bf 66
group-ESP8266 0:b887535f68bf 67 void http_demo(NetworkInterface *net)
group-ESP8266 0:b887535f68bf 68 {
group-ESP8266 0:b887535f68bf 69 TCPSocket socket;
group-ESP8266 0:b887535f68bf 70
group-ESP8266 0:b887535f68bf 71 printf("Sending HTTP request to www.arm.com...\r\n");
group-ESP8266 0:b887535f68bf 72
group-ESP8266 0:b887535f68bf 73 // Open a socket on the network interface, and create a TCP connection to www.arm.com
group-ESP8266 0:b887535f68bf 74 socket.open(net);
group-ESP8266 0:b887535f68bf 75 socket.connect("www.arm.com", 80);
group-ESP8266 0:b887535f68bf 76
group-ESP8266 0:b887535f68bf 77 // Send a simple http request
group-ESP8266 0:b887535f68bf 78 char sbuffer[] = "GET / HTTP/1.1\r\nHost: www.arm.com\r\n\r\n";
group-ESP8266 0:b887535f68bf 79 int scount = socket.send(sbuffer, sizeof sbuffer);
group-ESP8266 0:b887535f68bf 80 printf("sent %d [%.*s]\r\n", scount, strstr(sbuffer, "\r\n")-sbuffer, sbuffer);
group-ESP8266 0:b887535f68bf 81
group-ESP8266 0:b887535f68bf 82 // Recieve a simple http response and print out the response line
group-ESP8266 0:b887535f68bf 83 char rbuffer[64];
group-ESP8266 0:b887535f68bf 84 int rcount = socket.recv(rbuffer, sizeof rbuffer);
group-ESP8266 0:b887535f68bf 85 printf("recv %d [%.*s]\r\n", rcount, strstr(rbuffer, "\r\n")-rbuffer, rbuffer);
group-ESP8266 0:b887535f68bf 86
group-ESP8266 0:b887535f68bf 87 // Close the socket to return its memory and bring down the network interface
group-ESP8266 0:b887535f68bf 88 socket.close();
group-ESP8266 0:b887535f68bf 89 }
group-ESP8266 0:b887535f68bf 90
group-ESP8266 0:b887535f68bf 91 int main()
group-ESP8266 0:b887535f68bf 92 {
group-ESP8266 0:b887535f68bf 93 printf("WiFi example\r\n\r\n");
group-ESP8266 0:b887535f68bf 94
group-ESP8266 0:b887535f68bf 95 // Scan for available access points
group-ESP8266 0:b887535f68bf 96 scan_demo(&wifi);
group-ESP8266 0:b887535f68bf 97
group-ESP8266 0:b887535f68bf 98 printf("\r\nConnecting...\r\n");
group-ESP8266 0:b887535f68bf 99 int ret = wifi.connect(MBED_CONF_APP_WIFI_SSID, MBED_CONF_APP_WIFI_PASSWORD, NSAPI_SECURITY_WPA_WPA2);
group-ESP8266 0:b887535f68bf 100 if (ret != 0) {
group-ESP8266 0:b887535f68bf 101 printf("\r\nConnection error\r\n");
group-ESP8266 0:b887535f68bf 102 return -1;
group-ESP8266 0:b887535f68bf 103 }
group-ESP8266 0:b887535f68bf 104
group-ESP8266 0:b887535f68bf 105 printf("Success\r\n\r\n");
group-ESP8266 0:b887535f68bf 106 printf("MAC: %s\r\n", wifi.get_mac_address());
group-ESP8266 0:b887535f68bf 107 printf("IP: %s\r\n", wifi.get_ip_address());
group-ESP8266 0:b887535f68bf 108 printf("Netmask: %s\r\n", wifi.get_netmask());
group-ESP8266 0:b887535f68bf 109 printf("Gateway: %s\r\n", wifi.get_gateway());
group-ESP8266 0:b887535f68bf 110 printf("RSSI: %d\r\n\r\n", wifi.get_rssi());
group-ESP8266 0:b887535f68bf 111
group-ESP8266 0:b887535f68bf 112 http_demo(&wifi);
group-ESP8266 0:b887535f68bf 113
group-ESP8266 0:b887535f68bf 114 wifi.disconnect();
group-ESP8266 0:b887535f68bf 115
group-ESP8266 0:b887535f68bf 116 printf("\r\nDone\r\n");
group-ESP8266 0:b887535f68bf 117 }