スマートコンセント(富士通 FX-5204PS)をIEEE1888 StorageにWRITEするサンプルプログラムです。

Dependencies:   EthernetInterface FiapV2 HTTPClientForSOAP NTPClient TextLCD mbed-rtos mbed spxml

Fork of BlueUSB_f by Yasushi TAUCHI

スマートコンセント(富士通 FX-5204PS)をIEEE1888 StorageにWRITEするサンプルプログラムです。
USB HUBを使用して2台利用した例です。
表示のみは http://mbed.org/users/yueee_yt/code/BlueUSB_f/で公開しています。

BlueUSBより派生していますが、BluetoothとMass Storage Classは利用できません。

2台まで確認していますが、プログラム的には10台まで接続できるようにしています。
(RTOSとの整合により難しいかもしれません)

Files at this revision

API Documentation at this revision

Comitter:
yueee_yt
Date:
Sun Sep 30 12:45:05 2012 +0000
Parent:
5:96a70a8cebb9
Commit message:
2????????????

Changed in this revision

FiapV2.lib Show annotated file Show diff for this revision Revisions of this file
USBHost.cpp Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/FiapV2.lib	Sun Sep 30 07:41:28 2012 +0000
+++ b/FiapV2.lib	Sun Sep 30 12:45:05 2012 +0000
@@ -1,1 +1,1 @@
-http://mbed.org/users/yueee_yt/code/FiapV2/#cc924e783dff
+http://mbed.org/users/yueee_yt/code/FiapV2/#0b203716e92b
--- a/USBHost.cpp	Sun Sep 30 07:41:28 2012 +0000
+++ b/USBHost.cpp	Sun Sep 30 12:45:05 2012 +0000
@@ -28,7 +28,7 @@
 #define MAX_ENDPOINTS_TOTAL 16        // Max number of endpoints total
 #define MAX_ENDPOINTS_PER_DEVICE 8    // Max number of endpoints for any one device
 
-#define  USBLOG 1
+#define  USBLOG 0
 #if USBLOG
 #define  LOG(...)       printf(__VA_ARGS__)
 #else 
@@ -37,7 +37,7 @@
 
 // USB host structures
 
-#define USB_RAM_SIZE 4096    // AHB SRAM block 1 TODO MACHINE DEPENDENT
+#define USB_RAM_SIZE 16*1024    // AHB SRAM block 1 TODO MACHINE DEPENDENT
 //#define USB_RAM_SIZE 16*1024    // AHB SRAM block 1 TODO MACHINE DEPENDENT
 //#define USB_RAM_BASE 0x20080000
 //#define USB_RAM_BASE 0x2007C000
@@ -895,7 +895,7 @@
 //      Host controller instance and Interrupt handler
 
 //static HostController _controller __attribute__((at(USB_RAM_BASE)));
-static __align(4096) HostController _controller __attribute__((section("AHBSRAM1")));
+static __align(256) HostController _controller __attribute__((section("AHBSRAM1")));
 
 extern "C" void USB_IRQHandler(void) __irq;
 void USB_IRQHandler (void) __irq
--- a/main.cpp	Sun Sep 30 07:41:28 2012 +0000
+++ b/main.cpp	Sun Sep 30 12:45:05 2012 +0000
@@ -19,7 +19,9 @@
 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 THE SOFTWARE.
 */
-
+#ifndef OS_TICK 
+#define OS_TICK        50000
+#endif
 #include "USBHost.h"
 #include "Utils.h"
 #include "TextLCD.h"
@@ -36,9 +38,25 @@
 Ticker timer1;
 time_t ctTime;
 char timezone[] = "+09:00";  // JST
