8.1 Kombiniert das Übung 6.1 Licht bei Dämmerung einschalten mit RPC Variable um die Sensordaten via Client abzufragen.

Dependencies:   EthernetInterface HttpServer mbed-rpc mbed-rtos mbed

Fork of 08-01-Uebung by th.iotkit2.ch

Revision:
6:c9c7ffa0594e
Parent:
5:bfa9878aa274
Child:
7:8a319a112fba
--- a/main.cpp	Sat Feb 22 05:55:58 2014 +0000
+++ b/main.cpp	Wed Jan 14 18:52:15 2015 +0000
@@ -1,47 +1,61 @@
 //#define DNS_SERVER_ADDRESS(ipaddr)        (ip4_addr_set_u32(ipaddr, ipaddr_addr("208.67.222.222"))) /* resolver1.opendns.com */
+
 #include "mbed.h"
 #include "rtos.h"
 #include "EthernetInterface.h"
 #include "HTTPServer.h"
 #include "mbed_rpc.h"
-#include "TextLCD.h"
+#include "SDFileSystem.h"
 
 EthernetInterface eth;
 
 DigitalOut led4(LED4);
 
-LocalFileSystem local("local");
-void LcdWrite(Arguments* arg, Reply* r);    //ADD Here!!
-
-TextLCD lcd(p24, p26, p27, p28, p29, p30);
+//LocalFileSystem local("local");
+SDFileSystem sd(PTE3, PTE1, PTE2, PTE4, "local"); 
 
 void aliveState(void const *args)
 {
-    while (true) {
+    while (true) 
+    {
         led4 = !led4;
-        Thread::wait(1000);
+        Thread::wait(2000);
     }
 }
 
+uint32_t do_list(const char *fsrc)
+{
+    DIR *d = opendir(fsrc);
+    struct dirent *p;
+    uint32_t counter = 0;
+
+    while ((p = readdir(d)) != NULL) {
+        counter++;
+        printf("%s\n", p->d_name);
+    }
+    closedir(d);
+    return counter;
+}
+
 int main()
 {
     printf("********* PROGRAM START ***********\r\n");
     Thread thread(aliveState);
     RPC::add_rpc_class<RpcDigitalOut>();
-    RPC::construct<RpcDigitalOut, PinName, const char*>(LED1, "led1");
-    RPC::construct<RpcDigitalOut, PinName, const char*>(LED2, "led2");
-    RPC::construct<RpcDigitalOut, PinName, const char*>(LED3, "led3");
-    RPCFunction rpcFunc(LcdWrite, "LcdWrite"); //ADD Here!!
-    lcd.cls();
-    lcd.locate(0,0);
+    RPC::construct<RpcDigitalOut, PinName, const char*>(PTC3, "led1");
+    RPC::construct<RpcDigitalOut, PinName, const char*>(PTC2, "led2");
+    RPC::construct<RpcDigitalOut, PinName, const char*>(PTA2, "led3");
+    //RPCFunction rpcFunc(LcdWrite, "LcdWrite"); //ADD Here!!
 
     printf("EthernetInterface Setting up...\r\n");
-    if(eth.init()!=0) {                             //for DHCP Server
+    if(eth.init()!=0) 
+    {                             //for DHCP Server
         //if(eth.init(IPAddress,NetMasks,Gateway)!=0) { //for Static IP Address
         printf("EthernetInterface Initialize Error \r\n");
         return -1;
     }
-    if(eth.connect()!=0) {
+    if(eth.connect()!=0) 
+    {
         printf("EthernetInterface Connect Error \r\n");
         return -1;
     }
@@ -50,17 +64,17 @@
     printf("Gateway Address is %s\r\n", eth.getGateway());
     printf("Ethernet Setup OK\r\n");
 
+    printf("\nList all directories/files /local.\n");
+    do_list("/local");
+
     HTTPServerAddHandler<SimpleHandler>("/hello"); //Default handler
     FSHandler::mount("/local", "/");
     HTTPServerAddHandler<FSHandler>("/");
     HTTPServerAddHandler<RPCHandler>("/rpc");
-    lcd.locate(0,0);
-    lcd.printf("%s",eth.getIPAddress());
     HTTPServerStart(80);
 }
 
 void LcdWrite(Arguments* arg, Reply* r)  //ADD Here!!
 {
-    lcd.locate(0,1);
-    lcd.printf("%s",arg->argv[0]);
+    printf("%s",arg->argv[0]);
 }