}
else if (iFrom ==2)
{
+ if (pTrunk->autoRestartAck) {
+ Q931AckRestart(pTrunk, buf);
+ }
/* TODO Add proc here*/
ret = Q931Tx34(pTrunk,buf,pMes->Size);
}
#include "Q931.h"
#include "memory.h"
+extern L3INT Q931L4HeaderSpace;
+
/*
L3INT Q931CreateMesIndex(L3INT mc)
{
pTrunk->PrivateData32 = PrivateData32;
pTrunk->PrivateData34 = PrivateData34;
- pTrunk->LastCRV = 0;
- pTrunk->Dialect = Dialect + NetUser;
- pTrunk->Enabled = 0;
- pTrunk->TrunkType = TrunkType;
- pTrunk->NetUser = NetUser;
- pTrunk->TrunkState = 0;
+ pTrunk->LastCRV = 0;
+ pTrunk->Dialect = Dialect + NetUser;
+ pTrunk->Enabled = 0;
+ pTrunk->TrunkType = TrunkType;
+ pTrunk->NetUser = NetUser;
+ pTrunk->TrunkState = 0;
+ pTrunk->autoRestartAck = 0;
for(y=0; y < Q931MAXCHPERTRUNK; y++)
{
pTrunk->ch[y].Available = 1;
return 0;
}
+
+L3INT Q931AckRestart(Q931_TrunkInfo_t *pTrunk, L3UCHAR *buf)
+{
+ L3INT RetCode;
+
+ Q931mes_Header *ptr = (Q931mes_Header*)&buf[Q931L4HeaderSpace];
+ ptr->MesType = Q931mes_RESTART_ACKNOWLEDGE;
+
+ RetCode = Q931Proc[pTrunk->Dialect][ptr->MesType](pTrunk, buf, 4);
+
+ return RetCode;
+}
L3INT Q931Disconnect(Q931_TrunkInfo_t *pTrunk, L3INT iTo, L3INT iCRV, L3INT iCause);
L3INT Q931ReleaseComplete(Q931_TrunkInfo_t *pTrunk, L3INT iTo);
+L3INT Q931AckRestart(Q931_TrunkInfo_t *pTrunk, L3UCHAR *buf);
L3INT Q931Api_InitTrunk(Q931_TrunkInfo_t *pTrunk,
Q931Dialect_t Dialect,
zap_log(ZAP_LOG_DEBUG, "Yay I got an event! Type:[%d] Size:[%d]\n", gen->MesType, gen->Size);
- gen->MesType = Q931mes_RESTART_ACKNOWLEDGE;
- Q931Rx43(&data->q931, msg, gen->Size);
-
return 0;
}
zap_isdn_931_err,
&span->isdn_data->q921,
span);
-
+
+ span->isdn_data->q931.autoRestartAck = 1;
span->signal_type = ZAP_SIGTYPE_ISDN;