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
Diff: func.cpp
- Revision:
- 10:848a2205aed1
- Parent:
- 9:8c63e4f3edab
- Child:
- 13:20c0f845df68
diff -r 8c63e4f3edab -r 848a2205aed1 func.cpp --- 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);