各ピンへのread/writeを提供するサーバサンプル

Dependencies:   NySNICInterface mbed-rtos mbed

Fork of RESTServerSample2 by KDDI Fx0 hackathon

Committer:
komoritan
Date:
Thu Mar 12 12:40:48 2015 +0000
Revision:
1:e5d3bd4af9da
Parent:
0:998e2e00df0c
Bug fix - handle_request

Who changed what in which revision?

UserRevisionLine numberNew contents of line
komoritan 0:998e2e00df0c 1 #ifndef RPCOBJECT
komoritan 0:998e2e00df0c 2 #define RPCOBJECT
komoritan 0:998e2e00df0c 3
komoritan 0:998e2e00df0c 4 #include <map>
komoritan 0:998e2e00df0c 5 #include "mbed.h"
komoritan 0:998e2e00df0c 6
komoritan 0:998e2e00df0c 7 enum RPC_PIN_TYPE {
komoritan 0:998e2e00df0c 8 RPC_PIN_DIGITAL_IN,
komoritan 0:998e2e00df0c 9 RPC_PIN_DIGITAL_OUT,
komoritan 0:998e2e00df0c 10 RPC_PIN_DIGITAL_INOUT,
komoritan 0:998e2e00df0c 11 RPC_PIN_UNKNOWN
komoritan 0:998e2e00df0c 12 };
komoritan 0:998e2e00df0c 13
komoritan 0:998e2e00df0c 14 struct rpc_arg
komoritan 0:998e2e00df0c 15 {
komoritan 0:998e2e00df0c 16 char *name;
komoritan 0:998e2e00df0c 17 char *val;
komoritan 0:998e2e00df0c 18 };
komoritan 0:998e2e00df0c 19
komoritan 0:998e2e00df0c 20 class RPCClass
komoritan 0:998e2e00df0c 21 {
komoritan 0:998e2e00df0c 22 public :
komoritan 0:998e2e00df0c 23 virtual int read()= 0;
komoritan 0:998e2e00df0c 24 virtual void write(int value) = 0;
komoritan 0:998e2e00df0c 25 };
komoritan 0:998e2e00df0c 26
komoritan 0:998e2e00df0c 27 class RPCDigitalIn : public RPCClass
komoritan 0:998e2e00df0c 28 {
komoritan 0:998e2e00df0c 29 public :
komoritan 0:998e2e00df0c 30 RPCDigitalIn(PinName pin) :i(pin){}
komoritan 0:998e2e00df0c 31 virtual int read(void){return i.read();}
komoritan 0:998e2e00df0c 32 virtual void write(int value){}
komoritan 0:998e2e00df0c 33
komoritan 0:998e2e00df0c 34 private :
komoritan 0:998e2e00df0c 35 DigitalIn i;
komoritan 0:998e2e00df0c 36 };
komoritan 0:998e2e00df0c 37
komoritan 0:998e2e00df0c 38 class RPCDigitalOut : public RPCClass
komoritan 0:998e2e00df0c 39 {
komoritan 0:998e2e00df0c 40 public :
komoritan 0:998e2e00df0c 41 RPCDigitalOut(PinName pin) :o(pin){}
komoritan 0:998e2e00df0c 42 virtual int read(void){return o.read();}
komoritan 0:998e2e00df0c 43 virtual void write(int value){o.write(value);}
komoritan 0:998e2e00df0c 44
komoritan 0:998e2e00df0c 45 private :
komoritan 0:998e2e00df0c 46 DigitalOut o;
komoritan 0:998e2e00df0c 47 };
komoritan 0:998e2e00df0c 48
komoritan 0:998e2e00df0c 49 class RPCDigitalInOut : public RPCClass
komoritan 0:998e2e00df0c 50 {
komoritan 0:998e2e00df0c 51 public :
komoritan 0:998e2e00df0c 52 RPCDigitalInOut(PinName pin) :o(pin){}
komoritan 0:998e2e00df0c 53 virtual int read(void){return o.read();}
komoritan 0:998e2e00df0c 54 virtual void write(int value){o.write(value);}
komoritan 0:998e2e00df0c 55
komoritan 0:998e2e00df0c 56 private :
komoritan 0:998e2e00df0c 57 DigitalInOut o;
komoritan 0:998e2e00df0c 58 };
komoritan 0:998e2e00df0c 59
komoritan 0:998e2e00df0c 60 class RPCObject
komoritan 0:998e2e00df0c 61 {
komoritan 0:998e2e00df0c 62 public :
komoritan 0:998e2e00df0c 63 RPCObject();
komoritan 0:998e2e00df0c 64 int decode(char *request, char* reply);
komoritan 0:998e2e00df0c 65
komoritan 0:998e2e00df0c 66 RPC_PIN_TYPE get_type() const { return type; }
komoritan 0:998e2e00df0c 67 PinName get_pin_name() const { return pin_name; }
komoritan 0:998e2e00df0c 68 int get_value() const { return value; }
komoritan 0:998e2e00df0c 69 bool create_pin_object(char* reply);
komoritan 0:998e2e00df0c 70 std::map<PinName, RPCClass*> pinObjects;
komoritan 0:998e2e00df0c 71
komoritan 0:998e2e00df0c 72 private :
komoritan 0:998e2e00df0c 73 RPC_PIN_TYPE type;
komoritan 0:998e2e00df0c 74 char obj_name[20];
komoritan 0:998e2e00df0c 75 PinName pin_name;
komoritan 0:998e2e00df0c 76 int value;
komoritan 0:998e2e00df0c 77 };
komoritan 0:998e2e00df0c 78 #endif
komoritan 0:998e2e00df0c 79