mirror of
https://github.com/signalwire/freeswitch.git
synced 2025-04-16 00:41:41 +00:00
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;
|
struct zap_sigmsg sigmsg;
|
||||||
zio_signal_cb_t sig_cb;
|
zio_signal_cb_t sig_cb;
|
||||||
uint32_t flags;
|
uint32_t flags;
|
||||||
|
zap_channel_t *channels_local_crv[32768];
|
||||||
|
zap_channel_t *channels_remote_crv[32768];
|
||||||
};
|
};
|
||||||
|
|
||||||
struct zap_analog_data {
|
struct zap_analog_data {
|
||||||
@ -438,8 +440,6 @@ struct zap_span {
|
|||||||
teletone_tone_map_t tone_detect_map[ZAP_TONEMAP_INVALID+1];
|
teletone_tone_map_t tone_detect_map[ZAP_TONEMAP_INVALID+1];
|
||||||
teletone_multi_tone_t tone_finder[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[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_outgoing_call_t outgoing_call;
|
||||||
zio_channel_request_t channel_request;
|
zio_channel_request_t channel_request;
|
||||||
void *mod_data;
|
void *mod_data;
|
||||||
|
@ -495,6 +495,19 @@ L3INT Q931CreateCRV(Q931_TrunkInfo_t *pTrunk, L3INT * callIndex)
|
|||||||
return Q931AllocateCRV(pTrunk, CRV, 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
|
Function: Q931AllocateCRV
|
||||||
|
@ -918,6 +918,7 @@ L3INT Q931InitMesRestartAck(Q931mes_Generic * pMes);
|
|||||||
L3INT Q931InitMesGeneric(Q931mes_Generic *pMes);
|
L3INT Q931InitMesGeneric(Q931mes_Generic *pMes);
|
||||||
|
|
||||||
L3INT Q931CreateCRV(Q931_TrunkInfo_t *pTrunk, L3INT * callIndex);
|
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 Q931AllocateCRV(Q931_TrunkInfo_t *pTrunk, L3INT iCRV, L3INT * callIndex);
|
||||||
L3INT Q931FindCRV(Q931_TrunkInfo_t *pTrunk, L3INT crv, L3INT *callindex);
|
L3INT Q931FindCRV(Q931_TrunkInfo_t *pTrunk, L3INT crv, L3INT *callindex);
|
||||||
L3INT Q931GetCallState(Q931_TrunkInfo_t *pTrunk, L3INT iCRV);
|
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
|
#endif
|
||||||
|
|
||||||
if (gen->CRVFlag) {
|
if (gen->CRVFlag) {
|
||||||
zchan = span->channels_local_crv[gen->CRV];
|
zchan = isdn_data->channels_local_crv[gen->CRV];
|
||||||
} else {
|
} else {
|
||||||
zchan = span->channels_remote_crv[gen->CRV];
|
zchan = isdn_data->channels_remote_crv[gen->CRV];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -234,7 +234,7 @@ static L3INT zap_isdn_931_34(void *pvt, L2UCHAR *msg, L2INT mlen)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (zchan->state == ZAP_CHANNEL_STATE_DOWN) {
|
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));
|
memset(&zchan->caller_data, 0, sizeof(zchan->caller_data));
|
||||||
|
|
||||||
zap_set_string(zchan->caller_data.cid_num.digits, (char *)callingnum->Digit);
|
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);
|
gen->Cause = Q931AppendIE((L3UCHAR *) gen, (L3UCHAR *) &cause);
|
||||||
Q931Rx43(&isdn_data->q931, (L3UCHAR *) gen, gen->Size);
|
Q931Rx43(&isdn_data->q931, (L3UCHAR *) gen, gen->Size);
|
||||||
|
|
||||||
|
if (gen->CRV) {
|
||||||
|
Q931ReleaseCRV(&isdn_data->q931, gen->CRV);
|
||||||
|
}
|
||||||
|
|
||||||
if (zchan) {
|
if (zchan) {
|
||||||
zap_log(ZAP_LOG_CRIT, "Channel is busy\n");
|
zap_log(ZAP_LOG_CRIT, "Channel is busy\n");
|
||||||
} else {
|
} else {
|
||||||
@ -335,6 +339,9 @@ static __inline__ void state_advance(zap_channel_t *zchan)
|
|||||||
switch (zchan->state) {
|
switch (zchan->state) {
|
||||||
case ZAP_CHANNEL_STATE_DOWN:
|
case ZAP_CHANNEL_STATE_DOWN:
|
||||||
{
|
{
|
||||||
|
if (gen->CRV) {
|
||||||
|
Q931ReleaseCRV(&isdn_data->q931, gen->CRV);
|
||||||
|
}
|
||||||
zap_channel_done(zchan);
|
zap_channel_done(zchan);
|
||||||
}
|
}
|
||||||
break;
|
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);
|
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);
|
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;
|
break;
|
||||||
case ZAP_CHANNEL_STATE_HANGUP:
|
case ZAP_CHANNEL_STATE_HANGUP:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user