MurataTypeYD_RPC_Sample fixed version for 050314
Dependencies: PowerControl SNICInterface_mod2 mbed-rtos mbed
Fork of HTTPClient_WiFi_HelloWorld by
RPCObject.cpp@6:6c49fdc29825, 2015-03-12 (annotated)
- Committer:
- komoritan
- Date:
- Thu Mar 12 12:27:31 2015 +0000
- Revision:
- 6:6c49fdc29825
Fixed
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
komoritan | 6:6c49fdc29825 | 1 | #include "RPCObject.h" |
komoritan | 6:6c49fdc29825 | 2 | #include "parse_pins.h" |
komoritan | 6:6c49fdc29825 | 3 | #include "mbed.h" |
komoritan | 6:6c49fdc29825 | 4 | #include "HTTPServer.h" |
komoritan | 6:6c49fdc29825 | 5 | // KTEC ADD START |
komoritan | 6:6c49fdc29825 | 6 | #include "RPC_Function.h" |
komoritan | 6:6c49fdc29825 | 7 | // KTEC ADD END |
komoritan | 6:6c49fdc29825 | 8 | |
komoritan | 6:6c49fdc29825 | 9 | RPCObject::RPCObject() |
komoritan | 6:6c49fdc29825 | 10 | { |
komoritan | 6:6c49fdc29825 | 11 | } |
komoritan | 6:6c49fdc29825 | 12 | |
komoritan | 6:6c49fdc29825 | 13 | |
komoritan | 6:6c49fdc29825 | 14 | int RPCObject::decode(char* request, char* reply) |
komoritan | 6:6c49fdc29825 | 15 | { |
komoritan | 6:6c49fdc29825 | 16 | // KTEC MOD START |
komoritan | 6:6c49fdc29825 | 17 | // 以下のようなURLで接続された場合は、関数を実行する |
komoritan | 6:6c49fdc29825 | 18 | // http://ipアドレス/rpc/setLed/1,0,1,1 LED1~4の点灯、消灯 |
komoritan | 6:6c49fdc29825 | 19 | // http://ipアドレス/rpc/getGyro/ ジャイロ情報の取得 |
komoritan | 6:6c49fdc29825 | 20 | char* rpc = strtok(request+1,"/"); |
komoritan | 6:6c49fdc29825 | 21 | char* method = strtok(NULL, "/"); |
komoritan | 6:6c49fdc29825 | 22 | char* param = strtok(NULL, "/"); |
komoritan | 6:6c49fdc29825 | 23 | DEBUG_PRINT("decode rpc = %s\r\n", rpc); |
komoritan | 6:6c49fdc29825 | 24 | DEBUG_PRINT("decode method = %s\r\n", method); |
komoritan | 6:6c49fdc29825 | 25 | DEBUG_PRINT("decode param = %s\r\n", param); |
komoritan | 6:6c49fdc29825 | 26 | |
komoritan | 6:6c49fdc29825 | 27 | if (strcmp(rpc, "rpc") == 0) { |
komoritan | 6:6c49fdc29825 | 28 | // LEDの点灯、消灯処理実行 |
komoritan | 6:6c49fdc29825 | 29 | if (strcmp(method, "setLed") == 0) { |
komoritan | 6:6c49fdc29825 | 30 | DEBUG_PRINT("decode call doSetLed \r\n"); |
komoritan | 6:6c49fdc29825 | 31 | doSetLed(param, reply); |
komoritan | 6:6c49fdc29825 | 32 | // ジャイロセンサーの値の取得処理実行 |
komoritan | 6:6c49fdc29825 | 33 | } else if (strcmp(method, "getGyro") == 0) { |
komoritan | 6:6c49fdc29825 | 34 | DEBUG_PRINT("decode call doGetGyro \r\n"); |
komoritan | 6:6c49fdc29825 | 35 | doGetGyro(param, reply); |
komoritan | 6:6c49fdc29825 | 36 | } else { |
komoritan | 6:6c49fdc29825 | 37 | DEBUG_PRINT("decode Unsupported method = %s\r\n", method); |
komoritan | 6:6c49fdc29825 | 38 | return -1; |
komoritan | 6:6c49fdc29825 | 39 | } |
komoritan | 6:6c49fdc29825 | 40 | } else { |
komoritan | 6:6c49fdc29825 | 41 | DEBUG_PRINT("decode rpc does not exist in URL, rpc = %s \r\n", rpc); |
komoritan | 6:6c49fdc29825 | 42 | return -1; |
komoritan | 6:6c49fdc29825 | 43 | } |
komoritan | 6:6c49fdc29825 | 44 | // KTEC MOD END |
komoritan | 6:6c49fdc29825 | 45 | |
komoritan | 6:6c49fdc29825 | 46 | return 0; |
komoritan | 6:6c49fdc29825 | 47 | } |
komoritan | 6:6c49fdc29825 | 48 | |
komoritan | 6:6c49fdc29825 | 49 | |
komoritan | 6:6c49fdc29825 | 50 | bool RPCObject::create_pin_object(char* reply) |
komoritan | 6:6c49fdc29825 | 51 | { |
komoritan | 6:6c49fdc29825 | 52 | RPCClass* pinobj; |
komoritan | 6:6c49fdc29825 | 53 | |
komoritan | 6:6c49fdc29825 | 54 | if(pinObjects.find(pin_name) != pinObjects.end()){ |
komoritan | 6:6c49fdc29825 | 55 | printf("The pin already exists.\r\n"); |
komoritan | 6:6c49fdc29825 | 56 | strcat(reply, "The pin already exists. "); |
komoritan | 6:6c49fdc29825 | 57 | return false; |
komoritan | 6:6c49fdc29825 | 58 | } |
komoritan | 6:6c49fdc29825 | 59 | |
komoritan | 6:6c49fdc29825 | 60 | switch(type){ |
komoritan | 6:6c49fdc29825 | 61 | case RPC_PIN_DIGITAL_IN: |
komoritan | 6:6c49fdc29825 | 62 | printf("DigitalIn.\r\n"); |
komoritan | 6:6c49fdc29825 | 63 | pinobj = new RPCDigitalIn(pin_name); |
komoritan | 6:6c49fdc29825 | 64 | break; |
komoritan | 6:6c49fdc29825 | 65 | case RPC_PIN_DIGITAL_OUT: |
komoritan | 6:6c49fdc29825 | 66 | printf("DigitalOut.\r\n"); |
komoritan | 6:6c49fdc29825 | 67 | pinobj = new RPCDigitalOut(pin_name); |
komoritan | 6:6c49fdc29825 | 68 | break; |
komoritan | 6:6c49fdc29825 | 69 | case RPC_PIN_DIGITAL_INOUT: |
komoritan | 6:6c49fdc29825 | 70 | printf("DigitalInOut.\r\n"); |
komoritan | 6:6c49fdc29825 | 71 | pinobj = new RPCDigitalInOut(pin_name); |
komoritan | 6:6c49fdc29825 | 72 | break; |
komoritan | 6:6c49fdc29825 | 73 | default: |
komoritan | 6:6c49fdc29825 | 74 | printf(" Unsupported type.\r\n"); |
komoritan | 6:6c49fdc29825 | 75 | strcat(reply, "Unsupported type. "); |
komoritan | 6:6c49fdc29825 | 76 | return false; |
komoritan | 6:6c49fdc29825 | 77 | } |
komoritan | 6:6c49fdc29825 | 78 | |
komoritan | 6:6c49fdc29825 | 79 | pinObjects[pin_name] = pinobj; |
komoritan | 6:6c49fdc29825 | 80 | |
komoritan | 6:6c49fdc29825 | 81 | return true; |
komoritan | 6:6c49fdc29825 | 82 | } |