http client example for wiznet's mbed academy

Dependencies:   Adafruit_GFX WIZnetInterface mbed

Revision:
0:03e145bf4b2f
Child:
1:feb9f603f054
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Thu Jun 15 05:10:49 2017 +0000
@@ -0,0 +1,166 @@
+#include "mbed.h"
+#include "EthernetInterface.h"
+#include "Adafruit_SSD1306.h"
+   
+// W7500 onboard LED & Init
+DigitalOut gled(LED2,0);
+
+
+// I2C Class
+I2C i2c(PA_10,PA_9);
+
+// OLED Class   
+Adafruit_SSD1306_I2c gOled(i2c,NC,0x78,64,128);
+
+// Declare Ethernet Class
+EthernetInterface eth;
+
+// Declare TCP Connection Class
+TCPSocketConnection sock;
+
+
+
+int main() {
+      
+    int phy_link;
+    printf("Wait a second...\r\n");
+    
+    //--------- Have to modify the mac address-------------
+    uint8_t mac_addr[6] = {0x00, 0x08, 0xDC, 0xff, 0xff, 0x25};   
+    
+    eth.init(mac_addr);     //Use DHCP
+        
+    // phy link 
+    do{
+        phy_link = eth.ethernet_link();
+        printf("...");
+        wait(2);
+    }while(!phy_link);
+    printf("\r\n");
+        
+    eth.connect();
+         
+    printf("IP Address is %s\r\n\r\n", eth.getIPAddress());
+    printf("MASK Address is %s\r\n\r\n", eth.getNetworkMask());
+    printf("GATEWAY Address is %s\r\n\r\n", eth.getGateway());
+    printf("MAC Address is %s\r\n\r\n", eth.getMACAddress());
+    
+    while(1){
+        // TCP socket connect to openweather server 
+        //TCPSocketConnection sock;
+        char http_addr[]="api.openweathermap.org";
+        int port=80;
+        
+        //connect
+        ///////////////////////////////////////////////////////////
+
+        ////////////////////////////////////////////////////////////
+        
+        // GET method, to request weather forecast  
+        char http_cmd[] = "GET /data/2.5/weather?q=London,uk&appid=a0ca47dd7f6066404629b3e1ad728981 HTTP/1.0\n\n";
+        
+        
+        //send data
+        ///////////////////////////////////////////////////////
+
+        ///////////////////////////////////////////////////////
+        
+        // get data into buffer
+        char buffer[2048];
+        int ret;
+        while (true) {
+            // break the while(), when don't received tha data
+            // save the data to buffer
+            // save the return value to ret
+            //receive data
+            //////////////////////////////////////////////////////
+ 
+ 
+ 
+            ////////////////////////////////////////////////////
+            buffer[ret] = '\0';
+            printf("Received %d chars from server: %s\n", ret, buffer);     
+        }
+        printf("\r\n\r\n");
+        
+        // parsing current date, weather, city, tempurature 
+        char *date;
+        char *weather;
+        char *city;
+        char *temper;
+        
+        char cur_date[17] = {0};
+        char weather_con[15] = {0};
+        char city_name[10] = {0};
+        char temper_data[3] = {0};
+    
+        int temp;
+        int num100, num10, num1;
+        
+        //parding date
+        date = strstr(buffer, "Date");
+        for(int x=0;x<17;x++){
+            cur_date[x] = date[x+6];
+        }
+            
+        // parsing weather condition
+        weather = strstr(buffer, "main");
+        for(int i=0; i<15;i++){
+            weather_con[i] = weather[i+7];
+            if(weather_con[i] == 34){
+                weather_con[i] = 0;
+                break;
+            }
+        }
+        
+        // parsing city name
+        city = strstr(buffer, "name");
+        for(int j=0; j<10;j++){
+            city_name[j] = city[j+7];
+            if(city_name[j] == 34){
+                city_name[j] = 0;
+                break;
+            }
+        }
+     
+        //parsing current tempurature
+        temper = strstr(buffer, "temp");
+        for(int k=0; k<3;k++){
+            temper_data[k] = temper[k+6];
+        }
+           
+        //kelvin to celius converter
+        num100 = temper_data[0]- 48;
+        num10 = temper_data[1] - 48;
+        num1 = temper_data[2]- 48;
+        temp = (num100*100 + num10*10 + num1) - 273;
+        
+        // Debug message
+        printf("city name   :  %s\r\n",  city_name);
+        printf("weather     :  %s\r\n",  weather_con);
+        printf("temperature :  %d\r\n\r\n",  temp);
+        
+        // OLED Display
+        gOled.begin();
+        gOled.clearDisplay();
+        gOled.printf("%s\n\n", cur_date);
+        gOled.printf("City    : %s\n", city_name);
+        gOled.printf("Weather : %s\n", weather_con);
+        gOled.printf("Temper  : %d\n", temp);
+        gOled.display();
+        gOled.setTextCursor(0,0);
+        
+
+    
+        //close 
+        //////////////////////////////////////////////////
+        
+        //////////////////////////////////////////////////
+        /* 
+         *    everytime in delay, request weather forecast 
+         */
+        wait(20.0);
+    
+   };
+
+}
\ No newline at end of file