Changeset 264 for uKadecot/trunk/kadecot


Ignore:
Timestamp:
Nov 18, 2016, 3:02:07 PM (7 years ago)
Author:
coas-nagasima
Message:

KadecotAPIの文字列確認の方法を変更

Location:
uKadecot/trunk/kadecot
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • uKadecot/trunk/kadecot/wamp.c

    r108 r264  
    13381338                if ((action == JSONSL_ACTION_POP)
    13391339                        && (state->type == JSONSL_T_STRING)) {
    1340                         wamp_dealer_call_procedure(&s->dealer, s->jsn_buf);
     1340                        wamp_dealer_call_procedure(&s->dealer, s->jsn_buf, strnlen(s->jsn_buf, sizeof(s->jsn_buf)));
    13411341                        s->prmst = WAMP_PARAM_STATE_ARGUMENTS_LIST;
    13421342                        s->state = WAMP_PARSE_STATE_LIST_PUSH;
  • uKadecot/trunk/kadecot/wamp_dealer.c

    r158 r264  
    182182}
    183183
    184 void wamp_dealer_call_procedure(wamp_dealer_t *dealer, const char *value)
    185 {
    186         static const char getDeviceList[] = "com.sonycsl.kadecot.provider.procedure.getDeviceList";
    187         static const char kadecotGet[] = "com.sonycsl.kadecot.echonetlite.procedure.get";
    188         static const char kadecotSet[] = "com.sonycsl.kadecot.echonetlite.procedure.set";
    189         static const char getDeviceInfo[] = "jp.toppers.ecnl.procedure.getDeviceInfo";
    190         static const char ecnlSet[] = "jp.toppers.ecnl.procedure.set";
    191         static const char ecnlGet[] = "jp.toppers.ecnl.procedure.get";
    192         static const char ecnlSetGet[] = "jp.toppers.ecnl.procedure.setget";
    193         static const char pinMode[] = "com.sonycsl.kadecot.arduino.pinMode";
    194         static const char digitalWrite[] = "com.sonycsl.kadecot.arduino.digitalWrite";
    195         static const char digitalRead[] = "com.sonycsl.kadecot.arduino.digitalRead";
    196         static const char analogRead[] = "com.sonycsl.kadecot.arduino.analogRead";
    197         static const char analogWrite[] = "com.sonycsl.kadecot.arduino.analogWrite";
    198         static const char setInitParams[] = "jp.toppers.ecnl.procedure.setInitParams";
    199         static const char getInitParams[] = "jp.toppers.ecnl.procedure.getInitParams";
    200 
    201         if(strcmp(getDeviceList, value) == 0){
    202                 dealer->procedure = WAMP_DEALER_PROCEDURE_GET_DEVICELIST;
    203                 dealer->args_parse = wamp_dealer_call_dummy_param;
    204                 dealer->call_close = wamp_dealer_get_devicelist_close;
    205         }
    206         else if(strcmp(kadecotGet, value) == 0){
    207                 dealer->procedure = WAMP_DEALER_PROCEDURE_KADECOT_GET;
    208                 dealer->args_parse = wamp_dealer_call_kadecot_param;
    209                 dealer->call_close = wamp_dealer_kadecot_get_close;
    210         }
    211         else if(strcmp(kadecotSet, value) == 0){
    212                 dealer->procedure = WAMP_DEALER_PROCEDURE_KADECOT_SET;
    213                 dealer->args_parse = wamp_dealer_call_kadecot_param;
    214                 dealer->call_close = wamp_dealer_kadecot_set_close;
    215         }
    216         else if(strcmp(getDeviceInfo, value) == 0){
    217                 dealer->procedure = WAMP_DEALER_PROCEDURE_GET_DEVICEINFO;
    218                 dealer->args_parse = wamp_dealer_call_dummy_param;
    219                 dealer->call_close = wamp_dealer_get_deviceinfo_close;
    220         }
    221         else if(strcmp(ecnlSet, value) == 0){
    222                 dealer->procedure = WAMP_DEALER_PROCEDURE_ECNL_SET;
    223                 dealer->args_parse = wamp_dealer_call_ecnl_param;
    224                 dealer->call_close = wamp_dealer_ecnl_set_close;
    225         }
    226         else if(strcmp(ecnlGet, value) == 0){
    227                 dealer->procedure = WAMP_DEALER_PROCEDURE_ECNL_GET;
    228                 dealer->args_parse = wamp_dealer_call_ecnl_param;
    229                 dealer->call_close = wamp_dealer_ecnl_get_close;
    230         }
    231         else if(strcmp(ecnlSetGet, value) == 0){
    232                 dealer->procedure = WAMP_DEALER_PROCEDURE_ECNL_SETGET;
    233                 dealer->args_parse = wamp_dealer_call_ecnl_param;
    234                 dealer->call_close = wamp_dealer_ecnl_setget_close;
    235         }
    236         else if(strcmp(pinMode, value) == 0){
    237                 dealer->procedure = WAMP_DEALER_PROCEDURE_PIN_MODE;
    238                 dealer->args_parse = wamp_dealer_call_arduino_param;
    239                 dealer->call_close = wamp_dealer_pin_mode_close;
    240         }
    241         else if(strcmp(digitalWrite, value) == 0){
    242                 dealer->procedure = WAMP_DEALER_PROCEDURE_DIGITAL_WRITE;
    243                 dealer->args_parse = wamp_dealer_call_arduino_param;
    244                 dealer->call_close = wamp_dealer_digital_write_close;
    245         }
    246         else if(strcmp(digitalRead, value) == 0){
    247                 dealer->procedure = WAMP_DEALER_PROCEDURE_DIGITAL_READ;
    248                 dealer->args_parse = wamp_dealer_call_arduino_param;
    249                 dealer->call_close = wamp_dealer_digital_read_close;
    250         }
    251         else if(strcmp(analogRead, value) == 0){
    252                 dealer->procedure = WAMP_DEALER_PROCEDURE_ANALOG_READ;
    253                 dealer->args_parse = wamp_dealer_call_arduino_param;
    254                 dealer->call_close = wamp_dealer_analog_read_close;
    255         }
    256         else if(strcmp(analogWrite, value) == 0){
    257                 dealer->procedure = WAMP_DEALER_PROCEDURE_ANALOG_WRITE;
    258                 dealer->args_parse = wamp_dealer_call_arduino_param;
    259                 dealer->call_close = wamp_dealer_analog_write_close;
    260         }
    261         else if(strcmp(setInitParams, value) == 0){
    262                 dealer->procedure = WAMP_DEALER_PROCEDURE_SET_INIT_PARAMS;
    263                 dealer->args_parse = wamp_dealer_call_init_params_param;
    264                 dealer->call_close = wamp_dealer_set_init_params_close;
    265         }
    266         else if (strcmp(getInitParams, value) == 0) {
    267                 dealer->procedure = WAMP_DEALER_PROCEDURE_GET_INIT_PARAMS;
    268                 dealer->args_parse = wamp_dealer_call_init_params_param;
    269                 dealer->call_close = wamp_dealer_get_init_params_close;
    270         }
    271         else{
    272                 dealer->procedure = WAMP_DEALER_PROCEDURE_NONE;
    273                 dealer->args_parse = wamp_dealer_call_dummy_param;
    274                 dealer->call_close = wamp_dealer_none_close;
    275         }
     184void wamp_dealer_call_procedure(wamp_dealer_t *dealer, const char *value, int length)
     185{
     186        static const char comSonycslKadecot[] = "com.sonycsl.kadecot.";
     187        static const char jpToppersEcnl[] = "jp.toppers.ecnl.";
     188        const char *start = value;
     189
     190        if (strncmp(comSonycslKadecot, value, sizeof(comSonycslKadecot) - 1) == 0) {
     191                static const char provider[] = "provider.procedure.";
     192                static const char echonetlite[] = "echonetlite.procedure.";
     193                static const char arduino[] = "arduino.";
     194                value = &value[sizeof(comSonycslKadecot) - 1];
     195
     196                if (strncmp(provider, value, sizeof(provider) - 1) == 0) {
     197                        static const char getDeviceList[] = "getDeviceList";
     198                        value = &value[sizeof(provider) - 1];
     199
     200                        if (strncmp(getDeviceList, value, sizeof(getDeviceList) - 1) == 0) {
     201                                dealer->procedure = WAMP_DEALER_PROCEDURE_GET_DEVICELIST;
     202                                dealer->args_parse = wamp_dealer_call_dummy_param;
     203                                dealer->call_close = wamp_dealer_get_devicelist_close;
     204                                return;
     205                        }
     206                }
     207                else if (strncmp(echonetlite, value, sizeof(echonetlite) - 1) == 0) {
     208                        static const char kadecotGet[] = "get";
     209                        static const char kadecotSet[] = "set";
     210                        value = &value[sizeof(echonetlite) - 1];
     211
     212                        if (strncmp(kadecotGet, value, sizeof(kadecotGet) - 1) == 0) {
     213                                dealer->procedure = WAMP_DEALER_PROCEDURE_KADECOT_GET;
     214                                dealer->args_parse = wamp_dealer_call_kadecot_param;
     215                                dealer->call_close = wamp_dealer_kadecot_get_close;
     216                                return;
     217                        }
     218                        else if (strncmp(kadecotSet, value, sizeof(kadecotSet) - 1) == 0) {
     219                                dealer->procedure = WAMP_DEALER_PROCEDURE_KADECOT_SET;
     220                                dealer->args_parse = wamp_dealer_call_kadecot_param;
     221                                dealer->call_close = wamp_dealer_kadecot_set_close;
     222                                return;
     223                        }
     224
     225                        for (int i = value - start; i < length; i++) {
     226                                if (*value == '.' || *value == '\0') {
     227                                        value++;
     228                                        break;
     229                                }
     230                                value++;
     231                        }
     232
     233                        if (strncmp(kadecotGet, value, sizeof(kadecotGet) - 1) == 0) {
     234                                dealer->procedure = WAMP_DEALER_PROCEDURE_KADECOT_GET;
     235                                dealer->args_parse = wamp_dealer_call_kadecot_param;
     236                                dealer->call_close = wamp_dealer_kadecot_get_close;
     237                                return;
     238                        }
     239                        else if (strncmp(kadecotSet, value, sizeof(kadecotSet) - 1) == 0) {
     240                                dealer->procedure = WAMP_DEALER_PROCEDURE_KADECOT_SET;
     241                                dealer->args_parse = wamp_dealer_call_kadecot_param;
     242                                dealer->call_close = wamp_dealer_kadecot_set_close;
     243                                return;
     244                        }
     245                }
     246                else if (strncmp(arduino, value, sizeof(arduino) - 1) == 0) {
     247                        static const char pinMode[] = "pinMode";
     248                        static const char digitalWrite[] = "digitalWrite";
     249                        static const char digitalRead[] = "digitalRead";
     250                        static const char analogRead[] = "analogRead";
     251                        static const char analogWrite[] = "analogWrite";
     252                        value = &value[sizeof(arduino) - 1];
     253
     254                        if (strncmp(pinMode, value, sizeof(pinMode) - 1) == 0) {
     255                                dealer->procedure = WAMP_DEALER_PROCEDURE_PIN_MODE;
     256                                dealer->args_parse = wamp_dealer_call_arduino_param;
     257                                dealer->call_close = wamp_dealer_pin_mode_close;
     258                                return;
     259                        }
     260                        else if (strncmp(digitalWrite, value, sizeof(digitalWrite) - 1) == 0) {
     261                                dealer->procedure = WAMP_DEALER_PROCEDURE_DIGITAL_WRITE;
     262                                dealer->args_parse = wamp_dealer_call_arduino_param;
     263                                dealer->call_close = wamp_dealer_digital_write_close;
     264                                return;
     265                        }
     266                        else if (strncmp(digitalRead, value, sizeof(digitalRead) - 1) == 0) {
     267                                dealer->procedure = WAMP_DEALER_PROCEDURE_DIGITAL_READ;
     268                                dealer->args_parse = wamp_dealer_call_arduino_param;
     269                                dealer->call_close = wamp_dealer_digital_read_close;
     270                                return;
     271                        }
     272                        else if (strncmp(analogRead, value, sizeof(analogRead) - 1) == 0) {
     273                                dealer->procedure = WAMP_DEALER_PROCEDURE_ANALOG_READ;
     274                                dealer->args_parse = wamp_dealer_call_arduino_param;
     275                                dealer->call_close = wamp_dealer_analog_read_close;
     276                                return;
     277                        }
     278                        else if (strncmp(analogWrite, value, sizeof(analogWrite) - 1) == 0) {
     279                                dealer->procedure = WAMP_DEALER_PROCEDURE_ANALOG_WRITE;
     280                                dealer->args_parse = wamp_dealer_call_arduino_param;
     281                                dealer->call_close = wamp_dealer_analog_write_close;
     282                                return;
     283                        }
     284                }
     285        }
     286        else if (strncmp(jpToppersEcnl, value, sizeof(jpToppersEcnl) - 1) == 0) {
     287                static const char getDeviceInfo[] = "procedure.getDeviceInfo";
     288                static const char ecnlSet[] = "procedure.set";
     289                static const char ecnlGet[] = "procedure.get";
     290                static const char ecnlSetGet[] = "procedure.setget";
     291                static const char setInitParams[] = "procedure.setInitParams";
     292                static const char getInitParams[] = "procedure.getInitParams";
     293
     294                if (strncmp(getDeviceInfo, value, sizeof(getDeviceInfo) - 1) == 0) {
     295                        dealer->procedure = WAMP_DEALER_PROCEDURE_GET_DEVICEINFO;
     296                        dealer->args_parse = wamp_dealer_call_dummy_param;
     297                        dealer->call_close = wamp_dealer_get_deviceinfo_close;
     298                        return;
     299                }
     300                else if (strncmp(ecnlSet, value, sizeof(ecnlSet) - 1) == 0) {
     301                        dealer->procedure = WAMP_DEALER_PROCEDURE_ECNL_SET;
     302                        dealer->args_parse = wamp_dealer_call_ecnl_param;
     303                        dealer->call_close = wamp_dealer_ecnl_set_close;
     304                        return;
     305                }
     306                else if (strncmp(ecnlGet, value, sizeof(ecnlGet) - 1) == 0) {
     307                        dealer->procedure = WAMP_DEALER_PROCEDURE_ECNL_GET;
     308                        dealer->args_parse = wamp_dealer_call_ecnl_param;
     309                        dealer->call_close = wamp_dealer_ecnl_get_close;
     310                        return;
     311                }
     312                else if (strncmp(ecnlSetGet, value, sizeof(ecnlSetGet) - 1) == 0) {
     313                        dealer->procedure = WAMP_DEALER_PROCEDURE_ECNL_SETGET;
     314                        dealer->args_parse = wamp_dealer_call_ecnl_param;
     315                        dealer->call_close = wamp_dealer_ecnl_setget_close;
     316                        return;
     317                }
     318                else if (strncmp(setInitParams, value, sizeof(setInitParams) - 1) == 0) {
     319                        dealer->procedure = WAMP_DEALER_PROCEDURE_SET_INIT_PARAMS;
     320                        dealer->args_parse = wamp_dealer_call_init_params_param;
     321                        dealer->call_close = wamp_dealer_set_init_params_close;
     322                        return;
     323                }
     324                else if (strncmp(getInitParams, value, sizeof(getInitParams) - 1) == 0) {
     325                        dealer->procedure = WAMP_DEALER_PROCEDURE_GET_INIT_PARAMS;
     326                        dealer->args_parse = wamp_dealer_call_init_params_param;
     327                        dealer->call_close = wamp_dealer_get_init_params_close;
     328                        return;
     329                }
     330        }
     331
     332        dealer->procedure = WAMP_DEALER_PROCEDURE_NONE;
     333        dealer->args_parse = wamp_dealer_call_dummy_param;
     334        dealer->call_close = wamp_dealer_none_close;
    276335}
    277336
  • uKadecot/trunk/kadecot/wamp_dealer.h

    r125 r264  
    175175void wamp_dealer_call_options_param(wamp_dealer_t *dealer, jsonsl_action_t action,
    176176        struct jsonsl_state_st *state, const char *buf);
    177 void wamp_dealer_call_procedure(wamp_dealer_t *dealer, const char *value);
     177void wamp_dealer_call_procedure(wamp_dealer_t *dealer, const char *value, int length);
    178178void wamp_dealer_call_arguments(wamp_dealer_t *dealer, const char *value);
    179179void wamp_dealer_call_arguments_param(wamp_dealer_t *dealer, jsonsl_action_t action,
Note: See TracChangeset for help on using the changeset viewer.