--- src/libvpb/openpri.cpp.orig 2007-02-08 14:50:31.000000000 +1100 +++ src/libvpb/openpri.cpp 2007-05-16 15:53:48.000000000 +1000 @@ -195,6 +195,7 @@ mprintf("[%d/%d] Started ISDN channel ...\n",m_reg.cardnum,isdn_num); ++isdn_num; } + OpenPorts(); // Check if we are running audio_thread_multi // run through all channels and compare the interfaces, @@ -241,7 +242,6 @@ &m_audio_multi_info[x]); mprintf("[%d/-] Started Audio Thread Multi [%d]...\n",m_reg.cardnum,x); - OpenPorts(); int ret = pthread_create(&m_dspthread, NULL, SimulateDSP, this); if( ret ) @@ -1668,7 +1668,8 @@ e->ring.channel); return; } - chans[idx].state=CH_NEEDRING; + // Not here ... miss hand dialled numbers + //chans[idx].state=CH_NEEDRING; /* record call informaton */ chans[idx].call = e->ring.call; /* Save caller ID info */ @@ -1768,21 +1769,21 @@ m_reg.cardnum , e->ringing.channel); /* record call informaton */ - chans[idx].call = e->ringing.call; + //chans[idx].call = e->ringing.call; /* Save caller ID info */ - if (chans[idx].cid == NULL){ - chans[idx].cid = new isdncid; - } - chans[idx].cid->callingplan = e->ring.callingplan; - chans[idx].cid->callingpres = e->ring.callingpres; - chans[idx].cid->calledplan = e->ring.calledplan; - strcpy(chans[idx].cid->callingnum,e->ring.callingnum); - strcpy(chans[idx].cid->callingname,e->ring.callingname); - - chans[idx].cref=e->ringing.cref; - chans[idx].cref_check=1; - chans[idx].layer1=e->ring.layer1; - chans[idx].transcap=e->ring.ctype; + //if (chans[idx].cid == NULL){ + // chans[idx].cid = new isdncid; + //} + //chans[idx].cid->callingplan = e->ring.callingplan; + //chans[idx].cid->callingpres = e->ring.callingpres; + //chans[idx].cid->calledplan = e->ring.calledplan; + //strcpy(chans[idx].cid->callingnum,e->ring.callingnum); + //strcpy(chans[idx].cid->callingname,e->ring.callingname); + + //chans[idx].cref=e->ringing.cref; + //chans[idx].cref_check=1; + //chans[idx].layer1=e->ring.layer1; + //chans[idx].transcap=e->ring.ctype; } } @@ -1813,21 +1814,21 @@ m_reg.cardnum , e->proceeding.channel); /* record call informaton */ - chans[idx].call = e->proceeding.call; + //chans[idx].call = e->proceeding.call; /* Save caller ID info */ - if (chans[idx].cid == NULL){ - chans[idx].cid = new isdncid; - } - chans[idx].cid->callingplan = e->ring.callingplan; - chans[idx].cid->callingpres = e->ring.callingpres; - chans[idx].cid->calledplan = e->ring.calledplan; - strcpy(chans[idx].cid->callingnum,e->ring.callingnum); - strcpy(chans[idx].cid->callingname,e->ring.callingname); - - chans[idx].cref=e->proceeding.cref; - chans[idx].cref_check=1; - chans[idx].layer1=e->ring.layer1; - chans[idx].transcap=e->ring.ctype; + //if (chans[idx].cid == NULL){ + // chans[idx].cid = new isdncid; + //} + //chans[idx].cid->callingplan = e->ring.callingplan; + //chans[idx].cid->callingpres = e->ring.callingpres; + //chans[idx].cid->calledplan = e->ring.calledplan; + //strcpy(chans[idx].cid->callingnum,e->ring.callingnum); + //strcpy(chans[idx].cid->callingname,e->ring.callingname); + + //chans[idx].cref=e->proceeding.cref; + //chans[idx].cref_check=1; + //chans[idx].layer1=e->ring.layer1; + //chans[idx].transcap=e->ring.ctype; } } break; @@ -1877,6 +1878,45 @@ mprintf("[%d/%d] PRI number is: %s (cref:%d)\n", m_reg.cardnum, e->ring.channel, e->ring.callednum, e->ring.cref); + if(e->ring.channel != -1){ + try { + idx = get_idx_from_ich(&m_reg, e->ring.channel); + } catch ( const Wobbly &w ) { + mprintf("handle_pri_event_log: EVENT_RING Failed to get channel from %d\n", + e->ring.channel); + return; + } + //pthread_mutex_lock(&m_mutex); + + /* record call informaton */ + chans[idx].call = e->ring.call; + /* Save caller ID info */ + if (chans[idx].cid == NULL){ + chans[idx].cid = new isdncid; + + chans[idx].cid->callingplan = e->ring.callingplan; + chans[idx].cid->callingpres = e->ring.callingpres; + chans[idx].cid->calledplan = e->ring.calledplan; + strcpy(chans[idx].cid->callingnum,e->ring.callingnum); + strcpy(chans[idx].cid->callingname,e->ring.callingname); + strcpy(chans[idx].cid->callednum,e->ring.callednum); + chans[idx].cref=e->ring.cref; + chans[idx].cref_check=1; + chans[idx].layer1=e->ring.layer1; + chans[idx].transcap=e->ring.ctype; + } else { + + // Collect the pri numbers coming thru in INFO events + // This happens with numbers dialed by hand + + strcat(chans[idx].cid->callednum,e->ring.callednum); + mprintf("[%d/%d] PRI called number is now : %s (cref:%d)\n",m_reg.cardnum, + e->ring.channel , chans[idx].cid->callednum ,e->ring.cref); + + } + + //pthread_mutex_unlock(&m_mutex); + } break; default: @@ -2569,8 +2609,8 @@ chan_state[i]=1; c->v->rxdf[c->chan_num]->SetState(1); c->v->txdf[c->chan_num]->SetState(1); - c->v->rxdf[c->chan_num]->Flush(); - c->v->txdf[c->chan_num]->Flush(); + //c->v->rxdf[c->chan_num]->Flush(); + //c->v->txdf[c->chan_num]->Flush(); encoding[i]=check_encoding(c); } /* Send data up FIFO - record */