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:
10:848a2205aed1
Parent:
9:8c63e4f3edab
Child:
13:20c0f845df68
--- a/func.cpp	Tue Feb 22 14:40:11 2011 +0000
+++ b/func.cpp	Sun Feb 27 13:39:45 2011 +0000
@@ -26,7 +26,6 @@
 extern HTTPClient *clientP, *clientT;
 extern float pres, temp, humi, light, anemo, vane, rain, uv, moist, temp2;
 
-
 void writefile (char *buf) {
     FILE *fp;
 
@@ -87,19 +86,20 @@
     }
 }
 
-void twitstr (char *buf, int len) {
-    int i, j;
+char *fmtstr (char *fmt, char *buf, int len) {
+    int i, j, flg;
     char c;
     float value;
     time_t sec = time(NULL);
     struct tm *tim = localtime(&sec);
 
+    flg = 0;
     j = 0;
-    for (i = 0; i < strlen(conf.twitter_mesg) && j < len; i ++) {
-        c = conf.twitter_mesg[i];
+    for (i = 0; i < strlen(fmt) && j < len; i ++) {
+        c = fmt[i];
         if (c == '%') {
             i ++;
-            c = conf.twitter_mesg[i];
+            c = fmt[i];
             switch (c) {
             case 'P':
                 value = pres;
@@ -149,11 +149,42 @@
                 buf[j] = c;
                 j ++;
                 continue;
+            case '0':
+            case '1':
+            case '2':
+            case '3':
+            case '4':
+            case '5':
+            case '6':
+            case '7':
+            case '8':
+            case '9':
+                c = c - '0';
+                if (fmt[i + 1] >= '0' && fmt[i + 1] <= '9') {
+                    c = (c << 3) | (fmt[i + 1] - '0');
+                    i ++;
+                    if (fmt[i + 1] >= '0' && fmt[i + 1] <= '9') {
+                        c = (c << 3) | (fmt[i + 1] - '0');
+                        i ++;
+                    }
+                }
+                buf[j] = c;
+                j ++;
+                continue;
+            case '.':
+                if (fmt[i + 1] >= '0' && fmt[i + 1] <= '9') {
+                    flg = fmt[i + 1] - '0';
+                    i ++;
+                }
+                continue;
             default:
                 continue;
             }
 
-            if (c < 'a') {
+            if (c < 'a' && flg == 1) {
+                sprintf(&buf[j], "%.1f", value);
+            } else
+            if (c < 'a' && flg == 2) {
                 sprintf(&buf[j], "%.2f", value);
             } else {
                 sprintf(&buf[j], "%02d", (int)value);
@@ -165,6 +196,7 @@
         }
     }
     buf[j] = 0;
+    return buf;
 }
 
 void twitter () {
@@ -172,7 +204,7 @@
     char buf[170];
 
     led_y = 0;
-    twitstr(buf, sizeof(buf));
+    fmtstr(conf.twitter_mesg, buf, sizeof(buf));
     msg["status"] = buf;
 
     clientT->basicAuth(conf.twitter_user, conf.twitter_pwd);