+char atemp1[6],atemp2[6],avolt1[6],avolt2[6],afreq1[6],afreq2[6];
+char apower_a1[6],apower_a2[6],apower_b1[6],apower_b2[6],apower_c1[6],apower_c2[6],apower_d1[6],apower_d2[6];
 char atemp[6],avolt[6],afreq[6], apower1[6],apower2[6],apower3[6],apower4[6];
 FIAP fiap("http://192.168.1.3/axis2/services/FIAPStorage");
 struct fiap_element element[]= {
+    {"http://www.gutp.jp/SmartTap1/temp",atemp1,NULL,NULL,NULL,NULL,NULL,NULL,timezone},
+    {"http://www.gutp.jp/SmartTap1/volt",avolt1,NULL,NULL,NULL,NULL,NULL,NULL,timezone},
+    {"http://www.gutp.jp/SmartTap1/freq",afreq1,NULL,NULL,NULL,NULL,NULL,NULL,timezone},
+    {"http://www.gutp.jp/SmartTap1/watt_1",apower_a1,NULL,NULL,NULL,NULL,NULL,NULL,timezone},
+    {"http://www.gutp.jp/SmartTap1/watt_2",apower_b1,NULL,NULL,NULL,NULL,NULL,NULL,timezone},
+    {"http://www.gutp.jp/SmartTap1/watt_3",apower_c1,NULL,NULL,NULL,NULL,NULL,NULL,timezone},
+    {"http://www.gutp.jp/SmartTap1/watt_4",apower_d1,NULL,NULL,NULL,NULL,NULL,NULL,timezone},
+    {"http://www.gutp.jp/SmartTap2/temp",atemp2,NULL,NULL,NULL,NULL,NULL,NULL,timezone},
+    {"http://www.gutp.jp/SmartTap2/volt",avolt2,NULL,NULL,NULL,NULL,NULL,NULL,timezone},
+    {"http://www.gutp.jp/SmartTap2/freq",afreq2,NULL,NULL,NULL,NULL,NULL,NULL,timezone},
+    {"http://www.gutp.jp/SmartTap2/watt_1",apower_a2,NULL,NULL,NULL,NULL,NULL,NULL,timezone},
+    {"http://www.gutp.jp/SmartTap2/watt_2",apower_b2,NULL,NULL,NULL,NULL,NULL,NULL,timezone},
+    {"http://www.gutp.jp/SmartTap2/watt_3",apower_c2,NULL,NULL,NULL,NULL,NULL,NULL,timezone},
+    {"http://www.gutp.jp/SmartTap2/watt_4",apower_d2,NULL,NULL,NULL,NULL,NULL,NULL,timezone},
     {"http://www.gutp.jp/SmartTap1/temp",atemp,NULL,NULL,NULL,NULL,NULL,NULL,timezone},
     {"http://www.gutp.jp/SmartTap1/volt",avolt,NULL,NULL,NULL,NULL,NULL,NULL,timezone},
     {"http://www.gutp.jp/SmartTap1/freq",afreq,NULL,NULL,NULL,NULL,NULL,NULL,timezone},
@@ -119,9 +137,9 @@
         }
         if(t2>1) { //Data to LCDText
             t2.start();
-            if(SerialNo[0]==0)led1=0;
-            else led1=1;
-            lcd.locate(0,0);
+            if(SerialNo[0]==0)led1=0;else led1=1;
+            if(SerialNo[1]==0)led2=0;else led2=1;
+                        lcd.locate(0,0);
             lcd.printf("1:%4.0fW  2:%4.0fW",WattData1[0],WattData2[0]);
             lcd.locate(0,1);
             lcd.printf("3:%4.0fW  4:%4.0fW",WattData3[0],WattData4[0]);
@@ -135,7 +153,7 @@
             printf("Storage Store %s \r\n",buffer);
 // Save to FIAPStorage
             struct tm t = *localtime(&ctTime);
-            for(i=0; i<7; i++) {
+            for(i=0; i<14; i++) {
                 element[i].year=t.tm_year+1900;
                 element[i].month=t.tm_mon+1;
                 element[i].day=t.tm_mday;
@@ -143,16 +161,31 @@
                 element[i].minute=t.tm_min;
                 element[i].second=t.tm_sec;
             }
-            sprintf(atemp,"%4.1f",TempData[0]);
-            sprintf(avolt,"%4.1f",VoltData[0]);
-            sprintf(afreq,"%4.1f",FreqData[0]);
-            sprintf(apower1,"%4.0f",WattData1[0]);
-            sprintf(apower2,"%4.0f",WattData2[0]);
-            sprintf(apower3,"%4.0f",WattData3[0]);
-            sprintf(apower4,"%4.0f",WattData4[0]);
-            fiap.post(element,7);
+              for(i=0; i<2; i++) {
+                switch(SerialNo[i]) {
+                    case 0x1737:
+                        sprintf(atemp1,"%4.1f",TempData[i]);
+                        sprintf(avolt1,"%4.1f",VoltData[i]);
+                        sprintf(afreq1,"%4.1f",FreqData[i]);
+                        sprintf(apower_a1,"%4.0f",WattData1[i]);
+                        sprintf(apower_b1,"%4.0f",WattData2[i]);
+                        sprintf(apower_c1,"%4.0f",WattData3[i]);
+                        sprintf(apower_d1,"%4.0f",WattData4[i]);
+                        break;
+                    case 0x1871:
+                        sprintf(atemp2,"%4.1f",TempData[i]);
+                        sprintf(avolt2,"%4.1f",VoltData[i]);
+                        sprintf(afreq2,"%4.1f",FreqData[i]);
+                        sprintf(apower_a2,"%4.0f",WattData1[i]);
+                        sprintf(apower_b2,"%4.0f",WattData2[i]);
+                        sprintf(apower_c2,"%4.0f",WattData3[i]);
+                        sprintf(apower_d2,"%4.0f",WattData4[i]);
+                        break;
+                }
+            }
+            fiap.post(element,14);
             led3=0;
-            led2=!led2;
+            
         }
     }
 }