diff options
author | Denis Kenzior <denkenz@gmail.com> | 2010-07-30 10:08:07 -0500 |
---|---|---|
committer | Denis Kenzior <denkenz@gmail.com> | 2010-07-30 17:19:56 -0500 |
commit | 2a1eee38bbe3929f6f74d67217bc0618bb4efac8 (patch) | |
tree | fd7263a53680a014242b4e398cf7de9429c42155 /src | |
parent | e5ea6e2193062365eec7662d7866d306e8b56bcf (diff) | |
download | ofono-2a1eee38bbe3929f6f74d67217bc0618bb4efac8.tar.bz2 |
stk: Get rid of nested switch
Diffstat (limited to 'src')
-rw-r--r-- | src/stk.c | 103 |
1 files changed, 56 insertions, 47 deletions
@@ -1147,67 +1147,76 @@ void ofono_stk_proactive_command_notify(struct ofono_stk *stk, return; } - memset(&rsp, 0, sizeof(rsp)); - switch (stk->pending_cmd->status) { case STK_PARSE_RESULT_OK: - switch (stk->pending_cmd->type) { - default: - rsp.result.type = - STK_RESULT_TYPE_COMMAND_NOT_UNDERSTOOD; - break; - case STK_COMMAND_TYPE_MORE_TIME: - respond = handle_command_more_time(stk->pending_cmd, - &rsp, stk); - break; - case STK_COMMAND_TYPE_SEND_SMS: - respond = handle_command_send_sms(stk->pending_cmd, - &rsp, stk); - break; - case STK_COMMAND_TYPE_SETUP_IDLE_MODE_TEXT: - respond = handle_command_set_idle_text(stk->pending_cmd, - &rsp, stk); - break; - case STK_COMMAND_TYPE_TIMER_MANAGEMENT: - respond = handle_command_timer_mgmt(stk->pending_cmd, - &rsp, stk); - break; - case STK_COMMAND_TYPE_POLL_INTERVAL: - respond = handle_command_poll_interval(stk->pending_cmd, - &rsp, stk); - break; - case STK_COMMAND_TYPE_SETUP_MENU: - respond = handle_command_set_up_menu(stk->pending_cmd, - &rsp, stk); - break; - case STK_COMMAND_TYPE_SELECT_ITEM: - respond = handle_command_select_item(stk->pending_cmd, - &rsp, stk); - break; - case STK_COMMAND_TYPE_DISPLAY_TEXT: - respond = handle_command_display_text(stk->pending_cmd, - &rsp, stk); - break; - } + break; - if (respond) - break; + case STK_PARSE_RESULT_MISSING_VALUE: + send_simple_response(stk, STK_RESULT_TYPE_MINIMUM_NOT_MET); return; - case STK_PARSE_RESULT_MISSING_VALUE: - rsp.result.type = STK_RESULT_TYPE_MINIMUM_NOT_MET; + case STK_PARSE_RESULT_DATA_NOT_UNDERSTOOD: + send_simple_response(stk, STK_RESULT_TYPE_DATA_NOT_UNDERSTOOD); + return; + + case STK_PARSE_RESULT_TYPE_NOT_UNDERSTOOD: + default: + send_simple_response(stk, + STK_RESULT_TYPE_COMMAND_NOT_UNDERSTOOD); + return; + } + + memset(&rsp, 0, sizeof(rsp)); + + switch (stk->pending_cmd->type) { + case STK_COMMAND_TYPE_MORE_TIME: + respond = handle_command_more_time(stk->pending_cmd, + &rsp, stk); break; - case STK_PARSE_RESULT_DATA_NOT_UNDERSTOOD: - rsp.result.type = STK_RESULT_TYPE_DATA_NOT_UNDERSTOOD; + case STK_COMMAND_TYPE_SEND_SMS: + respond = handle_command_send_sms(stk->pending_cmd, + &rsp, stk); + break; + + case STK_COMMAND_TYPE_SETUP_IDLE_MODE_TEXT: + respond = handle_command_set_idle_text(stk->pending_cmd, + &rsp, stk); + break; + + case STK_COMMAND_TYPE_TIMER_MANAGEMENT: + respond = handle_command_timer_mgmt(stk->pending_cmd, + &rsp, stk); + break; + + case STK_COMMAND_TYPE_POLL_INTERVAL: + respond = handle_command_poll_interval(stk->pending_cmd, + &rsp, stk); + break; + + case STK_COMMAND_TYPE_SETUP_MENU: + respond = handle_command_set_up_menu(stk->pending_cmd, + &rsp, stk); + break; + + case STK_COMMAND_TYPE_SELECT_ITEM: + respond = handle_command_select_item(stk->pending_cmd, + &rsp, stk); + break; + + case STK_COMMAND_TYPE_DISPLAY_TEXT: + respond = handle_command_display_text(stk->pending_cmd, + &rsp, stk); break; - case STK_PARSE_RESULT_TYPE_NOT_UNDERSTOOD: default: rsp.result.type = STK_RESULT_TYPE_COMMAND_NOT_UNDERSTOOD; break; } + if (respond == FALSE) + return; + err = stk_respond(stk, &rsp, stk_command_cb); if (err) stk_command_cb(&error, stk); |