![](/media/cache/group/ep_srxDLMd.webp.50x50_q85.jpg)
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
Diff: main.cpp
- Revision:
- 9:66ff9ae5572e
- Parent:
- 8:3e6bfb96a451
- Child:
- 10:f92d1e679fea
diff -r 3e6bfb96a451 -r 66ff9ae5572e main.cpp --- a/main.cpp Sat Mar 07 12:57:40 2015 +0000 +++ b/main.cpp Wed Mar 11 17:48:42 2015 +0000 @@ -1,111 +1,34 @@ -//#define DNS_SERVER_ADDRESS(ipaddr) (ip4_addr_set_u32(ipaddr, ipaddr_addr("208.67.222.222"))) /* resolver1.opendns.com */ - +/** Minimalistischer RCP HTTP Server +*/ #include "mbed.h" #include "rtos.h" #include "EthernetInterface.h" #include "HTTPServer.h" #include "mbed_rpc.h" -#include "SDFileSystem.h" EthernetInterface eth; -DigitalOut led4(LED4); - -//LocalFileSystem local("local"); -SDFileSystem sd(PTE3, PTE1, PTE2, PTE4, "local"); - -static float value = 20; - -class AnalogInHandler : public SimpleHandler -{ -public: - AnalogInHandler(const char* rootPath, const char* path, TCPSocketConnection* pTCPSocketConnection) : SimpleHandler(rootPath, path, pTCPSocketConnection) { } - virtual ~AnalogInHandler() {} - -//protected: - static inline HTTPRequestHandler* inst(const char* rootPath, const char* path, TCPSocketConnection* pTCPSocketConnection) { return new AnalogInHandler(rootPath, path, pTCPSocketConnection); } //if we ever could do static virtual functions, this would be one - - virtual void doGet() - { - char buf[20]; - sprintf( buf, "%f", value ); - value += 0.01; - setContentLen( strlen(buf) ); - respHeaders()["Connection"] = "close"; - writeData(buf, strlen(buf)); - } - -}; - -void aliveState(void const *args) -{ - while (true) - { - led4 = !led4; - 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); - - // LED's + printf("RPC HTTP Server\n"); + eth.init(); //Use DHCP + eth.connect(); + printf("IP Address is %s\n\r", eth.getIPAddress()); + + // Klassen RPC::add_rpc_class<RpcDigitalOut>(); - RPC::construct<RpcDigitalOut, PinName, const char*>(PTC3, "led1"); - RPC::construct<RpcDigitalOut, PinName, const char*>(PTC2, "led2"); - RPC::construct<RpcDigitalOut, PinName, const char*>(PTA2, "led3"); - // Sensoren bringt Linkfehler - //RPC::add_rpc_class<RpcAnalogIn>(); - //RPC::construct<RpcAnalogIn, PinName, const char*>(PTB3, "s1"); - //RPCFunction rpcFunc(LcdWrite, "LcdWrite"); //ADD Here!! - + // Objekte + RPC::construct<RpcDigitalOut, PinName, const char*>(D10, "led1"); + RPC::construct<RpcDigitalOut, PinName, const char*>(D11, "led2"); + RPC::construct<RpcDigitalOut, PinName, const char*>(D12, "led3"); + RPC::construct<RpcDigitalOut, PinName, const char*>(D13, "led4"); - printf("EthernetInterface Setting up...\r\n"); - 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) - { - printf("EthernetInterface Connect Error \r\n"); - return -1; - } - printf("IP Address is %s\r\n", eth.getIPAddress()); - printf("NetMask is %s\r\n", eth.getNetworkMask()); - 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 - HTTPServerAddHandler<AnalogInHandler>("/analogIn"); //Default handler - FSHandler::mount("/local", "/"); - HTTPServerAddHandler<FSHandler>("/"); + // Handler HTTPServerAddHandler<RPCHandler>("/rpc"); + + // Start HTTP Server auf Port 80 + printf( "Starte Server\n" ); HTTPServerStart(80); } -void LcdWrite(Arguments* arg, Reply* r) //ADD Here!! -{ - printf("%s",arg->argv[0]); -}