diff options
author | qwell <qwell@f38db490-d61c-443f-a65b-d21fe96a405b> | 2007-07-18 19:48:12 +0000 |
---|---|---|
committer | qwell <qwell@f38db490-d61c-443f-a65b-d21fe96a405b> | 2007-07-18 19:48:12 +0000 |
commit | eb57b07ddd778797446c0c65a4b3c51a3de304fa (patch) | |
tree | 8e98717d24f691f7851583d65c6f51390cb6c7e1 | |
parent | f49e2841f8caedfcf9d547032ef9a66d7d29a97c (diff) |
Fix issues with new 79x1 phones.
Issue 9887, patches by DEA
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@75707 f38db490-d61c-443f-a65b-d21fe96a405b
-rw-r--r-- | channels/chan_skinny.c | 31 |
1 files changed, 20 insertions, 11 deletions
diff --git a/channels/chan_skinny.c b/channels/chan_skinny.c index 841778c6e..534abfe00 100644 --- a/channels/chan_skinny.c +++ b/channels/chan_skinny.c @@ -605,10 +605,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[] = { @@ -3070,6 +3068,14 @@ static int handle_stimulus_message(struct skinny_req *req, struct skinnysession ast_verbose("Received Stimulus: Redial(%d)\n", instance); #if 0 + 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); @@ -3080,11 +3086,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); } @@ -3105,6 +3108,14 @@ static int handle_stimulus_message(struct skinny_req *req, struct skinnysession return 0; } + 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) { sub = c->tech_pvt; @@ -3114,6 +3125,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); @@ -3804,11 +3816,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); } |