mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-30 18:40:46 +00:00
added TONE_HANGUP, also added Tone generation by mISDN_dsp for post hangup tones, therefore the TONE_X defines are in the isdn_lib.h now. changed a REALEASE to a DISCONNECT in NT Stack, to make tones available in that state.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@34604 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -111,16 +111,6 @@ int misdn_jb_empty(struct misdn_jb *jb, char *data, int len);
|
||||
/* BEGIN: chan_misdn.h */
|
||||
|
||||
|
||||
enum tone_e {
|
||||
TONE_NONE=0,
|
||||
TONE_DIAL,
|
||||
TONE_ALERTING,
|
||||
TONE_FAR_ALERTING,
|
||||
TONE_BUSY,
|
||||
TONE_CUSTOM,
|
||||
TONE_FILE
|
||||
};
|
||||
|
||||
|
||||
enum misdn_chan_state {
|
||||
MISDN_NOTHING, /*!< at beginning */
|
||||
@@ -1981,7 +1971,7 @@ static int misdn_hangup(struct ast_channel *ast)
|
||||
return 0;
|
||||
}
|
||||
|
||||
stop_bc_tones(p);
|
||||
/*stop_bc_tones(p);*/
|
||||
|
||||
release_unlock;
|
||||
|
||||
@@ -2008,11 +1998,11 @@ static int misdn_hangup(struct ast_channel *ast)
|
||||
case MISDN_HOLDED:
|
||||
case MISDN_DIALING:
|
||||
start_bc_tones(p);
|
||||
tone_indicate(p, TONE_BUSY);
|
||||
tone_indicate(p, TONE_HANGUP);
|
||||
p->state=MISDN_CLEANING;
|
||||
|
||||
if (bc->nt)
|
||||
misdn_lib_send_event( bc, EVENT_RELEASE);
|
||||
misdn_lib_send_event( bc, EVENT_DISCONNECT);
|
||||
else
|
||||
misdn_lib_send_event( bc, EVENT_RELEASE_COMPLETE);
|
||||
|
||||
@@ -2024,7 +2014,7 @@ static int misdn_hangup(struct ast_channel *ast)
|
||||
chan_misdn_log(2, bc->port, " --> * State Alerting\n");
|
||||
|
||||
if (p->orginator != ORG_AST)
|
||||
tone_indicate(p, TONE_BUSY);
|
||||
tone_indicate(p, TONE_HANGUP);
|
||||
|
||||
p->state=MISDN_CLEANING;
|
||||
misdn_lib_send_event( bc, EVENT_DISCONNECT);
|
||||
@@ -2033,7 +2023,7 @@ static int misdn_hangup(struct ast_channel *ast)
|
||||
/* Alerting or Disconect */
|
||||
chan_misdn_log(2, bc->port, " --> * State Connected\n");
|
||||
start_bc_tones(p);
|
||||
tone_indicate(p, TONE_BUSY);
|
||||
tone_indicate(p, TONE_HANGUP);
|
||||
misdn_lib_send_event( bc, EVENT_DISCONNECT);
|
||||
|
||||
p->state=MISDN_CLEANING; /* MISDN_HUNGUP_FROM_AST; */
|
||||
@@ -2367,14 +2357,9 @@ static int tone_indicate( struct chan_list *cl, enum tone_e tone)
|
||||
|
||||
if (!cl->ast) {
|
||||
chan_misdn_log(-1,cl->bc->port,"Ast Ptr Not existing anymore.. we need to generate tones ourselves now (tbd)\n");
|
||||
|
||||
misdn_lib_send_tone(cl->bc,tone);
|
||||
return 0;
|
||||
#if 0
|
||||
struct ast_channel *dummy=misdn_new(cl, AST_STATE_RESERVED, cl->bc->dad, cl->bc->oad, AST_FORMAT_ALAW, cl->bc->port, 99);
|
||||
cl->ast=dummy;
|
||||
/* return 0; */
|
||||
cl->dummy=1;
|
||||
ast=cl->ast;
|
||||
#endif
|
||||
}
|
||||
|
||||
switch (tone) {
|
||||
|
@@ -3798,6 +3798,8 @@ void manager_ph_control(struct misdn_bchannel *bc, int c1, int c2)
|
||||
unsigned int *d = (unsigned int*)&ctrl->data.p;
|
||||
struct misdn_stack *stack=get_stack_by_bc(bc);
|
||||
|
||||
cb_log(4,bc->port,"ph_control: c1:%x c2:%x\n",c1,c2);
|
||||
|
||||
ctrl->prim = PH_CONTROL | REQUEST;
|
||||
ctrl->addr = bc->addr | FLG_MSG_DOWN;
|
||||
ctrl->dinfo = 0;
|
||||
@@ -3915,6 +3917,29 @@ struct misdn_bchannel *stack_holder_find(struct misdn_stack *stack, unsigned lon
|
||||
|
||||
|
||||
|
||||
void misdn_lib_send_tone(struct misdn_bchannel *bc, enum tone_e tone)
|
||||
{
|
||||
switch(tone) {
|
||||
case TONE_DIAL:
|
||||
manager_ph_control(bc, TONE_PATT_ON, TONE_GERMAN_DIALTONE);
|
||||
break;
|
||||
|
||||
case TONE_ALERTING:
|
||||
manager_ph_control(bc, TONE_PATT_ON, TONE_GERMAN_RINGING);
|
||||
break;
|
||||
|
||||
case TONE_HANGUP:
|
||||
manager_ph_control(bc, TONE_PATT_ON, TONE_GERMAN_HANGUP);
|
||||
break;
|
||||
|
||||
case TONE_NONE:
|
||||
default:
|
||||
manager_ph_control(bc, TONE_PATT_OFF, TONE_GERMAN_HANGUP);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
void manager_ec_enable(struct misdn_bchannel *bc)
|
||||
{
|
||||
int ec_arr[2];
|
||||
|
@@ -21,6 +21,19 @@
|
||||
|
||||
|
||||
|
||||
enum tone_e {
|
||||
TONE_NONE=0,
|
||||
TONE_DIAL,
|
||||
TONE_ALERTING,
|
||||
TONE_FAR_ALERTING,
|
||||
TONE_BUSY,
|
||||
TONE_HANGUP,
|
||||
TONE_CUSTOM,
|
||||
TONE_FILE
|
||||
};
|
||||
|
||||
|
||||
|
||||
#define MAX_BCHANS 30
|
||||
|
||||
enum bchannel_state {
|
||||
@@ -376,6 +389,7 @@ int misdn_lib_send_facility(struct misdn_bchannel *bc, enum facility_type fac, v
|
||||
void manager_ec_enable(struct misdn_bchannel *bc);
|
||||
void manager_ec_disable(struct misdn_bchannel *bc);
|
||||
|
||||
void misdn_lib_send_tone(struct misdn_bchannel *bc, enum tone_e tone);
|
||||
|
||||
void get_show_stack_details(int port, char *buf);
|
||||
|
||||
|
Reference in New Issue
Block a user