change official mbed lib and buffer size

Dependencies:   Servo WIZnetInterface mbed

Fork of My_Weatherforecast_WIZwiki-W7500 by Lawrence Lee

Revision:
15:d3b1e25d3e23
Parent:
11:59dcefdda506
--- a/main.cpp	Wed May 14 15:07:26 2014 +0000
+++ b/main.cpp	Thu Jun 25 23:54:47 2015 +0000
@@ -1,31 +1,119 @@
 #include "mbed.h"
 #include "EthernetInterface.h"
+#include "Servo.h"
+
+DigitalOut bled(D6);
+DigitalOut gled(D5);
+DigitalOut rled(D4);
+
+Servo myservo(D15);
 
 int main() {
+   
+    int phy_link;
+    printf("Wait a second...\r\n");
+    uint8_t mac_addr[6] = {0x00, 0x08, 0xDC, 0x00, 0x01, 0x02}; 
+    
     EthernetInterface eth;
-    eth.init(); //Use DHCP
+    eth.init(mac_addr); //Use DHCP
+    
+    while(1){
+    
     eth.connect();
-    printf("IP Address is %s\n", eth.getIPAddress());
     
+    /* phy link */
+     do{
+        phy_link = eth.ethernet_link();
+        printf("...");
+        wait(2);
+     }while(!phy_link);
+     printf("\r\n");
+     
+    printf("IP Address is %s\r\n", eth.getIPAddress());
+    
+    /* TCP socket connect */
     TCPSocketConnection sock;
-    sock.connect("mbed.org", 80);
+    sock.connect("api.openweathermap.org", 80);
     
-    char http_cmd[] = "GET /media/uploads/mbed_official/hello.txt HTTP/1.0\n\n";
+    /* weather */
+    char http_cmd[] = "GET /data/2.5/weather?q=Seoul,kr HTTP/1.0\n\n";
+    //char http_cmd[] = "GET /data/2.5/weather?q=London,uk HTTP/1.0\n\n";
+    //char http_cmd[] = "GET /data/2.5/weather?q=Berlin,de HTTP/1.0\n\n";
     sock.send_all(http_cmd, sizeof(http_cmd)-1);
     
-    char buffer[300];
+    /* get info */
+    char buffer[500];
     int ret;
     while (true) {
         ret = sock.receive(buffer, sizeof(buffer)-1);
         if (ret <= 0)
             break;
         buffer[ret] = '\0';
-        printf("Received %d chars from server:\n%s\n", ret, buffer);
+        printf("Received %d chars from server: %s\n", ret, buffer);     
     }
-      
+
+    /* get weather, city, tempurature */
+    char *weather;
+    char *city;
+    char *tempure;
+    
+    char weather_stu[3];
+    char city_name[6];
+    char tempure_data[6];
+    
+   weather = strstr(buffer, "main");
+        printf("%.4s\n", weather + 7);
+        for(int i=0; i<3;i++){
+            weather_stu[i] = weather[i+7];
+       }
+   
+   city = strstr(buffer, "name");
+        printf("%.6s\n", city + 7);
+        for(int k=0; k<6;k++){
+            city_name[k] = city[k+7];
+            printf("%c",city_name[k]);
+        }
+ 
+   tempure = strstr(buffer, "temp");
+        printf("%.3s\n", tempure + 6);
+        for(int j=0; j<6;j++){
+            tempure_data[j] = tempure[j+6];
+            printf("%c",tempure_data[j]);
+        }
+        
+        /*tempurature display */ 
+        float data[2]={0};
+        data[0] = tempure_data[1]-'7';
+        data[1] = tempure_data[2]-'3';
+        
+        myservo = (data[0]*10+data[1])/40;
+
+        printf("%f",(data[0]*10+data[1])/40);
+   
+   /* weather display */
+   if(strcmp(weather_stu,"Clo")==0) {
+        rled = 1; 
+        gled = 1; 
+        bled = 1;
+    }else if(strcmp(weather_stu,"Rai")==0) {
+        rled = 0; 
+        gled = 0;
+        bled = 1; 
+    }else if(strcmp(weather_stu,"Cle")==0){
+        rled = 1; 
+        gled = 1;
+        bled = 0; 
+    }else {
+        rled = 0;
+        bled = 0;
+        gled = 0;
+        }
+
     sock.close();
     
     eth.disconnect();
     
-    while(1) {}
+    wait(60.0);
+   };
+
 }