各ピンへのread/writeを提供するサーバサンプル
Dependencies: NySNICInterface mbed-rtos mbed
RPCObject.h@0:998e2e00df0c, 2015-02-10 (annotated)
- Committer:
- komoritan
- Date:
- Tue Feb 10 12:15:47 2015 +0000
- Revision:
- 0:998e2e00df0c
Fixed
Who changed what in which revision?
User | Revision | Line number | New 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 |