mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-25 07:01:09 +00:00
Restoring some code to sig_pri. Not sure if it is really needed.
Putting some DSP code back into sig_pri that was removed by the chan_dahdi/sig_pri reorganization. git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@211392 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -2614,6 +2614,7 @@ static struct sig_pri_callback dahdi_pri_callbacks =
|
|||||||
.handle_dchan_exception = my_handle_dchan_exception,
|
.handle_dchan_exception = my_handle_dchan_exception,
|
||||||
.play_tone = my_pri_play_tone,
|
.play_tone = my_pri_play_tone,
|
||||||
.set_echocanceller = my_set_echocanceller,
|
.set_echocanceller = my_set_echocanceller,
|
||||||
|
.dsp_reset_and_flush_digits = my_dsp_reset_and_flush_digits,
|
||||||
.lock_private = my_lock_private,
|
.lock_private = my_lock_private,
|
||||||
.unlock_private = my_unlock_private,
|
.unlock_private = my_unlock_private,
|
||||||
.new_ast_channel = my_new_pri_ast_channel,
|
.new_ast_channel = my_new_pri_ast_channel,
|
||||||
@@ -8040,9 +8041,9 @@ static struct ast_channel *dahdi_new(struct dahdi_pvt *i, int state, int startpb
|
|||||||
i->dsp = NULL;
|
i->dsp = NULL;
|
||||||
if (i->dsp) {
|
if (i->dsp) {
|
||||||
i->dsp_features = features;
|
i->dsp_features = features;
|
||||||
#if defined(HAVE_SS7)
|
#if defined(HAVE_PRI) || defined(HAVE_SS7)
|
||||||
/* We cannot do progress detection until receives PROGRESS message */
|
/* We cannot do progress detection until receive PROGRESS message */
|
||||||
if (i->outgoing && (i->sig == SIG_SS7)) {
|
if (i->outgoing && ((i->sig == SIG_PRI) || (i->sig == SIG_BRI) || (i->sig == SIG_BRI_PTMP) || (i->sig == SIG_SS7))) {
|
||||||
/* Remember requested DSP features, don't treat
|
/* Remember requested DSP features, don't treat
|
||||||
talking as ANSWER */
|
talking as ANSWER */
|
||||||
i->dsp_features = features & ~DSP_PROGRESS_TALK;
|
i->dsp_features = features & ~DSP_PROGRESS_TALK;
|
||||||
|
@@ -192,6 +192,22 @@ static inline int pri_grab(struct sig_pri_chan *p, struct sig_pri_pri *pri)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \internal
|
||||||
|
* \brief Reset DTMF detector.
|
||||||
|
* \since 1.6.3
|
||||||
|
*
|
||||||
|
* \param p sig_pri channel structure.
|
||||||
|
*
|
||||||
|
* \return Nothing
|
||||||
|
*/
|
||||||
|
static void sig_pri_dsp_reset_and_flush_digits(struct sig_pri_chan *p)
|
||||||
|
{
|
||||||
|
if (p->calls->dsp_reset_and_flush_digits) {
|
||||||
|
p->calls->dsp_reset_and_flush_digits(p->chan_pvt);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static int sig_pri_set_echocanceller(struct sig_pri_chan *p, int enable)
|
static int sig_pri_set_echocanceller(struct sig_pri_chan *p, int enable)
|
||||||
{
|
{
|
||||||
if (p->calls->set_echocanceller)
|
if (p->calls->set_echocanceller)
|
||||||
@@ -618,6 +634,8 @@ static void *pri_ss_thread(void *data)
|
|||||||
|
|
||||||
ast_verb(3, "Starting simple switch on '%s'\n", chan->name);
|
ast_verb(3, "Starting simple switch on '%s'\n", chan->name);
|
||||||
|
|
||||||
|
sig_pri_dsp_reset_and_flush_digits(p);
|
||||||
|
|
||||||
/* Now loop looking for an extension */
|
/* Now loop looking for an extension */
|
||||||
ast_copy_string(exten, p->exten, sizeof(exten));
|
ast_copy_string(exten, p->exten, sizeof(exten));
|
||||||
len = strlen(exten);
|
len = strlen(exten);
|
||||||
@@ -652,6 +670,7 @@ static void *pri_ss_thread(void *data)
|
|||||||
if (ast_exists_extension(chan, chan->context, exten, 1, p->cid_num)) {
|
if (ast_exists_extension(chan, chan->context, exten, 1, p->cid_num)) {
|
||||||
/* Start the real PBX */
|
/* Start the real PBX */
|
||||||
ast_copy_string(chan->exten, exten, sizeof(chan->exten));
|
ast_copy_string(chan->exten, exten, sizeof(chan->exten));
|
||||||
|
sig_pri_dsp_reset_and_flush_digits(p);
|
||||||
sig_pri_set_echocanceller(p, 1);
|
sig_pri_set_echocanceller(p, 1);
|
||||||
ast_setstate(chan, AST_STATE_RING);
|
ast_setstate(chan, AST_STATE_RING);
|
||||||
res = ast_pbx_run(chan);
|
res = ast_pbx_run(chan);
|
||||||
|
@@ -63,6 +63,7 @@ struct sig_pri_callback {
|
|||||||
|
|
||||||
int (* const set_echocanceller)(void *pvt, int enable);
|
int (* const set_echocanceller)(void *pvt, int enable);
|
||||||
int (* const train_echocanceller)(void *pvt);
|
int (* const train_echocanceller)(void *pvt);
|
||||||
|
int (* const dsp_reset_and_flush_digits)(void *pvt);
|
||||||
|
|
||||||
struct ast_channel * (* const new_ast_channel)(void *pvt, int state, int startpbx, enum sig_pri_law law, int transfercapability, char *exten, const struct ast_channel *chan);
|
struct ast_channel * (* const new_ast_channel)(void *pvt, int state, int startpbx, enum sig_pri_law law, int transfercapability, char *exten, const struct ast_channel *chan);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user