![](/media/cache/group/Download_mxxYCWN.jpg.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 RPCHTTPServerVariable by
main.cpp@6:c9c7ffa0594e, 2015-01-14 (annotated)
- Committer:
- marcel1691
- Date:
- Wed Jan 14 18:52:15 2015 +0000
- Revision:
- 6:c9c7ffa0594e
- Parent:
- 5:bfa9878aa274
- Child:
- 7:8a319a112fba
HTTPServer mit RPC, SimpleHandler und Zugriff auf SD Karte
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
yueee_yt | 0:050a5d4ffd55 | 1 | //#define DNS_SERVER_ADDRESS(ipaddr) (ip4_addr_set_u32(ipaddr, ipaddr_addr("208.67.222.222"))) /* resolver1.opendns.com */ |
marcel1691 | 6:c9c7ffa0594e | 2 | |
yueee_yt | 0:050a5d4ffd55 | 3 | #include "mbed.h" |
yueee_yt | 0:050a5d4ffd55 | 4 | #include "rtos.h" |
yueee_yt | 0:050a5d4ffd55 | 5 | #include "EthernetInterface.h" |
yueee_yt | 0:050a5d4ffd55 | 6 | #include "HTTPServer.h" |
yueee_yt | 3:5758cfefe980 | 7 | #include "mbed_rpc.h" |
marcel1691 | 6:c9c7ffa0594e | 8 | #include "SDFileSystem.h" |
yueee_yt | 5:bfa9878aa274 | 9 | |
yueee_yt | 0:050a5d4ffd55 | 10 | EthernetInterface eth; |
yueee_yt | 3:5758cfefe980 | 11 | |
yueee_yt | 3:5758cfefe980 | 12 | DigitalOut led4(LED4); |
yueee_yt | 5:bfa9878aa274 | 13 | |
marcel1691 | 6:c9c7ffa0594e | 14 | //LocalFileSystem local("local"); |
marcel1691 | 6:c9c7ffa0594e | 15 | SDFileSystem sd(PTE3, PTE1, PTE2, PTE4, "local"); |
yueee_yt | 0:050a5d4ffd55 | 16 | |
yueee_yt | 5:bfa9878aa274 | 17 | void aliveState(void const *args) |
yueee_yt | 5:bfa9878aa274 | 18 | { |
marcel1691 | 6:c9c7ffa0594e | 19 | while (true) |
marcel1691 | 6:c9c7ffa0594e | 20 | { |
yueee_yt | 3:5758cfefe980 | 21 | led4 = !led4; |
marcel1691 | 6:c9c7ffa0594e | 22 | Thread::wait(2000); |
yueee_yt | 0:050a5d4ffd55 | 23 | } |
yueee_yt | 0:050a5d4ffd55 | 24 | } |
yueee_yt | 0:050a5d4ffd55 | 25 | |
marcel1691 | 6:c9c7ffa0594e | 26 | uint32_t do_list(const char *fsrc) |
marcel1691 | 6:c9c7ffa0594e | 27 | { |
marcel1691 | 6:c9c7ffa0594e | 28 | DIR *d = opendir(fsrc); |
marcel1691 | 6:c9c7ffa0594e | 29 | struct dirent *p; |
marcel1691 | 6:c9c7ffa0594e | 30 | uint32_t counter = 0; |
marcel1691 | 6:c9c7ffa0594e | 31 | |
marcel1691 | 6:c9c7ffa0594e | 32 | while ((p = readdir(d)) != NULL) { |
marcel1691 | 6:c9c7ffa0594e | 33 | counter++; |
marcel1691 | 6:c9c7ffa0594e | 34 | printf("%s\n", p->d_name); |
marcel1691 | 6:c9c7ffa0594e | 35 | } |
marcel1691 | 6:c9c7ffa0594e | 36 | closedir(d); |
marcel1691 | 6:c9c7ffa0594e | 37 | return counter; |
marcel1691 | 6:c9c7ffa0594e | 38 | } |
marcel1691 | 6:c9c7ffa0594e | 39 | |
yueee_yt | 0:050a5d4ffd55 | 40 | int main() |
yueee_yt | 0:050a5d4ffd55 | 41 | { |
yueee_yt | 0:050a5d4ffd55 | 42 | printf("********* PROGRAM START ***********\r\n"); |
yueee_yt | 0:050a5d4ffd55 | 43 | Thread thread(aliveState); |
yueee_yt | 3:5758cfefe980 | 44 | RPC::add_rpc_class<RpcDigitalOut>(); |
marcel1691 | 6:c9c7ffa0594e | 45 | RPC::construct<RpcDigitalOut, PinName, const char*>(PTC3, "led1"); |
marcel1691 | 6:c9c7ffa0594e | 46 | RPC::construct<RpcDigitalOut, PinName, const char*>(PTC2, "led2"); |
marcel1691 | 6:c9c7ffa0594e | 47 | RPC::construct<RpcDigitalOut, PinName, const char*>(PTA2, "led3"); |
marcel1691 | 6:c9c7ffa0594e | 48 | //RPCFunction rpcFunc(LcdWrite, "LcdWrite"); //ADD Here!! |
yueee_yt | 3:5758cfefe980 | 49 | |
yueee_yt | 0:050a5d4ffd55 | 50 | printf("EthernetInterface Setting up...\r\n"); |
marcel1691 | 6:c9c7ffa0594e | 51 | if(eth.init()!=0) |
marcel1691 | 6:c9c7ffa0594e | 52 | { //for DHCP Server |
yueee_yt | 5:bfa9878aa274 | 53 | //if(eth.init(IPAddress,NetMasks,Gateway)!=0) { //for Static IP Address |
yueee_yt | 0:050a5d4ffd55 | 54 | printf("EthernetInterface Initialize Error \r\n"); |
yueee_yt | 0:050a5d4ffd55 | 55 | return -1; |
yueee_yt | 0:050a5d4ffd55 | 56 | } |
marcel1691 | 6:c9c7ffa0594e | 57 | if(eth.connect()!=0) |
marcel1691 | 6:c9c7ffa0594e | 58 | { |
yueee_yt | 0:050a5d4ffd55 | 59 | printf("EthernetInterface Connect Error \r\n"); |
yueee_yt | 0:050a5d4ffd55 | 60 | return -1; |
yueee_yt | 0:050a5d4ffd55 | 61 | } |
yueee_yt | 0:050a5d4ffd55 | 62 | printf("IP Address is %s\r\n", eth.getIPAddress()); |
yueee_yt | 0:050a5d4ffd55 | 63 | printf("NetMask is %s\r\n", eth.getNetworkMask()); |
yueee_yt | 0:050a5d4ffd55 | 64 | printf("Gateway Address is %s\r\n", eth.getGateway()); |
yueee_yt | 0:050a5d4ffd55 | 65 | printf("Ethernet Setup OK\r\n"); |
yueee_yt | 0:050a5d4ffd55 | 66 | |
marcel1691 | 6:c9c7ffa0594e | 67 | printf("\nList all directories/files /local.\n"); |
marcel1691 | 6:c9c7ffa0594e | 68 | do_list("/local"); |
marcel1691 | 6:c9c7ffa0594e | 69 | |
yueee_yt | 3:5758cfefe980 | 70 | HTTPServerAddHandler<SimpleHandler>("/hello"); //Default handler |
yueee_yt | 3:5758cfefe980 | 71 | FSHandler::mount("/local", "/"); |
yueee_yt | 3:5758cfefe980 | 72 | HTTPServerAddHandler<FSHandler>("/"); |
yueee_yt | 3:5758cfefe980 | 73 | HTTPServerAddHandler<RPCHandler>("/rpc"); |
yueee_yt | 0:050a5d4ffd55 | 74 | HTTPServerStart(80); |
yueee_yt | 0:050a5d4ffd55 | 75 | } |
yueee_yt | 0:050a5d4ffd55 | 76 | |
yueee_yt | 4:155c6ff99458 | 77 | void LcdWrite(Arguments* arg, Reply* r) //ADD Here!! |
yueee_yt | 4:155c6ff99458 | 78 | { |
marcel1691 | 6:c9c7ffa0594e | 79 | printf("%s",arg->argv[0]); |
yueee_yt | 4:155c6ff99458 | 80 | } |