aboutsummaryrefslogtreecommitdiffstats
path: root/channels/chan_skinny.c
diff options
context:
space:
mode:
authormvanbaak <mvanbaak@f38db490-d61c-443f-a65b-d21fe96a405b>2008-06-13 11:20:47 +0000
committermvanbaak <mvanbaak@f38db490-d61c-443f-a65b-d21fe96a405b>2008-06-13 11:20:47 +0000
commitfdd4115f4d6f5212f782b32d5fc5a5cd4dc3dd23 (patch)
treed9c4214dfad8ef14a0fedf31aa339c32c7fc69d8 /channels/chan_skinny.c
parent2bc990d3ae07fb497f1e9a47c37b8013888f8c58 (diff)
Implement call parking in chan_skinny.
(closes issue #11342) Reported by: DEA Patches: chan_skinny-park.txt uploaded by DEA (license 3) chan_skinny-park-v2.diff.txt uploaded by mvanbaak (license 7) Tested by: DEA, mvanbaak git-svn-id: http://svn.digium.com/svn/asterisk/trunk@122493 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'channels/chan_skinny.c')
-rw-r--r--channels/chan_skinny.c36
1 files changed, 34 insertions, 2 deletions
diff --git a/channels/chan_skinny.c b/channels/chan_skinny.c
index 3a69c1234..6a889a423 100644
--- a/channels/chan_skinny.c
+++ b/channels/chan_skinny.c
@@ -4297,9 +4297,25 @@ static int handle_stimulus_message(struct skinny_req *req, struct skinnysession
}
break;
case STIMULUS_CALLPARK:
+ {
+ int extout;
+ char message[32];
+
if (skinnydebug)
ast_verb(1, "Received Stimulus: Park Call(%d/%d)\n", instance, callreference);
- /* XXX Park the call */
+
+ if ((sub && sub->owner) && (sub->owner->_state == AST_STATE_UP)){
+ c = sub->owner;
+ if (!ast_masq_park_call(ast_bridged_channel(c) , c, 0, &extout)) {
+ snprintf(message, sizeof(message), "Call Parked at: %d", extout);
+ transmit_displaynotify(s, message, 10);
+ } else {
+ transmit_displaynotify(s, "Call Park failed", 10);
+ }
+ } else {
+ transmit_displaynotify(s, "Call Park not available", 10);
+ }
+ }
break;
case STIMULUS_DND:
if (skinnydebug)
@@ -5319,9 +5335,25 @@ static int handle_soft_key_event_message(struct skinny_req *req, struct skinnyse
/* XXX determine the best way to pull off a conference. Meetme? */
break;
case SOFTKEY_PARK:
+ {
+ int extout;
+ char message[32];
+
if (skinnydebug)
ast_verb(1, "Received Softkey Event: Park Call(%d/%d)\n", instance, callreference);
- /* XXX Park the call */
+
+ if ((sub && sub->owner) && (sub->owner->_state == AST_STATE_UP)){
+ c = sub->owner;
+ if (!ast_masq_park_call(ast_bridged_channel(c) , c, 0, &extout)) {
+ snprintf(message, sizeof(message), "Call Parked at: %d", extout);
+ transmit_displaynotify(s, message, 10);
+ } else {
+ transmit_displaynotify(s, "Call Park failed", 10);
+ }
+ } else {
+ transmit_displaynotify(s, "Call Park not available", 10);
+ }
+ }
break;
case SOFTKEY_JOIN:
if (skinnydebug)