]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Fix issues with new 79x1 phones.
authorJason Parker <jparker@digium.com>
Wed, 18 Jul 2007 19:48:12 +0000 (19:48 +0000)
committerJason Parker <jparker@digium.com>
Wed, 18 Jul 2007 19:48:12 +0000 (19:48 +0000)
Issue 9887, patches by DEA

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@75707 65c4cc65-6c06-0410-ace0-fbb531ad65f3

channels/chan_skinny.c

index 841778c6eb4db940a6be2685c7534b16198dcc55..534abfe00a36a93beb54080276cc3ebec76c107c 100644 (file)
@@ -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);
                        }