From a1b2a23b4d82db06026a19dca653203e448c5e22 Mon Sep 17 00:00:00 2001 From: Jason Parker <jparker@digium.com> Date: Wed, 18 Jul 2007 19:51:18 +0000 Subject: [PATCH] Merged revisions 75707 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 (closes issue #9887) ........ r75707 | qwell | 2007-07-18 14:48:12 -0500 (Wed, 18 Jul 2007) | 4 lines Fix issues with new 79x1 phones. Issue 9887, patches by DEA ........ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@75710 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- channels/chan_skinny.c | 32 +++++++++++++++++++++----------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/channels/chan_skinny.c b/channels/chan_skinny.c index 31b5a58446..d3ac5ee558 100644 --- a/channels/chan_skinny.c +++ b/channels/chan_skinny.c @@ -608,10 +608,8 @@ static const uint8_t soft_key_default_connwithconf[] = { }; static const uint8_t soft_key_default_ringout[] = { + SOFTKEY_NONE, SOFTKEY_ENDCALL, - SOFTKEY_TRNSFER, - SOFTKEY_CFWDALL, - SOFTKEY_CFWDBUSY, }; static const uint8_t soft_key_default_offhookwithfeat[] = { @@ -3253,6 +3251,14 @@ static int handle_stimulus_message(struct skinny_req *req, struct skinnysession if (skinnydebug) ast_verbose("Received Stimulus: Redial(%d)\n", instance); + if (ast_strlen_zero(l->lastnumberdialed)) { + ast_log(LOG_WARNING, "Attempted redial, but no previously dialed number found.\n"); + l->hookstate = SKINNY_ONHOOK; + transmit_speaker_mode(s, SKINNY_SPEAKEROFF); + transmit_callstate(s, l->instance, SKINNY_ONHOOK, instance); + break; + } + c = skinny_new(l, AST_STATE_DOWN); if (!c) { ast_log(LOG_WARNING, "Unable to create channel for %s@%s\n", l->name, d->name); @@ -3267,11 +3273,8 @@ static int handle_stimulus_message(struct skinny_req *req, struct skinnysession ast_verbose("Attempting to Clear display on Skinny %s@%s\n", l->name, d->name); transmit_displaymessage(s, NULL); /* clear display */ transmit_tone(s, SKINNY_DIALTONE); + transmit_selectsoftkeys(s, l->instance, sub->callid, KEYDEF_RINGOUT); - if (ast_strlen_zero(l->lastnumberdialed)) { - ast_log(LOG_WARNING, "Attempted redial, but no previously dialed number found.\n"); - return 0; - } if (!ast_ignore_pattern(c->context, l->lastnumberdialed)) { transmit_tone(s, SKINNY_SILENCE); } @@ -3311,6 +3314,7 @@ static int handle_stimulus_message(struct skinny_req *req, struct skinnysession ast_verbose("Attempting to Clear display on Skinny %s@%s\n", l->name, d->name); transmit_displaymessage(s, NULL); /* clear display */ transmit_tone(s, SKINNY_DIALTONE); + transmit_selectsoftkeys(s, l->instance, sub->callid, KEYDEF_RINGOUT); if (!ast_ignore_pattern(c->context, sd->exten)) { transmit_tone(s, SKINNY_SILENCE); @@ -3382,6 +3386,7 @@ static int handle_stimulus_message(struct skinny_req *req, struct skinnysession transmit_displaymessage(s, NULL); /* clear display */ transmit_tone(s, SKINNY_DIALTONE); + transmit_selectsoftkeys(s, l->instance, sub->callid, KEYDEF_RINGOUT); if (!ast_ignore_pattern(c->context, vmexten)) { transmit_tone(s, SKINNY_SILENCE); @@ -4079,6 +4084,14 @@ static int handle_soft_key_event_message(struct skinny_req *req, struct skinnyse if (skinnydebug) ast_verbose("Received Softkey Event: Redial(%d)\n", instance); + if (ast_strlen_zero(l->lastnumberdialed)) { + ast_log(LOG_WARNING, "Attempted redial, but no previously dialed number found.\n"); + l->hookstate = SKINNY_ONHOOK; + transmit_speaker_mode(s, SKINNY_SPEAKEROFF); + transmit_callstate(s, l->instance, SKINNY_ONHOOK, instance); + break; + } + if (!sub || !sub->owner) { c = skinny_new(l, AST_STATE_DOWN); } else { @@ -4098,11 +4111,8 @@ static int handle_soft_key_event_message(struct skinny_req *req, struct skinnyse ast_verbose("Attempting to Clear display on Skinny %s@%s\n", l->name, d->name); transmit_displaymessage(s, NULL); /* clear display */ transmit_tone(s, SKINNY_DIALTONE); + transmit_selectsoftkeys(s, l->instance, sub->callid, KEYDEF_RINGOUT); - if (ast_strlen_zero(l->lastnumberdialed)) { - ast_log(LOG_WARNING, "Attempted redial, but no previously dialed number found.\n"); - break; - } if (!ast_ignore_pattern(c->context, l->lastnumberdialed)) { transmit_tone(s, SKINNY_SILENCE); } -- GitLab