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:
2:4125fe2283ef
Parent:
1:86d4b7431fbe
Child:
3:60f5f6d5f765
--- a/main.cpp	Mon Dec 13 15:28:59 2010 +0000
+++ b/main.cpp	Mon Dec 13 16:40:19 2010 +0000
@@ -14,6 +14,7 @@
 //#include "I2CLCD.h"
 #include "ConfigFile.h"
 #include "SDFileSystem.h"
+#include "MSCFileSystem.h"
 #include "EthernetNetIf.h"
 #include "NTPClient.h"
 #include "HTTPClient.h"
@@ -28,6 +29,7 @@
 ConfigFile conf;
 DigitalOut led1(LED1), led2(LED2), led3(LED3), led4(LED4);
 SDFileSystem sd(p5, p6, p7, p8, "sd"); 
+MSCFileSystem *usb;
 
 // Sensors
 float pres, temp, humi, light, anemo, vane, rain, uv, moist, temp2;
@@ -62,14 +64,18 @@
     float f;
     
     f = ain * 5.0; // V
-    return f / ((3.3 - f) / 10.0); // k ohm
+    f = f / ((3.3 - f) / 10.0); // k ohm
+    if (f < 0) f = 0;
+    return f;
 }
 
 float get_uv (AnalogIn &ain) {
     float f;
     
     f = ain * 5.0 / 100000; // A
-    return f / 0.000384; // mW/cm2
+    f = f / 0.000384; // mW/cm2
+    if (f < 0) f = 0;
+    return f;
 }
 
 void action (char *buf) {
@@ -100,6 +106,8 @@
 
     conf.load("/sd/weather.cf");
 
+    pc.printf("Interval: %d sec\r\n", conf.interval);
+
     if (conf.ipaddr[0]) {
         // use ethernet
 
@@ -140,17 +148,29 @@
 
     if (conf.filetype) {
         // seq num
-        fp = fopen("/sd/weather.seq", "r");
+        
+        if (conf.filetype == 1) {
+            strcpy(filename, "/sd");
+        } else
+        if (conf.filetype == 2) {
+            usb = new MSCFileSystem("usb");
+            strcpy(filename, "/usb");
+        }
+        strcat(filename, "/weather.seq");
+
+        // load
+        fp = fopen(filename, "r");
         if (fp) {
             fscanf(fp, "%d", &seq);
             fclose(fp);
         }
         seq ++;
-        fp = fopen("/sd/weather.seq", "w");
+        // save
+        fp = fopen(filename, "w");
         if (fp) {
             fprintf(fp, "%d", seq);
             fclose(fp);
-            // create csv filename
+            // csv filename
             if (conf.filetype == 1) {
                 sprintf(filename, "/sd/w%05d.csv", seq);
             } else
@@ -171,7 +191,6 @@
     led1 = 1;
     init();
     pc.printf(VERSION "\r\n\r\n");
-    pc.printf("[%s|%s|%s|%s]\r\n", conf.pachube_apikey, conf.pachube_feedid, conf.twitter_user, conf.twitter_pwd);
 
     if (conf.filetype) {
         strcpy(buf, "date,pres(hPa),temp(`C),humi(%%),anemo(m/s),vane(`),rain(mm),light(lx),uv(mW/cm2),moist(kohm),\r\n");