p->dialing = flag;
}
+static void my_set_ringtimeout(void *pvt, int ringt)
+{
+ struct dahdi_pvt *p = pvt;
+ p->ringt = ringt;
+}
+
static void my_increase_ss_count(void)
{
ast_mutex_lock(&ss_thread_lock);
.get_sub_fd = my_get_sub_fd,
.set_cadence = my_set_cadence,
.set_dialing = my_set_dialing,
+ .set_ringtimeout = my_set_ringtimeout,
};
static struct dahdi_pvt *round_robin[32];
}
}
+static void analog_set_ringtimeout(struct analog_pvt *p, int ringt)
+{
+ p->ringt = ringt;
+ if (!p->calls->set_ringtimeout) {
+ return;
+ }
+ p->calls->set_ringtimeout(p->chan_pvt, ringt);
+}
+
int analog_call(struct analog_pvt *p, struct ast_channel *ast, char *rdest, int timeout)
{
int res, index,mysig;
if (!p->subs[ANALOG_SUB_REAL].owner && !p->subs[ANALOG_SUB_CALLWAIT].owner && !p->subs[ANALOG_SUB_THREEWAY].owner) {
p->owner = NULL;
- p->ringt = 0;
+ analog_set_ringtimeout(p, 0);
p->outgoing = 0;
p->onhooktime = time(NULL);
p->cidrings = 1;
case ANALOG_SIG_FXSLS:
case ANALOG_SIG_FXSGS:
case ANALOG_SIG_FXSKS:
- p->ringt = 0;
+ analog_set_ringtimeout(p, 0);
/* Fall through */
case ANALOG_SIG_EM:
case ANALOG_SIG_EM_E1:
ast_setstate(chan, AST_STATE_RING);
chan->rings = 1;
- p->ringt = p->ringt_base;
+ analog_set_ringtimeout(p, p->ringt_base);
res = ast_pbx_run(chan);
if (res) {
ast_hangup(chan);
case ANALOG_SIG_FXSGS:
case ANALOG_SIG_FXSKS:
if (ast->_state == AST_STATE_RING) {
- p->ringt = p->ringt_base;
+ analog_set_ringtimeout(p, p->ringt_base);
}
/* Fall through */
case ANALOG_SIG_FXSGS:
case ANALOG_SIG_FXSKS:
if (ast->_state == AST_STATE_RING) {
- p->ringt = p->ringt_base;
+ analog_set_ringtimeout(p, p->ringt_base);
}
break;
}
case ANALOG_SIG_FXSLS:
case ANALOG_SIG_FXSGS:
case ANALOG_SIG_FXSKS:
- i->ringt = i->ringt_base;
+ analog_set_ringtimeout(i, i->ringt_base);
/* Fall through */
case ANALOG_SIG_EMWINK:
case ANALOG_SIG_FEATD:
int (* const get_sub_fd)(void *pvt, enum analog_sub sub);
void (* const set_cadence)(void *pvt, int *cidrings, struct ast_channel *chan);
void (* const set_dialing)(void *pvt, int flag);
+ void (* const set_ringtimeout)(void *pvt, int ringt);
};