スマートコンセント(富士通 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との整合により難しいかもしれません)

Revision:
5:96a70a8cebb9
Parent:
3:528f73ce625e
Child:
6:08a406cd2726
--- a/main.cpp	Sun Sep 30 05:44:10 2012 +0000
+++ b/main.cpp	Sun Sep 30 07:41:28 2012 +0000
@@ -22,7 +22,6 @@
 
 #include "USBHost.h"
 #include "Utils.h"
-#include "FATFileSystem.h"
 #include "TextLCD.h"
 #include "EthernetInterface.h"
 #include "NTPClient.h"
@@ -37,89 +36,18 @@
 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},
+    {"http://www.gutp.jp/SmartTap1/watt_1",apower1,NULL,NULL,NULL,NULL,NULL,NULL,timezone},
+    {"http://www.gutp.jp/SmartTap1/watt_2",apower2,NULL,NULL,NULL,NULL,NULL,NULL,timezone},
+    {"http://www.gutp.jp/SmartTap1/watt_3",apower3,NULL,NULL,NULL,NULL,NULL,NULL,timezone},
+    {"http://www.gutp.jp/SmartTap1/watt_4",apower4,NULL,NULL,NULL,NULL,NULL,NULL,timezone},
 };
 
-int MassStorage_ReadCapacity(int device, u32* blockCount, u32* blockSize);
-int MassStorage_Read(int device, u32 blockAddr, u32 blockCount, u8* dst, u32 blockSize);
-int MassStorage_Write(int device, u32 blockAddr, u32 blockCount, u8* dst, u32 blockSize);
-
-class USBFileSystem : public FATFileSystem
-{
-    int _device;
-    u32 _blockSize;
-    u32 _blockCount;
-
-public:
-    USBFileSystem() : FATFileSystem("usb"),_device(0),_blockSize(0),_blockCount(0) {
-    }
-
-    void SetDevice(int device) {
-        _device = device;
-    }
-
-    virtual int disk_initialize() {
-        return MassStorage_ReadCapacity(_device,&_blockCount,&_blockSize);
-    }
-
-    virtual int disk_write(const char *buffer, int block_number) {
-        return MassStorage_Write(_device,block_number,1,(u8*)buffer,_blockSize);
-    }
-
-    virtual int disk_read(char *buffer, int block_number) {
-        return MassStorage_Read(_device,block_number,1,(u8*)buffer,_blockSize);
-    }
-
-    virtual int disk_sectors() {
-        return _blockCount;
-    }
-};
-
-void DumpFS(int depth, int count)
-{
-    DIR *d = opendir("/usb");
-    if (!d) {
-        printf("USB file system borked\n");
-        return;
-    }
-
-    printf("\nDumping root dir\n");
-    struct dirent *p;
-    for(;;) {
-        p = readdir(d);
-        if (!p)
-            break;
-        int len = sizeof( dirent);
-        printf("%s %d\n", p->d_name, len);
-    }
-    closedir(d);
-}
-
-int OnDiskInsert(int device)
-{
-    USBFileSystem fs;
-    fs.SetDevice(device);
-    DumpFS(0,0);
-    return 0;
-}
-
 /*
     Simple test shell to exercise mouse,keyboard,mass storage and hubs.
     Add 2 15k pulldown resistors between D+/D- and ground, attach a usb socket and have at it.
@@ -178,6 +106,7 @@
 
     InitUSPS();
     USBInit();
+    fiap.debug_mode=1;
     t.start();
     t2.start();
     t3.start();
@@ -192,16 +121,13 @@
             t2.start();
             if(SerialNo[0]==0)led1=0;
             else led1=1;
-            if(SerialNo[1]==0)led2=0;
-            else led2=1;
-            if(SerialNo[2]==0)led3=0;
-            else led3=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]);
         }
         if(t3>60) { //Data to FiapStorage
+            led3=1;
             t3.start();
             char buffer[9];
             ctTime = time(NULL);
@@ -209,37 +135,24 @@
             printf("Storage Store %s \r\n",buffer);
 // Save to FIAPStorage
             struct tm t = *localtime(&ctTime);
-            for(i=0; i<14; i++) {
-                element[0].year=t.tm_year+1900;
-                element[0].month=t.tm_mon+1;
-                element[0].day=t.tm_mday;
-                element[0].hour=t.tm_hour;
-                element[0].minute=t.tm_min;
-                element[0].second=t.tm_sec;
+            for(i=0; i<7; i++) {
+                element[i].year=t.tm_year+1900;
+                element[i].month=t.tm_mon+1;
+                element[i].day=t.tm_mday;
+                element[i].hour=t.tm_hour;
+                element[i].minute=t.tm_min;
+                element[i].second=t.tm_sec;
             }
-            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,1);
+            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);
+            led3=0;
+            led2=!led2;
         }
     }
 }