diff options
author | Michiel van Baak <michiel@vanbaak.info> | 2008-06-13 11:20:47 +0000 |
---|---|---|
committer | Michiel van Baak <michiel@vanbaak.info> | 2008-06-13 11:20:47 +0000 |
commit | a68a160b75f8fc2fcdb004e9e9ba28b71de77d5e (patch) | |
tree | d9c4214dfad8ef14a0fedf31aa339c32c7fc69d8 | |
parent | eb1e6f08063bf29179c6fa411833d6d4ca17102e (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: https://origsvn.digium.com/svn/asterisk/trunk@122493 65c4cc65-6c06-0410-ace0-fbb531ad65f3
-rw-r--r-- | channels/chan_skinny.c | 36 |
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) |