From 6049bb6539153c2f400f1f2dbc763c74d796204b Mon Sep 17 00:00:00 2001 From: kpfleming Date: Wed, 19 Jul 2006 20:44:39 +0000 Subject: merge Russell's 'hold_handling' branch, finally implementing music-on-hold handling the way it was decided at AstriDevCon Europe 2006 (and the way people really want it to be) git-svn-id: http://svn.digium.com/svn/asterisk/trunk@37988 f38db490-d61c-443f-a65b-d21fe96a405b --- channels/chan_skinny.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) (limited to 'channels/chan_skinny.c') diff --git a/channels/chan_skinny.c b/channels/chan_skinny.c index c74c090a9..e925b2e3c 100644 --- a/channels/chan_skinny.c +++ b/channels/chan_skinny.c @@ -733,7 +733,7 @@ static pthread_t tcp_thread; static pthread_t accept_t; static char context[AST_MAX_CONTEXT] = "default"; static char language[MAX_LANGUAGE] = ""; -static char musicclass[MAX_MUSICCLASS] = ""; +static char mohinterpret[MAX_MUSICCLASS] = "default"; static char cid_num[AST_MAX_EXTENSION] = ""; static char cid_name[AST_MAX_EXTENSION] = ""; static char linelabel[AST_MAX_EXTENSION] =""; @@ -911,7 +911,7 @@ struct skinny_line { char lastcallerid[AST_MAX_EXTENSION]; /* Last Caller*ID */ char call_forward[AST_MAX_EXTENSION]; char mailbox[AST_MAX_EXTENSION]; - char musicclass[MAX_MUSICCLASS]; + char mohinterpret[MAX_MUSICCLASS]; char lastnumberdialed[AST_MAX_EXTENSION]; /* Last number that was dialed - used for redial */ int curtone; /* Current tone being played */ ast_group_t callgroup; @@ -1847,8 +1847,8 @@ static struct skinny_device *build_device(const char *cat, struct ast_variable * } else { amaflags = y; } - } else if (!strcasecmp(v->name, "musiconhold")) { - ast_copy_string(musicclass, v->value, sizeof(musicclass)); + } else if (!strcasecmp(v->name, "mohinterpret") || !strcasecmp(v->name, "musiconhold")) { + ast_copy_string(mohinterpret, v->value, sizeof(mohinterpret)); } else if (!strcasecmp(v->name, "callgroup")) { cur_callergroup = ast_get_group(v->value); } else if (!strcasecmp(v->name, "pickupgroup")) { @@ -1913,7 +1913,7 @@ static struct skinny_device *build_device(const char *cat, struct ast_variable * ast_copy_string(l->cid_name, cid_name, sizeof(l->cid_name)); ast_copy_string(l->label, linelabel, sizeof(l->label)); ast_copy_string(l->language, language, sizeof(l->language)); - ast_copy_string(l->musicclass, musicclass, sizeof(l->musicclass)); + ast_copy_string(l->mohinterpret, mohinterpret, sizeof(l->mohinterpret)); ast_copy_string(l->mailbox, mailbox, sizeof(l->mailbox)); ast_copy_string(l->mailbox, mailbox, sizeof(l->mailbox)); if (!ast_strlen_zero(mailbox)) { @@ -2502,6 +2502,12 @@ static int skinny_indicate(struct ast_channel *ast, int ind, const void *data, s case -1: transmit_tone(s, SKINNY_SILENCE); break; + case AST_CONTROL_HOLD: + ast_moh_start(ast, data, l->mohinterpret); + break; + case AST_CONTROL_UNHOLD: + ast_moh_stop(ast); + break; case AST_CONTROL_PROCEEDING: break; default: -- cgit v1.2.3