mbed Weather Platform firmware http://mbed.org/users/okini3939/notebook/mbed-weather-platform-firmware/

Dependencies:   EthernetNetIf SDHCFileSystem I2CLEDDisp Agentbed NTPClient_NetServices mbed BMP085 HTTPClient ConfigFile I2CLCD

Revision:
14:ee6cc1632166
Parent:
13:20c0f845df68
Child:
15:07bfa25ba6ae
--- a/func.cpp	Sat Mar 19 21:24:01 2011 +0000
+++ b/func.cpp	Tue Mar 29 18:15:27 2011 +0000
@@ -24,7 +24,7 @@
 extern EthernetNetIf *eth; 
 extern NTPClient *ntp;
 extern HTTPClient *clientP, *clientT;
-extern float pres, temp, humi, light, anemo, vane, rain, uv, moist, temp2;
+extern Sensor sensor;
 
 void writefile (char *buf) {
     FILE *fp;
@@ -49,7 +49,8 @@
     strcat(post_data, conf.stations_id);
     strcat(post_data, "&pin=");
     strcat(post_data, conf.stations_pin);
-    sprintf(&post_data[strlen(post_data)], "&d0=%.2f&d1=%.2f&d2=%.2f&d3=%.2f&d4=%.2f&d5=%.2f&d6=%.2f&d7=%.2f&d8=%.2f&d9=%.2f", pres, temp, humi, anemo, vane, rain, light, uv, moist, temp2);
+    sprintf(&post_data[strlen(post_data)], "&d0=%.2f&d1=%.2f&d2=%.2f&d3=%.2f&d4=%.2f&d5=%.2f&d6=%.2f&d7=%.2f&d8=%.2f&d9=%.2f",
+      sensor.pres, sensor.temp, sensor.humi, sensor.anemo, sensor.vane, sensor.rain, sensor.light, sensor.uv, sensor.moist, sensor.temp2);
     postContent.puts(post_data);
 
 #ifdef NONBLOCKING
@@ -103,37 +104,52 @@
     time_t sec = time(NULL);
     struct tm *tim = localtime(&sec);
 
-    flg = 0;
     j = 0;
     for (i = 0; i < strlen(fmt) && j < len; i ++) {
         c = fmt[i];
         if (c == '%') {
+            flg = 0;
             i ++;
             c = fmt[i];
+            
+            if (c == '.') {
+                // float
+                if (fmt[i + 1] >= '0' && fmt[i + 1] <= '9') {
+                    flg = fmt[i + 1] - '0';
+                    i ++;
+
+                    c = fmt[i + 1];
+                    i ++;
+                }
+            }
+
             switch (c) {
             case 'P':
-                value = pres;
+                value = sensor.pres;
                 break;
             case 'T':
-                value = temp;
+                value = sensor.temp;
                 break;
             case 'H':
-                value = humi;
+                value = sensor.humi;
                 break;
             case 'A':
-                value = anemo;
+                value = sensor.anemo;
                 break;
             case 'V':
-                value = vane;
+                value = sensor.vane;
                 break;
             case 'R':
-                value = rain;
+                value = sensor.rain;
                 break;
             case 'L':
-                value = light;
+                value = sensor.light;
                 break;
             case 'U':
-                value = uv;
+                value = sensor.uv;
+                break;
+            case 'M':
+                value = sensor.moist;
                 break;
 
             case 'y':
@@ -155,10 +171,6 @@
                 value = tim->tm_sec;
                 break;
 
-            case '%':
-                buf[j] = c;
-                j ++;
-                continue;
             case '0':
             case '1':
             case '2':
@@ -169,6 +181,7 @@
             case '7':
             case '8':
             case '9':
+                // Ascii
                 c = c - '0';
                 if (fmt[i + 1] >= '0' && fmt[i + 1] <= '9') {
                     c = (c << 3) | (fmt[i + 1] - '0');
@@ -181,23 +194,23 @@
                 buf[j] = c;
                 j ++;
                 continue;
-            case '.':
-                if (fmt[i + 1] >= '0' && fmt[i + 1] <= '9') {
-                    flg = fmt[i + 1] - '0';
-                    i ++;
-                }
-                continue;
+
             default:
+                buf[j] = c;
+                j ++;
                 continue;
             }
 
-            if (c < 'a' && flg == 1) {
+            switch (flg) {
+            case 1:
                 sprintf(&buf[j], "%.1f", value);
-            } else
-            if (c < 'a' && flg == 2) {
+                break;
+            case 2:
                 sprintf(&buf[j], "%.2f", value);
-            } else {
+                break;
+            default:
                 sprintf(&buf[j], "%02d", (int)value);
+                break;
             }
             j = strlen(buf);
         } else {