update
git-svn-id: http://svn.openzap.org/svn/openzap/trunk@437 a93c3328-9c30-0410-af19-c9cd2b2d52af
This commit is contained in:
parent
ca2bbe4bc2
commit
d06ede0e44
|
@ -410,6 +410,8 @@ struct zap_isdn_data {
|
|||
struct zap_sigmsg sigmsg;
|
||||
zio_signal_cb_t sig_cb;
|
||||
uint32_t flags;
|
||||
zap_channel_t *channels_local_crv[32768];
|
||||
zap_channel_t *channels_remote_crv[32768];
|
||||
};
|
||||
|
||||
struct zap_analog_data {
|
||||
|
@ -438,8 +440,6 @@ struct zap_span {
|
|||
teletone_tone_map_t tone_detect_map[ZAP_TONEMAP_INVALID+1];
|
||||
teletone_multi_tone_t tone_finder[ZAP_TONEMAP_INVALID+1];
|
||||
zap_channel_t channels[ZAP_MAX_CHANNELS_SPAN];
|
||||
zap_channel_t *channels_local_crv[32768];
|
||||
zap_channel_t *channels_remote_crv[32768];
|
||||
zio_channel_outgoing_call_t outgoing_call;
|
||||
zio_channel_request_t channel_request;
|
||||
void *mod_data;
|
||||
|
|
|
@ -495,6 +495,19 @@ L3INT Q931CreateCRV(Q931_TrunkInfo_t *pTrunk, L3INT * callIndex)
|
|||
return Q931AllocateCRV(pTrunk, CRV, callIndex);
|
||||
}
|
||||
|
||||
|
||||
L3INT Q931ReleaseCRV(Q931_TrunkInfo_t *pTrunk, L3INT CRV)
|
||||
{
|
||||
int callIndex;
|
||||
|
||||
if ((Q931FindCRV(pTrunk, CRV, &callIndex)) == Q931E_NO_ERROR) {
|
||||
pTrunk->call[callIndex].InUse = 0;
|
||||
return Q931E_NO_ERROR;
|
||||
}
|
||||
|
||||
return Q931E_INVALID_CRV;
|
||||
}
|
||||
|
||||
/*****************************************************************************
|
||||
|
||||
Function: Q931AllocateCRV
|
||||
|
|
|
@ -918,6 +918,7 @@ L3INT Q931InitMesRestartAck(Q931mes_Generic * pMes);
|
|||
L3INT Q931InitMesGeneric(Q931mes_Generic *pMes);
|
||||
|
||||
L3INT Q931CreateCRV(Q931_TrunkInfo_t *pTrunk, L3INT * callIndex);
|
||||
L3INT Q931ReleaseCRV(Q931_TrunkInfo_t *pTrunk, L3INT CRV);
|
||||
L3INT Q931AllocateCRV(Q931_TrunkInfo_t *pTrunk, L3INT iCRV, L3INT * callIndex);
|
||||
L3INT Q931FindCRV(Q931_TrunkInfo_t *pTrunk, L3INT crv, L3INT *callindex);
|
||||
L3INT Q931GetCallState(Q931_TrunkInfo_t *pTrunk, L3INT iCRV);
|
||||
|
|
|
@ -85,9 +85,9 @@ static L3INT zap_isdn_931_34(void *pvt, L2UCHAR *msg, L2INT mlen)
|
|||
#endif
|
||||
|
||||
if (gen->CRVFlag) {
|
||||
zchan = span->channels_local_crv[gen->CRV];
|
||||
zchan = isdn_data->channels_local_crv[gen->CRV];
|
||||
} else {
|
||||
zchan = span->channels_remote_crv[gen->CRV];
|
||||
zchan = isdn_data->channels_remote_crv[gen->CRV];
|
||||
}
|
||||
|
||||
|
||||
|
@ -197,7 +197,7 @@ static L3INT zap_isdn_931_34(void *pvt, L2UCHAR *msg, L2INT mlen)
|
|||
break;
|
||||
case Q931mes_SETUP:
|
||||
{
|
||||
|
||||
|
||||
Q931ie_CallingNum *callingnum = Q931GetIEPtr(gen->CallingNum, gen->buf);
|
||||
Q931ie_CalledNum *callednum = Q931GetIEPtr(gen->CalledNum, gen->buf);
|
||||
zap_status_t status;
|
||||
|
@ -234,7 +234,7 @@ static L3INT zap_isdn_931_34(void *pvt, L2UCHAR *msg, L2INT mlen)
|
|||
}
|
||||
|
||||
if (zchan->state == ZAP_CHANNEL_STATE_DOWN) {
|
||||
zchan->span->channels_remote_crv[gen->CRV] = zchan;
|
||||
isdn_data->channels_remote_crv[gen->CRV] = zchan;
|
||||
memset(&zchan->caller_data, 0, sizeof(zchan->caller_data));
|
||||
|
||||
zap_set_string(zchan->caller_data.cid_num.digits, (char *)callingnum->Digit);
|
||||
|
@ -268,6 +268,10 @@ static L3INT zap_isdn_931_34(void *pvt, L2UCHAR *msg, L2INT mlen)
|
|||
gen->Cause = Q931AppendIE((L3UCHAR *) gen, (L3UCHAR *) &cause);
|
||||
Q931Rx43(&isdn_data->q931, (L3UCHAR *) gen, gen->Size);
|
||||
|
||||
if (gen->CRV) {
|
||||
Q931ReleaseCRV(&isdn_data->q931, gen->CRV);
|
||||
}
|
||||
|
||||
if (zchan) {
|
||||
zap_log(ZAP_LOG_CRIT, "Channel is busy\n");
|
||||
} else {
|
||||
|
@ -335,6 +339,9 @@ static __inline__ void state_advance(zap_channel_t *zchan)
|
|||
switch (zchan->state) {
|
||||
case ZAP_CHANNEL_STATE_DOWN:
|
||||
{
|
||||
if (gen->CRV) {
|
||||
Q931ReleaseCRV(&isdn_data->q931, gen->CRV);
|
||||
}
|
||||
zap_channel_done(zchan);
|
||||
}
|
||||
break;
|
||||
|
@ -515,7 +522,7 @@ static __inline__ void state_advance(zap_channel_t *zchan)
|
|||
zap_copy_string((char *)ptrCalledNum->Digit, zchan->caller_data.ani.digits, strlen(zchan->caller_data.ani.digits)+1);
|
||||
|
||||
Q931Rx43(&isdn_data->q931, (L3UCHAR *) gen, gen->Size);
|
||||
zchan->span->channels_local_crv[gen->CRV] = zchan;
|
||||
isdn_data->channels_local_crv[gen->CRV] = zchan;
|
||||
}
|
||||
break;
|
||||
case ZAP_CHANNEL_STATE_HANGUP:
|
||||
|
|
Loading…
Reference in New Issue