g_sngisdn_data.spans[signal_data->link_id] = signal_data;
- ftdm_log(FTDM_LOG_DEBUG, "%s: cc_id:%d dchan_id:%d span_id:%d\n", span->name, signal_data->cc_id, signal_data->dchan_id, signal_data->span_id);
+ ftdm_log(FTDM_LOG_DEBUG, "%s: cc_id:%d dchan_id:%d span_id:%d link_id:%d\n", span->name, signal_data->cc_id, signal_data->dchan_id, signal_data->span_id, signal_data->link_id);
chaniter = ftdm_span_get_chan_iterator(span, NULL);
cfg.hdr.entId.inst = S_INST;
cfg.hdr.elmId.elmnt = STPSAP;
- cfg.hdr.elmId.elmntInst1 = signal_data->link_id;
+ cfg.hdr.elmId.elmntInst1 = signal_data->dchan_id;
if (!signal_data->dchan) {
ftdm_log(FTDM_LOG_ERROR, "%s:No d-channels specified\n", span->name);
ftdm_log(FTDM_LOG_ERROR, "%s:Unsupported trunk type %d\n", span->name, span->trunk_type);
return FTDM_FAIL;
}
- cfg.t.cfg.s.l1PSAP.spId = signal_data->link_id;
+
+ cfg.t.cfg.s.l1PSAP.spId = signal_data->dchan_id;
if (sng_isdn_phy_config(&pst, &cfg)) {
return FTDM_FAIL;
cfg.hdr.entId.inst = S_INST;
cfg.hdr.elmId.elmnt = STMSAP;
- cfg.t.cfg.s.bdMSAP.lnkNmb = signal_data->link_id;
+ cfg.t.cfg.s.bdMSAP.lnkNmb = signal_data->dchan_id;
cfg.t.cfg.s.bdMSAP.maxOutsFrms = 24; /* MAC window */
cfg.t.cfg.s.bdMSAP.tQUpperTrs = 32; /* Tx Queue Upper Threshold */
cfg.hdr.entId.inst = S_INST;
cfg.hdr.elmId.elmnt = STDLSAP;
- cfg.t.cfg.s.bdDLSAP.lnkNmb = signal_data->link_id;
+ cfg.t.cfg.s.bdDLSAP.lnkNmb = signal_data->dchan_id;
cfg.t.cfg.s.bdDLSAP.n201 = 1028; /* n201 */
if (span->trunk_type == FTDM_TRUNK_BRI_PTMP ||
cfg.hdr.response.selector=0;
+ cfg.t.cfg.s.inDLSAP.sapId = signal_data->dchan_id;
+ cfg.t.cfg.s.inDLSAP.spId = signal_data->dchan_id;
- cfg.t.cfg.s.inDLSAP.sapId = signal_data->link_id;
- cfg.t.cfg.s.inDLSAP.spId = signal_data->link_id;
cfg.t.cfg.s.inDLSAP.swtch = sng_isdn_stack_switchtype(signal_data->switchtype);
cfg.t.cfg.s.inDLSAP.n201 = 1024;
cfg.hdr.response.selector=0;
- cfg.t.cfg.s.inLCe.sapId = signal_data->link_id;
-
+ cfg.t.cfg.s.inLCe.sapId = signal_data->dchan_id;
cfg.t.cfg.s.inLCe.lnkUpDwnInd = TRUE;
cfg.t.cfg.s.inLCe.tCon.enb = TRUE;
cntrl.t.cntrl.action = AUBND_DIS;
cntrl.t.cntrl.subAction = SAELMNT;
- cntrl.t.cntrl.sapId = signal_data->link_id;
+
+ cntrl.t.cntrl.sapId = signal_data->dchan_id;
if (sng_isdn_phy_cntrl(&pst, &cntrl)) {
return FTDM_FAIL;
cntrl.t.cntrl.action = AENA;
cntrl.t.cntrl.subAction = SAELMNT;
- cntrl.t.cntrl.sapId = signal_data->link_id;
+
+ cntrl.t.cntrl.sapId = signal_data->dchan_id;
if (sng_isdn_phy_cntrl(&pst, &cntrl)) {
return FTDM_FAIL;
if (action == AENA && subaction == SATRC) {
cntrl.t.cntrl.trcLen = -1; /* Trace the entire message buffer */
}
- cntrl.t.cntrl.sapId = signal_data->link_id;
+
+ cntrl.t.cntrl.sapId = signal_data->dchan_id;
cntrl.t.cntrl.ces = 0;
if(sng_isdn_q931_cntrl(&pst, &cntrl)) {
cntrl.t.cntrl.subAction = subaction;
#if (SMBD_LMINT3 || BD_LMINT3)
- cntrl.t.cntrl.lnkNmb = signal_data->link_id;
+ cntrl.t.cntrl.lnkNmb = signal_data->dchan_id;
cntrl.t.cntrl.sapi = NOTUSED;
cntrl.t.cntrl.tei = NOTUSED;
#else /* _LMINT3 */
- cntrl.hdr.elmId.elmntInst1 = signal_data->link_id;
+ cntrl.hdr.elmId.elmntInst1 = signal_data->dchan_id;
cntrl.hdr.elmId.elmntInst2 = NOTUSED;
cntrl.hdr.elmId.elmntInst3 = NOTUSED;
#endif /* _LMINT3 */
/* Should we trigger congestion here? */
l1_frame.flags |= SNG_L1FRAME_QUEUE_FULL;
}
-
- sng_isdn_data_ind(signal_data->link_id, &l1_frame);
+
+ sng_isdn_data_ind(signal_data->dchan_id, &l1_frame);
}
void sngisdn_snd_event(ftdm_channel_t *dchan, ftdm_oob_event_t event)
switch(event) {
case FTDM_OOB_ALARM_CLEAR:
l1_event.type = SNG_L1EVENT_ALARM_OFF;
- sng_isdn_event_ind(signal_data->link_id, &l1_event);
+ sng_isdn_event_ind(signal_data->dchan_id, &l1_event);
break;
case FTDM_OOB_ALARM_TRAP:
l1_event.type = SNG_L1EVENT_ALARM_ON;
- sng_isdn_event_ind(signal_data->link_id, &l1_event);
+ sng_isdn_event_ind(signal_data->dchan_id, &l1_event);
break;
default:
/* We do not care about the other OOB events for now */
void sngisdn_rcv_q921_ind(BdMngmt *status)
{
ftdm_span_t *ftdmspan;
- sngisdn_span_data_t *signal_data = g_sngisdn_data.spans[status->t.usta.lnkNmb];
+
+ sngisdn_span_data_t *signal_data = g_sngisdn_data.dchans[status->t.usta.lnkNmb].spans[1];
+
if (!signal_data) {
ftdm_log(FTDM_LOG_INFO, "Received q921 status on unconfigured span (lnkNmb:%d)\n", status->t.usta.lnkNmb);
return;
case LCM_EVENT_DOWN:
{
ftdm_span_t *ftdmspan;
- sngisdn_span_data_t *signal_data = g_sngisdn_data.spans[status->t.usta.suId];
+ sngisdn_span_data_t *signal_data = g_sngisdn_data.dchans[status->t.usta.suId].spans[1];
if (!signal_data) {
ftdm_log(FTDM_LOG_INFO, "Received q931 status on unconfigured span (lnkNmb:%d)\n", status->t.usta.suId);
return;
uint8_t data;
ftdm_trace_dir_t dir;
uint8_t tdata[1000];
- sngisdn_span_data_t *signal_data = g_sngisdn_data.spans[trc->t.trc.suId];
+
+ sngisdn_span_data_t *signal_data = g_sngisdn_data.dchans[trc->t.trc.suId].spans[1];
ftdm_assert(mBuf != NULLP, "Received a Q931 trace with no buffer");
mlen = ((SsMsgInfo*)(mBuf->b_rptr))->len;
uint8_t data;
ftdm_trace_dir_t dir;
uint8_t tdata[1000];
- sngisdn_span_data_t *signal_data = g_sngisdn_data.spans[trc->t.trc.lnkNmb];
+
+ sngisdn_span_data_t *signal_data = g_sngisdn_data.dchans[trc->t.trc.lnkNmb].spans[1];
if (trc->t.trc.evnt == TL2TMR) {
return;
{
ftdm_status_t status;
ftdm_wait_flag_t flags = FTDM_WRITE;
- sngisdn_span_data_t *signal_data = g_sngisdn_data.spans[spId];
+ sngisdn_span_data_t *signal_data = g_sngisdn_data.dchans[spId].spans[1];
ftdm_size_t length = l1_frame->len;
ftdm_assert(signal_data, "Received Data request on unconfigured span\n");
}
int16_t sngisdn_rcv_l1_cmd_req(uint16_t spId, sng_l1_cmd_t *l1_cmd)
-{
- sngisdn_span_data_t *signal_data = g_sngisdn_data.spans[spId];
+{
+ sngisdn_span_data_t *signal_data = g_sngisdn_data.dchans[spId].spans[1];
ftdm_assert(signal_data, "Received Data request on unconfigured span\n");
switch(l1_cmd->type) {