diff options
Diffstat (limited to 'audio/telephony-maemo.c')
-rw-r--r-- | audio/telephony-maemo.c | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/audio/telephony-maemo.c b/audio/telephony-maemo.c index 33793f19..78a6c641 100644 --- a/audio/telephony-maemo.c +++ b/audio/telephony-maemo.c @@ -494,9 +494,17 @@ void telephony_answer_call_req(void *telephony_device) telephony_answer_call_rsp(telephony_device, CME_ERROR_NONE); } +const char *memory_dial_lookup(int location) +{ + if (location == 1) + return vmbx; + else + return NULL; +} + void telephony_dial_number_req(void *telephony_device, const char *number) { - uint32_t flags; + uint32_t flags = CALL_FLAG_NONE; DBusMessage *msg; debug("telephony-maemo: dial request to %s", number); @@ -507,8 +515,15 @@ void telephony_dial_number_req(void *telephony_device, const char *number) } else if (strncmp(number, "#31#", 4) == 0) { number += 4; flags = CALL_FLAG_PRESENTATION_RESTRICTED; - } else - flags = CALL_FLAG_NONE; + } else if (number[0] == '>') { + number = memory_dial_lookup(strtol(&number[1], NULL, 0)); + if (!number) { + error("No number at memory location %s", &number[1]); + telephony_dial_number_rsp(telephony_device, + CME_ERROR_INVALID_INDEX); + return; + } + } msg = dbus_message_new_method_call(CSD_CALL_BUS_NAME, CSD_CALL_PATH, CSD_CALL_INTERFACE, "CreateWith"); |