mirror of
https://github.com/signalwire/freeswitch.git
synced 2026-07-08 13:21:51 +00:00
Codingstyle cleanup
git-svn-id: http://svn.openzap.org/svn/openzap/trunk@535 a93c3328-9c30-0410-af19-c9cd2b2d52af
This commit is contained in:
@@ -4,11 +4,11 @@
|
||||
|
||||
Contents: AT&T 5ESS ISDN State Engine for NT (Network Mode).
|
||||
|
||||
The controlling state engine for Q.931 is the state engine
|
||||
on the NT side. The state engine on the TE side is a slave
|
||||
of this. The TE side maintain it's own states as described in
|
||||
ITU-T Q931, but will in raise conditions be overridden by
|
||||
the NT side.
|
||||
The controlling state engine for Q.931 is the state engine
|
||||
on the NT side. The state engine on the TE side is a slave
|
||||
of this. The TE side maintain it's own states as described in
|
||||
ITU-T Q931, but will in raise conditions be overridden by
|
||||
the NT side.
|
||||
|
||||
License/Copyright:
|
||||
|
||||
@@ -25,14 +25,14 @@
|
||||
modification, are permitted provided that the following conditions are
|
||||
met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright notice,
|
||||
this list of conditions and the following disclaimer.
|
||||
* Redistributions in binary form must reproduce the above copyright notice,
|
||||
this list of conditions and the following disclaimer in the documentation
|
||||
and/or other materials provided with the distribution.
|
||||
* Neither the name of the Case Labs, Ltd nor the names of its contributors
|
||||
may be used to endorse or promote products derived from this software
|
||||
without specific prior written permission.
|
||||
* Redistributions of source code must retain the above copyright notice,
|
||||
this list of conditions and the following disclaimer.
|
||||
* Redistributions in binary form must reproduce the above copyright notice,
|
||||
this list of conditions and the following disclaimer in the documentation
|
||||
and/or other materials provided with the distribution.
|
||||
* Neither the name of the Case Labs, Ltd nor the names of its contributors
|
||||
may be used to endorse or promote products derived from this software
|
||||
without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
@@ -53,80 +53,80 @@
|
||||
Function: ATT5ESSCreateNT
|
||||
|
||||
Description: Will create the AT&T 5ESS ISDN NT as a Dialect in the stack. The first
|
||||
bulk set up the message handlers, the second bulk the IE
|
||||
encoders/coders, and the last bulk set up the state table.
|
||||
bulk set up the message handlers, the second bulk the IE
|
||||
encoders/coders, and the last bulk set up the state table.
|
||||
|
||||
Parameters: i Dialect index
|
||||
*****************************************************************************/
|
||||
void ATT5ESSCreateNT(L3UCHAR i)
|
||||
{
|
||||
Q931SetMesProc(Q931mes_ALERTING, i,Q931ProcAlertingNT, Q931Umes_Alerting, Q931Pmes_Alerting);
|
||||
Q931SetMesProc(Q931mes_CALL_PROCEEDING, i,Q931ProcCallProceedingNT, Q931Umes_CallProceeding, Q931Pmes_CallProceeding);
|
||||
Q931SetMesProc(Q931mes_CONNECT, i,Q931ProcConnectNT, Q931Umes_Connect, Q931Pmes_Connect);
|
||||
Q931SetMesProc(Q931mes_CONNECT_ACKNOWLEDGE, i,Q931ProcConnectAckNT, Q931Umes_ConnectAck, Q931Pmes_ConnectAck);
|
||||
Q931SetMesProc(Q931mes_PROGRESS, i,Q931ProcProgressNT, Q931Umes_Progress, Q931Pmes_Progress);
|
||||
Q931SetMesProc(Q931mes_SETUP, i,Q931ProcSetupNT, Q931Umes_Setup, Q931Pmes_Setup);
|
||||
Q931SetMesProc(Q931mes_SETUP_ACKNOWLEDGE, i,Q931ProcSetupAckNT, Q931Umes_SetupAck, Q931Pmes_SetupAck);
|
||||
Q931SetMesProc(Q931mes_RESUME, i,Q931ProcResumeNT, Q931Umes_Resume, Q931Pmes_Resume);
|
||||
Q931SetMesProc(Q931mes_RESUME_ACKNOWLEDGE, i,Q931ProcResumeAckNT, Q931Umes_ResumeAck, Q931Pmes_ResumeAck);
|
||||
Q931SetMesProc(Q931mes_RESUME_REJECT, i,Q931ProcResumeRejectNT, Q931Umes_ResumeReject, Q931Pmes_ResumeReject);
|
||||
Q931SetMesProc(Q931mes_SUSPEND, i,Q931ProcSuspendNT, Q931Umes_Suspend, Q931Pmes_Suspend);
|
||||
Q931SetMesProc(Q931mes_SUSPEND_ACKNOWLEDGE, i,Q931ProcSuspendAckNT, Q931Umes_SuspendAck, Q931Pmes_SuspendAck);
|
||||
Q931SetMesProc(Q931mes_SUSPEND_REJECT, i,Q931ProcSuspendRejectNT, Q931Umes_SuspendReject, Q931Pmes_SuspendReject);
|
||||
Q931SetMesProc(Q931mes_USER_INFORMATION, i,Q931ProcUserInformationNT, Q931Umes_UserInformation, Q931Pmes_UserInformation);
|
||||
Q931SetMesProc(Q931mes_DISCONNECT, i,Q931ProcDisconnectNT, Q931Umes_Disconnect, Q931Pmes_Disconnect);
|
||||
Q931SetMesProc(Q931mes_RELEASE, i,Q931ProcReleaseNT, Q931Umes_Release, Q931Pmes_Release);
|
||||
Q931SetMesProc(Q931mes_RELEASE_COMPLETE, i,Q931ProcReleaseCompleteNT, Q931Umes_ReleaseComplete, Q931Pmes_ReleaseComplete);
|
||||
Q931SetMesProc(Q931mes_RESTART, i,Q931ProcRestartNT, Q931Umes_Restart, Q931Pmes_Restart);
|
||||
Q931SetMesProc(Q931mes_RESTART_ACKNOWLEDGE, i,Q931ProcRestartAckNT, Q931Umes_RestartAck, Q931Pmes_RestartAck);
|
||||
Q931SetMesProc(Q931mes_CONGESTION_CONTROL, i,Q931ProcCongestionControlNT, Q931Umes_CongestionControl, Q931Pmes_CongestionControl);
|
||||
Q931SetMesProc(Q931mes_INFORMATION, i,Q931ProcInformationNT, Q931Umes_Information, Q931Pmes_Information);
|
||||
Q931SetMesProc(Q931mes_NOTIFY, i,Q931ProcNotifyNT, Q931Umes_Notify, Q931Pmes_Notify);
|
||||
Q931SetMesProc(Q931mes_STATUS, i,Q931ProcStatusNT, Q931Umes_Status, Q931Pmes_Status);
|
||||
Q931SetMesProc(Q931mes_STATUS_ENQUIRY, i,Q931ProcStatusEnquiryNT, Q931Umes_StatusEnquiry, Q931Pmes_StatusEnquiry);
|
||||
Q931SetMesProc(Q931mes_SEGMENT, i,Q931ProcSegmentNT, Q931Umes_Segment, Q931Pmes_Segment);
|
||||
Q931SetMesProc(Q931mes_ALERTING, i, Q931ProcAlertingNT, Q931Umes_Alerting, Q931Pmes_Alerting);
|
||||
Q931SetMesProc(Q931mes_CALL_PROCEEDING, i, Q931ProcCallProceedingNT, Q931Umes_CallProceeding, Q931Pmes_CallProceeding);
|
||||
Q931SetMesProc(Q931mes_CONNECT, i, Q931ProcConnectNT, Q931Umes_Connect, Q931Pmes_Connect);
|
||||
Q931SetMesProc(Q931mes_CONNECT_ACKNOWLEDGE, i, Q931ProcConnectAckNT, Q931Umes_ConnectAck, Q931Pmes_ConnectAck);
|
||||
Q931SetMesProc(Q931mes_PROGRESS, i, Q931ProcProgressNT, Q931Umes_Progress, Q931Pmes_Progress);
|
||||
Q931SetMesProc(Q931mes_SETUP, i, Q931ProcSetupNT, Q931Umes_Setup, Q931Pmes_Setup);
|
||||
Q931SetMesProc(Q931mes_SETUP_ACKNOWLEDGE, i, Q931ProcSetupAckNT, Q931Umes_SetupAck, Q931Pmes_SetupAck);
|
||||
Q931SetMesProc(Q931mes_RESUME, i, Q931ProcResumeNT, Q931Umes_Resume, Q931Pmes_Resume);
|
||||
Q931SetMesProc(Q931mes_RESUME_ACKNOWLEDGE, i, Q931ProcResumeAckNT, Q931Umes_ResumeAck, Q931Pmes_ResumeAck);
|
||||
Q931SetMesProc(Q931mes_RESUME_REJECT, i, Q931ProcResumeRejectNT, Q931Umes_ResumeReject, Q931Pmes_ResumeReject);
|
||||
Q931SetMesProc(Q931mes_SUSPEND, i, Q931ProcSuspendNT, Q931Umes_Suspend, Q931Pmes_Suspend);
|
||||
Q931SetMesProc(Q931mes_SUSPEND_ACKNOWLEDGE, i, Q931ProcSuspendAckNT, Q931Umes_SuspendAck, Q931Pmes_SuspendAck);
|
||||
Q931SetMesProc(Q931mes_SUSPEND_REJECT, i, Q931ProcSuspendRejectNT, Q931Umes_SuspendReject, Q931Pmes_SuspendReject);
|
||||
Q931SetMesProc(Q931mes_USER_INFORMATION, i, Q931ProcUserInformationNT, Q931Umes_UserInformation, Q931Pmes_UserInformation);
|
||||
Q931SetMesProc(Q931mes_DISCONNECT, i, Q931ProcDisconnectNT, Q931Umes_Disconnect, Q931Pmes_Disconnect);
|
||||
Q931SetMesProc(Q931mes_RELEASE, i, Q931ProcReleaseNT, Q931Umes_Release, Q931Pmes_Release);
|
||||
Q931SetMesProc(Q931mes_RELEASE_COMPLETE, i, Q931ProcReleaseCompleteNT, Q931Umes_ReleaseComplete, Q931Pmes_ReleaseComplete);
|
||||
Q931SetMesProc(Q931mes_RESTART, i, Q931ProcRestartNT, Q931Umes_Restart, Q931Pmes_Restart);
|
||||
Q931SetMesProc(Q931mes_RESTART_ACKNOWLEDGE, i, Q931ProcRestartAckNT, Q931Umes_RestartAck, Q931Pmes_RestartAck);
|
||||
Q931SetMesProc(Q931mes_CONGESTION_CONTROL, i, Q931ProcCongestionControlNT, Q931Umes_CongestionControl, Q931Pmes_CongestionControl);
|
||||
Q931SetMesProc(Q931mes_INFORMATION, i, Q931ProcInformationNT, Q931Umes_Information, Q931Pmes_Information);
|
||||
Q931SetMesProc(Q931mes_NOTIFY, i, Q931ProcNotifyNT, Q931Umes_Notify, Q931Pmes_Notify);
|
||||
Q931SetMesProc(Q931mes_STATUS, i, Q931ProcStatusNT, Q931Umes_Status, Q931Pmes_Status);
|
||||
Q931SetMesProc(Q931mes_STATUS_ENQUIRY, i, Q931ProcStatusEnquiryNT, Q931Umes_StatusEnquiry, Q931Pmes_StatusEnquiry);
|
||||
Q931SetMesProc(Q931mes_SEGMENT, i, Q931ProcSegmentNT, Q931Umes_Segment, Q931Pmes_Segment);
|
||||
|
||||
Q931SetMesProc(Q932mes_FACILITY, i,Q932ProcFacilityNT, Q932Umes_Facility, Q932Pmes_Facility);
|
||||
Q931SetMesProc(Q932mes_HOLD, i,Q932ProcHoldNT, Q932Umes_Hold, Q932Pmes_Hold);
|
||||
Q931SetMesProc(Q932mes_HOLD_ACKNOWLEDGE, i,Q932ProcHoldAckNT, Q932Umes_HoldAck, Q932Pmes_HoldAck);
|
||||
Q931SetMesProc(Q932mes_HOLD_REJECT, i,Q932ProcHoldRejectNT, Q932Umes_HoldReject, Q932Pmes_HoldReject);
|
||||
Q931SetMesProc(Q932mes_REGISTER, i,Q932ProcRegisterNT, Q932Umes_Register, Q932Pmes_Register);
|
||||
Q931SetMesProc(Q932mes_RETRIEVE, i,Q932ProcRetrieveNT, Q932Umes_Retrieve, Q932Pmes_Retrieve);
|
||||
Q931SetMesProc(Q932mes_RETRIEVE_ACKNOWLEDGE,i,Q932ProcRetrieveAckNT, Q932Umes_RetrieveAck, Q932Pmes_RetrieveAck);
|
||||
Q931SetMesProc(Q932mes_RETRIEVE_REJECT, i,Q932ProcRetrieveRejectNT, Q932Umes_RetrieveReject, Q932Pmes_RetrieveReject);
|
||||
Q931SetMesProc(Q932mes_FACILITY, i, Q932ProcFacilityNT, Q932Umes_Facility, Q932Pmes_Facility);
|
||||
Q931SetMesProc(Q932mes_HOLD, i, Q932ProcHoldNT, Q932Umes_Hold, Q932Pmes_Hold);
|
||||
Q931SetMesProc(Q932mes_HOLD_ACKNOWLEDGE, i, Q932ProcHoldAckNT, Q932Umes_HoldAck, Q932Pmes_HoldAck);
|
||||
Q931SetMesProc(Q932mes_HOLD_REJECT, i, Q932ProcHoldRejectNT, Q932Umes_HoldReject, Q932Pmes_HoldReject);
|
||||
Q931SetMesProc(Q932mes_REGISTER, i, Q932ProcRegisterNT, Q932Umes_Register, Q932Pmes_Register);
|
||||
Q931SetMesProc(Q932mes_RETRIEVE, i, Q932ProcRetrieveNT, Q932Umes_Retrieve, Q932Pmes_Retrieve);
|
||||
Q931SetMesProc(Q932mes_RETRIEVE_ACKNOWLEDGE, i, Q932ProcRetrieveAckNT, Q932Umes_RetrieveAck, Q932Pmes_RetrieveAck);
|
||||
Q931SetMesProc(Q932mes_RETRIEVE_REJECT, i, Q932ProcRetrieveRejectNT, Q932Umes_RetrieveReject, Q932Pmes_RetrieveReject);
|
||||
|
||||
/* Set up the IE encoder/decoder handle table.*/
|
||||
Q931SetIEProc(Q931ie_SEGMENTED_MESSAGE, i,Q931Pie_Segment, Q931Uie_Segment);
|
||||
Q931SetIEProc(Q931ie_BEARER_CAPABILITY, i,Q931Pie_BearerCap, Q931Uie_BearerCap);
|
||||
Q931SetIEProc(Q931ie_CAUSE, i,Q931Pie_Cause, Q931Uie_Cause);
|
||||
Q931SetIEProc(Q931ie_CALL_IDENTITY, i,Q931Pie_CallID, Q931Uie_CallID);
|
||||
Q931SetIEProc(Q931ie_CALL_STATE, i,Q931Pie_CallState, Q931Uie_CallState);
|
||||
Q931SetIEProc(Q931ie_CHANNEL_IDENTIFICATION, i,Q931Pie_ChanID, Q931Uie_ChanID);
|
||||
Q931SetIEProc(Q931ie_PROGRESS_INDICATOR, i,Q931Pie_ProgInd, Q931Uie_ProgInd);
|
||||
Q931SetIEProc(Q931ie_NETWORK_SPECIFIC_FACILITIES, i,Q931Pie_NetFac, Q931Uie_NetFac);
|
||||
Q931SetIEProc(Q931ie_NOTIFICATION_INDICATOR, i,Q931Pie_NotifInd, Q931Uie_NotifInd);
|
||||
Q931SetIEProc(Q931ie_DISPLAY, i,Q931Pie_Display, Q931Uie_Display);
|
||||
Q931SetIEProc(Q931ie_DATETIME, i,Q931Pie_DateTime, Q931Uie_DateTime);
|
||||
Q931SetIEProc(Q931ie_KEYPAD_FACILITY, i,Q931Pie_KeypadFac, Q931Uie_KeypadFac);
|
||||
Q931SetIEProc(Q931ie_SIGNAL, i,Q931Pie_Signal, Q931Uie_Signal);
|
||||
Q931SetIEProc(Q931ie_TRANSIT_DELAY_SELECTION_AND_IND, i,Q931Pie_TransNetSel, Q931Uie_TransNetSel);
|
||||
Q931SetIEProc(Q931ie_CALLING_PARTY_NUMBER, i,Q931Pie_CallingNum, Q931Uie_CallingNum);
|
||||
Q931SetIEProc(Q931ie_CALLING_PARTY_SUBADDRESS, i,Q931Pie_CallingSub, Q931Uie_CallingSub);
|
||||
Q931SetIEProc(Q931ie_CALLED_PARTY_NUMBER, i,Q931Pie_CalledNum, Q931Uie_CalledNum);
|
||||
Q931SetIEProc(Q931ie_CALLED_PARTY_SUBADDRESS, i,Q931Pie_CalledSub, Q931Uie_CalledSub);
|
||||
Q931SetIEProc(Q931ie_TRANSIT_NETWORK_SELECTION, i,Q931Pie_TransNetSel, Q931Uie_TransNetSel);
|
||||
Q931SetIEProc(Q931ie_RESTART_INDICATOR, i,Q931Pie_RestartInd, Q931Uie_RestartInd);
|
||||
Q931SetIEProc(Q931ie_LOW_LAYER_COMPATIBILITY, i,Q931Pie_LLComp, Q931Uie_LLComp);
|
||||
Q931SetIEProc(Q931ie_HIGH_LAYER_COMPATIBILITY, i,Q931Pie_HLComp, Q931Uie_HLComp);
|
||||
Q931SetIEProc(Q931ie_USER_USER, i,Q931Pie_UserUser, Q931Uie_UserUser);
|
||||
Q931SetIEProc(Q931ie_GENERIC_DIGITS, i,Q931Pie_GenericDigits, Q931Uie_GenericDigits);
|
||||
/* Set up the IE encoder/decoder handle table.*/
|
||||
Q931SetIEProc(Q931ie_SEGMENTED_MESSAGE, i, Q931Pie_Segment, Q931Uie_Segment);
|
||||
Q931SetIEProc(Q931ie_BEARER_CAPABILITY, i, Q931Pie_BearerCap, Q931Uie_BearerCap);
|
||||
Q931SetIEProc(Q931ie_CAUSE, i, Q931Pie_Cause, Q931Uie_Cause);
|
||||
Q931SetIEProc(Q931ie_CALL_IDENTITY, i, Q931Pie_CallID, Q931Uie_CallID);
|
||||
Q931SetIEProc(Q931ie_CALL_STATE, i, Q931Pie_CallState, Q931Uie_CallState);
|
||||
Q931SetIEProc(Q931ie_CHANNEL_IDENTIFICATION, i, Q931Pie_ChanID, Q931Uie_ChanID);
|
||||
Q931SetIEProc(Q931ie_PROGRESS_INDICATOR, i, Q931Pie_ProgInd, Q931Uie_ProgInd);
|
||||
Q931SetIEProc(Q931ie_NETWORK_SPECIFIC_FACILITIES, i, Q931Pie_NetFac, Q931Uie_NetFac);
|
||||
Q931SetIEProc(Q931ie_NOTIFICATION_INDICATOR, i, Q931Pie_NotifInd, Q931Uie_NotifInd);
|
||||
Q931SetIEProc(Q931ie_DISPLAY, i, Q931Pie_Display, Q931Uie_Display);
|
||||
Q931SetIEProc(Q931ie_DATETIME, i, Q931Pie_DateTime, Q931Uie_DateTime);
|
||||
Q931SetIEProc(Q931ie_KEYPAD_FACILITY, i, Q931Pie_KeypadFac, Q931Uie_KeypadFac);
|
||||
Q931SetIEProc(Q931ie_SIGNAL, i, Q931Pie_Signal, Q931Uie_Signal);
|
||||
Q931SetIEProc(Q931ie_TRANSIT_DELAY_SELECTION_AND_IND, i, Q931Pie_TransNetSel, Q931Uie_TransNetSel);
|
||||
Q931SetIEProc(Q931ie_CALLING_PARTY_NUMBER, i, Q931Pie_CallingNum, Q931Uie_CallingNum);
|
||||
Q931SetIEProc(Q931ie_CALLING_PARTY_SUBADDRESS, i, Q931Pie_CallingSub, Q931Uie_CallingSub);
|
||||
Q931SetIEProc(Q931ie_CALLED_PARTY_NUMBER, i, Q931Pie_CalledNum, Q931Uie_CalledNum);
|
||||
Q931SetIEProc(Q931ie_CALLED_PARTY_SUBADDRESS, i, Q931Pie_CalledSub, Q931Uie_CalledSub);
|
||||
Q931SetIEProc(Q931ie_TRANSIT_NETWORK_SELECTION, i, Q931Pie_TransNetSel, Q931Uie_TransNetSel);
|
||||
Q931SetIEProc(Q931ie_RESTART_INDICATOR, i, Q931Pie_RestartInd, Q931Uie_RestartInd);
|
||||
Q931SetIEProc(Q931ie_LOW_LAYER_COMPATIBILITY, i, Q931Pie_LLComp, Q931Uie_LLComp);
|
||||
Q931SetIEProc(Q931ie_HIGH_LAYER_COMPATIBILITY, i, Q931Pie_HLComp, Q931Uie_HLComp);
|
||||
Q931SetIEProc(Q931ie_USER_USER, i, Q931Pie_UserUser, Q931Uie_UserUser);
|
||||
Q931SetIEProc(Q931ie_GENERIC_DIGITS, i, Q931Pie_GenericDigits, Q931Uie_GenericDigits);
|
||||
|
||||
Q931SetIEProc(Q931ie_CONNECTED_NUMBER, i, Q931Pie_Generic, Q931Uie_Generic);
|
||||
Q931SetIEProc(Q931ie_FACILITY, i, Q931Pie_Generic, Q931Uie_Generic);
|
||||
|
||||
/* The following define a state machine. The point is that the Message */
|
||||
/* procs can when search this to find out if the message/state */
|
||||
/* combination is legale. If not, the proc for unexpected message apply.*/
|
||||
/* The following define a state machine. The point is that the Message */
|
||||
/* procs can when search this to find out if the message/state */
|
||||
/* combination is legale. If not, the proc for unexpected message apply.*/
|
||||
|
||||
/* TODO define state table here */
|
||||
/* TODO define state table here */
|
||||
}
|
||||
|
||||
+161
-168
@@ -4,18 +4,18 @@
|
||||
|
||||
Contents: AT&T 5ESS ISDN State Engine for TE (User Mode).
|
||||
|
||||
The controlling state engine for Q.931 is the state engine
|
||||
on the NT side. The state engine on the TE side is a slave
|
||||
of this. The TE side maintain it's own states as described in
|
||||
ITU-T Q931, but will in raise conditions be overridden by
|
||||
the NT side.
|
||||
The controlling state engine for Q.931 is the state engine
|
||||
on the NT side. The state engine on the TE side is a slave
|
||||
of this. The TE side maintain it's own states as described in
|
||||
ITU-T Q931, but will in raise conditions be overridden by
|
||||
the NT side.
|
||||
|
||||
This reference implementation uses a process per message,
|
||||
meaning that each message must check call states. This
|
||||
is easier for dialect maintenance as each message proc
|
||||
can be replaced individually. A new TE variant only
|
||||
need to copy the Q931CreateTE and replace those procs or
|
||||
need to override.
|
||||
This reference implementation uses a process per message,
|
||||
meaning that each message must check call states. This
|
||||
is easier for dialect maintenance as each message proc
|
||||
can be replaced individually. A new TE variant only
|
||||
need to copy the Q931CreateTE and replace those procs or
|
||||
need to override.
|
||||
|
||||
License/Copyright:
|
||||
|
||||
@@ -32,14 +32,14 @@
|
||||
modification, are permitted provided that the following conditions are
|
||||
met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright notice,
|
||||
this list of conditions and the following disclaimer.
|
||||
* Redistributions in binary form must reproduce the above copyright notice,
|
||||
this list of conditions and the following disclaimer in the documentation
|
||||
and/or other materials provided with the distribution.
|
||||
* Neither the name of the Case Labs, Ltd nor the names of its contributors
|
||||
may be used to endorse or promote products derived from this software
|
||||
without specific prior written permission.
|
||||
* Redistributions of source code must retain the above copyright notice,
|
||||
this list of conditions and the following disclaimer.
|
||||
* Redistributions in binary form must reproduce the above copyright notice,
|
||||
this list of conditions and the following disclaimer in the documentation
|
||||
and/or other materials provided with the distribution.
|
||||
* Neither the name of the Case Labs, Ltd nor the names of its contributors
|
||||
may be used to endorse or promote products derived from this software
|
||||
without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
@@ -61,159 +61,159 @@ extern L3INT Q931L4HeaderSpace;
|
||||
Function: ATT5ESSCreateTE
|
||||
|
||||
Description: Will create the AT&T 5ESS TE as a Dialect in the stack. The first
|
||||
bulk set up the message handlers, the second bulk the IE
|
||||
encoders/coders, and the last bulk set up the state table.
|
||||
bulk set up the message handlers, the second bulk the IE
|
||||
encoders/coders, and the last bulk set up the state table.
|
||||
|
||||
Parameters: i Dialect index
|
||||
*****************************************************************************/
|
||||
void ATT5ESSCreateTE(L3UCHAR i)
|
||||
{
|
||||
Q931SetMesProc(Q931mes_ALERTING, i,Q931ProcAlertingTE, Q931Umes_Alerting, Q931Pmes_Alerting);
|
||||
Q931SetMesProc(Q931mes_CALL_PROCEEDING, i,Q931ProcCallProceedingTE, Q931Umes_CallProceeding, Q931Pmes_CallProceeding);
|
||||
Q931SetMesProc(Q931mes_CONNECT, i,ATT5ESSProc0x07TE, ATT5ESSUmes_0x07, ATT5ESSPmes_0x07);
|
||||
Q931SetMesProc(Q931mes_CONNECT_ACKNOWLEDGE, i,ATT5ESSProc0x0fTE, ATT5ESSUmes_0x0f, ATT5ESSPmes_0x0f);
|
||||
Q931SetMesProc(Q931mes_PROGRESS, i,Q931ProcProgressTE, Q931Umes_Progress, Q931Pmes_Progress);
|
||||
Q931SetMesProc(Q931mes_SETUP, i,Q931ProcSetupTE, ATT5ESSUmes_Setup, ATT5ESSPmes_Setup);
|
||||
Q931SetMesProc(Q931mes_SETUP_ACKNOWLEDGE, i,Q931ProcSetupAckTE, Q931Umes_SetupAck, Q931Pmes_SetupAck);
|
||||
Q931SetMesProc(Q931mes_RESUME, i,Q931ProcResumeTE, Q931Umes_Resume, Q931Pmes_Resume);
|
||||
Q931SetMesProc(Q931mes_RESUME_ACKNOWLEDGE, i,Q931ProcResumeAckTE, Q931Umes_ResumeAck, Q931Pmes_ResumeAck);
|
||||
Q931SetMesProc(Q931mes_RESUME_REJECT, i,Q931ProcResumeRejectTE, Q931Umes_ResumeReject, Q931Pmes_ResumeReject);
|
||||
Q931SetMesProc(Q931mes_SUSPEND, i,Q931ProcSuspendTE, Q931Umes_Suspend, Q931Pmes_Suspend);
|
||||
Q931SetMesProc(Q931mes_SUSPEND_ACKNOWLEDGE, i,Q931ProcSuspendAckTE, Q931Umes_SuspendAck, Q931Pmes_SuspendAck);
|
||||
Q931SetMesProc(Q931mes_SUSPEND_REJECT, i,Q931ProcSuspendRejectTE, Q931Umes_SuspendReject, Q931Pmes_SuspendReject);
|
||||
Q931SetMesProc(Q931mes_USER_INFORMATION, i,Q931ProcUserInformationTE, Q931Umes_UserInformation, Q931Pmes_UserInformation);
|
||||
Q931SetMesProc(Q931mes_DISCONNECT, i,Q931ProcDisconnectTE, Q931Umes_Disconnect, Q931Pmes_Disconnect);
|
||||
Q931SetMesProc(Q931mes_RELEASE, i,Q931ProcReleaseTE, Q931Umes_Release, Q931Pmes_Release);
|
||||
Q931SetMesProc(Q931mes_RELEASE_COMPLETE, i,Q931ProcReleaseCompleteTE, Q931Umes_ReleaseComplete, Q931Pmes_ReleaseComplete);
|
||||
Q931SetMesProc(Q931mes_RESTART, i,Q931ProcRestartTE, Q931Umes_Restart, Q931Pmes_Restart);
|
||||
Q931SetMesProc(Q931mes_RESTART_ACKNOWLEDGE, i,Q931ProcRestartAckTE, Q931Umes_RestartAck, Q931Pmes_RestartAck);
|
||||
Q931SetMesProc(Q931mes_CONGESTION_CONTROL, i,Q931ProcCongestionControlTE, Q931Umes_CongestionControl, Q931Pmes_CongestionControl);
|
||||
Q931SetMesProc(Q931mes_INFORMATION, i,Q931ProcInformationTE, Q931Umes_Information, Q931Pmes_Information);
|
||||
Q931SetMesProc(Q931mes_NOTIFY, i,Q931ProcNotifyTE, Q931Umes_Notify, Q931Pmes_Notify);
|
||||
Q931SetMesProc(Q931mes_STATUS, i,Q931ProcStatusTE, Q931Umes_Status, Q931Pmes_Status);
|
||||
Q931SetMesProc(Q931mes_STATUS_ENQUIRY, i,Q931ProcStatusEnquiryTE, Q931Umes_StatusEnquiry, Q931Pmes_StatusEnquiry);
|
||||
Q931SetMesProc(Q931mes_SEGMENT, i,Q931ProcSegmentTE, Q931Umes_Segment, Q931Pmes_Segment);
|
||||
Q931SetMesProc(Q931mes_ALERTING, i, Q931ProcAlertingTE, Q931Umes_Alerting, Q931Pmes_Alerting);
|
||||
Q931SetMesProc(Q931mes_CALL_PROCEEDING, i, Q931ProcCallProceedingTE, Q931Umes_CallProceeding, Q931Pmes_CallProceeding);
|
||||
Q931SetMesProc(Q931mes_CONNECT, i, ATT5ESSProc0x07TE, ATT5ESSUmes_0x07, ATT5ESSPmes_0x07);
|
||||
Q931SetMesProc(Q931mes_CONNECT_ACKNOWLEDGE, i, ATT5ESSProc0x0fTE, ATT5ESSUmes_0x0f, ATT5ESSPmes_0x0f);
|
||||
Q931SetMesProc(Q931mes_PROGRESS, i, Q931ProcProgressTE, Q931Umes_Progress, Q931Pmes_Progress);
|
||||
Q931SetMesProc(Q931mes_SETUP, i, Q931ProcSetupTE, ATT5ESSUmes_Setup, ATT5ESSPmes_Setup);
|
||||
Q931SetMesProc(Q931mes_SETUP_ACKNOWLEDGE, i, Q931ProcSetupAckTE, Q931Umes_SetupAck, Q931Pmes_SetupAck);
|
||||
Q931SetMesProc(Q931mes_RESUME, i, Q931ProcResumeTE, Q931Umes_Resume, Q931Pmes_Resume);
|
||||
Q931SetMesProc(Q931mes_RESUME_ACKNOWLEDGE, i, Q931ProcResumeAckTE, Q931Umes_ResumeAck, Q931Pmes_ResumeAck);
|
||||
Q931SetMesProc(Q931mes_RESUME_REJECT, i, Q931ProcResumeRejectTE, Q931Umes_ResumeReject, Q931Pmes_ResumeReject);
|
||||
Q931SetMesProc(Q931mes_SUSPEND, i, Q931ProcSuspendTE, Q931Umes_Suspend, Q931Pmes_Suspend);
|
||||
Q931SetMesProc(Q931mes_SUSPEND_ACKNOWLEDGE, i, Q931ProcSuspendAckTE, Q931Umes_SuspendAck, Q931Pmes_SuspendAck);
|
||||
Q931SetMesProc(Q931mes_SUSPEND_REJECT, i, Q931ProcSuspendRejectTE, Q931Umes_SuspendReject, Q931Pmes_SuspendReject);
|
||||
Q931SetMesProc(Q931mes_USER_INFORMATION, i, Q931ProcUserInformationTE, Q931Umes_UserInformation, Q931Pmes_UserInformation);
|
||||
Q931SetMesProc(Q931mes_DISCONNECT, i, Q931ProcDisconnectTE, Q931Umes_Disconnect, Q931Pmes_Disconnect);
|
||||
Q931SetMesProc(Q931mes_RELEASE, i, Q931ProcReleaseTE, Q931Umes_Release, Q931Pmes_Release);
|
||||
Q931SetMesProc(Q931mes_RELEASE_COMPLETE, i, Q931ProcReleaseCompleteTE, Q931Umes_ReleaseComplete, Q931Pmes_ReleaseComplete);
|
||||
Q931SetMesProc(Q931mes_RESTART, i, Q931ProcRestartTE, Q931Umes_Restart, Q931Pmes_Restart);
|
||||
Q931SetMesProc(Q931mes_RESTART_ACKNOWLEDGE, i, Q931ProcRestartAckTE, Q931Umes_RestartAck, Q931Pmes_RestartAck);
|
||||
Q931SetMesProc(Q931mes_CONGESTION_CONTROL, i, Q931ProcCongestionControlTE, Q931Umes_CongestionControl, Q931Pmes_CongestionControl);
|
||||
Q931SetMesProc(Q931mes_INFORMATION, i, Q931ProcInformationTE, Q931Umes_Information, Q931Pmes_Information);
|
||||
Q931SetMesProc(Q931mes_NOTIFY, i, Q931ProcNotifyTE, Q931Umes_Notify, Q931Pmes_Notify);
|
||||
Q931SetMesProc(Q931mes_STATUS, i, Q931ProcStatusTE, Q931Umes_Status, Q931Pmes_Status);
|
||||
Q931SetMesProc(Q931mes_STATUS_ENQUIRY, i, Q931ProcStatusEnquiryTE, Q931Umes_StatusEnquiry, Q931Pmes_StatusEnquiry);
|
||||
Q931SetMesProc(Q931mes_SEGMENT, i, Q931ProcSegmentTE, Q931Umes_Segment, Q931Pmes_Segment);
|
||||
|
||||
Q931SetMesProc(Q932mes_FACILITY, i,Q932ProcFacilityTE, Q932Umes_Facility, Q932Pmes_Facility);
|
||||
Q931SetMesProc(Q932mes_HOLD, i,Q932ProcHoldTE, Q932Umes_Hold, Q932Pmes_Hold);
|
||||
Q931SetMesProc(Q932mes_HOLD_ACKNOWLEDGE, i,Q932ProcHoldAckTE, Q932Umes_HoldAck, Q932Pmes_HoldAck);
|
||||
Q931SetMesProc(Q932mes_HOLD_REJECT, i,Q932ProcHoldRejectTE, Q932Umes_HoldReject, Q932Pmes_HoldReject);
|
||||
Q931SetMesProc(Q932mes_REGISTER, i,Q932ProcRegisterTE, Q932Umes_Register, Q932Pmes_Register);
|
||||
Q931SetMesProc(Q932mes_RETRIEVE, i,Q932ProcRetrieveTE, Q932Umes_Retrieve, Q932Pmes_Retrieve);
|
||||
Q931SetMesProc(Q932mes_RETRIEVE_ACKNOWLEDGE,i,Q932ProcRetrieveAckTE, Q932Umes_RetrieveAck, Q932Pmes_RetrieveAck);
|
||||
Q931SetMesProc(Q932mes_RETRIEVE_REJECT, i,Q932ProcRetrieveRejectTE, Q932Umes_RetrieveReject, Q932Pmes_RetrieveReject);
|
||||
Q931SetMesProc(Q932mes_FACILITY, i, Q932ProcFacilityTE, Q932Umes_Facility, Q932Pmes_Facility);
|
||||
Q931SetMesProc(Q932mes_HOLD, i, Q932ProcHoldTE, Q932Umes_Hold, Q932Pmes_Hold);
|
||||
Q931SetMesProc(Q932mes_HOLD_ACKNOWLEDGE, i, Q932ProcHoldAckTE, Q932Umes_HoldAck, Q932Pmes_HoldAck);
|
||||
Q931SetMesProc(Q932mes_HOLD_REJECT, i, Q932ProcHoldRejectTE, Q932Umes_HoldReject, Q932Pmes_HoldReject);
|
||||
Q931SetMesProc(Q932mes_REGISTER, i, Q932ProcRegisterTE, Q932Umes_Register, Q932Pmes_Register);
|
||||
Q931SetMesProc(Q932mes_RETRIEVE, i, Q932ProcRetrieveTE, Q932Umes_Retrieve, Q932Pmes_Retrieve);
|
||||
Q931SetMesProc(Q932mes_RETRIEVE_ACKNOWLEDGE, i, Q932ProcRetrieveAckTE, Q932Umes_RetrieveAck, Q932Pmes_RetrieveAck);
|
||||
Q931SetMesProc(Q932mes_RETRIEVE_REJECT, i, Q932ProcRetrieveRejectTE, Q932Umes_RetrieveReject, Q932Pmes_RetrieveReject);
|
||||
|
||||
/* Set up the IE encoder/decoder handle table.*/
|
||||
Q931SetIEProc(Q931ie_SEGMENTED_MESSAGE, i,Q931Pie_Segment, Q931Uie_Segment);
|
||||
Q931SetIEProc(Q931ie_BEARER_CAPABILITY, i,Q931Pie_BearerCap, Q931Uie_BearerCap);
|
||||
Q931SetIEProc(Q931ie_CAUSE, i,Q931Pie_Cause, Q931Uie_Cause);
|
||||
Q931SetIEProc(Q931ie_CALL_IDENTITY, i,Q931Pie_CallID, Q931Uie_CallID);
|
||||
Q931SetIEProc(Q931ie_CALL_STATE, i,Q931Pie_CallState, Q931Uie_CallState);
|
||||
Q931SetIEProc(Q931ie_CHANGE_STATUS, i,Q931Pie_ChangeStatus, Q931Uie_ChangeStatus);
|
||||
Q931SetIEProc(Q931ie_CHANNEL_IDENTIFICATION, i,Q931Pie_ChanID, Q931Uie_ChanID);
|
||||
Q931SetIEProc(Q931ie_PROGRESS_INDICATOR, i,Q931Pie_ProgInd, Q931Uie_ProgInd);
|
||||
Q931SetIEProc(Q931ie_NETWORK_SPECIFIC_FACILITIES, i,Q931Pie_NetFac, Q931Uie_NetFac);
|
||||
Q931SetIEProc(Q931ie_NOTIFICATION_INDICATOR, i,Q931Pie_NotifInd, Q931Uie_NotifInd);
|
||||
Q931SetIEProc(Q931ie_DISPLAY, i,Q931Pie_Display, Q931Uie_Display);
|
||||
Q931SetIEProc(Q931ie_DATETIME, i,Q931Pie_DateTime, Q931Uie_DateTime);
|
||||
Q931SetIEProc(Q931ie_KEYPAD_FACILITY, i,Q931Pie_KeypadFac, Q931Uie_KeypadFac);
|
||||
Q931SetIEProc(Q931ie_SIGNAL, i,Q931Pie_Signal, Q931Uie_Signal);
|
||||
Q931SetIEProc(Q931ie_TRANSIT_DELAY_SELECTION_AND_IND, i,Q931Pie_TransNetSel, Q931Uie_TransNetSel);
|
||||
Q931SetIEProc(Q931ie_CALLING_PARTY_NUMBER, i,Q931Pie_CallingNum, Q931Uie_CallingNum);
|
||||
Q931SetIEProc(Q931ie_CALLING_PARTY_SUBADDRESS, i,Q931Pie_CallingSub, Q931Uie_CallingSub);
|
||||
Q931SetIEProc(Q931ie_CALLED_PARTY_NUMBER, i,Q931Pie_CalledNum, Q931Uie_CalledNum);
|
||||
Q931SetIEProc(Q931ie_CALLED_PARTY_SUBADDRESS, i,Q931Pie_CalledSub, Q931Uie_CalledSub);
|
||||
Q931SetIEProc(Q931ie_TRANSIT_NETWORK_SELECTION, i,Q931Pie_TransNetSel, Q931Uie_TransNetSel);
|
||||
Q931SetIEProc(Q931ie_RESTART_INDICATOR, i,Q931Pie_RestartInd, Q931Uie_RestartInd);
|
||||
Q931SetIEProc(Q931ie_LOW_LAYER_COMPATIBILITY, i,Q931Pie_LLComp, Q931Uie_LLComp);
|
||||
Q931SetIEProc(Q931ie_HIGH_LAYER_COMPATIBILITY, i,Q931Pie_HLComp, Q931Uie_HLComp);
|
||||
Q931SetIEProc(Q931ie_USER_USER, i,Q931Pie_UserUser, Q931Uie_UserUser);
|
||||
Q931SetIEProc(Q931ie_GENERIC_DIGITS, i,Q931Pie_GenericDigits, Q931Uie_GenericDigits);
|
||||
/* Set up the IE encoder/decoder handle table.*/
|
||||
Q931SetIEProc(Q931ie_SEGMENTED_MESSAGE, i, Q931Pie_Segment, Q931Uie_Segment);
|
||||
Q931SetIEProc(Q931ie_BEARER_CAPABILITY, i, Q931Pie_BearerCap, Q931Uie_BearerCap);
|
||||
Q931SetIEProc(Q931ie_CAUSE, i, Q931Pie_Cause, Q931Uie_Cause);
|
||||
Q931SetIEProc(Q931ie_CALL_IDENTITY, i, Q931Pie_CallID, Q931Uie_CallID);
|
||||
Q931SetIEProc(Q931ie_CALL_STATE, i, Q931Pie_CallState, Q931Uie_CallState);
|
||||
Q931SetIEProc(Q931ie_CHANGE_STATUS, i, Q931Pie_ChangeStatus, Q931Uie_ChangeStatus);
|
||||
Q931SetIEProc(Q931ie_CHANNEL_IDENTIFICATION, i, Q931Pie_ChanID, Q931Uie_ChanID);
|
||||
Q931SetIEProc(Q931ie_PROGRESS_INDICATOR, i, Q931Pie_ProgInd, Q931Uie_ProgInd);
|
||||
Q931SetIEProc(Q931ie_NETWORK_SPECIFIC_FACILITIES, i, Q931Pie_NetFac, Q931Uie_NetFac);
|
||||
Q931SetIEProc(Q931ie_NOTIFICATION_INDICATOR, i, Q931Pie_NotifInd, Q931Uie_NotifInd);
|
||||
Q931SetIEProc(Q931ie_DISPLAY, i, Q931Pie_Display, Q931Uie_Display);
|
||||
Q931SetIEProc(Q931ie_DATETIME, i, Q931Pie_DateTime, Q931Uie_DateTime);
|
||||
Q931SetIEProc(Q931ie_KEYPAD_FACILITY, i, Q931Pie_KeypadFac, Q931Uie_KeypadFac);
|
||||
Q931SetIEProc(Q931ie_SIGNAL, i, Q931Pie_Signal, Q931Uie_Signal);
|
||||
Q931SetIEProc(Q931ie_TRANSIT_DELAY_SELECTION_AND_IND, i, Q931Pie_TransNetSel, Q931Uie_TransNetSel);
|
||||
Q931SetIEProc(Q931ie_CALLING_PARTY_NUMBER, i, Q931Pie_CallingNum, Q931Uie_CallingNum);
|
||||
Q931SetIEProc(Q931ie_CALLING_PARTY_SUBADDRESS, i, Q931Pie_CallingSub, Q931Uie_CallingSub);
|
||||
Q931SetIEProc(Q931ie_CALLED_PARTY_NUMBER, i, Q931Pie_CalledNum, Q931Uie_CalledNum);
|
||||
Q931SetIEProc(Q931ie_CALLED_PARTY_SUBADDRESS, i, Q931Pie_CalledSub, Q931Uie_CalledSub);
|
||||
Q931SetIEProc(Q931ie_TRANSIT_NETWORK_SELECTION, i, Q931Pie_TransNetSel, Q931Uie_TransNetSel);
|
||||
Q931SetIEProc(Q931ie_RESTART_INDICATOR, i, Q931Pie_RestartInd, Q931Uie_RestartInd);
|
||||
Q931SetIEProc(Q931ie_LOW_LAYER_COMPATIBILITY, i, Q931Pie_LLComp, Q931Uie_LLComp);
|
||||
Q931SetIEProc(Q931ie_HIGH_LAYER_COMPATIBILITY, i, Q931Pie_HLComp, Q931Uie_HLComp);
|
||||
Q931SetIEProc(Q931ie_USER_USER, i, Q931Pie_UserUser, Q931Uie_UserUser);
|
||||
Q931SetIEProc(Q931ie_GENERIC_DIGITS, i, Q931Pie_GenericDigits, Q931Uie_GenericDigits);
|
||||
|
||||
Q931SetIEProc(Q931ie_CONNECTED_NUMBER, i, Q931Pie_Generic, Q931Uie_Generic);
|
||||
Q931SetIEProc(Q931ie_FACILITY, i, Q931Pie_Generic, Q931Uie_Generic);
|
||||
|
||||
/* The following define a state machine. The point is that the Message */
|
||||
/* procs can when search this to find out if the message/state */
|
||||
/* combination is legale. If not, the proc for unexpected message apply.*/
|
||||
/* The following define a state machine. The point is that the Message */
|
||||
/* procs can when search this to find out if the message/state */
|
||||
/* combination is legale. If not, the proc for unexpected message apply.*/
|
||||
|
||||
/* State 0 Idle */
|
||||
Q931AddStateEntry(i,Q931_U0, Q931mes_RESUME, 2);
|
||||
Q931AddStateEntry(i,Q931_U0, Q931mes_SETUP, 4);
|
||||
Q931AddStateEntry(i,Q931_U0, Q931mes_SETUP, 2);
|
||||
Q931AddStateEntry(i,Q931_U0, Q931mes_STATUS, 4);
|
||||
Q931AddStateEntry(i,Q931_U0, Q931mes_RELEASE, 4);
|
||||
Q931AddStateEntry(i,Q931_U0, Q931mes_RELEASE_COMPLETE, 4);
|
||||
/* State 0 Idle */
|
||||
Q931AddStateEntry(i, Q931_U0, Q931mes_RESUME, 2);
|
||||
Q931AddStateEntry(i, Q931_U0, Q931mes_SETUP, 4);
|
||||
Q931AddStateEntry(i, Q931_U0, Q931mes_SETUP, 2);
|
||||
Q931AddStateEntry(i, Q931_U0, Q931mes_STATUS, 4);
|
||||
Q931AddStateEntry(i, Q931_U0, Q931mes_RELEASE, 4);
|
||||
Q931AddStateEntry(i, Q931_U0, Q931mes_RELEASE_COMPLETE, 4);
|
||||
|
||||
/* State 1 Call Initiating */
|
||||
Q931AddStateEntry(i,Q931_U1, Q931mes_DISCONNECT, 2);
|
||||
Q931AddStateEntry(i,Q931_U1, Q931mes_SETUP_ACKNOWLEDGE, 4);
|
||||
Q931AddStateEntry(i,Q931_U1, Q931mes_RELEASE_COMPLETE, 4);
|
||||
Q931AddStateEntry(i,Q931_U1, Q931mes_CALL_PROCEEDING, 4);
|
||||
Q931AddStateEntry(i,Q931_U1, Q931mes_ALERTING, 4);
|
||||
Q931AddStateEntry(i,Q931_U1, Q931mes_CONNECT, 4);
|
||||
/* State 1 Call Initiating */
|
||||
Q931AddStateEntry(i, Q931_U1, Q931mes_DISCONNECT, 2);
|
||||
Q931AddStateEntry(i, Q931_U1, Q931mes_SETUP_ACKNOWLEDGE, 4);
|
||||
Q931AddStateEntry(i, Q931_U1, Q931mes_RELEASE_COMPLETE, 4);
|
||||
Q931AddStateEntry(i, Q931_U1, Q931mes_CALL_PROCEEDING, 4);
|
||||
Q931AddStateEntry(i, Q931_U1, Q931mes_ALERTING, 4);
|
||||
Q931AddStateEntry(i, Q931_U1, Q931mes_CONNECT, 4);
|
||||
|
||||
/* State 2 Overlap Sending */
|
||||
Q931AddStateEntry(i,Q931_U2, Q931mes_INFORMATION, 2);
|
||||
Q931AddStateEntry(i,Q931_U2, Q931mes_CALL_PROCEEDING, 4);
|
||||
Q931AddStateEntry(i,Q931_U2, Q931mes_ALERTING, 4);
|
||||
Q931AddStateEntry(i,Q931_U2, Q931mes_PROGRESS, 4);
|
||||
Q931AddStateEntry(i,Q931_U2, Q931mes_CONNECT, 4);
|
||||
Q931AddStateEntry(i,Q931_U2, Q931mes_RELEASE, 2);
|
||||
/* State 2 Overlap Sending */
|
||||
Q931AddStateEntry(i, Q931_U2, Q931mes_INFORMATION, 2);
|
||||
Q931AddStateEntry(i, Q931_U2, Q931mes_CALL_PROCEEDING, 4);
|
||||
Q931AddStateEntry(i, Q931_U2, Q931mes_ALERTING, 4);
|
||||
Q931AddStateEntry(i, Q931_U2, Q931mes_PROGRESS, 4);
|
||||
Q931AddStateEntry(i, Q931_U2, Q931mes_CONNECT, 4);
|
||||
Q931AddStateEntry(i, Q931_U2, Q931mes_RELEASE, 2);
|
||||
|
||||
/* State 3 Outgoing Call Proceeding */
|
||||
Q931AddStateEntry(i,Q931_U3, Q931mes_PROGRESS, 4);
|
||||
Q931AddStateEntry(i,Q931_U3, Q931mes_ALERTING, 4);
|
||||
Q931AddStateEntry(i,Q931_U3, Q931mes_CONNECT, 4);
|
||||
Q931AddStateEntry(i,Q931_U3, Q931mes_RELEASE, 2);
|
||||
/* State 3 Outgoing Call Proceeding */
|
||||
Q931AddStateEntry(i, Q931_U3, Q931mes_PROGRESS, 4);
|
||||
Q931AddStateEntry(i, Q931_U3, Q931mes_ALERTING, 4);
|
||||
Q931AddStateEntry(i, Q931_U3, Q931mes_CONNECT, 4);
|
||||
Q931AddStateEntry(i, Q931_U3, Q931mes_RELEASE, 2);
|
||||
|
||||
/* State 4 Call Delivered */
|
||||
Q931AddStateEntry(i,Q931_U4, Q931mes_CONNECT, 4);
|
||||
/* State 4 Call Delivered */
|
||||
Q931AddStateEntry(i, Q931_U4, Q931mes_CONNECT, 4);
|
||||
|
||||
/* State 6 Call Precent */
|
||||
Q931AddStateEntry(i,Q931_U6, Q931mes_INFORMATION, 2);
|
||||
Q931AddStateEntry(i,Q931_U6, Q931mes_ALERTING, 2);
|
||||
Q931AddStateEntry(i,Q931_U6, Q931mes_CALL_PROCEEDING, 2);
|
||||
Q931AddStateEntry(i,Q931_U6, Q931mes_CONNECT, 2);
|
||||
Q931AddStateEntry(i,Q931_U6, Q931mes_RELEASE_COMPLETE, 2);
|
||||
Q931AddStateEntry(i,Q931_U6, Q931mes_RELEASE, 4);
|
||||
Q931AddStateEntry(i,Q931_U6, Q931mes_DISCONNECT, 4);
|
||||
/* State 6 Call Precent */
|
||||
Q931AddStateEntry(i, Q931_U6, Q931mes_INFORMATION, 2);
|
||||
Q931AddStateEntry(i, Q931_U6, Q931mes_ALERTING, 2);
|
||||
Q931AddStateEntry(i, Q931_U6, Q931mes_CALL_PROCEEDING, 2);
|
||||
Q931AddStateEntry(i, Q931_U6, Q931mes_CONNECT, 2);
|
||||
Q931AddStateEntry(i, Q931_U6, Q931mes_RELEASE_COMPLETE, 2);
|
||||
Q931AddStateEntry(i, Q931_U6, Q931mes_RELEASE, 4);
|
||||
Q931AddStateEntry(i, Q931_U6, Q931mes_DISCONNECT, 4);
|
||||
|
||||
/* State 7 Call Received */
|
||||
Q931AddStateEntry(i,Q931_U7, Q931mes_CONNECT, 2);
|
||||
/* State 7 Call Received */
|
||||
Q931AddStateEntry(i, Q931_U7, Q931mes_CONNECT, 2);
|
||||
|
||||
/* State 8 Connect request */
|
||||
Q931AddStateEntry(i,Q931_U8, Q931mes_CONNECT_ACKNOWLEDGE,4);
|
||||
/* State 8 Connect request */
|
||||
Q931AddStateEntry(i, Q931_U8, Q931mes_CONNECT_ACKNOWLEDGE, 4);
|
||||
|
||||
/* State 9 Incoming Call Proceeding */
|
||||
Q931AddStateEntry(i,Q931_U9, Q931mes_CONNECT, 2);
|
||||
Q931AddStateEntry(i,Q931_U9, Q931mes_ALERTING, 2);
|
||||
Q931AddStateEntry(i,Q931_U9, Q931mes_PROGRESS, 2);
|
||||
/* State 9 Incoming Call Proceeding */
|
||||
Q931AddStateEntry(i, Q931_U9, Q931mes_CONNECT, 2);
|
||||
Q931AddStateEntry(i, Q931_U9, Q931mes_ALERTING, 2);
|
||||
Q931AddStateEntry(i, Q931_U9, Q931mes_PROGRESS, 2);
|
||||
|
||||
/* State 10 Active */
|
||||
Q931AddStateEntry(i,Q931_U10, Q931mes_SUSPEND, 2);
|
||||
Q931AddStateEntry(i,Q931_U10, Q931mes_NOTIFY, 4);
|
||||
Q931AddStateEntry(i,Q931_U10, Q931mes_NOTIFY, 2);
|
||||
/* State 10 Active */
|
||||
Q931AddStateEntry(i, Q931_U10, Q931mes_SUSPEND, 2);
|
||||
Q931AddStateEntry(i, Q931_U10, Q931mes_NOTIFY, 4);
|
||||
Q931AddStateEntry(i, Q931_U10, Q931mes_NOTIFY, 2);
|
||||
|
||||
/* State 11 Disconnect Request */
|
||||
Q931AddStateEntry(i,Q931_U11, Q931mes_RELEASE, 4);
|
||||
Q931AddStateEntry(i,Q931_U11, Q931mes_DISCONNECT, 4);
|
||||
Q931AddStateEntry(i,Q931_U11, Q931mes_NOTIFY, 4);
|
||||
/* State 11 Disconnect Request */
|
||||
Q931AddStateEntry(i, Q931_U11, Q931mes_RELEASE, 4);
|
||||
Q931AddStateEntry(i, Q931_U11, Q931mes_DISCONNECT, 4);
|
||||
Q931AddStateEntry(i, Q931_U11, Q931mes_NOTIFY, 4);
|
||||
|
||||
/* State 12 Disconnect Ind */
|
||||
Q931AddStateEntry(i,Q931_U12, Q931mes_RELEASE, 4);
|
||||
Q931AddStateEntry(i,Q931_U12, Q931mes_RELEASE, 2);
|
||||
/* State 12 Disconnect Ind */
|
||||
Q931AddStateEntry(i, Q931_U12, Q931mes_RELEASE, 4);
|
||||
Q931AddStateEntry(i, Q931_U12, Q931mes_RELEASE, 2);
|
||||
|
||||
/* State 15 Suspend Request */
|
||||
Q931AddStateEntry(i,Q931_U15, Q931mes_SUSPEND_ACKNOWLEDGE,4);
|
||||
Q931AddStateEntry(i,Q931_U15, Q931mes_SUSPEND_REJECT, 4);
|
||||
Q931AddStateEntry(i,Q931_U15, Q931mes_DISCONNECT, 4);
|
||||
Q931AddStateEntry(i,Q931_U15, Q931mes_RELEASE, 4);
|
||||
/* State 15 Suspend Request */
|
||||
Q931AddStateEntry(i, Q931_U15, Q931mes_SUSPEND_ACKNOWLEDGE, 4);
|
||||
Q931AddStateEntry(i, Q931_U15, Q931mes_SUSPEND_REJECT, 4);
|
||||
Q931AddStateEntry(i, Q931_U15, Q931mes_DISCONNECT, 4);
|
||||
Q931AddStateEntry(i, Q931_U15, Q931mes_RELEASE, 4);
|
||||
|
||||
/* TODO
|
||||
Q931AddStateEntry(i,Q931_U17,
|
||||
Q931AddStateEntry(i,Q931_U19,
|
||||
Q931AddStateEntry(i,Q931_U25,
|
||||
Q931AddStateEntry(i, Q931_U17,
|
||||
Q931AddStateEntry(i, Q931_U19,
|
||||
Q931AddStateEntry(i, Q931_U25,
|
||||
*/
|
||||
}
|
||||
|
||||
@@ -224,37 +224,33 @@ void ATT5ESSCreateTE(L3UCHAR i)
|
||||
*****************************************************************************/
|
||||
L3INT ATT5ESSProc0x0fTE(Q931_TrunkInfo_t *pTrunk, L3UCHAR * buf, L3INT iFrom)
|
||||
{
|
||||
L3INT callIndex;
|
||||
L3INT ret=Q931E_NO_ERROR;
|
||||
Q931mes_Header *pMes = (Q931mes_Header *)&buf[Q931L4HeaderSpace];
|
||||
L3INT callIndex;
|
||||
L3INT ret = Q931E_NO_ERROR;
|
||||
|
||||
if (pMes->ProtDisc == 8) {
|
||||
/* Find the call using CRV */
|
||||
ret = Q931FindCRV(pTrunk, pMes->CRV, &callIndex);
|
||||
if(ret != Q931E_NO_ERROR)
|
||||
if (ret != Q931E_NO_ERROR)
|
||||
return ret;
|
||||
|
||||
|
||||
/* TODO chack against state table for illegal or unexpected message here*/
|
||||
|
||||
/* TODO - Set correct timer here */
|
||||
Q931StartTimer(pTrunk, callIndex, 303);
|
||||
}
|
||||
if(iFrom == 4)
|
||||
{
|
||||
if (iFrom == 4) {
|
||||
/* TODO Add proc here*/
|
||||
ret = Q931Tx32Data(pTrunk,0,buf,pMes->Size);
|
||||
ret = Q931Tx32Data(pTrunk, 0, buf, pMes->Size);
|
||||
}
|
||||
else if (iFrom ==2)
|
||||
{
|
||||
else if (iFrom ==2) {
|
||||
/* TODO Add proc here*/
|
||||
ret = Q931Tx34(pTrunk,buf,pMes->Size);
|
||||
ret = Q931Tx34(pTrunk, buf, pMes->Size);
|
||||
|
||||
if (pMes->ProtDisc == 3 && pTrunk->autoServiceAck) {
|
||||
printf("autoServiceAck is on, responding to Service Req from network...\n");
|
||||
printf("autoServiceAck is on, responding to Service Req from network...\n");
|
||||
Q931AckService(pTrunk, buf);
|
||||
}
|
||||
|
||||
}
|
||||
return ret;
|
||||
|
||||
@@ -267,31 +263,28 @@ L3INT ATT5ESSProc0x0fTE(Q931_TrunkInfo_t *pTrunk, L3UCHAR * buf, L3INT iFrom)
|
||||
*****************************************************************************/
|
||||
L3INT ATT5ESSProc0x07TE(Q931_TrunkInfo_t *pTrunk, L3UCHAR * buf, L3INT iFrom)
|
||||
{
|
||||
L3INT callIndex;
|
||||
L3INT ret=Q931E_NO_ERROR;
|
||||
Q931mes_Header *pMes = (Q931mes_Header *)&buf[Q931L4HeaderSpace];
|
||||
L3INT callIndex;
|
||||
L3INT ret = Q931E_NO_ERROR;
|
||||
|
||||
if (pMes->ProtDisc == 8) {
|
||||
/* Find the call using CRV */
|
||||
ret = Q931FindCRV(pTrunk, pMes->CRV, &callIndex);
|
||||
if(ret != Q931E_NO_ERROR)
|
||||
if (ret != Q931E_NO_ERROR)
|
||||
return ret;
|
||||
|
||||
|
||||
/* TODO chack against state table for illegal or unexpected message here*/
|
||||
|
||||
/* TODO - Set correct timer here */
|
||||
Q931StartTimer(pTrunk, callIndex, 303);
|
||||
}
|
||||
if(iFrom == 4)
|
||||
{
|
||||
if (iFrom == 4) {
|
||||
/* TODO Add proc here*/
|
||||
ret = Q931Tx32Data(pTrunk,0,buf,pMes->Size);
|
||||
ret = Q931Tx32Data(pTrunk, 0, buf, pMes->Size);
|
||||
}
|
||||
else if (iFrom ==2)
|
||||
{
|
||||
else if (iFrom == 2) {
|
||||
/* TODO Add proc here*/
|
||||
ret = Q931Tx34(pTrunk,buf,pMes->Size);
|
||||
ret = Q931Tx34(pTrunk, buf, pMes->Size);
|
||||
}
|
||||
return ret;
|
||||
|
||||
|
||||
+227
-214
@@ -1,13 +1,13 @@
|
||||
/*****************************************************************************
|
||||
|
||||
FileName: 5ESSmes.c
|
||||
FileName: 5ESSmes.c
|
||||
|
||||
Contents: Pack/Unpack functions. These functions will unpack a 5ESS ISDN
|
||||
message from the bit packed original format into structs
|
||||
that contains variables sized by the user. It will also pack
|
||||
the struct back into a Q.931 message as required.
|
||||
Contents: Pack/Unpack functions. These functions will unpack a 5ESS ISDN
|
||||
message from the bit packed original format into structs
|
||||
that contains variables sized by the user. It will also pack
|
||||
the struct back into a Q.931 message as required.
|
||||
|
||||
See 5ESS.h for description.
|
||||
See 5ESS.h for description.
|
||||
|
||||
License/Copyright:
|
||||
|
||||
@@ -24,14 +24,14 @@
|
||||
modification, are permitted provided that the following conditions are
|
||||
met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright notice,
|
||||
this list of conditions and the following disclaimer.
|
||||
* Redistributions in binary form must reproduce the above copyright notice,
|
||||
this list of conditions and the following disclaimer in the documentation
|
||||
and/or other materials provided with the distribution.
|
||||
* Neither the name of the Case Labs, Ltd nor the names of its contributors
|
||||
may be used to endorse or promote products derived from this software
|
||||
without specific prior written permission.
|
||||
* Redistributions of source code must retain the above copyright notice,
|
||||
this list of conditions and the following disclaimer.
|
||||
* Redistributions in binary form must reproduce the above copyright notice,
|
||||
this list of conditions and the following disclaimer in the documentation
|
||||
and/or other materials provided with the distribution.
|
||||
* Neither the name of the Case Labs, Ltd nor the names of its contributors
|
||||
may be used to endorse or promote products derived from this software
|
||||
without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
@@ -51,287 +51,300 @@
|
||||
|
||||
/*****************************************************************************
|
||||
|
||||
Function: ATT5ESSUmes_Setup
|
||||
Function: ATT5ESSUmes_Setup
|
||||
|
||||
*****************************************************************************/
|
||||
L3INT ATT5ESSUmes_Setup(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, Q931mes_Generic *mes, L3INT IOff, L3INT Size)
|
||||
{
|
||||
L3INT ir=0;
|
||||
L3INT OOff=0;
|
||||
L3INT rc=Q931E_NO_ERROR;
|
||||
L3UCHAR last_codeset = 0, codeset = 0;
|
||||
L3UCHAR shift_lock = 1;
|
||||
L3INT ir = 0;
|
||||
L3INT OOff = 0;
|
||||
L3INT rc = Q931E_NO_ERROR;
|
||||
L3UCHAR last_codeset = 0, codeset = 0;
|
||||
L3UCHAR shift_lock = 1;
|
||||
|
||||
while(IOff < Size)
|
||||
{
|
||||
if (!shift_lock) {
|
||||
codeset = last_codeset;
|
||||
}
|
||||
while (IOff < Size)
|
||||
{
|
||||
if (!shift_lock) {
|
||||
codeset = last_codeset;
|
||||
}
|
||||
|
||||
if ((IBuf[IOff] & 0xF0) == Q931ie_SHIFT ) {
|
||||
shift_lock = (IBuf[IOff] & 0x08);
|
||||
if (shift_lock) {
|
||||
last_codeset = codeset;
|
||||
}
|
||||
codeset = ((IBuf[IOff] & 0x07));
|
||||
IOff++;
|
||||
}
|
||||
if ((IBuf[IOff] & 0xF0) == Q931ie_SHIFT ) {
|
||||
shift_lock = (IBuf[IOff] & 0x08);
|
||||
if (shift_lock) {
|
||||
last_codeset = codeset;
|
||||
}
|
||||
codeset = ((IBuf[IOff] & 0x07));
|
||||
IOff++;
|
||||
}
|
||||
|
||||
if (codeset == 0) {
|
||||
switch(IBuf[IOff])
|
||||
{
|
||||
case Q931ie_SENDING_COMPLETE:
|
||||
case Q931ie_BEARER_CAPABILITY:
|
||||
case Q931ie_CHANNEL_IDENTIFICATION:
|
||||
case Q931ie_PROGRESS_INDICATOR:
|
||||
case Q931ie_NETWORK_SPECIFIC_FACILITIES:
|
||||
case Q931ie_DISPLAY:
|
||||
case Q931ie_DATETIME:
|
||||
case Q931ie_KEYPAD_FACILITY:
|
||||
case Q931ie_SIGNAL:
|
||||
case Q931ie_CALLING_PARTY_NUMBER:
|
||||
case Q931ie_CALLING_PARTY_SUBADDRESS:
|
||||
case Q931ie_CALLED_PARTY_NUMBER:
|
||||
case Q931ie_CALLED_PARTY_SUBADDRESS:
|
||||
case Q931ie_TRANSIT_NETWORK_SELECTION:
|
||||
case Q931ie_LOW_LAYER_COMPATIBILITY:
|
||||
case Q931ie_HIGH_LAYER_COMPATIBILITY:
|
||||
case Q931ie_FACILITY:
|
||||
rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, mes, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
|
||||
if(rc != Q931E_NO_ERROR)
|
||||
return rc;
|
||||
break;
|
||||
case Q931ie_REPEAT_INDICATOR:
|
||||
if(ir < 2) {
|
||||
rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, mes, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
|
||||
ir++;
|
||||
} else {
|
||||
return Q931E_ILLEGAL_IE;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
return Q931E_ILLEGAL_IE;
|
||||
break;
|
||||
}
|
||||
} else if (codeset == 6) {
|
||||
switch(IBuf[IOff])
|
||||
{
|
||||
case Q931ie_GENERIC_DIGITS:
|
||||
rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, mes, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
|
||||
if(rc != Q931E_NO_ERROR)
|
||||
return rc;
|
||||
break;
|
||||
default:
|
||||
return Q931E_ILLEGAL_IE;
|
||||
break;
|
||||
}
|
||||
if (codeset == 0) {
|
||||
switch (IBuf[IOff])
|
||||
{
|
||||
case Q931ie_SENDING_COMPLETE:
|
||||
case Q931ie_BEARER_CAPABILITY:
|
||||
case Q931ie_CHANNEL_IDENTIFICATION:
|
||||
case Q931ie_PROGRESS_INDICATOR:
|
||||
case Q931ie_NETWORK_SPECIFIC_FACILITIES:
|
||||
case Q931ie_DISPLAY:
|
||||
case Q931ie_DATETIME:
|
||||
case Q931ie_KEYPAD_FACILITY:
|
||||
case Q931ie_SIGNAL:
|
||||
case Q931ie_CALLING_PARTY_NUMBER:
|
||||
case Q931ie_CALLING_PARTY_SUBADDRESS:
|
||||
case Q931ie_CALLED_PARTY_NUMBER:
|
||||
case Q931ie_CALLED_PARTY_SUBADDRESS:
|
||||
case Q931ie_TRANSIT_NETWORK_SELECTION:
|
||||
case Q931ie_LOW_LAYER_COMPATIBILITY:
|
||||
case Q931ie_HIGH_LAYER_COMPATIBILITY:
|
||||
case Q931ie_FACILITY:
|
||||
rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, mes, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
|
||||
if (rc != Q931E_NO_ERROR)
|
||||
return rc;
|
||||
break;
|
||||
case Q931ie_REPEAT_INDICATOR:
|
||||
if (ir < 2) {
|
||||
rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, mes, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
|
||||
ir++;
|
||||
} else {
|
||||
return Q931E_ILLEGAL_IE;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
return Q931E_ILLEGAL_IE;
|
||||
break;
|
||||
}
|
||||
} else if (codeset == 6) {
|
||||
switch (IBuf[IOff])
|
||||
{
|
||||
case Q931ie_GENERIC_DIGITS:
|
||||
rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, mes, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
|
||||
if (rc != Q931E_NO_ERROR)
|
||||
return rc;
|
||||
break;
|
||||
default:
|
||||
return Q931E_ILLEGAL_IE;
|
||||
break;
|
||||
}
|
||||
|
||||
} else {
|
||||
return Q931E_ILLEGAL_IE;
|
||||
}
|
||||
}
|
||||
mes->Size = sizeof(Q931mes_Generic) - 1 + OOff;
|
||||
return Q931E_NO_ERROR;
|
||||
} else {
|
||||
return Q931E_ILLEGAL_IE;
|
||||
}
|
||||
}
|
||||
mes->Size = sizeof(Q931mes_Generic) - 1 + OOff;
|
||||
return Q931E_NO_ERROR;
|
||||
}
|
||||
|
||||
/*****************************************************************************
|
||||
|
||||
Function: ATT5ESSPmes_Setup
|
||||
Function: ATT5ESSPmes_Setup
|
||||
|
||||
Decription: Pack a Q931mes_Generic into a real Q.931 message. The user will
|
||||
set up a SETUP message and issue this to the stack where it
|
||||
is processed by Q931ProcSetup that processes and validates
|
||||
it before it actually sends it out. This function is called
|
||||
to compute the real Q.931 message.
|
||||
set up a SETUP message and issue this to the stack where it
|
||||
is processed by Q931ProcSetup that processes and validates
|
||||
it before it actually sends it out. This function is called
|
||||
to compute the real Q.931 message.
|
||||
|
||||
Parameters: IBuf[IN] Ptr to un-packed struct
|
||||
ISize[IN] Size of input buffer (unpacked message).
|
||||
OBuf[OUT] Ptr to packed 'octet' wise message.
|
||||
OSize[OUT] Size of packed message.
|
||||
Parameters: IBuf[IN] Ptr to un-packed struct
|
||||
ISize[IN] Size of input buffer (unpacked message).
|
||||
OBuf[OUT] Ptr to packed 'octet' wise message.
|
||||
OSize[OUT] Size of packed message.
|
||||
|
||||
Called By: Q931ProcSetup
|
||||
Called By: Q931ProcSetup
|
||||
|
||||
*****************************************************************************/
|
||||
L3INT ATT5ESSPmes_Setup(Q931_TrunkInfo_t *pTrunk, Q931mes_Generic *IBuf, L3INT ISize, L3UCHAR *OBuf, L3INT *OSize)
|
||||
{
|
||||
L3INT rc = Q931E_NO_ERROR;
|
||||
Q931mes_Generic *pMes = (Q931mes_Generic *)IBuf;
|
||||
L3INT Octet = 0;
|
||||
L3INT rc = Q931E_NO_ERROR;
|
||||
Q931mes_Generic *pMes = (Q931mes_Generic *)IBuf;
|
||||
L3INT Octet = 0;
|
||||
|
||||
/* Q931 Message Header */
|
||||
/* Q931 Message Header */
|
||||
Q931MesgHeader(pTrunk, pMes, OBuf, *OSize, &Octet);
|
||||
|
||||
/* Sending Complete */
|
||||
if(Q931IsIEPresent(pMes->SendComplete))
|
||||
OBuf[Octet++] = (L3UCHAR)(pMes->SendComplete & 0x00ff);
|
||||
|
||||
/* Sending Complete */
|
||||
if (Q931IsIEPresent(pMes->SendComplete)) {
|
||||
OBuf[Octet++] = (L3UCHAR)(pMes->SendComplete & 0x00ff);
|
||||
}
|
||||
|
||||
/* Repeat Indicator */
|
||||
if(Q931IsIEPresent(pMes->RepeatInd))
|
||||
OBuf[Octet++] = (L3UCHAR)(pMes->RepeatInd & 0x00ff);
|
||||
/* Repeat Indicator */
|
||||
if (Q931IsIEPresent(pMes->RepeatInd)) {
|
||||
OBuf[Octet++] = (L3UCHAR)(pMes->RepeatInd & 0x00ff);
|
||||
}
|
||||
|
||||
/* Bearer capability */
|
||||
if(Q931IsIEPresent(pMes->BearerCap))
|
||||
{
|
||||
if((rc=Q931Pie[pTrunk->Dialect][Q931ie_BEARER_CAPABILITY](pTrunk, Q931GetIEPtr(pMes->BearerCap,pMes->buf), OBuf, &Octet))!=0)
|
||||
return rc;
|
||||
}
|
||||
else
|
||||
{
|
||||
rc=Q931E_BEARERCAP;
|
||||
}
|
||||
/* Bearer capability */
|
||||
if (Q931IsIEPresent(pMes->BearerCap)) {
|
||||
if ((rc = Q931Pie[pTrunk->Dialect][Q931ie_BEARER_CAPABILITY](pTrunk, Q931GetIEPtr(pMes->BearerCap,pMes->buf), OBuf, &Octet))!=0)
|
||||
return rc;
|
||||
} else {
|
||||
rc = Q931E_BEARERCAP;
|
||||
}
|
||||
|
||||
/* Channel Identification */
|
||||
if(Q931IsIEPresent(pMes->ChanID))
|
||||
if((rc=Q931Pie[pTrunk->Dialect][Q931ie_CHANNEL_IDENTIFICATION](pTrunk, Q931GetIEPtr(pMes->ChanID,pMes->buf), OBuf, &Octet))!=0)
|
||||
return rc;
|
||||
/* Channel Identification */
|
||||
if (Q931IsIEPresent(pMes->ChanID)) {
|
||||
if ((rc = Q931Pie[pTrunk->Dialect][Q931ie_CHANNEL_IDENTIFICATION](pTrunk, Q931GetIEPtr(pMes->ChanID,pMes->buf), OBuf, &Octet))!=0)
|
||||
return rc;
|
||||
}
|
||||
|
||||
/* Progress indicator */
|
||||
if(Q931IsIEPresent(pMes->ProgInd))
|
||||
if((rc=Q931Pie[pTrunk->Dialect][Q931ie_PROGRESS_INDICATOR](pTrunk, Q931GetIEPtr(pMes->ProgInd,pMes->buf), OBuf, &Octet))!=0)
|
||||
return rc;
|
||||
/* Progress indicator */
|
||||
if (Q931IsIEPresent(pMes->ProgInd)) {
|
||||
if ((rc = Q931Pie[pTrunk->Dialect][Q931ie_PROGRESS_INDICATOR](pTrunk, Q931GetIEPtr(pMes->ProgInd,pMes->buf), OBuf, &Octet))!=0)
|
||||
return rc;
|
||||
}
|
||||
|
||||
/* Network specific facilities */
|
||||
if(Q931IsIEPresent(pMes->NetFac))
|
||||
if((rc=Q931Pie[pTrunk->Dialect][Q931ie_NETWORK_SPECIFIC_FACILITIES](pTrunk, Q931GetIEPtr(pMes->NetFac,pMes->buf), OBuf, &Octet))!=0)
|
||||
return rc;
|
||||
/* Network specific facilities */
|
||||
if (Q931IsIEPresent(pMes->NetFac)) {
|
||||
if ((rc = Q931Pie[pTrunk->Dialect][Q931ie_NETWORK_SPECIFIC_FACILITIES](pTrunk, Q931GetIEPtr(pMes->NetFac,pMes->buf), OBuf, &Octet))!=0)
|
||||
return rc;
|
||||
}
|
||||
|
||||
/* Display */
|
||||
if(Q931IsIEPresent(pMes->Display))
|
||||
if((rc=Q931Pie[pTrunk->Dialect][Q931ie_DISPLAY](pTrunk, Q931GetIEPtr(pMes->Display,pMes->buf), OBuf, &Octet))!=0)
|
||||
return rc;
|
||||
/* Display */
|
||||
if (Q931IsIEPresent(pMes->Display)) {
|
||||
if ((rc = Q931Pie[pTrunk->Dialect][Q931ie_DISPLAY](pTrunk, Q931GetIEPtr(pMes->Display,pMes->buf), OBuf, &Octet))!=0)
|
||||
return rc;
|
||||
}
|
||||
|
||||
/* Date/Time */
|
||||
if(Q931IsIEPresent(pMes->DateTime))
|
||||
if((rc=Q931Pie[pTrunk->Dialect][Q931ie_DATETIME](pTrunk, Q931GetIEPtr(pMes->DateTime,pMes->buf), OBuf, &Octet))!=0)
|
||||
return rc;
|
||||
/* Date/Time */
|
||||
if (Q931IsIEPresent(pMes->DateTime)) {
|
||||
if ((rc = Q931Pie[pTrunk->Dialect][Q931ie_DATETIME](pTrunk, Q931GetIEPtr(pMes->DateTime,pMes->buf), OBuf, &Octet))!=0)
|
||||
return rc;
|
||||
}
|
||||
|
||||
/* Keypad Facility */
|
||||
if(Q931IsIEPresent(pMes->KeypadFac))
|
||||
if((rc=Q931Pie[pTrunk->Dialect][Q931ie_KEYPAD_FACILITY](pTrunk, Q931GetIEPtr(pMes->KeypadFac,pMes->buf), OBuf, &Octet))!=0)
|
||||
return rc;
|
||||
/* Keypad Facility */
|
||||
if (Q931IsIEPresent(pMes->KeypadFac)) {
|
||||
if ((rc = Q931Pie[pTrunk->Dialect][Q931ie_KEYPAD_FACILITY](pTrunk, Q931GetIEPtr(pMes->KeypadFac,pMes->buf), OBuf, &Octet))!=0)
|
||||
return rc;
|
||||
}
|
||||
|
||||
/* Signal */
|
||||
if(Q931IsIEPresent(pMes->Signal))
|
||||
if((rc=Q931Pie[pTrunk->Dialect][Q931ie_SIGNAL](pTrunk, Q931GetIEPtr(pMes->Signal,pMes->buf), OBuf, &Octet))!=0)
|
||||
return rc;
|
||||
/* Signal */
|
||||
if (Q931IsIEPresent(pMes->Signal)) {
|
||||
if ((rc = Q931Pie[pTrunk->Dialect][Q931ie_SIGNAL](pTrunk, Q931GetIEPtr(pMes->Signal,pMes->buf), OBuf, &Octet))!=0)
|
||||
return rc;
|
||||
}
|
||||
|
||||
/* Calling Party Number */
|
||||
if(Q931IsIEPresent(pMes->CallingNum))
|
||||
if((rc=Q931Pie[pTrunk->Dialect][Q931ie_CALLING_PARTY_NUMBER](pTrunk, Q931GetIEPtr(pMes->CallingNum,pMes->buf), OBuf, &Octet))!=0)
|
||||
return rc;
|
||||
/* Calling Party Number */
|
||||
if (Q931IsIEPresent(pMes->CallingNum)) {
|
||||
if ((rc = Q931Pie[pTrunk->Dialect][Q931ie_CALLING_PARTY_NUMBER](pTrunk, Q931GetIEPtr(pMes->CallingNum,pMes->buf), OBuf, &Octet))!=0)
|
||||
return rc;
|
||||
}
|
||||
|
||||
/* Calling Party Subaddress */
|
||||
if(Q931IsIEPresent(pMes->CallingSub))
|
||||
if((rc=Q931Pie[pTrunk->Dialect][Q931ie_CALLING_PARTY_SUBADDRESS](pTrunk, Q931GetIEPtr(pMes->CallingSub,pMes->buf), OBuf, &Octet))!=0)
|
||||
return rc;
|
||||
/* Calling Party Subaddress */
|
||||
if (Q931IsIEPresent(pMes->CallingSub)) {
|
||||
if ((rc = Q931Pie[pTrunk->Dialect][Q931ie_CALLING_PARTY_SUBADDRESS](pTrunk, Q931GetIEPtr(pMes->CallingSub,pMes->buf), OBuf, &Octet))!=0)
|
||||
return rc;
|
||||
}
|
||||
|
||||
/* Called Party number */
|
||||
if(Q931IsIEPresent(pMes->CalledNum))
|
||||
if((rc=Q931Pie[pTrunk->Dialect][Q931ie_CALLED_PARTY_NUMBER](pTrunk, Q931GetIEPtr(pMes->CalledNum,pMes->buf), OBuf, &Octet))!=0)
|
||||
return rc;
|
||||
/* Called Party number */
|
||||
if (Q931IsIEPresent(pMes->CalledNum)) {
|
||||
if ((rc = Q931Pie[pTrunk->Dialect][Q931ie_CALLED_PARTY_NUMBER](pTrunk, Q931GetIEPtr(pMes->CalledNum,pMes->buf), OBuf, &Octet))!=0)
|
||||
return rc;
|
||||
}
|
||||
|
||||
/* Called party subaddress */
|
||||
if(Q931IsIEPresent(pMes->CalledSub))
|
||||
if((rc=Q931Pie[pTrunk->Dialect][Q931ie_CALLED_PARTY_SUBADDRESS](pTrunk, Q931GetIEPtr(pMes->CalledSub,pMes->buf), OBuf, &Octet))!=0)
|
||||
return rc;
|
||||
/* Called party subaddress */
|
||||
if (Q931IsIEPresent(pMes->CalledSub)) {
|
||||
if ((rc = Q931Pie[pTrunk->Dialect][Q931ie_CALLED_PARTY_SUBADDRESS](pTrunk, Q931GetIEPtr(pMes->CalledSub,pMes->buf), OBuf, &Octet))!=0)
|
||||
return rc;
|
||||
}
|
||||
|
||||
/* Transit network selection */
|
||||
if(Q931IsIEPresent(pMes->TransNetSel))
|
||||
if((rc=Q931Pie[pTrunk->Dialect][Q931ie_TRANSIT_NETWORK_SELECTION](pTrunk, Q931GetIEPtr(pMes->TransNetSel,pMes->buf), OBuf, &Octet))!=0)
|
||||
return rc;
|
||||
/* Transit network selection */
|
||||
if (Q931IsIEPresent(pMes->TransNetSel)) {
|
||||
if ((rc = Q931Pie[pTrunk->Dialect][Q931ie_TRANSIT_NETWORK_SELECTION](pTrunk, Q931GetIEPtr(pMes->TransNetSel,pMes->buf), OBuf, &Octet))!=0)
|
||||
return rc;
|
||||
}
|
||||
|
||||
/* Repeat Indicator */
|
||||
if(Q931IsIEPresent(pMes->LLRepeatInd))
|
||||
rc = Q931E_UNKNOWN_IE;/* TODO */
|
||||
/* Repeat Indicator */
|
||||
if (Q931IsIEPresent(pMes->LLRepeatInd)) {
|
||||
rc = Q931E_UNKNOWN_IE;/* TODO */
|
||||
}
|
||||
|
||||
/* Low Layer Compatibility */
|
||||
if(Q931IsIEPresent(pMes->LLComp))
|
||||
if((rc=Q931Pie[pTrunk->Dialect][Q931ie_LOW_LAYER_COMPATIBILITY](pTrunk, Q931GetIEPtr(pMes->LLComp,pMes->buf), OBuf, &Octet))!=0)
|
||||
return rc;
|
||||
/* Low Layer Compatibility */
|
||||
if (Q931IsIEPresent(pMes->LLComp)) {
|
||||
if ((rc = Q931Pie[pTrunk->Dialect][Q931ie_LOW_LAYER_COMPATIBILITY](pTrunk, Q931GetIEPtr(pMes->LLComp,pMes->buf), OBuf, &Octet))!=0)
|
||||
return rc;
|
||||
}
|
||||
|
||||
/* High Layer Compatibility */
|
||||
if(Q931IsIEPresent(pMes->HLComp))
|
||||
if((rc=Q931Pie[pTrunk->Dialect][Q931ie_HIGH_LAYER_COMPATIBILITY](pTrunk, Q931GetIEPtr(pMes->HLComp,pMes->buf), OBuf, &Octet))!=0)
|
||||
return rc;
|
||||
/* High Layer Compatibility */
|
||||
if (Q931IsIEPresent(pMes->HLComp)) {
|
||||
if ((rc = Q931Pie[pTrunk->Dialect][Q931ie_HIGH_LAYER_COMPATIBILITY](pTrunk, Q931GetIEPtr(pMes->HLComp,pMes->buf), OBuf, &Octet))!=0)
|
||||
return rc;
|
||||
}
|
||||
|
||||
*OSize = Octet;
|
||||
|
||||
return rc;
|
||||
*OSize = Octet;
|
||||
return rc;
|
||||
}
|
||||
|
||||
|
||||
/*****************************************************************************
|
||||
|
||||
Function: ATT5ESSUmes_0x0f
|
||||
Function: ATT5ESSUmes_0x0f
|
||||
|
||||
*****************************************************************************/
|
||||
L3INT ATT5ESSUmes_0x0f(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, Q931mes_Generic *mes, L3INT IOff, L3INT Size)
|
||||
{
|
||||
if (mes->ProtDisc == 8) {
|
||||
return Q931Umes_ConnectAck(pTrunk, IBuf, mes, IOff, Size);
|
||||
}
|
||||
if (mes->ProtDisc == 8) {
|
||||
return Q931Umes_ConnectAck(pTrunk, IBuf, mes, IOff, Size);
|
||||
}
|
||||
|
||||
if (mes->ProtDisc == 3) {
|
||||
return Q931Umes_Service(pTrunk, IBuf, mes, IOff, Size);
|
||||
}
|
||||
if (mes->ProtDisc == 3) {
|
||||
return Q931Umes_Service(pTrunk, IBuf, mes, IOff, Size);
|
||||
}
|
||||
|
||||
return Q931E_UNKNOWN_MESSAGE;
|
||||
return Q931E_UNKNOWN_MESSAGE;
|
||||
}
|
||||
|
||||
/*****************************************************************************
|
||||
|
||||
Function: ATT5ESSPmes_0x0f
|
||||
Function: ATT5ESSPmes_0x0f
|
||||
|
||||
*****************************************************************************/
|
||||
L3INT ATT5ESSPmes_0x0f(Q931_TrunkInfo_t *pTrunk, Q931mes_Generic *IBuf, L3INT ISize, L3UCHAR *OBuf, L3INT *OSize)
|
||||
{
|
||||
Q931mes_Generic *mes = (Q931mes_Generic *)IBuf;
|
||||
Q931mes_Generic *mes = (Q931mes_Generic *)IBuf;
|
||||
|
||||
if (mes->ProtDisc == 8) {
|
||||
return Q931Pmes_ConnectAck(pTrunk, IBuf, ISize, OBuf, OSize);
|
||||
}
|
||||
if (mes->ProtDisc == 8) {
|
||||
return Q931Pmes_ConnectAck(pTrunk, IBuf, ISize, OBuf, OSize);
|
||||
}
|
||||
|
||||
if (mes->ProtDisc == 3) {
|
||||
return Q931Pmes_Service(pTrunk, IBuf, ISize, OBuf, OSize);
|
||||
}
|
||||
if (mes->ProtDisc == 3) {
|
||||
return Q931Pmes_Service(pTrunk, IBuf, ISize, OBuf, OSize);
|
||||
}
|
||||
|
||||
return Q931E_UNKNOWN_MESSAGE;
|
||||
return Q931E_UNKNOWN_MESSAGE;
|
||||
}
|
||||
|
||||
/*****************************************************************************
|
||||
|
||||
Function: ATT5ESSUmes_0x07
|
||||
Function: ATT5ESSUmes_0x07
|
||||
|
||||
*****************************************************************************/
|
||||
L3INT ATT5ESSUmes_0x07(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, Q931mes_Generic *mes, L3INT IOff, L3INT Size)
|
||||
{
|
||||
if (mes->ProtDisc == 8) {
|
||||
return Q931Umes_Connect(pTrunk, IBuf, mes, IOff, Size);
|
||||
}
|
||||
if (mes->ProtDisc == 8) {
|
||||
return Q931Umes_Connect(pTrunk, IBuf, mes, IOff, Size);
|
||||
}
|
||||
|
||||
if (mes->ProtDisc == 3) {
|
||||
return Q931Umes_ServiceAck(pTrunk, IBuf, mes, IOff, Size);
|
||||
}
|
||||
if (mes->ProtDisc == 3) {
|
||||
return Q931Umes_ServiceAck(pTrunk, IBuf, mes, IOff, Size);
|
||||
}
|
||||
|
||||
return Q931E_UNKNOWN_MESSAGE;
|
||||
return Q931E_UNKNOWN_MESSAGE;
|
||||
}
|
||||
|
||||
/*****************************************************************************
|
||||
|
||||
Function: ATT5ESSPmes_0x07
|
||||
Function: ATT5ESSPmes_0x07
|
||||
|
||||
*****************************************************************************/
|
||||
L3INT ATT5ESSPmes_0x07(Q931_TrunkInfo_t *pTrunk, Q931mes_Generic *IBuf, L3INT ISize, L3UCHAR *OBuf, L3INT *OSize)
|
||||
{
|
||||
Q931mes_Generic *mes = (Q931mes_Generic *)IBuf;
|
||||
Q931mes_Generic *mes = (Q931mes_Generic *)IBuf;
|
||||
|
||||
if (mes->ProtDisc == 8) {
|
||||
return Q931Pmes_Connect(pTrunk, IBuf, ISize, OBuf, OSize);
|
||||
}
|
||||
if (mes->ProtDisc == 8) {
|
||||
return Q931Pmes_Connect(pTrunk, IBuf, ISize, OBuf, OSize);
|
||||
}
|
||||
|
||||
if (mes->ProtDisc == 3) {
|
||||
return Q931Pmes_ServiceAck(pTrunk, IBuf, ISize, OBuf, OSize);
|
||||
}
|
||||
if (mes->ProtDisc == 3) {
|
||||
return Q931Pmes_ServiceAck(pTrunk, IBuf, ISize, OBuf, OSize);
|
||||
}
|
||||
|
||||
return Q931E_UNKNOWN_MESSAGE;
|
||||
return Q931E_UNKNOWN_MESSAGE;
|
||||
}
|
||||
|
||||
@@ -22,12 +22,12 @@
|
||||
modification, are permitted provided that the following conditions are
|
||||
met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright notice,
|
||||
* Redistributions of source code must retain the above copyright notice,
|
||||
this list of conditions and the following disclaimer.
|
||||
* Redistributions in binary form must reproduce the above copyright notice,
|
||||
* Redistributions in binary form must reproduce the above copyright notice,
|
||||
this list of conditions and the following disclaimer in the documentation
|
||||
and/or other materials provided with the distribution.
|
||||
* Neither the name of the Case Labs, Ltd nor the names of its contributors
|
||||
* Neither the name of the Case Labs, Ltd nor the names of its contributors
|
||||
may be used to endorse or promote products derived from this software
|
||||
without specific prior written permission.
|
||||
|
||||
@@ -57,66 +57,66 @@
|
||||
*****************************************************************************/
|
||||
void DMSCreateNT(L3UCHAR i)
|
||||
{
|
||||
Q931SetMesProc(Q931mes_ALERTING, i,Q931ProcAlertingNT, Q931Umes_Alerting, Q931Pmes_Alerting);
|
||||
Q931SetMesProc(Q931mes_CALL_PROCEEDING, i,Q931ProcCallProceedingNT, Q931Umes_CallProceeding, Q931Pmes_CallProceeding);
|
||||
Q931SetMesProc(Q931mes_CONNECT, i,Q931ProcConnectNT, Q931Umes_Connect, Q931Pmes_Connect);
|
||||
Q931SetMesProc(Q931mes_CONNECT_ACKNOWLEDGE, i,Q931ProcConnectAckNT, Q931Umes_ConnectAck, Q931Pmes_ConnectAck);
|
||||
Q931SetMesProc(Q931mes_PROGRESS, i,Q931ProcProgressNT, Q931Umes_Progress, Q931Pmes_Progress);
|
||||
Q931SetMesProc(Q931mes_SETUP, i,Q931ProcSetupNT, DMSUmes_Setup, DMSPmes_Setup);
|
||||
Q931SetMesProc(Q931mes_SETUP_ACKNOWLEDGE, i,Q931ProcSetupAckNT, Q931Umes_SetupAck, Q931Pmes_SetupAck);
|
||||
Q931SetMesProc(Q931mes_RESUME, i,Q931ProcResumeNT, Q931Umes_Resume, Q931Pmes_Resume);
|
||||
Q931SetMesProc(Q931mes_RESUME_ACKNOWLEDGE, i,Q931ProcResumeAckNT, Q931Umes_ResumeAck, Q931Pmes_ResumeAck);
|
||||
Q931SetMesProc(Q931mes_RESUME_REJECT, i,Q931ProcResumeRejectNT, Q931Umes_ResumeReject, Q931Pmes_ResumeReject);
|
||||
Q931SetMesProc(Q931mes_SUSPEND, i,Q931ProcSuspendNT, Q931Umes_Suspend, Q931Pmes_Suspend);
|
||||
Q931SetMesProc(Q931mes_SUSPEND_ACKNOWLEDGE, i,Q931ProcSuspendAckNT, Q931Umes_SuspendAck, Q931Pmes_SuspendAck);
|
||||
Q931SetMesProc(Q931mes_SUSPEND_REJECT, i,Q931ProcSuspendRejectNT, Q931Umes_SuspendReject, Q931Pmes_SuspendReject);
|
||||
Q931SetMesProc(Q931mes_USER_INFORMATION, i,Q931ProcUserInformationNT, Q931Umes_UserInformation, Q931Pmes_UserInformation);
|
||||
Q931SetMesProc(Q931mes_DISCONNECT, i,Q931ProcDisconnectNT, Q931Umes_Disconnect, Q931Pmes_Disconnect);
|
||||
Q931SetMesProc(Q931mes_RELEASE, i,Q931ProcReleaseNT, Q931Umes_Release, Q931Pmes_Release);
|
||||
Q931SetMesProc(Q931mes_RELEASE_COMPLETE, i,Q931ProcReleaseCompleteNT, Q931Umes_ReleaseComplete, Q931Pmes_ReleaseComplete);
|
||||
Q931SetMesProc(Q931mes_RESTART, i,Q931ProcRestartNT, Q931Umes_Restart, Q931Pmes_Restart);
|
||||
Q931SetMesProc(Q931mes_RESTART_ACKNOWLEDGE, i,Q931ProcRestartAckNT, Q931Umes_RestartAck, Q931Pmes_RestartAck);
|
||||
Q931SetMesProc(Q931mes_CONGESTION_CONTROL, i,Q931ProcCongestionControlNT, Q931Umes_CongestionControl, Q931Pmes_CongestionControl);
|
||||
Q931SetMesProc(Q931mes_INFORMATION, i,Q931ProcInformationNT, Q931Umes_Information, Q931Pmes_Information);
|
||||
Q931SetMesProc(Q931mes_NOTIFY, i,Q931ProcNotifyNT, Q931Umes_Notify, Q931Pmes_Notify);
|
||||
Q931SetMesProc(Q931mes_STATUS, i,Q931ProcStatusNT, Q931Umes_Status, Q931Pmes_Status);
|
||||
Q931SetMesProc(Q931mes_STATUS_ENQUIRY, i,Q931ProcStatusEnquiryNT, Q931Umes_StatusEnquiry, Q931Pmes_StatusEnquiry);
|
||||
Q931SetMesProc(Q931mes_SEGMENT, i,Q931ProcSegmentNT, Q931Umes_Segment, Q931Pmes_Segment);
|
||||
Q931SetMesProc(Q931mes_ALERTING, i, Q931ProcAlertingNT, Q931Umes_Alerting, Q931Pmes_Alerting);
|
||||
Q931SetMesProc(Q931mes_CALL_PROCEEDING, i, Q931ProcCallProceedingNT, Q931Umes_CallProceeding, Q931Pmes_CallProceeding);
|
||||
Q931SetMesProc(Q931mes_CONNECT, i, Q931ProcConnectNT, Q931Umes_Connect, Q931Pmes_Connect);
|
||||
Q931SetMesProc(Q931mes_CONNECT_ACKNOWLEDGE, i, Q931ProcConnectAckNT, Q931Umes_ConnectAck, Q931Pmes_ConnectAck);
|
||||
Q931SetMesProc(Q931mes_PROGRESS, i, Q931ProcProgressNT, Q931Umes_Progress, Q931Pmes_Progress);
|
||||
Q931SetMesProc(Q931mes_SETUP, i, Q931ProcSetupNT, DMSUmes_Setup, DMSPmes_Setup);
|
||||
Q931SetMesProc(Q931mes_SETUP_ACKNOWLEDGE, i, Q931ProcSetupAckNT, Q931Umes_SetupAck, Q931Pmes_SetupAck);
|
||||
Q931SetMesProc(Q931mes_RESUME, i, Q931ProcResumeNT, Q931Umes_Resume, Q931Pmes_Resume);
|
||||
Q931SetMesProc(Q931mes_RESUME_ACKNOWLEDGE, i, Q931ProcResumeAckNT, Q931Umes_ResumeAck, Q931Pmes_ResumeAck);
|
||||
Q931SetMesProc(Q931mes_RESUME_REJECT, i, Q931ProcResumeRejectNT, Q931Umes_ResumeReject, Q931Pmes_ResumeReject);
|
||||
Q931SetMesProc(Q931mes_SUSPEND, i, Q931ProcSuspendNT, Q931Umes_Suspend, Q931Pmes_Suspend);
|
||||
Q931SetMesProc(Q931mes_SUSPEND_ACKNOWLEDGE, i, Q931ProcSuspendAckNT, Q931Umes_SuspendAck, Q931Pmes_SuspendAck);
|
||||
Q931SetMesProc(Q931mes_SUSPEND_REJECT, i, Q931ProcSuspendRejectNT, Q931Umes_SuspendReject, Q931Pmes_SuspendReject);
|
||||
Q931SetMesProc(Q931mes_USER_INFORMATION, i, Q931ProcUserInformationNT, Q931Umes_UserInformation, Q931Pmes_UserInformation);
|
||||
Q931SetMesProc(Q931mes_DISCONNECT, i, Q931ProcDisconnectNT, Q931Umes_Disconnect, Q931Pmes_Disconnect);
|
||||
Q931SetMesProc(Q931mes_RELEASE, i, Q931ProcReleaseNT, Q931Umes_Release, Q931Pmes_Release);
|
||||
Q931SetMesProc(Q931mes_RELEASE_COMPLETE, i, Q931ProcReleaseCompleteNT, Q931Umes_ReleaseComplete, Q931Pmes_ReleaseComplete);
|
||||
Q931SetMesProc(Q931mes_RESTART, i, Q931ProcRestartNT, Q931Umes_Restart, Q931Pmes_Restart);
|
||||
Q931SetMesProc(Q931mes_RESTART_ACKNOWLEDGE, i, Q931ProcRestartAckNT, Q931Umes_RestartAck, Q931Pmes_RestartAck);
|
||||
Q931SetMesProc(Q931mes_CONGESTION_CONTROL, i, Q931ProcCongestionControlNT, Q931Umes_CongestionControl, Q931Pmes_CongestionControl);
|
||||
Q931SetMesProc(Q931mes_INFORMATION, i, Q931ProcInformationNT, Q931Umes_Information, Q931Pmes_Information);
|
||||
Q931SetMesProc(Q931mes_NOTIFY, i, Q931ProcNotifyNT, Q931Umes_Notify, Q931Pmes_Notify);
|
||||
Q931SetMesProc(Q931mes_STATUS, i, Q931ProcStatusNT, Q931Umes_Status, Q931Pmes_Status);
|
||||
Q931SetMesProc(Q931mes_STATUS_ENQUIRY, i, Q931ProcStatusEnquiryNT, Q931Umes_StatusEnquiry, Q931Pmes_StatusEnquiry);
|
||||
Q931SetMesProc(Q931mes_SEGMENT, i, Q931ProcSegmentNT, Q931Umes_Segment, Q931Pmes_Segment);
|
||||
|
||||
Q931SetMesProc(Q932mes_FACILITY, i,Q932ProcFacilityNT, Q932Umes_Facility, Q932Pmes_Facility);
|
||||
Q931SetMesProc(Q932mes_HOLD, i,Q932ProcHoldNT, Q932Umes_Hold, Q932Pmes_Hold);
|
||||
Q931SetMesProc(Q932mes_HOLD_ACKNOWLEDGE, i,Q932ProcHoldAckNT, Q932Umes_HoldAck, Q932Pmes_HoldAck);
|
||||
Q931SetMesProc(Q932mes_HOLD_REJECT, i,Q932ProcHoldRejectNT, Q932Umes_HoldReject, Q932Pmes_HoldReject);
|
||||
Q931SetMesProc(Q932mes_REGISTER, i,Q932ProcRegisterNT, Q932Umes_Register, Q932Pmes_Register);
|
||||
Q931SetMesProc(Q932mes_RETRIEVE, i,Q932ProcRetrieveNT, Q932Umes_Retrieve, Q932Pmes_Retrieve);
|
||||
Q931SetMesProc(Q932mes_RETRIEVE_ACKNOWLEDGE,i,Q932ProcRetrieveAckNT, Q932Umes_RetrieveAck, Q932Pmes_RetrieveAck);
|
||||
Q931SetMesProc(Q932mes_RETRIEVE_REJECT, i,Q932ProcRetrieveRejectNT, Q932Umes_RetrieveReject, Q932Pmes_RetrieveReject);
|
||||
Q931SetMesProc(Q932mes_FACILITY, i, Q932ProcFacilityNT, Q932Umes_Facility, Q932Pmes_Facility);
|
||||
Q931SetMesProc(Q932mes_HOLD, i, Q932ProcHoldNT, Q932Umes_Hold, Q932Pmes_Hold);
|
||||
Q931SetMesProc(Q932mes_HOLD_ACKNOWLEDGE, i, Q932ProcHoldAckNT, Q932Umes_HoldAck, Q932Pmes_HoldAck);
|
||||
Q931SetMesProc(Q932mes_HOLD_REJECT, i, Q932ProcHoldRejectNT, Q932Umes_HoldReject, Q932Pmes_HoldReject);
|
||||
Q931SetMesProc(Q932mes_REGISTER, i, Q932ProcRegisterNT, Q932Umes_Register, Q932Pmes_Register);
|
||||
Q931SetMesProc(Q932mes_RETRIEVE, i, Q932ProcRetrieveNT, Q932Umes_Retrieve, Q932Pmes_Retrieve);
|
||||
Q931SetMesProc(Q932mes_RETRIEVE_ACKNOWLEDGE, i, Q932ProcRetrieveAckNT, Q932Umes_RetrieveAck, Q932Pmes_RetrieveAck);
|
||||
Q931SetMesProc(Q932mes_RETRIEVE_REJECT, i, Q932ProcRetrieveRejectNT, Q932Umes_RetrieveReject, Q932Pmes_RetrieveReject);
|
||||
|
||||
/* Set up the IE encoder/decoder handle table.*/
|
||||
Q931SetIEProc(Q931ie_SEGMENTED_MESSAGE, i,Q931Pie_Segment, Q931Uie_Segment);
|
||||
Q931SetIEProc(Q931ie_BEARER_CAPABILITY, i,Q931Pie_BearerCap, Q931Uie_BearerCap);
|
||||
Q931SetIEProc(Q931ie_CAUSE, i,Q931Pie_Cause, Q931Uie_Cause);
|
||||
Q931SetIEProc(Q931ie_CALL_IDENTITY, i,Q931Pie_CallID, Q931Uie_CallID);
|
||||
Q931SetIEProc(Q931ie_CALL_STATE, i,Q931Pie_CallState, Q931Uie_CallState);
|
||||
Q931SetIEProc(Q931ie_CHANNEL_IDENTIFICATION, i,Q931Pie_ChanID, Q931Uie_ChanID);
|
||||
Q931SetIEProc(Q931ie_PROGRESS_INDICATOR, i,Q931Pie_ProgInd, Q931Uie_ProgInd);
|
||||
Q931SetIEProc(Q931ie_NETWORK_SPECIFIC_FACILITIES, i,Q931Pie_NetFac, Q931Uie_NetFac);
|
||||
Q931SetIEProc(Q931ie_NOTIFICATION_INDICATOR, i,Q931Pie_NotifInd, Q931Uie_NotifInd);
|
||||
Q931SetIEProc(Q931ie_DISPLAY, i,Q931Pie_Display, Q931Uie_Display);
|
||||
Q931SetIEProc(Q931ie_DATETIME, i,Q931Pie_DateTime, Q931Uie_DateTime);
|
||||
Q931SetIEProc(Q931ie_KEYPAD_FACILITY, i,Q931Pie_KeypadFac, Q931Uie_KeypadFac);
|
||||
Q931SetIEProc(Q931ie_SIGNAL, i,Q931Pie_Signal, Q931Uie_Signal);
|
||||
Q931SetIEProc(Q931ie_TRANSIT_DELAY_SELECTION_AND_IND, i,Q931Pie_TransNetSel, Q931Uie_TransNetSel);
|
||||
Q931SetIEProc(Q931ie_CALLING_PARTY_NUMBER, i,Q931Pie_CallingNum, Q931Uie_CallingNum);
|
||||
Q931SetIEProc(Q931ie_CALLING_PARTY_SUBADDRESS, i,Q931Pie_CallingSub, Q931Uie_CallingSub);
|
||||
Q931SetIEProc(Q931ie_CALLED_PARTY_NUMBER, i,Q931Pie_CalledNum, Q931Uie_CalledNum);
|
||||
Q931SetIEProc(Q931ie_CALLED_PARTY_SUBADDRESS, i,Q931Pie_CalledSub, Q931Uie_CalledSub);
|
||||
Q931SetIEProc(Q931ie_TRANSIT_NETWORK_SELECTION, i,Q931Pie_TransNetSel, Q931Uie_TransNetSel);
|
||||
Q931SetIEProc(Q931ie_RESTART_INDICATOR, i,Q931Pie_RestartInd, Q931Uie_RestartInd);
|
||||
Q931SetIEProc(Q931ie_LOW_LAYER_COMPATIBILITY, i,Q931Pie_LLComp, Q931Uie_LLComp);
|
||||
Q931SetIEProc(Q931ie_HIGH_LAYER_COMPATIBILITY, i,Q931Pie_HLComp, Q931Uie_HLComp);
|
||||
Q931SetIEProc(Q931ie_USER_USER, i,Q931Pie_UserUser, Q931Uie_UserUser);
|
||||
Q931SetIEProc(Q931ie_GENERIC_DIGITS, i,Q931Pie_GenericDigits, Q931Uie_GenericDigits);
|
||||
Q931SetIEProc(Q931ie_SEGMENTED_MESSAGE, i, Q931Pie_Segment, Q931Uie_Segment);
|
||||
Q931SetIEProc(Q931ie_BEARER_CAPABILITY, i, Q931Pie_BearerCap, Q931Uie_BearerCap);
|
||||
Q931SetIEProc(Q931ie_CAUSE, i, Q931Pie_Cause, Q931Uie_Cause);
|
||||
Q931SetIEProc(Q931ie_CALL_IDENTITY, i, Q931Pie_CallID, Q931Uie_CallID);
|
||||
Q931SetIEProc(Q931ie_CALL_STATE, i, Q931Pie_CallState, Q931Uie_CallState);
|
||||
Q931SetIEProc(Q931ie_CHANNEL_IDENTIFICATION, i, Q931Pie_ChanID, Q931Uie_ChanID);
|
||||
Q931SetIEProc(Q931ie_PROGRESS_INDICATOR, i, Q931Pie_ProgInd, Q931Uie_ProgInd);
|
||||
Q931SetIEProc(Q931ie_NETWORK_SPECIFIC_FACILITIES, i, Q931Pie_NetFac, Q931Uie_NetFac);
|
||||
Q931SetIEProc(Q931ie_NOTIFICATION_INDICATOR, i, Q931Pie_NotifInd, Q931Uie_NotifInd);
|
||||
Q931SetIEProc(Q931ie_DISPLAY, i, Q931Pie_Display, Q931Uie_Display);
|
||||
Q931SetIEProc(Q931ie_DATETIME, i, Q931Pie_DateTime, Q931Uie_DateTime);
|
||||
Q931SetIEProc(Q931ie_KEYPAD_FACILITY, i, Q931Pie_KeypadFac, Q931Uie_KeypadFac);
|
||||
Q931SetIEProc(Q931ie_SIGNAL, i, Q931Pie_Signal, Q931Uie_Signal);
|
||||
Q931SetIEProc(Q931ie_TRANSIT_DELAY_SELECTION_AND_IND, i, Q931Pie_TransNetSel, Q931Uie_TransNetSel);
|
||||
Q931SetIEProc(Q931ie_CALLING_PARTY_NUMBER, i, Q931Pie_CallingNum, Q931Uie_CallingNum);
|
||||
Q931SetIEProc(Q931ie_CALLING_PARTY_SUBADDRESS, i, Q931Pie_CallingSub, Q931Uie_CallingSub);
|
||||
Q931SetIEProc(Q931ie_CALLED_PARTY_NUMBER, i, Q931Pie_CalledNum, Q931Uie_CalledNum);
|
||||
Q931SetIEProc(Q931ie_CALLED_PARTY_SUBADDRESS, i, Q931Pie_CalledSub, Q931Uie_CalledSub);
|
||||
Q931SetIEProc(Q931ie_TRANSIT_NETWORK_SELECTION, i, Q931Pie_TransNetSel, Q931Uie_TransNetSel);
|
||||
Q931SetIEProc(Q931ie_RESTART_INDICATOR, i, Q931Pie_RestartInd, Q931Uie_RestartInd);
|
||||
Q931SetIEProc(Q931ie_LOW_LAYER_COMPATIBILITY, i, Q931Pie_LLComp, Q931Uie_LLComp);
|
||||
Q931SetIEProc(Q931ie_HIGH_LAYER_COMPATIBILITY, i, Q931Pie_HLComp, Q931Uie_HLComp);
|
||||
Q931SetIEProc(Q931ie_USER_USER, i, Q931Pie_UserUser, Q931Uie_UserUser);
|
||||
Q931SetIEProc(Q931ie_GENERIC_DIGITS, i, Q931Pie_GenericDigits, Q931Uie_GenericDigits);
|
||||
|
||||
/* The following define a state machine. The point is that the Message */
|
||||
/* procs can when search this to find out if the message/state */
|
||||
|
||||
+136
-143
@@ -4,18 +4,18 @@
|
||||
|
||||
Contents: DMS-100 ISDN State Engine for TE (User Mode).
|
||||
|
||||
The controlling state engine for Q.931 is the state engine
|
||||
on the NT side. The state engine on the TE side is a slave
|
||||
of this. The TE side maintain it's own states as described in
|
||||
ITU-T Q931, but will in raise conditions be overridden by
|
||||
the NT side.
|
||||
The controlling state engine for Q.931 is the state engine
|
||||
on the NT side. The state engine on the TE side is a slave
|
||||
of this. The TE side maintain it's own states as described in
|
||||
ITU-T Q931, but will in raise conditions be overridden by
|
||||
the NT side.
|
||||
|
||||
This reference implementation uses a process per message,
|
||||
meaning that each message must check call states. This
|
||||
is easier for dialect maintenance as each message proc
|
||||
can be replaced individually. A new TE variant only
|
||||
need to copy the Q931CreateTE and replace those procs or
|
||||
need to override.
|
||||
This reference implementation uses a process per message,
|
||||
meaning that each message must check call states. This
|
||||
is easier for dialect maintenance as each message proc
|
||||
can be replaced individually. A new TE variant only
|
||||
need to copy the Q931CreateTE and replace those procs or
|
||||
need to override.
|
||||
|
||||
License/Copyright:
|
||||
|
||||
@@ -29,12 +29,12 @@
|
||||
modification, are permitted provided that the following conditions are
|
||||
met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright notice,
|
||||
* Redistributions of source code must retain the above copyright notice,
|
||||
this list of conditions and the following disclaimer.
|
||||
* Redistributions in binary form must reproduce the above copyright notice,
|
||||
* Redistributions in binary form must reproduce the above copyright notice,
|
||||
this list of conditions and the following disclaimer in the documentation
|
||||
and/or other materials provided with the distribution.
|
||||
* Neither the name of the Case Labs, Ltd nor the names of its contributors
|
||||
* Neither the name of the Case Labs, Ltd nor the names of its contributors
|
||||
may be used to endorse or promote products derived from this software
|
||||
without specific prior written permission.
|
||||
|
||||
@@ -65,149 +65,149 @@ extern L3INT Q931L4HeaderSpace;
|
||||
*****************************************************************************/
|
||||
void DMSCreateTE(L3UCHAR i)
|
||||
{
|
||||
Q931SetMesProc(Q931mes_ALERTING, i,Q931ProcAlertingTE, Q931Umes_Alerting, Q931Pmes_Alerting);
|
||||
Q931SetMesProc(Q931mes_CALL_PROCEEDING, i,Q931ProcCallProceedingTE, Q931Umes_CallProceeding, Q931Pmes_CallProceeding);
|
||||
Q931SetMesProc(Q931mes_CONNECT, i,DMSProc0x07TE, DMSUmes_0x07, DMSPmes_0x07);
|
||||
Q931SetMesProc(Q931mes_CONNECT_ACKNOWLEDGE, i,DMSProc0x0fTE, DMSUmes_0x0f, DMSPmes_0x0f);
|
||||
Q931SetMesProc(Q931mes_PROGRESS, i,Q931ProcProgressTE, Q931Umes_Progress, Q931Pmes_Progress);
|
||||
Q931SetMesProc(Q931mes_SETUP, i,Q931ProcSetupTE, DMSUmes_Setup, DMSPmes_Setup);
|
||||
Q931SetMesProc(Q931mes_SETUP_ACKNOWLEDGE, i,Q931ProcSetupAckTE, Q931Umes_SetupAck, Q931Pmes_SetupAck);
|
||||
Q931SetMesProc(Q931mes_RESUME, i,Q931ProcResumeTE, Q931Umes_Resume, Q931Pmes_Resume);
|
||||
Q931SetMesProc(Q931mes_RESUME_ACKNOWLEDGE, i,Q931ProcResumeAckTE, Q931Umes_ResumeAck, Q931Pmes_ResumeAck);
|
||||
Q931SetMesProc(Q931mes_RESUME_REJECT, i,Q931ProcResumeRejectTE, Q931Umes_ResumeReject, Q931Pmes_ResumeReject);
|
||||
Q931SetMesProc(Q931mes_SUSPEND, i,Q931ProcSuspendTE, Q931Umes_Suspend, Q931Pmes_Suspend);
|
||||
Q931SetMesProc(Q931mes_SUSPEND_ACKNOWLEDGE, i,Q931ProcSuspendAckTE, Q931Umes_SuspendAck, Q931Pmes_SuspendAck);
|
||||
Q931SetMesProc(Q931mes_SUSPEND_REJECT, i,Q931ProcSuspendRejectTE, Q931Umes_SuspendReject, Q931Pmes_SuspendReject);
|
||||
Q931SetMesProc(Q931mes_USER_INFORMATION, i,Q931ProcUserInformationTE, Q931Umes_UserInformation, Q931Pmes_UserInformation);
|
||||
Q931SetMesProc(Q931mes_DISCONNECT, i,Q931ProcDisconnectTE, Q931Umes_Disconnect, Q931Pmes_Disconnect);
|
||||
Q931SetMesProc(Q931mes_RELEASE, i,Q931ProcReleaseTE, Q931Umes_Release, Q931Pmes_Release);
|
||||
Q931SetMesProc(Q931mes_RELEASE_COMPLETE, i,Q931ProcReleaseCompleteTE, Q931Umes_ReleaseComplete, Q931Pmes_ReleaseComplete);
|
||||
Q931SetMesProc(Q931mes_RESTART, i,Q931ProcRestartTE, Q931Umes_Restart, Q931Pmes_Restart);
|
||||
Q931SetMesProc(Q931mes_RESTART_ACKNOWLEDGE, i,Q931ProcRestartAckTE, Q931Umes_RestartAck, Q931Pmes_RestartAck);
|
||||
Q931SetMesProc(Q931mes_CONGESTION_CONTROL, i,Q931ProcCongestionControlTE, Q931Umes_CongestionControl, Q931Pmes_CongestionControl);
|
||||
Q931SetMesProc(Q931mes_INFORMATION, i,Q931ProcInformationTE, Q931Umes_Information, Q931Pmes_Information);
|
||||
Q931SetMesProc(Q931mes_NOTIFY, i,Q931ProcNotifyTE, Q931Umes_Notify, Q931Pmes_Notify);
|
||||
Q931SetMesProc(Q931mes_STATUS, i,Q931ProcStatusTE, Q931Umes_Status, Q931Pmes_Status);
|
||||
Q931SetMesProc(Q931mes_STATUS_ENQUIRY, i,Q931ProcStatusEnquiryTE, Q931Umes_StatusEnquiry, Q931Pmes_StatusEnquiry);
|
||||
Q931SetMesProc(Q931mes_SEGMENT, i,Q931ProcSegmentTE, Q931Umes_Segment, Q931Pmes_Segment);
|
||||
Q931SetMesProc(Q931mes_ALERTING, i, Q931ProcAlertingTE, Q931Umes_Alerting, Q931Pmes_Alerting);
|
||||
Q931SetMesProc(Q931mes_CALL_PROCEEDING, i, Q931ProcCallProceedingTE, Q931Umes_CallProceeding, Q931Pmes_CallProceeding);
|
||||
Q931SetMesProc(Q931mes_CONNECT, i, DMSProc0x07TE, DMSUmes_0x07, DMSPmes_0x07);
|
||||
Q931SetMesProc(Q931mes_CONNECT_ACKNOWLEDGE, i, DMSProc0x0fTE, DMSUmes_0x0f, DMSPmes_0x0f);
|
||||
Q931SetMesProc(Q931mes_PROGRESS, i, Q931ProcProgressTE, Q931Umes_Progress, Q931Pmes_Progress);
|
||||
Q931SetMesProc(Q931mes_SETUP, i, Q931ProcSetupTE, DMSUmes_Setup, DMSPmes_Setup);
|
||||
Q931SetMesProc(Q931mes_SETUP_ACKNOWLEDGE, i, Q931ProcSetupAckTE, Q931Umes_SetupAck, Q931Pmes_SetupAck);
|
||||
Q931SetMesProc(Q931mes_RESUME, i, Q931ProcResumeTE, Q931Umes_Resume, Q931Pmes_Resume);
|
||||
Q931SetMesProc(Q931mes_RESUME_ACKNOWLEDGE, i, Q931ProcResumeAckTE, Q931Umes_ResumeAck, Q931Pmes_ResumeAck);
|
||||
Q931SetMesProc(Q931mes_RESUME_REJECT, i, Q931ProcResumeRejectTE, Q931Umes_ResumeReject, Q931Pmes_ResumeReject);
|
||||
Q931SetMesProc(Q931mes_SUSPEND, i, Q931ProcSuspendTE, Q931Umes_Suspend, Q931Pmes_Suspend);
|
||||
Q931SetMesProc(Q931mes_SUSPEND_ACKNOWLEDGE, i, Q931ProcSuspendAckTE, Q931Umes_SuspendAck, Q931Pmes_SuspendAck);
|
||||
Q931SetMesProc(Q931mes_SUSPEND_REJECT, i, Q931ProcSuspendRejectTE, Q931Umes_SuspendReject, Q931Pmes_SuspendReject);
|
||||
Q931SetMesProc(Q931mes_USER_INFORMATION, i, Q931ProcUserInformationTE, Q931Umes_UserInformation, Q931Pmes_UserInformation);
|
||||
Q931SetMesProc(Q931mes_DISCONNECT, i, Q931ProcDisconnectTE, Q931Umes_Disconnect, Q931Pmes_Disconnect);
|
||||
Q931SetMesProc(Q931mes_RELEASE, i, Q931ProcReleaseTE, Q931Umes_Release, Q931Pmes_Release);
|
||||
Q931SetMesProc(Q931mes_RELEASE_COMPLETE, i, Q931ProcReleaseCompleteTE, Q931Umes_ReleaseComplete, Q931Pmes_ReleaseComplete);
|
||||
Q931SetMesProc(Q931mes_RESTART, i, Q931ProcRestartTE, Q931Umes_Restart, Q931Pmes_Restart);
|
||||
Q931SetMesProc(Q931mes_RESTART_ACKNOWLEDGE, i, Q931ProcRestartAckTE, Q931Umes_RestartAck, Q931Pmes_RestartAck);
|
||||
Q931SetMesProc(Q931mes_CONGESTION_CONTROL, i, Q931ProcCongestionControlTE, Q931Umes_CongestionControl, Q931Pmes_CongestionControl);
|
||||
Q931SetMesProc(Q931mes_INFORMATION, i, Q931ProcInformationTE, Q931Umes_Information, Q931Pmes_Information);
|
||||
Q931SetMesProc(Q931mes_NOTIFY, i, Q931ProcNotifyTE, Q931Umes_Notify, Q931Pmes_Notify);
|
||||
Q931SetMesProc(Q931mes_STATUS, i, Q931ProcStatusTE, Q931Umes_Status, Q931Pmes_Status);
|
||||
Q931SetMesProc(Q931mes_STATUS_ENQUIRY, i, Q931ProcStatusEnquiryTE, Q931Umes_StatusEnquiry, Q931Pmes_StatusEnquiry);
|
||||
Q931SetMesProc(Q931mes_SEGMENT, i, Q931ProcSegmentTE, Q931Umes_Segment, Q931Pmes_Segment);
|
||||
|
||||
Q931SetMesProc(Q932mes_FACILITY, i,Q932ProcFacilityTE, Q932Umes_Facility, Q932Pmes_Facility);
|
||||
Q931SetMesProc(Q932mes_HOLD, i,Q932ProcHoldTE, Q932Umes_Hold, Q932Pmes_Hold);
|
||||
Q931SetMesProc(Q932mes_HOLD_ACKNOWLEDGE, i,Q932ProcHoldAckTE, Q932Umes_HoldAck, Q932Pmes_HoldAck);
|
||||
Q931SetMesProc(Q932mes_HOLD_REJECT, i,Q932ProcHoldRejectTE, Q932Umes_HoldReject, Q932Pmes_HoldReject);
|
||||
Q931SetMesProc(Q932mes_REGISTER, i,Q932ProcRegisterTE, Q932Umes_Register, Q932Pmes_Register);
|
||||
Q931SetMesProc(Q932mes_RETRIEVE, i,Q932ProcRetrieveTE, Q932Umes_Retrieve, Q932Pmes_Retrieve);
|
||||
Q931SetMesProc(Q932mes_RETRIEVE_ACKNOWLEDGE,i,Q932ProcRetrieveAckTE, Q932Umes_RetrieveAck, Q932Pmes_RetrieveAck);
|
||||
Q931SetMesProc(Q932mes_RETRIEVE_REJECT, i,Q932ProcRetrieveRejectTE, Q932Umes_RetrieveReject, Q932Pmes_RetrieveReject);
|
||||
Q931SetMesProc(Q932mes_FACILITY, i, Q932ProcFacilityTE, Q932Umes_Facility, Q932Pmes_Facility);
|
||||
Q931SetMesProc(Q932mes_HOLD, i, Q932ProcHoldTE, Q932Umes_Hold, Q932Pmes_Hold);
|
||||
Q931SetMesProc(Q932mes_HOLD_ACKNOWLEDGE, i, Q932ProcHoldAckTE, Q932Umes_HoldAck, Q932Pmes_HoldAck);
|
||||
Q931SetMesProc(Q932mes_HOLD_REJECT, i, Q932ProcHoldRejectTE, Q932Umes_HoldReject, Q932Pmes_HoldReject);
|
||||
Q931SetMesProc(Q932mes_REGISTER, i, Q932ProcRegisterTE, Q932Umes_Register, Q932Pmes_Register);
|
||||
Q931SetMesProc(Q932mes_RETRIEVE, i, Q932ProcRetrieveTE, Q932Umes_Retrieve, Q932Pmes_Retrieve);
|
||||
Q931SetMesProc(Q932mes_RETRIEVE_ACKNOWLEDGE, i, Q932ProcRetrieveAckTE, Q932Umes_RetrieveAck, Q932Pmes_RetrieveAck);
|
||||
Q931SetMesProc(Q932mes_RETRIEVE_REJECT, i, Q932ProcRetrieveRejectTE, Q932Umes_RetrieveReject, Q932Pmes_RetrieveReject);
|
||||
|
||||
/* Set up the IE encoder/decoder handle table.*/
|
||||
Q931SetIEProc(Q931ie_SEGMENTED_MESSAGE, i,Q931Pie_Segment, Q931Uie_Segment);
|
||||
Q931SetIEProc(Q931ie_BEARER_CAPABILITY, i,Q931Pie_BearerCap, Q931Uie_BearerCap);
|
||||
Q931SetIEProc(Q931ie_CAUSE, i,Q931Pie_Cause, Q931Uie_Cause);
|
||||
Q931SetIEProc(Q931ie_CALL_IDENTITY, i,Q931Pie_CallID, Q931Uie_CallID);
|
||||
Q931SetIEProc(Q931ie_CALL_STATE, i,Q931Pie_CallState, Q931Uie_CallState);
|
||||
Q931SetIEProc(Q931ie_CHANGE_STATUS, i,Q931Pie_ChangeStatus, Q931Uie_ChangeStatus);
|
||||
Q931SetIEProc(Q931ie_CHANNEL_IDENTIFICATION, i,Q931Pie_ChanID, Q931Uie_ChanID);
|
||||
Q931SetIEProc(Q931ie_PROGRESS_INDICATOR, i,Q931Pie_ProgInd, Q931Uie_ProgInd);
|
||||
Q931SetIEProc(Q931ie_NETWORK_SPECIFIC_FACILITIES, i,Q931Pie_NetFac, Q931Uie_NetFac);
|
||||
Q931SetIEProc(Q931ie_NOTIFICATION_INDICATOR, i,Q931Pie_NotifInd, Q931Uie_NotifInd);
|
||||
Q931SetIEProc(Q931ie_DISPLAY, i,Q931Pie_Display, Q931Uie_Display);
|
||||
Q931SetIEProc(Q931ie_DATETIME, i,Q931Pie_DateTime, Q931Uie_DateTime);
|
||||
Q931SetIEProc(Q931ie_KEYPAD_FACILITY, i,Q931Pie_KeypadFac, Q931Uie_KeypadFac);
|
||||
Q931SetIEProc(Q931ie_SIGNAL, i,Q931Pie_Signal, Q931Uie_Signal);
|
||||
Q931SetIEProc(Q931ie_TRANSIT_DELAY_SELECTION_AND_IND, i,Q931Pie_TransNetSel, Q931Uie_TransNetSel);
|
||||
Q931SetIEProc(Q931ie_CALLING_PARTY_NUMBER, i,Q931Pie_CallingNum, Q931Uie_CallingNum);
|
||||
Q931SetIEProc(Q931ie_CALLING_PARTY_SUBADDRESS, i,Q931Pie_CallingSub, Q931Uie_CallingSub);
|
||||
Q931SetIEProc(Q931ie_CALLED_PARTY_NUMBER, i,Q931Pie_CalledNum, Q931Uie_CalledNum);
|
||||
Q931SetIEProc(Q931ie_CALLED_PARTY_SUBADDRESS, i,Q931Pie_CalledSub, Q931Uie_CalledSub);
|
||||
Q931SetIEProc(Q931ie_TRANSIT_NETWORK_SELECTION, i,Q931Pie_TransNetSel, Q931Uie_TransNetSel);
|
||||
Q931SetIEProc(Q931ie_RESTART_INDICATOR, i,Q931Pie_RestartInd, Q931Uie_RestartInd);
|
||||
Q931SetIEProc(Q931ie_LOW_LAYER_COMPATIBILITY, i,Q931Pie_LLComp, Q931Uie_LLComp);
|
||||
Q931SetIEProc(Q931ie_HIGH_LAYER_COMPATIBILITY, i,Q931Pie_HLComp, Q931Uie_HLComp);
|
||||
Q931SetIEProc(Q931ie_USER_USER, i,Q931Pie_UserUser, Q931Uie_UserUser);
|
||||
Q931SetIEProc(Q931ie_GENERIC_DIGITS, i,Q931Pie_GenericDigits, Q931Uie_GenericDigits);
|
||||
Q931SetIEProc(Q931ie_SEGMENTED_MESSAGE, i, Q931Pie_Segment, Q931Uie_Segment);
|
||||
Q931SetIEProc(Q931ie_BEARER_CAPABILITY, i, Q931Pie_BearerCap, Q931Uie_BearerCap);
|
||||
Q931SetIEProc(Q931ie_CAUSE, i, Q931Pie_Cause, Q931Uie_Cause);
|
||||
Q931SetIEProc(Q931ie_CALL_IDENTITY, i, Q931Pie_CallID, Q931Uie_CallID);
|
||||
Q931SetIEProc(Q931ie_CALL_STATE, i, Q931Pie_CallState, Q931Uie_CallState);
|
||||
Q931SetIEProc(Q931ie_CHANGE_STATUS, i, Q931Pie_ChangeStatus, Q931Uie_ChangeStatus);
|
||||
Q931SetIEProc(Q931ie_CHANNEL_IDENTIFICATION, i, Q931Pie_ChanID, Q931Uie_ChanID);
|
||||
Q931SetIEProc(Q931ie_PROGRESS_INDICATOR, i, Q931Pie_ProgInd, Q931Uie_ProgInd);
|
||||
Q931SetIEProc(Q931ie_NETWORK_SPECIFIC_FACILITIES, i, Q931Pie_NetFac, Q931Uie_NetFac);
|
||||
Q931SetIEProc(Q931ie_NOTIFICATION_INDICATOR, i, Q931Pie_NotifInd, Q931Uie_NotifInd);
|
||||
Q931SetIEProc(Q931ie_DISPLAY, i, Q931Pie_Display, Q931Uie_Display);
|
||||
Q931SetIEProc(Q931ie_DATETIME, i, Q931Pie_DateTime, Q931Uie_DateTime);
|
||||
Q931SetIEProc(Q931ie_KEYPAD_FACILITY, i, Q931Pie_KeypadFac, Q931Uie_KeypadFac);
|
||||
Q931SetIEProc(Q931ie_SIGNAL, i, Q931Pie_Signal, Q931Uie_Signal);
|
||||
Q931SetIEProc(Q931ie_TRANSIT_DELAY_SELECTION_AND_IND, i, Q931Pie_TransNetSel, Q931Uie_TransNetSel);
|
||||
Q931SetIEProc(Q931ie_CALLING_PARTY_NUMBER, i, Q931Pie_CallingNum, Q931Uie_CallingNum);
|
||||
Q931SetIEProc(Q931ie_CALLING_PARTY_SUBADDRESS, i, Q931Pie_CallingSub, Q931Uie_CallingSub);
|
||||
Q931SetIEProc(Q931ie_CALLED_PARTY_NUMBER, i, Q931Pie_CalledNum, Q931Uie_CalledNum);
|
||||
Q931SetIEProc(Q931ie_CALLED_PARTY_SUBADDRESS, i, Q931Pie_CalledSub, Q931Uie_CalledSub);
|
||||
Q931SetIEProc(Q931ie_TRANSIT_NETWORK_SELECTION, i, Q931Pie_TransNetSel, Q931Uie_TransNetSel);
|
||||
Q931SetIEProc(Q931ie_RESTART_INDICATOR, i, Q931Pie_RestartInd, Q931Uie_RestartInd);
|
||||
Q931SetIEProc(Q931ie_LOW_LAYER_COMPATIBILITY, i, Q931Pie_LLComp, Q931Uie_LLComp);
|
||||
Q931SetIEProc(Q931ie_HIGH_LAYER_COMPATIBILITY, i, Q931Pie_HLComp, Q931Uie_HLComp);
|
||||
Q931SetIEProc(Q931ie_USER_USER, i, Q931Pie_UserUser, Q931Uie_UserUser);
|
||||
Q931SetIEProc(Q931ie_GENERIC_DIGITS, i, Q931Pie_GenericDigits, Q931Uie_GenericDigits);
|
||||
|
||||
/* The following define a state machine. The point is that the Message */
|
||||
/* procs can when search this to find out if the message/state */
|
||||
/* combination is legale. If not, the proc for unexpected message apply.*/
|
||||
|
||||
/* State 0 Idle */
|
||||
Q931AddStateEntry(i,Q931_U0, Q931mes_RESUME, 2);
|
||||
Q931AddStateEntry(i,Q931_U0, Q931mes_SETUP, 4);
|
||||
Q931AddStateEntry(i,Q931_U0, Q931mes_SETUP, 2);
|
||||
Q931AddStateEntry(i,Q931_U0, Q931mes_STATUS, 4);
|
||||
Q931AddStateEntry(i,Q931_U0, Q931mes_RELEASE, 4);
|
||||
Q931AddStateEntry(i,Q931_U0, Q931mes_RELEASE_COMPLETE,4);
|
||||
Q931AddStateEntry(i, Q931_U0, Q931mes_RESUME, 2);
|
||||
Q931AddStateEntry(i, Q931_U0, Q931mes_SETUP, 4);
|
||||
Q931AddStateEntry(i, Q931_U0, Q931mes_SETUP, 2);
|
||||
Q931AddStateEntry(i, Q931_U0, Q931mes_STATUS, 4);
|
||||
Q931AddStateEntry(i, Q931_U0, Q931mes_RELEASE, 4);
|
||||
Q931AddStateEntry(i, Q931_U0, Q931mes_RELEASE_COMPLETE, 4);
|
||||
|
||||
/* State 1 Call Initiating */
|
||||
Q931AddStateEntry(i,Q931_U1, Q931mes_DISCONNECT, 2);
|
||||
Q931AddStateEntry(i,Q931_U1, Q931mes_SETUP_ACKNOWLEDGE, 4);
|
||||
Q931AddStateEntry(i,Q931_U1, Q931mes_RELEASE_COMPLETE,4);
|
||||
Q931AddStateEntry(i,Q931_U1, Q931mes_CALL_PROCEEDING, 4);
|
||||
Q931AddStateEntry(i,Q931_U1, Q931mes_ALERTING, 4);
|
||||
Q931AddStateEntry(i,Q931_U1, Q931mes_CONNECT, 4);
|
||||
Q931AddStateEntry(i, Q931_U1, Q931mes_DISCONNECT, 2);
|
||||
Q931AddStateEntry(i, Q931_U1, Q931mes_SETUP_ACKNOWLEDGE, 4);
|
||||
Q931AddStateEntry(i, Q931_U1, Q931mes_RELEASE_COMPLETE, 4);
|
||||
Q931AddStateEntry(i, Q931_U1, Q931mes_CALL_PROCEEDING, 4);
|
||||
Q931AddStateEntry(i, Q931_U1, Q931mes_ALERTING, 4);
|
||||
Q931AddStateEntry(i, Q931_U1, Q931mes_CONNECT, 4);
|
||||
|
||||
/* State 2 Overlap Sending */
|
||||
Q931AddStateEntry(i,Q931_U2, Q931mes_INFORMATION, 2);
|
||||
Q931AddStateEntry(i,Q931_U2, Q931mes_CALL_PROCEEDING, 4);
|
||||
Q931AddStateEntry(i,Q931_U2, Q931mes_ALERTING, 4);
|
||||
Q931AddStateEntry(i,Q931_U2, Q931mes_PROGRESS, 4);
|
||||
Q931AddStateEntry(i,Q931_U2, Q931mes_CONNECT, 4);
|
||||
Q931AddStateEntry(i,Q931_U2, Q931mes_RELEASE, 2);
|
||||
Q931AddStateEntry(i, Q931_U2, Q931mes_INFORMATION, 2);
|
||||
Q931AddStateEntry(i, Q931_U2, Q931mes_CALL_PROCEEDING, 4);
|
||||
Q931AddStateEntry(i, Q931_U2, Q931mes_ALERTING, 4);
|
||||
Q931AddStateEntry(i, Q931_U2, Q931mes_PROGRESS, 4);
|
||||
Q931AddStateEntry(i, Q931_U2, Q931mes_CONNECT, 4);
|
||||
Q931AddStateEntry(i, Q931_U2, Q931mes_RELEASE, 2);
|
||||
|
||||
/* State 3 Outgoing Call Proceeding */
|
||||
Q931AddStateEntry(i,Q931_U3, Q931mes_PROGRESS, 4);
|
||||
Q931AddStateEntry(i,Q931_U3, Q931mes_ALERTING, 4);
|
||||
Q931AddStateEntry(i,Q931_U3, Q931mes_CONNECT, 4);
|
||||
Q931AddStateEntry(i,Q931_U3, Q931mes_RELEASE, 2);
|
||||
Q931AddStateEntry(i, Q931_U3, Q931mes_PROGRESS, 4);
|
||||
Q931AddStateEntry(i, Q931_U3, Q931mes_ALERTING, 4);
|
||||
Q931AddStateEntry(i, Q931_U3, Q931mes_CONNECT, 4);
|
||||
Q931AddStateEntry(i, Q931_U3, Q931mes_RELEASE, 2);
|
||||
|
||||
/* State 4 Call Delivered */
|
||||
Q931AddStateEntry(i,Q931_U4, Q931mes_CONNECT, 4);
|
||||
Q931AddStateEntry(i, Q931_U4, Q931mes_CONNECT, 4);
|
||||
|
||||
/* State 6 Call Precent */
|
||||
Q931AddStateEntry(i,Q931_U6, Q931mes_INFORMATION, 2);
|
||||
Q931AddStateEntry(i,Q931_U6, Q931mes_ALERTING, 2);
|
||||
Q931AddStateEntry(i,Q931_U6, Q931mes_CALL_PROCEEDING,2);
|
||||
Q931AddStateEntry(i,Q931_U6, Q931mes_CONNECT, 2);
|
||||
Q931AddStateEntry(i,Q931_U6, Q931mes_RELEASE_COMPLETE,2);
|
||||
Q931AddStateEntry(i,Q931_U6, Q931mes_RELEASE, 4);
|
||||
Q931AddStateEntry(i,Q931_U6, Q931mes_DISCONNECT, 4);
|
||||
Q931AddStateEntry(i, Q931_U6, Q931mes_INFORMATION, 2);
|
||||
Q931AddStateEntry(i, Q931_U6, Q931mes_ALERTING, 2);
|
||||
Q931AddStateEntry(i, Q931_U6, Q931mes_CALL_PROCEEDING, 2);
|
||||
Q931AddStateEntry(i, Q931_U6, Q931mes_CONNECT, 2);
|
||||
Q931AddStateEntry(i, Q931_U6, Q931mes_RELEASE_COMPLETE, 2);
|
||||
Q931AddStateEntry(i, Q931_U6, Q931mes_RELEASE, 4);
|
||||
Q931AddStateEntry(i, Q931_U6, Q931mes_DISCONNECT, 4);
|
||||
|
||||
/* State 7 Call Received */
|
||||
Q931AddStateEntry(i,Q931_U7, Q931mes_CONNECT, 2);
|
||||
Q931AddStateEntry(i, Q931_U7, Q931mes_CONNECT, 2);
|
||||
|
||||
/* State 8 Connect request */
|
||||
Q931AddStateEntry(i,Q931_U8, Q931mes_CONNECT_ACKNOWLEDGE, 4);
|
||||
Q931AddStateEntry(i, Q931_U8, Q931mes_CONNECT_ACKNOWLEDGE, 4);
|
||||
|
||||
/* State 9 Incoming Call Proceeding */
|
||||
Q931AddStateEntry(i,Q931_U9, Q931mes_CONNECT, 2);
|
||||
Q931AddStateEntry(i,Q931_U9, Q931mes_ALERTING, 2);
|
||||
Q931AddStateEntry(i,Q931_U9, Q931mes_PROGRESS, 2);
|
||||
Q931AddStateEntry(i, Q931_U9, Q931mes_CONNECT, 2);
|
||||
Q931AddStateEntry(i, Q931_U9, Q931mes_ALERTING, 2);
|
||||
Q931AddStateEntry(i, Q931_U9, Q931mes_PROGRESS, 2);
|
||||
|
||||
/* State 10 Active */
|
||||
Q931AddStateEntry(i,Q931_U10, Q931mes_SUSPEND, 2);
|
||||
Q931AddStateEntry(i,Q931_U10, Q931mes_NOTIFY, 4);
|
||||
Q931AddStateEntry(i,Q931_U10, Q931mes_NOTIFY, 2);
|
||||
Q931AddStateEntry(i, Q931_U10, Q931mes_SUSPEND, 2);
|
||||
Q931AddStateEntry(i, Q931_U10, Q931mes_NOTIFY, 4);
|
||||
Q931AddStateEntry(i, Q931_U10, Q931mes_NOTIFY, 2);
|
||||
|
||||
/* State 11 Disconnect Request */
|
||||
Q931AddStateEntry(i,Q931_U11, Q931mes_RELEASE, 4);
|
||||
Q931AddStateEntry(i,Q931_U11, Q931mes_DISCONNECT, 4);
|
||||
Q931AddStateEntry(i,Q931_U11, Q931mes_NOTIFY, 4);
|
||||
Q931AddStateEntry(i, Q931_U11, Q931mes_RELEASE, 4);
|
||||
Q931AddStateEntry(i, Q931_U11, Q931mes_DISCONNECT, 4);
|
||||
Q931AddStateEntry(i, Q931_U11, Q931mes_NOTIFY, 4);
|
||||
|
||||
/* State 12 Disconnect Ind */
|
||||
Q931AddStateEntry(i,Q931_U12, Q931mes_RELEASE, 4);
|
||||
Q931AddStateEntry(i,Q931_U12, Q931mes_RELEASE, 2);
|
||||
Q931AddStateEntry(i, Q931_U12, Q931mes_RELEASE, 4);
|
||||
Q931AddStateEntry(i, Q931_U12, Q931mes_RELEASE, 2);
|
||||
|
||||
/* State 15 Suspend Request */
|
||||
Q931AddStateEntry(i,Q931_U15, Q931mes_SUSPEND_ACKNOWLEDGE, 4);
|
||||
Q931AddStateEntry(i,Q931_U15, Q931mes_SUSPEND_REJECT, 4);
|
||||
Q931AddStateEntry(i,Q931_U15, Q931mes_DISCONNECT, 4);
|
||||
Q931AddStateEntry(i,Q931_U15, Q931mes_RELEASE, 4);
|
||||
Q931AddStateEntry(i, Q931_U15, Q931mes_SUSPEND_ACKNOWLEDGE, 4);
|
||||
Q931AddStateEntry(i, Q931_U15, Q931mes_SUSPEND_REJECT, 4);
|
||||
Q931AddStateEntry(i, Q931_U15, Q931mes_DISCONNECT, 4);
|
||||
Q931AddStateEntry(i, Q931_U15, Q931mes_RELEASE, 4);
|
||||
|
||||
/* TODO
|
||||
Q931AddStateEntry(i,Q931_U17,
|
||||
Q931AddStateEntry(i,Q931_U19,
|
||||
Q931AddStateEntry(i,Q931_U25,
|
||||
Q931AddStateEntry(i, Q931_U17,
|
||||
Q931AddStateEntry(i, Q931_U19,
|
||||
Q931AddStateEntry(i, Q931_U25,
|
||||
*/
|
||||
}
|
||||
|
||||
@@ -218,36 +218,32 @@ void DMSCreateTE(L3UCHAR i)
|
||||
*****************************************************************************/
|
||||
L3INT DMSProc0x0fTE(Q931_TrunkInfo_t *pTrunk, L3UCHAR * buf, L3INT iFrom)
|
||||
{
|
||||
L3INT callIndex;
|
||||
L3INT ret=Q931E_NO_ERROR;
|
||||
Q931mes_Header *pMes = (Q931mes_Header *)&buf[Q931L4HeaderSpace];
|
||||
L3INT callIndex;
|
||||
L3INT ret = Q931E_NO_ERROR;
|
||||
|
||||
if (pMes->ProtDisc == 8) {
|
||||
/* Find the call using CRV */
|
||||
ret = Q931FindCRV(pTrunk, pMes->CRV, &callIndex);
|
||||
if(ret != Q931E_NO_ERROR)
|
||||
if (ret != Q931E_NO_ERROR)
|
||||
return ret;
|
||||
|
||||
|
||||
/* TODO chack against state table for illegal or unexpected message here*/
|
||||
|
||||
/* TODO - Set correct timer here */
|
||||
Q931StartTimer(pTrunk, callIndex, 303);
|
||||
}
|
||||
if(iFrom == 4)
|
||||
{
|
||||
if (iFrom == 4) {
|
||||
/* TODO Add proc here*/
|
||||
ret = Q931Tx32Data(pTrunk,0,buf,pMes->Size);
|
||||
ret = Q931Tx32Data(pTrunk, 0, buf, pMes->Size);
|
||||
}
|
||||
else if (iFrom ==2)
|
||||
{
|
||||
else if (iFrom == 2) {
|
||||
/* TODO Add proc here*/
|
||||
ret = Q931Tx34(pTrunk,buf,pMes->Size);
|
||||
ret = Q931Tx34(pTrunk, buf, pMes->Size);
|
||||
|
||||
if (pMes->ProtDisc == 3 && pTrunk->autoServiceAck) {
|
||||
Q931AckService(pTrunk, buf);
|
||||
}
|
||||
|
||||
}
|
||||
return ret;
|
||||
|
||||
@@ -260,31 +256,28 @@ L3INT DMSProc0x0fTE(Q931_TrunkInfo_t *pTrunk, L3UCHAR * buf, L3INT iFrom)
|
||||
*****************************************************************************/
|
||||
L3INT DMSProc0x07TE(Q931_TrunkInfo_t *pTrunk, L3UCHAR * buf, L3INT iFrom)
|
||||
{
|
||||
L3INT callIndex;
|
||||
L3INT ret=Q931E_NO_ERROR;
|
||||
Q931mes_Header *pMes = (Q931mes_Header *)&buf[Q931L4HeaderSpace];
|
||||
L3INT callIndex;
|
||||
L3INT ret = Q931E_NO_ERROR;
|
||||
|
||||
if (pMes->ProtDisc == 8) {
|
||||
/* Find the call using CRV */
|
||||
ret = Q931FindCRV(pTrunk, pMes->CRV, &callIndex);
|
||||
if(ret != Q931E_NO_ERROR)
|
||||
if (ret != Q931E_NO_ERROR)
|
||||
return ret;
|
||||
|
||||
|
||||
/* TODO chack against state table for illegal or unexpected message here*/
|
||||
|
||||
/* TODO - Set correct timer here */
|
||||
Q931StartTimer(pTrunk, callIndex, 303);
|
||||
}
|
||||
if(iFrom == 4)
|
||||
{
|
||||
if (iFrom == 4) {
|
||||
/* TODO Add proc here*/
|
||||
ret = Q931Tx32Data(pTrunk,0,buf,pMes->Size);
|
||||
ret = Q931Tx32Data(pTrunk, 0, buf, pMes->Size);
|
||||
}
|
||||
else if (iFrom ==2)
|
||||
{
|
||||
else if (iFrom == 2) {
|
||||
/* TODO Add proc here*/
|
||||
ret = Q931Tx34(pTrunk,buf,pMes->Size);
|
||||
ret = Q931Tx34(pTrunk, buf, pMes->Size);
|
||||
}
|
||||
return ret;
|
||||
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
/*****************************************************************************
|
||||
|
||||
FileName: DMSmes.c
|
||||
FileName: DMSmes.c
|
||||
|
||||
Contents: Pack/Unpack functions. These functions will unpack a DMS-100 ISDN
|
||||
message from the bit packed original format into structs
|
||||
that contains variables sized by the user. It will also pack
|
||||
the struct back into a Q.931 message as required.
|
||||
Contents: Pack/Unpack functions. These functions will unpack a DMS-100 ISDN
|
||||
message from the bit packed original format into structs
|
||||
that contains variables sized by the user. It will also pack
|
||||
the struct back into a Q.931 message as required.
|
||||
|
||||
See national.h for description.
|
||||
See national.h for description.
|
||||
|
||||
License/Copyright:
|
||||
|
||||
@@ -21,12 +21,12 @@
|
||||
modification, are permitted provided that the following conditions are
|
||||
met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright notice,
|
||||
* Redistributions of source code must retain the above copyright notice,
|
||||
this list of conditions and the following disclaimer.
|
||||
* Redistributions in binary form must reproduce the above copyright notice,
|
||||
* Redistributions in binary form must reproduce the above copyright notice,
|
||||
this list of conditions and the following disclaimer in the documentation
|
||||
and/or other materials provided with the distribution.
|
||||
* Neither the name of the Case Labs, Ltd nor the names of its contributors
|
||||
* Neither the name of the Case Labs, Ltd nor the names of its contributors
|
||||
may be used to endorse or promote products derived from this software
|
||||
without specific prior written permission.
|
||||
|
||||
@@ -48,19 +48,18 @@
|
||||
|
||||
/*****************************************************************************
|
||||
|
||||
Function: DMSUmes_Setup
|
||||
Function: DMSUmes_Setup
|
||||
|
||||
*****************************************************************************/
|
||||
L3INT DMSUmes_Setup(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, Q931mes_Generic *mes, L3INT IOff, L3INT Size)
|
||||
{
|
||||
L3INT ir=0;
|
||||
L3INT OOff=0;
|
||||
L3INT rc=Q931E_NO_ERROR;
|
||||
L3INT ir = 0;
|
||||
L3INT OOff = 0;
|
||||
L3INT rc = Q931E_NO_ERROR;
|
||||
L3UCHAR last_codeset = 0, codeset = 0;
|
||||
L3UCHAR shift_lock = 1;
|
||||
|
||||
while(IOff < Size)
|
||||
{
|
||||
while (IOff < Size) {
|
||||
if (!shift_lock) {
|
||||
codeset = last_codeset;
|
||||
}
|
||||
@@ -75,8 +74,7 @@ L3INT DMSUmes_Setup(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, Q931mes_Generic *me
|
||||
}
|
||||
|
||||
if (codeset == 0) {
|
||||
switch(IBuf[IOff])
|
||||
{
|
||||
switch (IBuf[IOff]) {
|
||||
case Q931ie_SENDING_COMPLETE:
|
||||
case Q931ie_BEARER_CAPABILITY:
|
||||
case Q931ie_CHANNEL_IDENTIFICATION:
|
||||
@@ -94,11 +92,11 @@ L3INT DMSUmes_Setup(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, Q931mes_Generic *me
|
||||
case Q931ie_LOW_LAYER_COMPATIBILITY:
|
||||
case Q931ie_HIGH_LAYER_COMPATIBILITY:
|
||||
rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, mes, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
|
||||
if(rc != Q931E_NO_ERROR)
|
||||
if (rc != Q931E_NO_ERROR)
|
||||
return rc;
|
||||
break;
|
||||
case Q931ie_REPEAT_INDICATOR:
|
||||
if(ir < 2) {
|
||||
if (ir < 2) {
|
||||
rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, mes, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
|
||||
ir++;
|
||||
} else {
|
||||
@@ -110,11 +108,10 @@ L3INT DMSUmes_Setup(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, Q931mes_Generic *me
|
||||
break;
|
||||
}
|
||||
} else if (codeset == 6) {
|
||||
switch(IBuf[IOff])
|
||||
{
|
||||
switch (IBuf[IOff]) {
|
||||
case Q931ie_GENERIC_DIGITS:
|
||||
rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, mes, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
|
||||
if(rc != Q931E_NO_ERROR)
|
||||
if (rc != Q931E_NO_ERROR)
|
||||
return rc;
|
||||
break;
|
||||
default:
|
||||
@@ -126,13 +123,13 @@ L3INT DMSUmes_Setup(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, Q931mes_Generic *me
|
||||
return Q931E_ILLEGAL_IE;
|
||||
}
|
||||
}
|
||||
mes->Size = sizeof(Q931mes_Generic) - 1 + OOff;
|
||||
return Q931E_NO_ERROR;
|
||||
mes->Size = sizeof(Q931mes_Generic) - 1 + OOff;
|
||||
return Q931E_NO_ERROR;
|
||||
}
|
||||
|
||||
/*****************************************************************************
|
||||
|
||||
Function: DMSPmes_Setup
|
||||
Function: DMSPmes_Setup
|
||||
|
||||
Decription: Pack a Q931mes_Generic into a real Q.931 message. The user will
|
||||
set up a SETUP message and issue this to the stack where it
|
||||
@@ -150,115 +147,129 @@ L3INT DMSUmes_Setup(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, Q931mes_Generic *me
|
||||
*****************************************************************************/
|
||||
L3INT DMSPmes_Setup(Q931_TrunkInfo_t *pTrunk, Q931mes_Generic *IBuf, L3INT ISize, L3UCHAR *OBuf, L3INT *OSize)
|
||||
{
|
||||
L3INT rc = Q931E_NO_ERROR;
|
||||
L3INT rc = Q931E_NO_ERROR;
|
||||
Q931mes_Generic *pMes = (Q931mes_Generic *)IBuf;
|
||||
L3INT Octet = 0;
|
||||
|
||||
/* Q931 Message Header */
|
||||
Q931MesgHeader(pTrunk, pMes, OBuf, *OSize, &Octet);
|
||||
|
||||
/* Sending Complete */
|
||||
if(Q931IsIEPresent(pMes->SendComplete))
|
||||
/* Sending Complete */
|
||||
if (Q931IsIEPresent(pMes->SendComplete)) {
|
||||
OBuf[Octet++] = (L3UCHAR)(pMes->SendComplete & 0x00ff);
|
||||
}
|
||||
|
||||
/* Repeat Indicator */
|
||||
if(Q931IsIEPresent(pMes->RepeatInd))
|
||||
if (Q931IsIEPresent(pMes->RepeatInd)) {
|
||||
OBuf[Octet++] = (L3UCHAR)(pMes->RepeatInd & 0x00ff);
|
||||
}
|
||||
|
||||
/* Bearer capability */
|
||||
if(Q931IsIEPresent(pMes->BearerCap))
|
||||
{
|
||||
if((rc=Q931Pie[pTrunk->Dialect][Q931ie_BEARER_CAPABILITY](pTrunk, Q931GetIEPtr(pMes->BearerCap,pMes->buf), OBuf, &Octet))!=0)
|
||||
if (Q931IsIEPresent(pMes->BearerCap)) {
|
||||
if ((rc = Q931Pie[pTrunk->Dialect][Q931ie_BEARER_CAPABILITY](pTrunk, Q931GetIEPtr(pMes->BearerCap,pMes->buf), OBuf, &Octet)) != 0)
|
||||
return rc;
|
||||
}
|
||||
else
|
||||
{
|
||||
rc=Q931E_BEARERCAP;
|
||||
} else {
|
||||
rc = Q931E_BEARERCAP;
|
||||
}
|
||||
|
||||
/* Channel Identification */
|
||||
if(Q931IsIEPresent(pMes->ChanID))
|
||||
if((rc=Q931Pie[pTrunk->Dialect][Q931ie_CHANNEL_IDENTIFICATION](pTrunk, Q931GetIEPtr(pMes->ChanID,pMes->buf), OBuf, &Octet))!=0)
|
||||
if (Q931IsIEPresent(pMes->ChanID)) {
|
||||
if ((rc = Q931Pie[pTrunk->Dialect][Q931ie_CHANNEL_IDENTIFICATION](pTrunk, Q931GetIEPtr(pMes->ChanID,pMes->buf), OBuf, &Octet)) != 0)
|
||||
return rc;
|
||||
}
|
||||
|
||||
/* Progress indicator */
|
||||
if(Q931IsIEPresent(pMes->ProgInd))
|
||||
if((rc=Q931Pie[pTrunk->Dialect][Q931ie_PROGRESS_INDICATOR](pTrunk, Q931GetIEPtr(pMes->ProgInd,pMes->buf), OBuf, &Octet))!=0)
|
||||
if (Q931IsIEPresent(pMes->ProgInd)) {
|
||||
if ((rc = Q931Pie[pTrunk->Dialect][Q931ie_PROGRESS_INDICATOR](pTrunk, Q931GetIEPtr(pMes->ProgInd,pMes->buf), OBuf, &Octet)) != 0)
|
||||
return rc;
|
||||
}
|
||||
|
||||
/* Network spesific facilities */
|
||||
if(Q931IsIEPresent(pMes->NetFac))
|
||||
if((rc=Q931Pie[pTrunk->Dialect][Q931ie_NETWORK_SPECIFIC_FACILITIES](pTrunk, Q931GetIEPtr(pMes->NetFac,pMes->buf), OBuf, &Octet))!=0)
|
||||
if (Q931IsIEPresent(pMes->NetFac)) {
|
||||
if ((rc = Q931Pie[pTrunk->Dialect][Q931ie_NETWORK_SPECIFIC_FACILITIES](pTrunk, Q931GetIEPtr(pMes->NetFac,pMes->buf), OBuf, &Octet)) != 0)
|
||||
return rc;
|
||||
}
|
||||
|
||||
/* Display */
|
||||
if(Q931IsIEPresent(pMes->Display))
|
||||
if((rc=Q931Pie[pTrunk->Dialect][Q931ie_DISPLAY](pTrunk, Q931GetIEPtr(pMes->Display,pMes->buf), OBuf, &Octet))!=0)
|
||||
if (Q931IsIEPresent(pMes->Display)) {
|
||||
if ((rc = Q931Pie[pTrunk->Dialect][Q931ie_DISPLAY](pTrunk, Q931GetIEPtr(pMes->Display,pMes->buf), OBuf, &Octet)) != 0)
|
||||
return rc;
|
||||
}
|
||||
|
||||
/* Date/Time */
|
||||
if(Q931IsIEPresent(pMes->DateTime))
|
||||
if((rc=Q931Pie[pTrunk->Dialect][Q931ie_DATETIME](pTrunk, Q931GetIEPtr(pMes->DateTime,pMes->buf), OBuf, &Octet))!=0)
|
||||
if (Q931IsIEPresent(pMes->DateTime)) {
|
||||
if ((rc = Q931Pie[pTrunk->Dialect][Q931ie_DATETIME](pTrunk, Q931GetIEPtr(pMes->DateTime,pMes->buf), OBuf, &Octet)) != 0)
|
||||
return rc;
|
||||
}
|
||||
|
||||
/* Keypad Facility */
|
||||
if(Q931IsIEPresent(pMes->KeypadFac))
|
||||
if((rc=Q931Pie[pTrunk->Dialect][Q931ie_KEYPAD_FACILITY](pTrunk, Q931GetIEPtr(pMes->KeypadFac,pMes->buf), OBuf, &Octet))!=0)
|
||||
if (Q931IsIEPresent(pMes->KeypadFac)) {
|
||||
if ((rc = Q931Pie[pTrunk->Dialect][Q931ie_KEYPAD_FACILITY](pTrunk, Q931GetIEPtr(pMes->KeypadFac,pMes->buf), OBuf, &Octet)) != 0)
|
||||
return rc;
|
||||
}
|
||||
|
||||
/* Signal */
|
||||
if(Q931IsIEPresent(pMes->Signal))
|
||||
if((rc=Q931Pie[pTrunk->Dialect][Q931ie_SIGNAL](pTrunk, Q931GetIEPtr(pMes->Signal,pMes->buf), OBuf, &Octet))!=0)
|
||||
if (Q931IsIEPresent(pMes->Signal)) {
|
||||
if ((rc = Q931Pie[pTrunk->Dialect][Q931ie_SIGNAL](pTrunk, Q931GetIEPtr(pMes->Signal,pMes->buf), OBuf, &Octet)) != 0)
|
||||
return rc;
|
||||
}
|
||||
|
||||
/* Calling Party Number */
|
||||
if(Q931IsIEPresent(pMes->CallingNum))
|
||||
if((rc=Q931Pie[pTrunk->Dialect][Q931ie_CALLING_PARTY_NUMBER](pTrunk, Q931GetIEPtr(pMes->CallingNum,pMes->buf), OBuf, &Octet))!=0)
|
||||
if (Q931IsIEPresent(pMes->CallingNum)) {
|
||||
if ((rc = Q931Pie[pTrunk->Dialect][Q931ie_CALLING_PARTY_NUMBER](pTrunk, Q931GetIEPtr(pMes->CallingNum,pMes->buf), OBuf, &Octet)) != 0)
|
||||
return rc;
|
||||
}
|
||||
|
||||
/* Calling Party Subaddress */
|
||||
if(Q931IsIEPresent(pMes->CallingSub))
|
||||
if((rc=Q931Pie[pTrunk->Dialect][Q931ie_CALLING_PARTY_SUBADDRESS](pTrunk, Q931GetIEPtr(pMes->CallingSub,pMes->buf), OBuf, &Octet))!=0)
|
||||
if (Q931IsIEPresent(pMes->CallingSub)) {
|
||||
if ((rc = Q931Pie[pTrunk->Dialect][Q931ie_CALLING_PARTY_SUBADDRESS](pTrunk, Q931GetIEPtr(pMes->CallingSub,pMes->buf), OBuf, &Octet)) != 0)
|
||||
return rc;
|
||||
}
|
||||
|
||||
/* Called Party number */
|
||||
if(Q931IsIEPresent(pMes->CalledNum))
|
||||
if((rc=Q931Pie[pTrunk->Dialect][Q931ie_CALLED_PARTY_NUMBER](pTrunk, Q931GetIEPtr(pMes->CalledNum,pMes->buf), OBuf, &Octet))!=0)
|
||||
if (Q931IsIEPresent(pMes->CalledNum)) {
|
||||
if ((rc = Q931Pie[pTrunk->Dialect][Q931ie_CALLED_PARTY_NUMBER](pTrunk, Q931GetIEPtr(pMes->CalledNum,pMes->buf), OBuf, &Octet)) != 0)
|
||||
return rc;
|
||||
}
|
||||
|
||||
|
||||
/* Called party subaddress */
|
||||
if(Q931IsIEPresent(pMes->CalledSub))
|
||||
if((rc=Q931Pie[pTrunk->Dialect][Q931ie_CALLED_PARTY_SUBADDRESS](pTrunk, Q931GetIEPtr(pMes->CalledSub,pMes->buf), OBuf, &Octet))!=0)
|
||||
if (Q931IsIEPresent(pMes->CalledSub)) {
|
||||
if ((rc = Q931Pie[pTrunk->Dialect][Q931ie_CALLED_PARTY_SUBADDRESS](pTrunk, Q931GetIEPtr(pMes->CalledSub,pMes->buf), OBuf, &Octet)) != 0)
|
||||
return rc;
|
||||
}
|
||||
|
||||
/* Transit network selection */
|
||||
if(Q931IsIEPresent(pMes->TransNetSel))
|
||||
if((rc=Q931Pie[pTrunk->Dialect][Q931ie_TRANSIT_NETWORK_SELECTION](pTrunk, Q931GetIEPtr(pMes->TransNetSel,pMes->buf), OBuf, &Octet))!=0)
|
||||
if (Q931IsIEPresent(pMes->TransNetSel)) {
|
||||
if ((rc = Q931Pie[pTrunk->Dialect][Q931ie_TRANSIT_NETWORK_SELECTION](pTrunk, Q931GetIEPtr(pMes->TransNetSel,pMes->buf), OBuf, &Octet)) != 0)
|
||||
return rc;
|
||||
}
|
||||
|
||||
/* Repeat Indicator */
|
||||
if(Q931IsIEPresent(pMes->LLRepeatInd))
|
||||
if (Q931IsIEPresent(pMes->LLRepeatInd)) {
|
||||
rc = Q931E_UNKNOWN_IE;/* TODO */
|
||||
}
|
||||
|
||||
/* Low Layer Compatibility */
|
||||
if(Q931IsIEPresent(pMes->LLComp))
|
||||
if((rc=Q931Pie[pTrunk->Dialect][Q931ie_LOW_LAYER_COMPATIBILITY](pTrunk, Q931GetIEPtr(pMes->LLComp,pMes->buf), OBuf, &Octet))!=0)
|
||||
if (Q931IsIEPresent(pMes->LLComp)) {
|
||||
if ((rc = Q931Pie[pTrunk->Dialect][Q931ie_LOW_LAYER_COMPATIBILITY](pTrunk, Q931GetIEPtr(pMes->LLComp,pMes->buf), OBuf, &Octet)) != 0)
|
||||
return rc;
|
||||
}
|
||||
|
||||
/* High Layer Compatibility */
|
||||
if(Q931IsIEPresent(pMes->HLComp))
|
||||
if((rc=Q931Pie[pTrunk->Dialect][Q931ie_HIGH_LAYER_COMPATIBILITY](pTrunk, Q931GetIEPtr(pMes->HLComp,pMes->buf), OBuf, &Octet))!=0)
|
||||
if (Q931IsIEPresent(pMes->HLComp)) {
|
||||
if ((rc = Q931Pie[pTrunk->Dialect][Q931ie_HIGH_LAYER_COMPATIBILITY](pTrunk, Q931GetIEPtr(pMes->HLComp,pMes->buf), OBuf, &Octet)) != 0)
|
||||
return rc;
|
||||
}
|
||||
|
||||
*OSize = Octet;
|
||||
|
||||
return rc;
|
||||
return rc;
|
||||
}
|
||||
|
||||
|
||||
/*****************************************************************************
|
||||
|
||||
Function: DMSUmes_0x0f
|
||||
Function: DMSUmes_0x0f
|
||||
|
||||
*****************************************************************************/
|
||||
L3INT DMSUmes_0x0f(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, Q931mes_Generic *mes, L3INT IOff, L3INT Size)
|
||||
@@ -276,7 +287,7 @@ L3INT DMSUmes_0x0f(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, Q931mes_Generic *mes
|
||||
|
||||
/*****************************************************************************
|
||||
|
||||
Function: DMSPmes_0x0f
|
||||
Function: DMSPmes_0x0f
|
||||
|
||||
*****************************************************************************/
|
||||
L3INT DMSPmes_0x0f(Q931_TrunkInfo_t *pTrunk, Q931mes_Generic *IBuf, L3INT ISize, L3UCHAR *OBuf, L3INT *OSize)
|
||||
@@ -296,7 +307,7 @@ L3INT DMSPmes_0x0f(Q931_TrunkInfo_t *pTrunk, Q931mes_Generic *IBuf, L3INT ISize,
|
||||
|
||||
/*****************************************************************************
|
||||
|
||||
Function: DMSUmes_0x07
|
||||
Function: DMSUmes_0x07
|
||||
|
||||
*****************************************************************************/
|
||||
L3INT DMSUmes_0x07(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, Q931mes_Generic *mes, L3INT IOff, L3INT Size)
|
||||
@@ -314,7 +325,7 @@ L3INT DMSUmes_0x07(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, Q931mes_Generic *mes
|
||||
|
||||
/*****************************************************************************
|
||||
|
||||
Function: DMSPmes_0x07
|
||||
Function: DMSPmes_0x07
|
||||
|
||||
*****************************************************************************/
|
||||
L3INT DMSPmes_0x07(Q931_TrunkInfo_t *pTrunk, Q931mes_Generic *IBuf, L3INT ISize, L3UCHAR *OBuf, L3INT *OSize)
|
||||
|
||||
@@ -4,11 +4,11 @@
|
||||
|
||||
Contents: EuroISDN State Engine for NT (Network Mode).
|
||||
|
||||
The controlling state engine for Q.931 is the state engine
|
||||
on the NT side. The state engine on the TE side is a slave
|
||||
of this. The TE side maintain it's own states as described in
|
||||
ITU-T Q931, but will in raise conditions be overridden by
|
||||
the NT side.
|
||||
The controlling state engine for Q.931 is the state engine
|
||||
on the NT side. The state engine on the TE side is a slave
|
||||
of this. The TE side maintain it's own states as described in
|
||||
ITU-T Q931, but will in raise conditions be overridden by
|
||||
the NT side.
|
||||
|
||||
License/Copyright:
|
||||
|
||||
@@ -19,12 +19,12 @@
|
||||
modification, are permitted provided that the following conditions are
|
||||
met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright notice,
|
||||
* Redistributions of source code must retain the above copyright notice,
|
||||
this list of conditions and the following disclaimer.
|
||||
* Redistributions in binary form must reproduce the above copyright notice,
|
||||
* Redistributions in binary form must reproduce the above copyright notice,
|
||||
this list of conditions and the following disclaimer in the documentation
|
||||
and/or other materials provided with the distribution.
|
||||
* Neither the name of the Case Labs, Ltd nor the names of its contributors
|
||||
* Neither the name of the Case Labs, Ltd nor the names of its contributors
|
||||
may be used to endorse or promote products derived from this software
|
||||
without specific prior written permission.
|
||||
|
||||
@@ -42,5 +42,3 @@
|
||||
*****************************************************************************/
|
||||
|
||||
#include "Q931.h"
|
||||
|
||||
|
||||
|
||||
@@ -4,11 +4,11 @@
|
||||
|
||||
Contents: EuroISDN State Engine for TE (User Mode).
|
||||
|
||||
The controlling state engine for Q.931 is the state engine
|
||||
on the NT side. The state engine on the TE side is a slave
|
||||
of this. The TE side maintain it's own states as described in
|
||||
ITU-T Q931, but will in raise conditions be overridden by
|
||||
the NT side.
|
||||
The controlling state engine for Q.931 is the state engine
|
||||
on the NT side. The state engine on the TE side is a slave
|
||||
of this. The TE side maintain it's own states as described in
|
||||
ITU-T Q931, but will in raise conditions be overridden by
|
||||
the NT side.
|
||||
|
||||
License/Copyright:
|
||||
|
||||
@@ -19,12 +19,12 @@
|
||||
modification, are permitted provided that the following conditions are
|
||||
met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright notice,
|
||||
* Redistributions of source code must retain the above copyright notice,
|
||||
this list of conditions and the following disclaimer.
|
||||
* Redistributions in binary form must reproduce the above copyright notice,
|
||||
* Redistributions in binary form must reproduce the above copyright notice,
|
||||
this list of conditions and the following disclaimer in the documentation
|
||||
and/or other materials provided with the distribution.
|
||||
* Neither the name of the Case Labs, Ltd nor the names of its contributors
|
||||
* Neither the name of the Case Labs, Ltd nor the names of its contributors
|
||||
may be used to endorse or promote products derived from this software
|
||||
without specific prior written permission.
|
||||
|
||||
|
||||
+297
-327
File diff suppressed because it is too large
Load Diff
+429
-504
File diff suppressed because it is too large
Load Diff
+517
-590
File diff suppressed because it is too large
Load Diff
+1771
-1933
File diff suppressed because it is too large
Load Diff
+815
-788
File diff suppressed because it is too large
Load Diff
@@ -13,12 +13,12 @@
|
||||
modification, are permitted provided that the following conditions are
|
||||
met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright notice,
|
||||
* Redistributions of source code must retain the above copyright notice,
|
||||
this list of conditions and the following disclaimer.
|
||||
* Redistributions in binary form must reproduce the above copyright notice,
|
||||
* Redistributions in binary form must reproduce the above copyright notice,
|
||||
this list of conditions and the following disclaimer in the documentation
|
||||
and/or other materials provided with the distribution.
|
||||
* Neither the name of the Case Labs, Ltd nor the names of its contributors
|
||||
* Neither the name of the Case Labs, Ltd nor the names of its contributors
|
||||
may be used to endorse or promote products derived from this software
|
||||
without specific prior written permission.
|
||||
|
||||
@@ -39,248 +39,248 @@
|
||||
|
||||
/*****************************************************************************
|
||||
|
||||
Function: Q932Umes_Facility
|
||||
Function: Q932Umes_Facility
|
||||
|
||||
*****************************************************************************/
|
||||
|
||||
L3INT Q932Umes_Facility(Q931_TrunkInfo_t *pTrunk,L3UCHAR *IBuf, Q931mes_Generic *mes, L3INT IOff, L3INT Size)
|
||||
{
|
||||
L3INT OOff=0;
|
||||
L3INT OOff = 0;
|
||||
|
||||
/* TODO */
|
||||
|
||||
mes->Size = sizeof(Q931mes_Generic) - 1 + OOff;
|
||||
return Q931E_NO_ERROR;
|
||||
mes->Size = sizeof(Q931mes_Generic) - 1 + OOff;
|
||||
return Q931E_NO_ERROR;
|
||||
}
|
||||
|
||||
/*****************************************************************************
|
||||
|
||||
Function: Q931Pmes_Facility
|
||||
Function: Q931Pmes_Facility
|
||||
|
||||
*****************************************************************************/
|
||||
L3INT Q932Pmes_Facility(Q931_TrunkInfo_t *pTrunk, Q931mes_Generic *IBuf, L3INT ISize, L3UCHAR *OBuf, L3INT *OSize)
|
||||
{
|
||||
L3BOOL RetCode = L3FALSE;
|
||||
L3BOOL RetCode = L3FALSE;
|
||||
|
||||
NoWarning(OBuf);
|
||||
NoWarning(IBuf);
|
||||
NoWarning(OBuf);
|
||||
NoWarning(IBuf);
|
||||
|
||||
return RetCode;
|
||||
return RetCode;
|
||||
}
|
||||
|
||||
/*****************************************************************************
|
||||
|
||||
Function: Q932Umes_Hold
|
||||
Function: Q932Umes_Hold
|
||||
|
||||
*****************************************************************************/
|
||||
|
||||
L3INT Q932Umes_Hold(Q931_TrunkInfo_t *pTrunk,L3UCHAR *IBuf, Q931mes_Generic *mes, L3INT IOff, L3INT Size)
|
||||
{
|
||||
L3INT OOff=0;
|
||||
L3INT OOff = 0;
|
||||
|
||||
/* TODO */
|
||||
|
||||
mes->Size = sizeof(Q931mes_Generic) - 1 + OOff;
|
||||
return Q931E_NO_ERROR;
|
||||
mes->Size = sizeof(Q931mes_Generic) - 1 + OOff;
|
||||
return Q931E_NO_ERROR;
|
||||
}
|
||||
|
||||
/*****************************************************************************
|
||||
|
||||
Function: Q931Pmes_Hold
|
||||
Function: Q931Pmes_Hold
|
||||
|
||||
*****************************************************************************/
|
||||
L3INT Q932Pmes_Hold(Q931_TrunkInfo_t *pTrunk, Q931mes_Generic *IBuf, L3INT ISize, L3UCHAR *OBuf, L3INT *OSize)
|
||||
{
|
||||
L3BOOL RetCode = L3FALSE;
|
||||
L3BOOL RetCode = L3FALSE;
|
||||
|
||||
NoWarning(OBuf);
|
||||
NoWarning(IBuf);
|
||||
NoWarning(OBuf);
|
||||
NoWarning(IBuf);
|
||||
|
||||
return RetCode;
|
||||
return RetCode;
|
||||
}
|
||||
|
||||
/*****************************************************************************
|
||||
|
||||
Function: Q932Umes_HoldAck
|
||||
Function: Q932Umes_HoldAck
|
||||
|
||||
*****************************************************************************/
|
||||
|
||||
L3INT Q932Umes_HoldAck(Q931_TrunkInfo_t *pTrunk,L3UCHAR *IBuf, Q931mes_Generic *mes, L3INT IOff, L3INT Size)
|
||||
{
|
||||
L3INT OOff=0;
|
||||
L3INT OOff = 0;
|
||||
|
||||
/* TODO */
|
||||
|
||||
mes->Size = sizeof(Q931mes_Generic) - 1 + OOff;
|
||||
return Q931E_NO_ERROR;
|
||||
mes->Size = sizeof(Q931mes_Generic) - 1 + OOff;
|
||||
return Q931E_NO_ERROR;
|
||||
}
|
||||
|
||||
/*****************************************************************************
|
||||
|
||||
Function: Q931Pmes_HoldAck
|
||||
Function: Q931Pmes_HoldAck
|
||||
|
||||
*****************************************************************************/
|
||||
L3INT Q932Pmes_HoldAck(Q931_TrunkInfo_t *pTrunk, Q931mes_Generic *IBuf, L3INT ISize, L3UCHAR *OBuf, L3INT *OSize)
|
||||
{
|
||||
L3BOOL RetCode = L3FALSE;
|
||||
L3BOOL RetCode = L3FALSE;
|
||||
|
||||
NoWarning(OBuf);
|
||||
NoWarning(IBuf);
|
||||
NoWarning(OBuf);
|
||||
NoWarning(IBuf);
|
||||
|
||||
return RetCode;
|
||||
return RetCode;
|
||||
}
|
||||
|
||||
/*****************************************************************************
|
||||
|
||||
Function: Q932Umes_HoldReject
|
||||
Function: Q932Umes_HoldReject
|
||||
|
||||
*****************************************************************************/
|
||||
|
||||
L3INT Q932Umes_HoldReject(Q931_TrunkInfo_t *pTrunk,L3UCHAR *IBuf, Q931mes_Generic *mes, L3INT IOff, L3INT Size)
|
||||
{
|
||||
L3INT OOff=0;
|
||||
L3INT OOff = 0;
|
||||
|
||||
/* TODO */
|
||||
|
||||
mes->Size = sizeof(Q931mes_Generic) - 1 + OOff;
|
||||
return Q931E_NO_ERROR;
|
||||
mes->Size = sizeof(Q931mes_Generic) - 1 + OOff;
|
||||
return Q931E_NO_ERROR;
|
||||
}
|
||||
|
||||
/*****************************************************************************
|
||||
|
||||
Function: Q931Pmes_HoldReject
|
||||
Function: Q931Pmes_HoldReject
|
||||
|
||||
*****************************************************************************/
|
||||
L3INT Q932Pmes_HoldReject(Q931_TrunkInfo_t *pTrunk, Q931mes_Generic *IBuf, L3INT ISize, L3UCHAR *OBuf, L3INT *OSize)
|
||||
{
|
||||
L3BOOL RetCode = L3FALSE;
|
||||
L3BOOL RetCode = L3FALSE;
|
||||
|
||||
NoWarning(OBuf);
|
||||
NoWarning(IBuf);
|
||||
NoWarning(OBuf);
|
||||
NoWarning(IBuf);
|
||||
|
||||
return RetCode;
|
||||
return RetCode;
|
||||
}
|
||||
|
||||
/*****************************************************************************
|
||||
|
||||
Function: Q932Umes_Register
|
||||
Function: Q932Umes_Register
|
||||
|
||||
*****************************************************************************/
|
||||
|
||||
L3INT Q932Umes_Register(Q931_TrunkInfo_t *pTrunk,L3UCHAR *IBuf, Q931mes_Generic *mes, L3INT IOff, L3INT Size)
|
||||
{
|
||||
L3INT OOff=0;
|
||||
L3INT OOff = 0;
|
||||
|
||||
/* TODO */
|
||||
|
||||
mes->Size = sizeof(Q931mes_Generic) - 1 + OOff;
|
||||
return Q931E_NO_ERROR;
|
||||
mes->Size = sizeof(Q931mes_Generic) - 1 + OOff;
|
||||
return Q931E_NO_ERROR;
|
||||
}
|
||||
|
||||
/*****************************************************************************
|
||||
|
||||
Function: Q931Pmes_Register
|
||||
Function: Q931Pmes_Register
|
||||
|
||||
*****************************************************************************/
|
||||
L3INT Q932Pmes_Register(Q931_TrunkInfo_t *pTrunk, Q931mes_Generic *IBuf, L3INT ISize, L3UCHAR *OBuf, L3INT *OSize)
|
||||
{
|
||||
L3BOOL RetCode = L3FALSE;
|
||||
L3BOOL RetCode = L3FALSE;
|
||||
|
||||
NoWarning(OBuf);
|
||||
NoWarning(IBuf);
|
||||
NoWarning(OBuf);
|
||||
NoWarning(IBuf);
|
||||
|
||||
return RetCode;
|
||||
return RetCode;
|
||||
}
|
||||
|
||||
/*****************************************************************************
|
||||
|
||||
Function: Q932Umes_Retrieve
|
||||
Function: Q932Umes_Retrieve
|
||||
|
||||
*****************************************************************************/
|
||||
|
||||
L3INT Q932Umes_Retrieve(Q931_TrunkInfo_t *pTrunk,L3UCHAR *IBuf, Q931mes_Generic *mes, L3INT IOff, L3INT Size)
|
||||
{
|
||||
L3INT OOff=0;
|
||||
L3INT OOff = 0;
|
||||
|
||||
/* TODO */
|
||||
|
||||
mes->Size = sizeof(Q931mes_Generic) - 1 + OOff;
|
||||
return Q931E_NO_ERROR;
|
||||
mes->Size = sizeof(Q931mes_Generic) - 1 + OOff;
|
||||
return Q931E_NO_ERROR;
|
||||
}
|
||||
|
||||
/*****************************************************************************
|
||||
|
||||
Function: Q931Pmes_Retrieve
|
||||
Function: Q931Pmes_Retrieve
|
||||
|
||||
*****************************************************************************/
|
||||
L3INT Q932Pmes_Retrieve(Q931_TrunkInfo_t *pTrunk, Q931mes_Generic *IBuf, L3INT ISize, L3UCHAR *OBuf, L3INT *OSize)
|
||||
{
|
||||
L3BOOL RetCode = L3FALSE;
|
||||
L3BOOL RetCode = L3FALSE;
|
||||
|
||||
NoWarning(OBuf);
|
||||
NoWarning(IBuf);
|
||||
NoWarning(OBuf);
|
||||
NoWarning(IBuf);
|
||||
|
||||
return RetCode;
|
||||
return RetCode;
|
||||
}
|
||||
|
||||
/*****************************************************************************
|
||||
|
||||
Function: Q932Umes_RetrieveAck
|
||||
Function: Q932Umes_RetrieveAck
|
||||
|
||||
*****************************************************************************/
|
||||
|
||||
L3INT Q932Umes_RetrieveAck(Q931_TrunkInfo_t *pTrunk,L3UCHAR *IBuf, Q931mes_Generic *mes, L3INT IOff, L3INT Size)
|
||||
{
|
||||
L3INT OOff=0;
|
||||
L3INT OOff = 0;
|
||||
|
||||
/* TODO */
|
||||
|
||||
mes->Size = sizeof(Q931mes_Generic) - 1 + OOff;
|
||||
return Q931E_NO_ERROR;
|
||||
mes->Size = sizeof(Q931mes_Generic) - 1 + OOff;
|
||||
return Q931E_NO_ERROR;
|
||||
}
|
||||
|
||||
/*****************************************************************************
|
||||
|
||||
Function: Q931Pmes_RetrieveAck
|
||||
Function: Q931Pmes_RetrieveAck
|
||||
|
||||
*****************************************************************************/
|
||||
L3INT Q932Pmes_RetrieveAck(Q931_TrunkInfo_t *pTrunk, Q931mes_Generic *IBuf, L3INT ISize, L3UCHAR *OBuf, L3INT *OSize)
|
||||
{
|
||||
L3BOOL RetCode = L3FALSE;
|
||||
L3BOOL RetCode = L3FALSE;
|
||||
|
||||
NoWarning(OBuf);
|
||||
NoWarning(IBuf);
|
||||
NoWarning(OBuf);
|
||||
NoWarning(IBuf);
|
||||
|
||||
return RetCode;
|
||||
return RetCode;
|
||||
}
|
||||
|
||||
/*****************************************************************************
|
||||
|
||||
Function: Q932Umes_RetrieveReject
|
||||
Function: Q932Umes_RetrieveReject
|
||||
|
||||
*****************************************************************************/
|
||||
|
||||
L3INT Q932Umes_RetrieveReject(Q931_TrunkInfo_t *pTrunk,L3UCHAR *IBuf, Q931mes_Generic *mes, L3INT IOff, L3INT Size)
|
||||
{
|
||||
L3INT OOff=0;
|
||||
L3INT OOff = 0;
|
||||
|
||||
/* TODO */
|
||||
|
||||
mes->Size = sizeof(Q931mes_Generic) - 1 + OOff;
|
||||
return Q931E_NO_ERROR;
|
||||
mes->Size = sizeof(Q931mes_Generic) - 1 + OOff;
|
||||
return Q931E_NO_ERROR;
|
||||
}
|
||||
|
||||
/*****************************************************************************
|
||||
|
||||
Function: Q931Pmes_RetrieveReject
|
||||
Function: Q931Pmes_RetrieveReject
|
||||
|
||||
*****************************************************************************/
|
||||
L3INT Q932Pmes_RetrieveReject(Q931_TrunkInfo_t *pTrunk, Q931mes_Generic *IBuf, L3INT ISize, L3UCHAR *OBuf, L3INT *OSize)
|
||||
{
|
||||
L3BOOL RetCode = L3FALSE;
|
||||
L3BOOL RetCode = L3FALSE;
|
||||
|
||||
NoWarning(OBuf);
|
||||
NoWarning(IBuf);
|
||||
NoWarning(OBuf);
|
||||
NoWarning(IBuf);
|
||||
|
||||
return RetCode;
|
||||
return RetCode;
|
||||
}
|
||||
|
||||
@@ -4,18 +4,17 @@
|
||||
|
||||
Contents: Header and definition for the National ISDN dialect. The
|
||||
header contents the following parts:
|
||||
|
||||
- Definition of codes
|
||||
- Definition of codes
|
||||
- Definition of information elements (nationalie_).
|
||||
- Definition of messages (nationalmes_).
|
||||
- Function prototypes.
|
||||
- Function prototypes.
|
||||
|
||||
Description: The National ISDN dialect here covers ????
|
||||
|
||||
Related Files: national.h National ISDN Definitions
|
||||
nationalie.c National ISDN IE encoders/coders
|
||||
nationalStateTE.c National ISDN TE State Engine
|
||||
nationalStateNT.c National ISDN NT State Engine
|
||||
Related Files: national.h National ISDN Definitions
|
||||
nationalie.c National ISDN IE encoders/coders
|
||||
nationalStateTE.c National ISDN TE State Engine
|
||||
nationalStateNT.c National ISDN NT State Engine
|
||||
|
||||
License/Copyright:
|
||||
|
||||
@@ -77,8 +76,6 @@ L3INT DMSPmes_0x07(Q931_TrunkInfo_t *pTrunk, Q931mes_Generic *IBuf, L3INT ISize,
|
||||
L3INT DMSUmes_0x0f(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, Q931mes_Generic *mes, L3INT IOff, L3INT Size);
|
||||
L3INT DMSPmes_0x0f(Q931_TrunkInfo_t *pTrunk, Q931mes_Generic *IBuf, L3INT ISize, L3UCHAR *OBuf, L3INT *OSize);
|
||||
|
||||
|
||||
|
||||
/*****************************************************************************
|
||||
|
||||
Q.931 Process Function Prototyping. Implemented in nationalStateTE.c
|
||||
@@ -88,7 +85,6 @@ L3INT DMSPmes_0x0f(Q931_TrunkInfo_t *pTrunk, Q931mes_Generic *IBuf, L3INT ISize,
|
||||
L3INT DMSProc0x0fTE(Q931_TrunkInfo_t *pTrunk, L3UCHAR * buf, L3INT iFrom);
|
||||
L3INT DMSProc0x07TE(Q931_TrunkInfo_t *pTrunk, L3UCHAR * buf, L3INT iFrom);
|
||||
|
||||
|
||||
void DMSCreateTE(L3UCHAR i);
|
||||
void DMSCreateNT(L3UCHAR i);
|
||||
|
||||
|
||||
@@ -157,7 +157,6 @@
|
||||
|
||||
*****************************************************************************/
|
||||
typedef enum {
|
||||
|
||||
Q931E_NO_ERROR = 0,
|
||||
|
||||
Q931E_UNKNOWN_MESSAGE = -3001,
|
||||
@@ -190,7 +189,6 @@ typedef enum {
|
||||
Q931E_SEGMENT = -3028,
|
||||
Q931E_SIGNAL = -3029,
|
||||
Q931E_GENERIC_DIGITS = -3030
|
||||
|
||||
} q931_error_t;
|
||||
|
||||
/* The q931_error_t enum should be kept in sync with the q931_error_names array in Q931.c */
|
||||
@@ -563,61 +561,61 @@ typedef struct
|
||||
*****************************************************************************/
|
||||
typedef struct
|
||||
{
|
||||
L3UINT Size; /* Size of message in bytes */
|
||||
L3UCHAR ProtDisc; /* Protocol Discriminator */
|
||||
L3UCHAR MesType; /* Message type */
|
||||
L3UCHAR CRVFlag; /* Call reference value flag */
|
||||
L3INT CRV; /* Call reference value */
|
||||
L3UINT Size; /* Size of message in bytes */
|
||||
L3UCHAR ProtDisc; /* Protocol Discriminator */
|
||||
L3UCHAR MesType; /* Message type */
|
||||
L3UCHAR CRVFlag; /* Call reference value flag */
|
||||
L3INT CRV; /* Call reference value */
|
||||
|
||||
ie Shift;
|
||||
ie MoreData;
|
||||
ie SendComplete;
|
||||
ie CongestionLevel;
|
||||
ie RepeatInd;
|
||||
ie Shift;
|
||||
ie MoreData;
|
||||
ie SendComplete;
|
||||
ie CongestionLevel;
|
||||
ie RepeatInd;
|
||||
|
||||
ie Segment; /* Segmented message */
|
||||
ie BearerCap; /* Bearer Capability */
|
||||
ie Cause; /* Cause */
|
||||
ie CallState; /* Call State */
|
||||
ie CallID; /* Call Identity */
|
||||
ie ChanID; /* Channel Identification */
|
||||
ie ChangeStatus; /* Change Staus */
|
||||
ie ProgInd; /* Progress Indicator */
|
||||
ie NetFac; /* Network Spesific Facilities */
|
||||
ie NotifInd; /* Notification Indicator */
|
||||
ie Display; /* Display */
|
||||
ie DateTime; /* Date/Time */
|
||||
ie KeypadFac; /* Keypad Facility */
|
||||
ie Signal; /* Signal */
|
||||
ie InfoRate; /* Information rate */
|
||||
ie EndEndTxDelay; /* End to End Transmit Delay */
|
||||
ie TransDelSelInd; /* Transmit Delay Sel. and Ind. */
|
||||
ie PackParam; /* Packed Layer Binary parameters */
|
||||
ie PackWinSize; /* Packet Layer Window Size */
|
||||
ie PackSize; /* Packed Size */
|
||||
ie ClosedUserGrp; /* Closed User Group */
|
||||
ie RevChargeInd; /* Reverse Charging Indicator */
|
||||
ie CalledNum; /* Called Party Number */
|
||||
ie CalledSub; /* Called Party subaddress */
|
||||
ie CallingNum; /* Calling Party Number */
|
||||
ie CallingSub; /* Calling Party Subaddress */
|
||||
ie RedirNum; /* Redirection Number */
|
||||
ie TransNetSel; /* Transmit Network Selection */
|
||||
ie LLRepeatInd; /* Repeat Indicator 2 LLComp */
|
||||
ie RestartWin; /* Restart Window */
|
||||
ie RestartInd; /* Restart Indicator */
|
||||
ie LLComp; /* Low Layer Compatibility */
|
||||
ie HLComp; /* High Layer Compatibility */
|
||||
ie UserUser; /* User-user */
|
||||
ie Escape; /* Escape for extension */
|
||||
ie Switchhook;
|
||||
ie FeatAct;
|
||||
ie FeatInd;
|
||||
ie GenericDigits;
|
||||
ie Segment; /* Segmented message */
|
||||
ie BearerCap; /* Bearer Capability */
|
||||
ie Cause; /* Cause */
|
||||
ie CallState; /* Call State */
|
||||
ie CallID; /* Call Identity */
|
||||
ie ChanID; /* Channel Identification */
|
||||
ie ChangeStatus; /* Change Staus */
|
||||
ie ProgInd; /* Progress Indicator */
|
||||
ie NetFac; /* Network Spesific Facilities */
|
||||
ie NotifInd; /* Notification Indicator */
|
||||
ie Display; /* Display */
|
||||
ie DateTime; /* Date/Time */
|
||||
ie KeypadFac; /* Keypad Facility */
|
||||
ie Signal; /* Signal */
|
||||
ie InfoRate; /* Information rate */
|
||||
ie EndEndTxDelay; /* End to End Transmit Delay */
|
||||
ie TransDelSelInd; /* Transmit Delay Sel. and Ind. */
|
||||
ie PackParam; /* Packed Layer Binary parameters */
|
||||
ie PackWinSize; /* Packet Layer Window Size */
|
||||
ie PackSize; /* Packed Size */
|
||||
ie ClosedUserGrp; /* Closed User Group */
|
||||
ie RevChargeInd; /* Reverse Charging Indicator */
|
||||
ie CalledNum; /* Called Party Number */
|
||||
ie CalledSub; /* Called Party subaddress */
|
||||
ie CallingNum; /* Calling Party Number */
|
||||
ie CallingSub; /* Calling Party Subaddress */
|
||||
ie RedirNum; /* Redirection Number */
|
||||
ie TransNetSel; /* Transmit Network Selection */
|
||||
ie LLRepeatInd; /* Repeat Indicator 2 LLComp */
|
||||
ie RestartWin; /* Restart Window */
|
||||
ie RestartInd; /* Restart Indicator */
|
||||
ie LLComp; /* Low Layer Compatibility */
|
||||
ie HLComp; /* High Layer Compatibility */
|
||||
ie UserUser; /* User-user */
|
||||
ie Escape; /* Escape for extension */
|
||||
ie Switchhook;
|
||||
ie FeatAct;
|
||||
ie FeatInd;
|
||||
ie GenericDigits;
|
||||
|
||||
L3UCHAR buf[1]; /* Buffer for IE's */
|
||||
L3UCHAR buf[1]; /* Buffer for IE's */
|
||||
|
||||
}Q931mes_Generic;
|
||||
} Q931mes_Generic;
|
||||
|
||||
|
||||
/*****************************************************************************
|
||||
@@ -723,19 +721,19 @@ struct Q931_Call
|
||||
|
||||
struct Q931_TrunkInfo
|
||||
{
|
||||
Q931NetUser_t NetUser; /* Network/User Mode. */
|
||||
Q931NetUser_t NetUser; /* Network/User Mode. */
|
||||
Q931_TrunkType_t TrunkType; /* Trunk Line Type. */
|
||||
Q931Dialect_t Dialect; /* Q.931 Based dialect index. */
|
||||
Q931Dialect_t Dialect; /* Q.931 Based dialect index. */
|
||||
|
||||
Q931Tx34CB_t Q931Tx34CBProc;
|
||||
Q931Tx32CB_t Q931Tx32CBProc;
|
||||
Q931ErrorCB_t Q931ErrorCBProc;
|
||||
Q931LogCB_t Q931LogCBProc;
|
||||
Q931Tx34CB_t Q931Tx34CBProc;
|
||||
Q931Tx32CB_t Q931Tx32CBProc;
|
||||
Q931ErrorCB_t Q931ErrorCBProc;
|
||||
Q931LogCB_t Q931LogCBProc;
|
||||
void *PrivateData32;
|
||||
void *PrivateData34;
|
||||
void *PrivateDataLog;
|
||||
|
||||
Q931LogLevel_t loglevel;
|
||||
Q931LogLevel_t loglevel;
|
||||
|
||||
L3UCHAR Enabled; /* Enabled/Disabled */
|
||||
/* 0 = Disabled */
|
||||
@@ -779,7 +777,7 @@ struct Q931_TrunkInfo
|
||||
|
||||
L3INT CRV; /* Associated CRV */
|
||||
|
||||
}ch[Q931MAXCHPERTRUNK];
|
||||
} ch[Q931MAXCHPERTRUNK];
|
||||
|
||||
/* Active Call information indentified by CRV. See Q931AllocateCRV for */
|
||||
/* initialization of call table. */
|
||||
@@ -802,7 +800,7 @@ typedef struct
|
||||
L3INT State;
|
||||
L3INT Message;
|
||||
L3UCHAR Direction;
|
||||
}Q931State;
|
||||
} Q931State;
|
||||
|
||||
/*****************************************************************************
|
||||
|
||||
@@ -844,7 +842,7 @@ extern q931timer_t Q931Timer[Q931MAXDLCT][Q931MAXTIMER];
|
||||
size of 'header'.
|
||||
|
||||
*****************************************************************************/
|
||||
#define Q931GetIETotSize(ie) (((ie.InfoID & 0x80) !=0) ? 1:ie.LenIE)+2)
|
||||
#define Q931GetIETotSize(ie) (((ie.InfoID & 0x80) != 0) ? 1 : ie.LenIE) + 2)
|
||||
|
||||
/*****************************************************************************
|
||||
|
||||
@@ -855,7 +853,7 @@ extern q931timer_t Q931Timer[Q931MAXDLCT][Q931MAXTIMER];
|
||||
Description: Return TRUE if the Information Element is included.
|
||||
|
||||
*****************************************************************************/
|
||||
#define Q931IsIEPresent(x) ((x & 0x8000) != 0)
|
||||
#define Q931IsIEPresent(x) ((x & 0x8000) != 0)
|
||||
|
||||
/*****************************************************************************
|
||||
|
||||
@@ -872,7 +870,7 @@ extern q931timer_t Q931Timer[Q931MAXDLCT][Q931MAXTIMER];
|
||||
|
||||
*****************************************************************************/
|
||||
#define Q931GetIEOffset(x) (x & 0x7fff)
|
||||
#define Q931GetIEValue(x) (x & 0x7fff)
|
||||
#define Q931GetIEValue(x) (x & 0x7fff)
|
||||
|
||||
/*****************************************************************************
|
||||
|
||||
@@ -894,7 +892,7 @@ extern q931timer_t Q931Timer[Q931MAXDLCT][Q931MAXTIMER];
|
||||
Description: Set an information element.
|
||||
|
||||
*****************************************************************************/
|
||||
#define Q931SetIE(x,o) {x = (ie)(o) | 0x8000;}
|
||||
#define Q931SetIE(x,o) { x = (ie)(o) | 0x8000; }
|
||||
|
||||
/*****************************************************************************
|
||||
|
||||
@@ -906,7 +904,7 @@ extern q931timer_t Q931Timer[Q931MAXDLCT][Q931MAXTIMER];
|
||||
that the octet is extended.
|
||||
|
||||
*****************************************************************************/
|
||||
#define IsQ931Ext(x) ((x&0x80)==0)
|
||||
#define IsQ931Ext(x) ((x & 0x80) == 0)
|
||||
|
||||
/*****************************************************************************
|
||||
|
||||
@@ -933,7 +931,7 @@ extern q931timer_t Q931Timer[Q931MAXDLCT][Q931MAXTIMER];
|
||||
warning for the initial empty functions.
|
||||
|
||||
*****************************************************************************/
|
||||
#define NoWarning(x) (x=x)
|
||||
#define NoWarning(x) (x = x)
|
||||
|
||||
/*****************************************************************************
|
||||
|
||||
|
||||
@@ -54,7 +54,7 @@ typedef enum {
|
||||
|
||||
} q931_codeset_t;
|
||||
|
||||
/* Single octet information elements */
|
||||
/* Single octet information elements */
|
||||
#define Q931ie_SHIFT 0x90 /* 1001 ---- */
|
||||
#define Q931ie_MORE_DATA 0xa0 /* 1010 ---- */
|
||||
#define Q931ie_SENDING_COMPLETE 0xa1 /* 1010 0001 */
|
||||
@@ -98,12 +98,11 @@ typedef enum {
|
||||
#define Q931ie_ESCAPE_FOR_EX 0x7f /* 0111 1111 */
|
||||
|
||||
/* Variable Length Codeset 6 Information Elements */
|
||||
|
||||
#define Q931ie_GENERIC_DIGITS 0x37 /* 0011 0111 */
|
||||
#define Q931ie_GENERIC_DIGITS 0x37 /* 0011 0111 */
|
||||
|
||||
/* Variable Length Information Element to shut up BRI testing */
|
||||
#define Q931ie_CONNECTED_NUMBER 0x4c /* 0100 1101 */
|
||||
#define Q931ie_FACILITY 0x1c /* 0001 1101 */
|
||||
#define Q931ie_CONNECTED_NUMBER 0x4c /* 0100 1101 */
|
||||
#define Q931ie_FACILITY 0x1c /* 0001 1101 */
|
||||
|
||||
|
||||
/*****************************************************************************
|
||||
@@ -114,10 +113,9 @@ typedef enum {
|
||||
|
||||
*****************************************************************************/
|
||||
|
||||
typedef struct
|
||||
{
|
||||
typedef struct {
|
||||
|
||||
L3UCHAR IEId; /* 00000100 for Bearer Capability */
|
||||
|
||||
L3UCHAR Size; /* Length of Information Element */
|
||||
|
||||
L3UCHAR CodStand; /* Coding Standard. */
|
||||
@@ -286,7 +284,8 @@ typedef struct
|
||||
L3UCHAR AL3Info1; /* additional layer 3 info 1 */
|
||||
|
||||
L3UCHAR AL3Info2; /* additional layer 3 info 2 */
|
||||
}Q931ie_BearerCap;
|
||||
|
||||
} Q931ie_BearerCap;
|
||||
|
||||
/*****************************************************************************
|
||||
|
||||
@@ -295,12 +294,13 @@ typedef struct
|
||||
|
||||
*****************************************************************************/
|
||||
|
||||
typedef struct
|
||||
{
|
||||
typedef struct {
|
||||
|
||||
L3UCHAR IEId; /* 00010000 */
|
||||
L3UCHAR Size; /* Length of Information Element */
|
||||
L3UCHAR CallId[1]; /* Call identity */
|
||||
}Q931ie_CallID;
|
||||
|
||||
} Q931ie_CallID;
|
||||
|
||||
/*****************************************************************************
|
||||
|
||||
@@ -309,13 +309,14 @@ typedef struct
|
||||
|
||||
*****************************************************************************/
|
||||
|
||||
typedef struct
|
||||
{
|
||||
typedef struct {
|
||||
|
||||
L3UCHAR IEId; /* 00010100 */
|
||||
L3UCHAR Size; /* Length of Information Element */
|
||||
L3UCHAR CodStand; /* Coding Standard */
|
||||
L3UCHAR CallState; /* Call State Value */
|
||||
}Q931ie_CallState;
|
||||
|
||||
} Q931ie_CallState;
|
||||
|
||||
/*****************************************************************************
|
||||
|
||||
@@ -324,8 +325,8 @@ typedef struct
|
||||
Description: Cause IE as described in Q.850
|
||||
|
||||
*****************************************************************************/
|
||||
typedef struct
|
||||
{
|
||||
typedef struct {
|
||||
|
||||
L3UCHAR IEId; /* 00010100 */
|
||||
L3UCHAR Size; /* Length of Information Element */
|
||||
L3UCHAR CodStand; /* Coding Standard */
|
||||
@@ -333,21 +334,23 @@ typedef struct
|
||||
L3UCHAR Recom; /* Recommendation */
|
||||
L3UCHAR Value; /* Cause Value */
|
||||
L3UCHAR Diag[1]; /* Optional Diagnostics Field */
|
||||
}Q931ie_Cause;
|
||||
|
||||
} Q931ie_Cause;
|
||||
|
||||
/*****************************************************************************
|
||||
|
||||
Struct: Q931ie_CalledNum
|
||||
|
||||
*****************************************************************************/
|
||||
typedef struct
|
||||
{
|
||||
typedef struct {
|
||||
|
||||
L3UCHAR IEId; /* 01110000 */
|
||||
L3UCHAR Size; /* Length of Information Element */
|
||||
L3UCHAR TypNum; /* Type of Number */
|
||||
L3UCHAR NumPlanID; /* Numbering plan identification */
|
||||
L3UCHAR Digit[1]; /* Digit (IA5) */
|
||||
}Q931ie_CalledNum;
|
||||
|
||||
} Q931ie_CalledNum;
|
||||
|
||||
/*****************************************************************************
|
||||
|
||||
@@ -357,14 +360,15 @@ typedef struct
|
||||
|
||||
*****************************************************************************/
|
||||
|
||||
typedef struct
|
||||
{
|
||||
typedef struct {
|
||||
|
||||
L3UCHAR IEId; /* 01110001 */
|
||||
L3UCHAR Size; /* Length of Information Element */
|
||||
L3UCHAR TypNum; /* Type of subaddress */
|
||||
L3UCHAR OddEvenInd; /* Odd/Even indicator */
|
||||
L3UCHAR Digit[1]; /* digits */
|
||||
}Q931ie_CalledSub;
|
||||
|
||||
} Q931ie_CalledSub;
|
||||
|
||||
/*****************************************************************************
|
||||
|
||||
@@ -374,8 +378,8 @@ typedef struct
|
||||
|
||||
*****************************************************************************/
|
||||
|
||||
typedef struct
|
||||
{
|
||||
typedef struct {
|
||||
|
||||
L3UCHAR IEId; /* 01101100 */
|
||||
L3UCHAR Size; /* Length of Information Element */
|
||||
L3UCHAR TypNum; /* Type of number */
|
||||
@@ -383,7 +387,8 @@ typedef struct
|
||||
L3UCHAR PresInd; /* Presentation indicator */
|
||||
L3UCHAR ScreenInd; /* Screening indicator */
|
||||
L3UCHAR Digit[1]; /* Number digits (IA5) */
|
||||
}Q931ie_CallingNum;
|
||||
|
||||
} Q931ie_CallingNum;
|
||||
|
||||
/*****************************************************************************
|
||||
|
||||
@@ -393,14 +398,15 @@ typedef struct
|
||||
|
||||
*****************************************************************************/
|
||||
|
||||
typedef struct
|
||||
{
|
||||
typedef struct {
|
||||
|
||||
L3UCHAR IEId; /* 01101101 */
|
||||
L3UCHAR Size; /* Length of Information Element */
|
||||
L3UCHAR TypNum; /* Type of subaddress */
|
||||
L3UCHAR OddEvenInd; /* Odd/Even indicator */
|
||||
L3UCHAR Digit[1]; /* digits */
|
||||
}Q931ie_CallingSub;
|
||||
|
||||
} Q931ie_CallingSub;
|
||||
|
||||
/*****************************************************************************
|
||||
|
||||
@@ -418,8 +424,8 @@ typedef struct
|
||||
|
||||
*****************************************************************************/
|
||||
|
||||
typedef struct
|
||||
{
|
||||
typedef struct {
|
||||
|
||||
L3UCHAR IEId; /* 00011000 */
|
||||
L3UCHAR Size; /* Length of Information Element */
|
||||
L3UCHAR IntIDPresent; /* Int. id. present */
|
||||
@@ -460,7 +466,8 @@ typedef struct
|
||||
/* 1001 : H12 channel units */
|
||||
|
||||
L3UCHAR ChanSlot; /* Channel number */
|
||||
}Q931ie_ChanID;
|
||||
|
||||
} Q931ie_ChanID;
|
||||
|
||||
/*****************************************************************************
|
||||
|
||||
@@ -470,8 +477,8 @@ typedef struct
|
||||
|
||||
*****************************************************************************/
|
||||
|
||||
typedef struct
|
||||
{
|
||||
typedef struct {
|
||||
|
||||
L3UCHAR IEId; /* 00101001 */
|
||||
L3UCHAR Size; /* Length of Information Element */
|
||||
L3UCHAR Year; /* Year */
|
||||
@@ -485,7 +492,7 @@ typedef struct
|
||||
/* 1 : Hour present */
|
||||
/* 2 : Hour and Minute present */
|
||||
/* 3 : Hour, Minute and Second present */
|
||||
}Q931ie_DateTime;
|
||||
} Q931ie_DateTime;
|
||||
|
||||
/*****************************************************************************
|
||||
|
||||
@@ -495,12 +502,13 @@ typedef struct
|
||||
|
||||
*****************************************************************************/
|
||||
|
||||
typedef struct
|
||||
{
|
||||
typedef struct {
|
||||
|
||||
L3UCHAR IEId; /* 00101000 */
|
||||
L3UCHAR Size; /* Length of Information Element */
|
||||
L3UCHAR Display[1]; /* Display information (IA5) */
|
||||
}Q931ie_Display;
|
||||
|
||||
} Q931ie_Display;
|
||||
|
||||
/*****************************************************************************
|
||||
|
||||
@@ -510,8 +518,8 @@ typedef struct
|
||||
|
||||
*****************************************************************************/
|
||||
|
||||
typedef struct
|
||||
{
|
||||
typedef struct {
|
||||
|
||||
L3UCHAR IEId; /* 01111101 */
|
||||
L3UCHAR Size; /* Length of Information Element */
|
||||
L3UCHAR CodStand; /* Coding standard */
|
||||
@@ -520,7 +528,8 @@ typedef struct
|
||||
L3UCHAR HLCharID; /* High layer characteristics id. */
|
||||
L3UCHAR EHLCharID; /* Extended high layer character. id. */
|
||||
L3UCHAR EVideoTlfCharID; /* Ext. videotelephony char. id. */
|
||||
}Q931ie_HLComp;
|
||||
|
||||
} Q931ie_HLComp;
|
||||
|
||||
/*****************************************************************************
|
||||
|
||||
@@ -530,12 +539,12 @@ typedef struct
|
||||
|
||||
*****************************************************************************/
|
||||
|
||||
typedef struct
|
||||
{
|
||||
typedef struct {
|
||||
L3UCHAR IEId; /* 00101100 */
|
||||
L3UCHAR Size; /* Length of Information Element */
|
||||
L3UCHAR KeypadFac[1]; /* dynamic buffer */
|
||||
}Q931ie_KeypadFac;
|
||||
|
||||
} Q931ie_KeypadFac;
|
||||
|
||||
/*****************************************************************************
|
||||
|
||||
@@ -545,8 +554,8 @@ typedef struct
|
||||
|
||||
*****************************************************************************/
|
||||
|
||||
typedef struct
|
||||
{
|
||||
typedef struct {
|
||||
|
||||
L3UCHAR IEId; /* 01111100 */
|
||||
L3UCHAR Size; /* Length of Information Element */
|
||||
L3UCHAR CodStand; /* Coding standard */
|
||||
@@ -750,7 +759,8 @@ typedef struct
|
||||
L3UCHAR PackWinSize; /* Packet window size */
|
||||
|
||||
L3UCHAR AddL3Info; /* Additional Layer 3 protocol info */
|
||||
}Q931ie_LLComp;
|
||||
|
||||
} Q931ie_LLComp;
|
||||
|
||||
/*****************************************************************************
|
||||
|
||||
@@ -760,8 +770,8 @@ typedef struct
|
||||
|
||||
*****************************************************************************/
|
||||
|
||||
typedef struct
|
||||
{
|
||||
typedef struct {
|
||||
|
||||
L3UCHAR IEId; /* 00100000 */
|
||||
L3UCHAR Size; /* Length of Information Element */
|
||||
L3UCHAR LenNetID; /* Length of network facilities id. */
|
||||
@@ -769,7 +779,8 @@ typedef struct
|
||||
L3UCHAR NetIDPlan; /* Network identification plan. */
|
||||
L3UCHAR NetFac; /* Network specific facility spec. */
|
||||
L3UCHAR NetID[1]; /* Network id. (IA5) */
|
||||
}Q931ie_NetFac;
|
||||
|
||||
} Q931ie_NetFac;
|
||||
|
||||
/*****************************************************************************
|
||||
|
||||
@@ -779,12 +790,13 @@ typedef struct
|
||||
|
||||
*****************************************************************************/
|
||||
|
||||
typedef struct
|
||||
{
|
||||
typedef struct {
|
||||
|
||||
L3UCHAR IEId; /* 00100000 */
|
||||
L3UCHAR Size; /* Length of Information Element */
|
||||
L3UCHAR Notification; /* Notification descriptor */
|
||||
}Q931ie_NotifInd;
|
||||
|
||||
} Q931ie_NotifInd;
|
||||
|
||||
/*****************************************************************************
|
||||
|
||||
@@ -794,14 +806,15 @@ typedef struct
|
||||
|
||||
*****************************************************************************/
|
||||
|
||||
typedef struct
|
||||
{
|
||||
typedef struct {
|
||||
|
||||
L3UCHAR IEId; /* 00011110 */
|
||||
L3UCHAR Size; /* Length of Information Element */
|
||||
L3UCHAR CodStand; /* Coding standard */
|
||||
L3UCHAR Location; /* Location */
|
||||
L3UCHAR ProgDesc; /* Progress description */
|
||||
}Q931ie_ProgInd;
|
||||
|
||||
} Q931ie_ProgInd;
|
||||
|
||||
/*****************************************************************************
|
||||
|
||||
@@ -811,20 +824,23 @@ typedef struct
|
||||
|
||||
*****************************************************************************/
|
||||
|
||||
typedef struct
|
||||
{
|
||||
typedef struct {
|
||||
|
||||
L3UCHAR IEId; /* 00000000 */
|
||||
L3UCHAR Size; /* Length of Information Element */
|
||||
L3UCHAR FSI; /* First segment indicator */
|
||||
L3UCHAR NumSegRem; /* Number of segments remaining */
|
||||
L3UCHAR SegType; /* Segment message type */
|
||||
}Q931ie_Segment;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
} Q931ie_Segment;
|
||||
|
||||
|
||||
typedef struct {
|
||||
|
||||
L3UCHAR IEId; /* 00000000 */
|
||||
L3UCHAR Size; /* Length of Information Element */
|
||||
}Q931ie_SendComplete;
|
||||
|
||||
} Q931ie_SendComplete;
|
||||
|
||||
/*****************************************************************************
|
||||
|
||||
@@ -834,8 +850,8 @@ typedef struct
|
||||
|
||||
*****************************************************************************/
|
||||
|
||||
typedef struct
|
||||
{
|
||||
typedef struct {
|
||||
|
||||
L3UCHAR IEId; /* 00000000 */
|
||||
L3UCHAR Size; /* Length of Information Element */
|
||||
L3UCHAR Signal; /* Signal value */
|
||||
@@ -859,7 +875,7 @@ typedef struct
|
||||
/* 01000110 Alerting on - pattern 6 */
|
||||
/* 01000111 Alerting on - pattern 7 */
|
||||
/* 01001111 Alerting off */
|
||||
}Q931ie_Signal;
|
||||
} Q931ie_Signal;
|
||||
|
||||
/*****************************************************************************
|
||||
|
||||
@@ -869,12 +885,13 @@ typedef struct
|
||||
|
||||
*****************************************************************************/
|
||||
#ifdef Q931_X25_SUPPORT
|
||||
typedef struct
|
||||
{
|
||||
typedef struct {
|
||||
|
||||
L3UCHAR IEId; /* 00000000 */
|
||||
L3UCHAR Size; /* Length of Information Element */
|
||||
L3ULONG TxDSIValue; /* Trans. delay sel. & ind. value */
|
||||
}Q931ie_TransDelSelInd;
|
||||
|
||||
} Q931ie_TransDelSelInd;
|
||||
#endif
|
||||
|
||||
/*****************************************************************************
|
||||
@@ -885,14 +902,15 @@ typedef struct
|
||||
|
||||
*****************************************************************************/
|
||||
|
||||
typedef struct
|
||||
{
|
||||
typedef struct {
|
||||
|
||||
L3UCHAR IEId; /* 01111000 */
|
||||
L3UCHAR Size; /* Length of Information Element */
|
||||
L3UCHAR Type; /* Type of network identifier */
|
||||
L3UCHAR NetIDPlan; /* Network idetification plan */
|
||||
L3UCHAR NetID[1]; /* Network identification(IA5) */
|
||||
}Q931ie_TransNetSel;
|
||||
|
||||
} Q931ie_TransNetSel;
|
||||
|
||||
/*****************************************************************************
|
||||
|
||||
@@ -902,13 +920,14 @@ typedef struct
|
||||
|
||||
*****************************************************************************/
|
||||
|
||||
typedef struct
|
||||
{
|
||||
typedef struct {
|
||||
|
||||
L3UCHAR IEId; /* 01111110 */
|
||||
L3UCHAR Size; /* Length of Information Element */
|
||||
L3UCHAR ProtDisc; /* Protocol discriminator */
|
||||
L3UCHAR User[1]; /* User information */
|
||||
}Q931ie_UserUser;
|
||||
|
||||
} Q931ie_UserUser;
|
||||
|
||||
/*****************************************************************************
|
||||
|
||||
@@ -918,13 +937,14 @@ typedef struct
|
||||
|
||||
*****************************************************************************/
|
||||
#ifdef Q931_X25_SUPPORT
|
||||
typedef struct
|
||||
{
|
||||
typedef struct {
|
||||
|
||||
L3UCHAR IEId; /* 01000111 */
|
||||
L3UCHAR Size; /* Length of Information Element */
|
||||
L3UCHAR CUGInd; /* CUG indication */
|
||||
L3UCHAR CUG[1]; /* CUG index code (IA5) */
|
||||
}Q931ie_ClosedUserGrp;
|
||||
|
||||
} Q931ie_ClosedUserGrp;
|
||||
#endif
|
||||
|
||||
/*****************************************************************************
|
||||
@@ -934,12 +954,13 @@ typedef struct
|
||||
Description: Congestion Level
|
||||
|
||||
*****************************************************************************/
|
||||
typedef struct
|
||||
{
|
||||
typedef struct {
|
||||
|
||||
L3UCHAR IEId; /* 01000111 */
|
||||
L3UCHAR Size; /* Length of Information Element */
|
||||
L3UCHAR CongLevel; /* Conguestion Level */
|
||||
}Q931ie_CongLevel;
|
||||
|
||||
} Q931ie_CongLevel;
|
||||
|
||||
/*****************************************************************************
|
||||
|
||||
@@ -949,14 +970,15 @@ typedef struct
|
||||
|
||||
*****************************************************************************/
|
||||
#ifdef Q931_X25_SUPPORT
|
||||
typedef struct
|
||||
{
|
||||
typedef struct {
|
||||
|
||||
L3UCHAR IEId; /* 01000010 */
|
||||
L3UCHAR Size; /* Length of Information Element */
|
||||
L3ULONG CumTxDelay; /* Cumulative transit delay value */
|
||||
L3ULONG ReqTxDelay; /* Requested end to end transit delay */
|
||||
L3ULONG MaxTxDelay; /* Maximum transit delay */
|
||||
}Q931ie_EndEndTxDelay;
|
||||
|
||||
} Q931ie_EndEndTxDelay;
|
||||
#endif
|
||||
|
||||
/*****************************************************************************
|
||||
@@ -967,15 +989,16 @@ typedef struct
|
||||
|
||||
*****************************************************************************/
|
||||
#ifdef Q931_X25_SUPPORT
|
||||
typedef struct
|
||||
{
|
||||
typedef struct {
|
||||
|
||||
L3UCHAR IEId; /* 01100000 */
|
||||
L3UCHAR Size; /* Length of Information Element */
|
||||
L3UCHAR InInfoRate; /* Incoming information rate */
|
||||
L3UCHAR OutInfoRate; /* Outgoing information rate */
|
||||
L3UCHAR MinInInfoRate; /* Minimum incoming information rate */
|
||||
L3UCHAR MinOutInfoRate; /* Minimum outgoing information rate */
|
||||
}Q931ie_InfoRate;
|
||||
|
||||
} Q931ie_InfoRate;
|
||||
#endif
|
||||
|
||||
/*****************************************************************************
|
||||
@@ -986,15 +1009,16 @@ typedef struct
|
||||
|
||||
*****************************************************************************/
|
||||
#ifdef Q931_X25_SUPPORT
|
||||
typedef struct
|
||||
{
|
||||
typedef struct {
|
||||
|
||||
L3UCHAR IEId; /* 01000100 */
|
||||
L3UCHAR Size; /* Length of Information Element */
|
||||
L3UCHAR FastSel; /* Fast selected */
|
||||
L3UCHAR ExpData; /* Exp. data */
|
||||
L3UCHAR DelConf; /* Delivery conf */
|
||||
L3UCHAR Modulus; /* Modulus */
|
||||
}Q931ie_PackParam;
|
||||
|
||||
} Q931ie_PackParam;
|
||||
#endif
|
||||
|
||||
/*****************************************************************************
|
||||
@@ -1005,13 +1029,14 @@ typedef struct
|
||||
|
||||
*****************************************************************************/
|
||||
#ifdef Q931_X25_SUPPORT
|
||||
typedef struct
|
||||
{
|
||||
typedef struct {
|
||||
|
||||
L3UCHAR IEId; /* 01000101 */
|
||||
L3UCHAR Size; /* Length of Information Element */
|
||||
L3UCHAR ForwardValue; /* Forward value */
|
||||
L3UCHAR BackwardValue; /* Backward value */
|
||||
}Q931ie_PackWinSize;
|
||||
|
||||
} Q931ie_PackWinSize;
|
||||
#endif
|
||||
|
||||
/*****************************************************************************
|
||||
@@ -1022,13 +1047,14 @@ typedef struct
|
||||
|
||||
*****************************************************************************/
|
||||
#ifdef Q931_X25_SUPPORT
|
||||
typedef struct
|
||||
{
|
||||
typedef struct {
|
||||
|
||||
L3UCHAR IEId; /* 01000110 */
|
||||
L3UCHAR Size; /* Length of Information Element */
|
||||
L3UCHAR ForwardValue; /* Forward value */
|
||||
L3UCHAR BackwardValue; /* Backward value */
|
||||
}Q931ie_PackSize;
|
||||
|
||||
} Q931ie_PackSize;
|
||||
#endif
|
||||
|
||||
/*****************************************************************************
|
||||
@@ -1039,8 +1065,8 @@ typedef struct
|
||||
|
||||
*****************************************************************************/
|
||||
#ifdef Q931_X25_SUPPORT
|
||||
typedef struct
|
||||
{
|
||||
typedef struct {
|
||||
|
||||
L3UCHAR IEId; /* 01110100 */
|
||||
L3UCHAR Size; /* Length of Information Element */
|
||||
L3UCHAR TypeNum; /* Type of number */
|
||||
@@ -1049,19 +1075,20 @@ typedef struct
|
||||
L3UCHAR ScreenInd; /* Screening indicator */
|
||||
L3UCHAR Reason; /* Reason for redirection */
|
||||
L3UCHAR Digit[1]; /* Number digits (IA5) */
|
||||
}Q931ie_RedirNum;
|
||||
|
||||
} Q931ie_RedirNum;
|
||||
#endif
|
||||
|
||||
typedef struct
|
||||
{
|
||||
typedef struct {
|
||||
|
||||
L3UCHAR IEId; /* 01110100 */
|
||||
L3UCHAR Size; /* Length of Information Element */
|
||||
L3UCHAR RepeatInd; /* 0010 Prioritized list for selecting */
|
||||
/* one possible. */
|
||||
}Q931ie_RepeatInd;
|
||||
} Q931ie_RepeatInd;
|
||||
|
||||
typedef struct {
|
||||
|
||||
typedef struct
|
||||
{
|
||||
L3UCHAR IEId; /* 01110100 */
|
||||
L3UCHAR Size; /* Length of Information Element */
|
||||
L3UCHAR Spare; /* Spare */
|
||||
@@ -1069,10 +1096,10 @@ typedef struct
|
||||
/* 000 Indicate channels */
|
||||
/* 110 Single interface */
|
||||
/* 111 All interfaces */
|
||||
}Q931ie_RestartInd;
|
||||
} Q931ie_RestartInd;
|
||||
|
||||
typedef struct {
|
||||
|
||||
typedef struct
|
||||
{
|
||||
L3UCHAR IEId; /* 01110100 */
|
||||
L3UCHAR Size; /* Length of Information Element */
|
||||
L3UCHAR Preference; /* Preference 0 = reserved, 1 = channel */
|
||||
@@ -1081,7 +1108,7 @@ typedef struct
|
||||
/* 000 In service */
|
||||
/* 001 Maintenance */
|
||||
/* 010 Out of service */
|
||||
}Q931ie_ChangeStatus;
|
||||
} Q931ie_ChangeStatus;
|
||||
|
||||
/*****************************************************************************
|
||||
|
||||
@@ -1090,13 +1117,14 @@ typedef struct
|
||||
|
||||
*****************************************************************************/
|
||||
|
||||
typedef struct
|
||||
{
|
||||
typedef struct {
|
||||
|
||||
L3UCHAR IEId; /* 00110111 */
|
||||
L3UCHAR Size; /* Length of Information Element */
|
||||
L3UCHAR Type; /* Type of number */
|
||||
L3UCHAR Encoding; /* Encoding of number */
|
||||
L3UCHAR Digit[1]; /* Number digits (IA5) */
|
||||
|
||||
} Q931ie_GenericDigits;
|
||||
|
||||
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
/*****************************************************************************
|
||||
Q.932 Additional EI Codes
|
||||
*****************************************************************************/
|
||||
#define Q932ie_FACILITY 0x1c /* 0001 1100 */
|
||||
#define Q932ie_FACILITY 0x1c /* 0001 1100 */
|
||||
|
||||
/*****************************************************************************
|
||||
Function Prototypes.
|
||||
|
||||
@@ -44,11 +44,10 @@
|
||||
Description: Message Index used to index a dynamic size Message FIFO.
|
||||
|
||||
*****************************************************************************/
|
||||
typedef struct _mindex
|
||||
{
|
||||
typedef struct _mindex {
|
||||
int offset; /* offset to message in buf */
|
||||
int size; /* size of message in bytes */
|
||||
}MINDEX;
|
||||
} MINDEX;
|
||||
|
||||
/*****************************************************************************
|
||||
|
||||
@@ -58,8 +57,7 @@ typedef struct _mindex
|
||||
queue.
|
||||
|
||||
*****************************************************************************/
|
||||
typedef struct
|
||||
{
|
||||
typedef struct {
|
||||
int first; /* first out */
|
||||
int last; /* last in + 1 */
|
||||
int bsize; /* buffer size */
|
||||
|
||||
@@ -3,19 +3,18 @@
|
||||
FileName: national.h
|
||||
|
||||
Contents: Header and definition for the National ISDN dialect. The
|
||||
header contents the following parts:
|
||||
|
||||
- Definition of codes
|
||||
header contents the following parts:
|
||||
- Definition of codes
|
||||
- Definition of information elements (nationalie_).
|
||||
- Definition of messages (nationalmes_).
|
||||
- Function prototypes.
|
||||
- Function prototypes.
|
||||
|
||||
Description: The National ISDN dialect here covers ????
|
||||
Description: The National ISDN dialect here covers ????
|
||||
|
||||
Related Files: national.h National ISDN Definitions
|
||||
nationalie.c National ISDN IE encoders/coders
|
||||
nationalStateTE.c National ISDN TE State Engine
|
||||
nationalStateNT.c National ISDN NT State Engine
|
||||
Related Files: national.h National ISDN Definitions
|
||||
nationalie.c National ISDN IE encoders/coders
|
||||
nationalStateTE.c National ISDN TE State Engine
|
||||
nationalStateNT.c National ISDN NT State Engine
|
||||
|
||||
License/Copyright:
|
||||
|
||||
@@ -75,15 +74,12 @@ L3INT nationalPmes_Setup(Q931_TrunkInfo_t *pTrunk, Q931mes_Generic *IBuf, L3INT
|
||||
|
||||
#include "DMS.h"
|
||||
|
||||
|
||||
/*****************************************************************************
|
||||
|
||||
Q.931 Process Function Prototyping. Implemented in nationalStateTE.c
|
||||
|
||||
*****************************************************************************/
|
||||
|
||||
|
||||
|
||||
void nationalCreateTE(L3UCHAR i);
|
||||
void nationalCreateNT(L3UCHAR i);
|
||||
|
||||
|
||||
+132
-143
@@ -1,38 +1,38 @@
|
||||
/*****************************************************************************
|
||||
|
||||
Filename: mfifo.c
|
||||
Filename: mfifo.c
|
||||
|
||||
Description: mfifo is a message orriented fifo system with support of
|
||||
both message and byte per byte retriaval of messages.
|
||||
both message and byte per byte retriaval of messages.
|
||||
|
||||
The fifo has been designed with two usages in mind:
|
||||
The fifo has been designed with two usages in mind:
|
||||
|
||||
- Queueing of frames for hdlc and feeding out byte per byte
|
||||
with the possibility of re-sending of frames etc.
|
||||
- Queueing of frames for hdlc and feeding out byte per byte
|
||||
with the possibility of re-sending of frames etc.
|
||||
|
||||
- fifo for messages of dynamic size.
|
||||
- fifo for messages of dynamic size.
|
||||
|
||||
The fifo is allocated on top of any buffer and creates an
|
||||
index of message in the queue. The user can write/read
|
||||
messages or write messages and read the message one byte
|
||||
at the time.
|
||||
The fifo is allocated on top of any buffer and creates an
|
||||
index of message in the queue. The user can write/read
|
||||
messages or write messages and read the message one byte
|
||||
at the time.
|
||||
|
||||
Interface:
|
||||
MFIFOCreate Create/reset/initialize fifo.
|
||||
MFIFOClear Clear FIFO.
|
||||
MFIFOWriteMes Write message into fifo
|
||||
* MFIFOReadMes Read message from fifo.
|
||||
MFIFOGetMesPtr Get ptr to next message.
|
||||
MFIFOKillNext Kill next message.
|
||||
Interface:
|
||||
MFIFOCreate Create/reset/initialize fifo.
|
||||
MFIFOClear Clear FIFO.
|
||||
MFIFOWriteMes Write message into fifo
|
||||
* MFIFOReadMes Read message from fifo.
|
||||
MFIFOGetMesPtr Get ptr to next message.
|
||||
MFIFOKillNext Kill next message.
|
||||
|
||||
* currently not implemented.
|
||||
* currently not implemented.
|
||||
|
||||
Note: The message will always be saved continuously. If there is not
|
||||
sufficient space at the end of the buffer, the fifo will skip
|
||||
the last bytes and save the message at the top of the buffer.
|
||||
Note: The message will always be saved continuously. If there is not
|
||||
sufficient space at the end of the buffer, the fifo will skip
|
||||
the last bytes and save the message at the top of the buffer.
|
||||
|
||||
This is required to allow direct ptr access to messages
|
||||
stored in the queue.
|
||||
This is required to allow direct ptr access to messages
|
||||
stored in the queue.
|
||||
|
||||
License/Copyright:
|
||||
|
||||
@@ -43,12 +43,12 @@
|
||||
modification, are permitted provided that the following conditions are
|
||||
met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright notice,
|
||||
* Redistributions of source code must retain the above copyright notice,
|
||||
this list of conditions and the following disclaimer.
|
||||
* Redistributions in binary form must reproduce the above copyright notice,
|
||||
* Redistributions in binary form must reproduce the above copyright notice,
|
||||
this list of conditions and the following disclaimer in the documentation
|
||||
and/or other materials provided with the distribution.
|
||||
* Neither the name of the Case Labs, Ltd nor the names of its contributors
|
||||
* Neither the name of the Case Labs, Ltd nor the names of its contributors
|
||||
may be used to endorse or promote products derived from this software
|
||||
without specific prior written permission.
|
||||
|
||||
@@ -71,40 +71,40 @@
|
||||
|
||||
/*****************************************************************************
|
||||
|
||||
Function: MFIFOCreate
|
||||
Function: MFIFOCreate
|
||||
|
||||
Description: Creates a fifo on top of an existing buffer.
|
||||
|
||||
Parameters: buf ptr to buffer.
|
||||
size size of buffer in bytes.
|
||||
index size of index entries (max no messages).
|
||||
Parameters: buf ptr to buffer.
|
||||
size size of buffer in bytes.
|
||||
index size of index entries (max no messages).
|
||||
|
||||
Return value: 0 if failure, 1 if ok.
|
||||
|
||||
*****************************************************************************/
|
||||
int MFIFOCreate(unsigned char *buf, int size, int index)
|
||||
{
|
||||
MFIFO *mf = (MFIFO *)buf;
|
||||
|
||||
mf->first = mf->last = 0;
|
||||
mf->ixsize = index;
|
||||
mf->buf = &buf[sizeof(MFIFO) + (sizeof(MINDEX) * index)];
|
||||
MFIFO *mf = (MFIFO *)buf;
|
||||
|
||||
mf->first = mf->last = 0;
|
||||
mf->ixsize = index;
|
||||
mf->buf = &buf[sizeof(MFIFO) + (sizeof(MINDEX) * index)];
|
||||
|
||||
if(mf->buf > &buf[size])
|
||||
return 0;
|
||||
if (mf->buf > &buf[size])
|
||||
return 0;
|
||||
|
||||
mf->bsize = size - sizeof(MFIFO) - (sizeof(MINDEX) * index);
|
||||
mf->bsize = size - sizeof(MFIFO) - (sizeof(MINDEX) * index);
|
||||
|
||||
return 1;
|
||||
return 1;
|
||||
}
|
||||
|
||||
/*****************************************************************************
|
||||
|
||||
Function: MFIFOClear
|
||||
Function: MFIFOClear
|
||||
|
||||
Description: Clear the FIFO
|
||||
|
||||
Paremeters: buf ptr to fifo
|
||||
Paremeters: buf ptr to fifo
|
||||
|
||||
Return Value: none
|
||||
|
||||
@@ -118,91 +118,91 @@ void MFIFOClear(unsigned char * buf)
|
||||
|
||||
/*****************************************************************************
|
||||
|
||||
Function: MFIFOGetLBOffset
|
||||
Function: MFIFOGetLBOffset
|
||||
|
||||
Description: Helper function caclulating offset to the 'first out' byte.
|
||||
|
||||
Paremeters: buf ptr to fifo
|
||||
Paremeters: buf ptr to fifo
|
||||
|
||||
Return Value: offset.
|
||||
|
||||
*****************************************************************************/
|
||||
int MFIFOGetLBOffset(unsigned char *buf)
|
||||
{
|
||||
MFIFO *mf = (MFIFO *)buf;
|
||||
MFIFO *mf = (MFIFO *)buf;
|
||||
|
||||
if(mf->last != mf->first)
|
||||
return mf->ix[mf->last].offset;
|
||||
|
||||
return 0;
|
||||
if (mf->last != mf->first)
|
||||
return mf->ix[mf->last].offset;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*****************************************************************************
|
||||
|
||||
Function: MFIFOGetFBOffset
|
||||
Function: MFIFOGetFBOffset
|
||||
|
||||
Description: Helper function calculating the offset to the 'first in'
|
||||
byte in the buffer. This is the position the next byte
|
||||
entering the fifo will occupy.
|
||||
byte in the buffer. This is the position the next byte
|
||||
entering the fifo will occupy.
|
||||
|
||||
Paremeters: buf ptr to fifo
|
||||
Paremeters: buf ptr to fifo
|
||||
|
||||
Return Value: offset
|
||||
|
||||
*****************************************************************************/
|
||||
int MFIFOGetFBOffset(unsigned char *buf)
|
||||
{
|
||||
MFIFO *mf = (MFIFO *)buf;
|
||||
int x;
|
||||
MFIFO *mf = (MFIFO *)buf;
|
||||
int x;
|
||||
|
||||
if(mf->last == mf->first)
|
||||
return 0;
|
||||
if (mf->last == mf->first)
|
||||
return 0;
|
||||
|
||||
x = mf->first - 1;
|
||||
x = mf->first - 1;
|
||||
|
||||
if(x < 0)
|
||||
x = mf->ixsize - 1;
|
||||
if (x < 0)
|
||||
x = mf->ixsize - 1;
|
||||
|
||||
return mf->ix[x].offset + mf->ix[x].size;
|
||||
return mf->ix[x].offset + mf->ix[x].size;
|
||||
}
|
||||
|
||||
/*****************************************************************************
|
||||
|
||||
Function: MFIFOWriteIX
|
||||
Function: MFIFOWriteIX
|
||||
|
||||
Description: Helper function writing a calculated entry. The function
|
||||
will perform a memcpy to move the message and set the index
|
||||
values as well as increase the 'first in' index.
|
||||
will perform a memcpy to move the message and set the index
|
||||
values as well as increase the 'first in' index.
|
||||
|
||||
Paremeters: buf ptr to fifo
|
||||
mes ptr to message
|
||||
size size of message in bytes.
|
||||
ix index to index entry.
|
||||
off offset to position to receive the message
|
||||
Paremeters: buf ptr to fifo
|
||||
mes ptr to message
|
||||
size size of message in bytes.
|
||||
ix index to index entry.
|
||||
off offset to position to receive the message
|
||||
|
||||
Return Value: none
|
||||
|
||||
*****************************************************************************/
|
||||
void MFIFOWriteIX(unsigned char *buf, unsigned char *mes, int size, int ix, int off)
|
||||
{
|
||||
MFIFO *mf = (MFIFO *)buf;
|
||||
int x;
|
||||
MFIFO *mf = (MFIFO *)buf;
|
||||
int x;
|
||||
|
||||
memcpy(&mf->buf[off], mes, size);
|
||||
mf->ix[ix].offset = off;
|
||||
mf->ix[ix].size = size;
|
||||
memcpy(&mf->buf[off], mes, size);
|
||||
mf->ix[ix].offset = off;
|
||||
mf->ix[ix].size = size;
|
||||
|
||||
x = mf->first + 1;
|
||||
x = mf->first + 1;
|
||||
|
||||
if(x >= mf->ixsize)
|
||||
x = 0;
|
||||
if (x >= mf->ixsize)
|
||||
x = 0;
|
||||
|
||||
mf->first = x;
|
||||
mf->first = x;
|
||||
}
|
||||
|
||||
/*****************************************************************************
|
||||
|
||||
Function: MFIFOWriteMes
|
||||
Function: MFIFOWriteMes
|
||||
|
||||
Description:
|
||||
|
||||
@@ -213,51 +213,46 @@ void MFIFOWriteIX(unsigned char *buf, unsigned char *mes, int size, int ix, int
|
||||
*****************************************************************************/
|
||||
int MFIFOWriteMes(unsigned char *buf, unsigned char *mes, int size)
|
||||
{
|
||||
MFIFO *mf = (MFIFO *)buf;
|
||||
int of, ol, x;
|
||||
MFIFO *mf = (MFIFO *)buf;
|
||||
int of, ol, x;
|
||||
|
||||
x = mf->first + 1;
|
||||
x = mf->first + 1;
|
||||
|
||||
if(x >= mf->ixsize)
|
||||
x = 0;
|
||||
if (x >= mf->ixsize)
|
||||
x = 0;
|
||||
|
||||
if(x == mf->last)
|
||||
return 0; /* full queue */
|
||||
if (x == mf->last)
|
||||
return 0; /* full queue */
|
||||
|
||||
of = MFIFOGetFBOffset(buf);
|
||||
ol = MFIFOGetLBOffset(buf);
|
||||
if(mf->last == mf->first) /* empty queue */
|
||||
{
|
||||
mf->first = mf->last = 0; /* optimize */
|
||||
of = MFIFOGetFBOffset(buf);
|
||||
ol = MFIFOGetLBOffset(buf);
|
||||
if (mf->last == mf->first) { /* empty queue */
|
||||
mf->first = mf->last = 0; /* optimize */
|
||||
|
||||
MFIFOWriteIX(buf, mes, size, mf->first, 0);
|
||||
return 1;
|
||||
}
|
||||
else if(of > ol)
|
||||
{
|
||||
if(mf->bsize - of >= size)
|
||||
{
|
||||
MFIFOWriteIX(buf, mes, size, mf->first, of);
|
||||
return 1;
|
||||
}
|
||||
else if(ol > size)
|
||||
{
|
||||
MFIFOWriteIX(buf, mes, size, mf->first, ol);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
else if(ol - of > size)
|
||||
{
|
||||
MFIFOWriteIX(buf, mes, size, mf->first, of);
|
||||
return 1;
|
||||
}
|
||||
MFIFOWriteIX(buf, mes, size, mf->first, 0);
|
||||
return 1;
|
||||
}
|
||||
else if (of > ol) {
|
||||
if (mf->bsize - of >= size) {
|
||||
MFIFOWriteIX(buf, mes, size, mf->first, of);
|
||||
return 1;
|
||||
}
|
||||
else if (ol > size) {
|
||||
MFIFOWriteIX(buf, mes, size, mf->first, ol);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
else if (ol - of > size) {
|
||||
MFIFOWriteIX(buf, mes, size, mf->first, of);
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*****************************************************************************
|
||||
|
||||
Function: MFIFOGetMesPtr
|
||||
Function: MFIFOGetMesPtr
|
||||
|
||||
Description:
|
||||
|
||||
@@ -270,7 +265,7 @@ unsigned char * MFIFOGetMesPtr(unsigned char *buf, int *size)
|
||||
{
|
||||
MFIFO *mf = (MFIFO *)buf;
|
||||
|
||||
if(mf->first == mf->last) {
|
||||
if (mf->first == mf->last) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@@ -280,7 +275,7 @@ unsigned char * MFIFOGetMesPtr(unsigned char *buf, int *size)
|
||||
|
||||
/*****************************************************************************
|
||||
|
||||
Function: MFIFOKillNext
|
||||
Function: MFIFOKillNext
|
||||
|
||||
Description:
|
||||
|
||||
@@ -291,18 +286,17 @@ unsigned char * MFIFOGetMesPtr(unsigned char *buf, int *size)
|
||||
*****************************************************************************/
|
||||
void MFIFOKillNext(unsigned char *buf)
|
||||
{
|
||||
MFIFO *mf = (MFIFO *)buf;
|
||||
int x;
|
||||
MFIFO *mf = (MFIFO *)buf;
|
||||
int x;
|
||||
|
||||
if(mf->first != mf->last)
|
||||
{
|
||||
x = mf->last + 1;
|
||||
if(x >= mf->ixsize) {
|
||||
x = 0;
|
||||
if (mf->first != mf->last) {
|
||||
x = mf->last + 1;
|
||||
if (x >= mf->ixsize) {
|
||||
x = 0;
|
||||
}
|
||||
|
||||
mf->last = x;
|
||||
}
|
||||
|
||||
mf->last = x;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -319,16 +313,16 @@ unsigned char * MFIFOGetMesPtrOffset(unsigned char *buf, int *size, const int po
|
||||
MFIFO *mf = (MFIFO *)buf;
|
||||
int x;
|
||||
|
||||
if(mf->first == mf->last) {
|
||||
if (mf->first == mf->last) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if(pos < 0 || pos >= mf->ixsize) {
|
||||
if (pos < 0 || pos >= mf->ixsize) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
x = pos - mf->last;
|
||||
if(x < 0) {
|
||||
if (x < 0) {
|
||||
x += (mf->ixsize - 1);
|
||||
}
|
||||
|
||||
@@ -345,10 +339,10 @@ int MFIFOGetMesCount(unsigned char *buf)
|
||||
{
|
||||
MFIFO *mf = (MFIFO *)buf;
|
||||
|
||||
if(mf->first == mf->last) {
|
||||
if (mf->first == mf->last) {
|
||||
return 0;
|
||||
}
|
||||
else if(mf->first > mf->last) {
|
||||
else if (mf->first > mf->last) {
|
||||
return mf->first - mf->last;
|
||||
}
|
||||
else {
|
||||
@@ -367,42 +361,37 @@ int MFIFOWriteMesOverwrite(unsigned char *buf, unsigned char *mes, int size)
|
||||
|
||||
x = mf->first + 1;
|
||||
|
||||
if(x >= mf->ixsize)
|
||||
if (x >= mf->ixsize)
|
||||
x = 0;
|
||||
|
||||
if(x == mf->last) {
|
||||
if (x == mf->last) {
|
||||
/* advance last pointer */
|
||||
mf->last++;
|
||||
|
||||
if(mf->last >= mf->ixsize)
|
||||
if (mf->last >= mf->ixsize)
|
||||
mf->last = 0;
|
||||
}
|
||||
|
||||
of = MFIFOGetFBOffset(buf);
|
||||
ol = MFIFOGetLBOffset(buf);
|
||||
|
||||
if(mf->last == mf->first) /* empty queue */
|
||||
{
|
||||
if (mf->last == mf->first) { /* empty queue */
|
||||
mf->first = mf->last = 0; /* optimize */
|
||||
|
||||
MFIFOWriteIX(buf, mes, size, mf->first, 0);
|
||||
return 1;
|
||||
}
|
||||
else if(of > ol)
|
||||
{
|
||||
if(mf->bsize - of >= size)
|
||||
{
|
||||
else if (of > ol) {
|
||||
if (mf->bsize - of >= size) {
|
||||
MFIFOWriteIX(buf, mes, size, mf->first, of);
|
||||
return 1;
|
||||
}
|
||||
else if(ol > size)
|
||||
{
|
||||
else if (ol > size) {
|
||||
MFIFOWriteIX(buf, mes, size, mf->first, ol);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
else if(ol - of > size)
|
||||
{
|
||||
else if (ol - of > size) {
|
||||
MFIFOWriteIX(buf, mes, size, mf->first, of);
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -4,11 +4,11 @@
|
||||
|
||||
Contents: National ISDN State Engine for NT (Network Mode).
|
||||
|
||||
The controlling state engine for Q.931 is the state engine
|
||||
on the NT side. The state engine on the TE side is a slave
|
||||
of this. The TE side maintain it's own states as described in
|
||||
ITU-T Q931, but will in raise conditions be overridden by
|
||||
the NT side.
|
||||
The controlling state engine for Q.931 is the state engine
|
||||
on the NT side. The state engine on the TE side is a slave
|
||||
of this. The TE side maintain it's own states as described in
|
||||
ITU-T Q931, but will in raise conditions be overridden by
|
||||
the NT side.
|
||||
|
||||
License/Copyright:
|
||||
|
||||
@@ -22,12 +22,12 @@
|
||||
modification, are permitted provided that the following conditions are
|
||||
met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright notice,
|
||||
* Redistributions of source code must retain the above copyright notice,
|
||||
this list of conditions and the following disclaimer.
|
||||
* Redistributions in binary form must reproduce the above copyright notice,
|
||||
* Redistributions in binary form must reproduce the above copyright notice,
|
||||
this list of conditions and the following disclaimer in the documentation
|
||||
and/or other materials provided with the distribution.
|
||||
* Neither the name of the Case Labs, Ltd nor the names of its contributors
|
||||
* Neither the name of the Case Labs, Ltd nor the names of its contributors
|
||||
may be used to endorse or promote products derived from this software
|
||||
without specific prior written permission.
|
||||
|
||||
@@ -57,66 +57,66 @@
|
||||
*****************************************************************************/
|
||||
void nationalCreateNT(L3UCHAR i)
|
||||
{
|
||||
Q931SetMesProc(Q931mes_ALERTING, i,Q931ProcAlertingNT, Q931Umes_Alerting, Q931Pmes_Alerting);
|
||||
Q931SetMesProc(Q931mes_CALL_PROCEEDING, i,Q931ProcCallProceedingNT, Q931Umes_CallProceeding, Q931Pmes_CallProceeding);
|
||||
Q931SetMesProc(Q931mes_CONNECT, i,Q931ProcConnectNT, Q931Umes_Connect, Q931Pmes_Connect);
|
||||
Q931SetMesProc(Q931mes_CONNECT_ACKNOWLEDGE, i,Q931ProcConnectAckNT, Q931Umes_ConnectAck, Q931Pmes_ConnectAck);
|
||||
Q931SetMesProc(Q931mes_PROGRESS, i,Q931ProcProgressNT, Q931Umes_Progress, Q931Pmes_Progress);
|
||||
Q931SetMesProc(Q931mes_SETUP, i,Q931ProcSetupNT, nationalUmes_Setup, nationalPmes_Setup);
|
||||
Q931SetMesProc(Q931mes_SETUP_ACKNOWLEDGE, i,Q931ProcSetupAckNT, Q931Umes_SetupAck, Q931Pmes_SetupAck);
|
||||
Q931SetMesProc(Q931mes_RESUME, i,Q931ProcResumeNT, Q931Umes_Resume, Q931Pmes_Resume);
|
||||
Q931SetMesProc(Q931mes_RESUME_ACKNOWLEDGE, i,Q931ProcResumeAckNT, Q931Umes_ResumeAck, Q931Pmes_ResumeAck);
|
||||
Q931SetMesProc(Q931mes_RESUME_REJECT, i,Q931ProcResumeRejectNT, Q931Umes_ResumeReject, Q931Pmes_ResumeReject);
|
||||
Q931SetMesProc(Q931mes_SUSPEND, i,Q931ProcSuspendNT, Q931Umes_Suspend, Q931Pmes_Suspend);
|
||||
Q931SetMesProc(Q931mes_SUSPEND_ACKNOWLEDGE, i,Q931ProcSuspendAckNT, Q931Umes_SuspendAck, Q931Pmes_SuspendAck);
|
||||
Q931SetMesProc(Q931mes_SUSPEND_REJECT, i,Q931ProcSuspendRejectNT, Q931Umes_SuspendReject, Q931Pmes_SuspendReject);
|
||||
Q931SetMesProc(Q931mes_USER_INFORMATION, i,Q931ProcUserInformationNT, Q931Umes_UserInformation, Q931Pmes_UserInformation);
|
||||
Q931SetMesProc(Q931mes_DISCONNECT, i,Q931ProcDisconnectNT, Q931Umes_Disconnect, Q931Pmes_Disconnect);
|
||||
Q931SetMesProc(Q931mes_RELEASE, i,Q931ProcReleaseNT, Q931Umes_Release, Q931Pmes_Release);
|
||||
Q931SetMesProc(Q931mes_RELEASE_COMPLETE, i,Q931ProcReleaseCompleteNT, Q931Umes_ReleaseComplete, Q931Pmes_ReleaseComplete);
|
||||
Q931SetMesProc(Q931mes_RESTART, i,Q931ProcRestartNT, Q931Umes_Restart, Q931Pmes_Restart);
|
||||
Q931SetMesProc(Q931mes_RESTART_ACKNOWLEDGE, i,Q931ProcRestartAckNT, Q931Umes_RestartAck, Q931Pmes_RestartAck);
|
||||
Q931SetMesProc(Q931mes_CONGESTION_CONTROL, i,Q931ProcCongestionControlNT, Q931Umes_CongestionControl, Q931Pmes_CongestionControl);
|
||||
Q931SetMesProc(Q931mes_INFORMATION, i,Q931ProcInformationNT, Q931Umes_Information, Q931Pmes_Information);
|
||||
Q931SetMesProc(Q931mes_NOTIFY, i,Q931ProcNotifyNT, Q931Umes_Notify, Q931Pmes_Notify);
|
||||
Q931SetMesProc(Q931mes_STATUS, i,Q931ProcStatusNT, Q931Umes_Status, Q931Pmes_Status);
|
||||
Q931SetMesProc(Q931mes_STATUS_ENQUIRY, i,Q931ProcStatusEnquiryNT, Q931Umes_StatusEnquiry, Q931Pmes_StatusEnquiry);
|
||||
Q931SetMesProc(Q931mes_SEGMENT, i,Q931ProcSegmentNT, Q931Umes_Segment, Q931Pmes_Segment);
|
||||
Q931SetMesProc(Q931mes_ALERTING, i, Q931ProcAlertingNT, Q931Umes_Alerting, Q931Pmes_Alerting);
|
||||
Q931SetMesProc(Q931mes_CALL_PROCEEDING, i, Q931ProcCallProceedingNT, Q931Umes_CallProceeding, Q931Pmes_CallProceeding);
|
||||
Q931SetMesProc(Q931mes_CONNECT, i, Q931ProcConnectNT, Q931Umes_Connect, Q931Pmes_Connect);
|
||||
Q931SetMesProc(Q931mes_CONNECT_ACKNOWLEDGE, i, Q931ProcConnectAckNT, Q931Umes_ConnectAck, Q931Pmes_ConnectAck);
|
||||
Q931SetMesProc(Q931mes_PROGRESS, i, Q931ProcProgressNT, Q931Umes_Progress, Q931Pmes_Progress);
|
||||
Q931SetMesProc(Q931mes_SETUP, i, Q931ProcSetupNT, nationalUmes_Setup, nationalPmes_Setup);
|
||||
Q931SetMesProc(Q931mes_SETUP_ACKNOWLEDGE, i, Q931ProcSetupAckNT, Q931Umes_SetupAck, Q931Pmes_SetupAck);
|
||||
Q931SetMesProc(Q931mes_RESUME, i, Q931ProcResumeNT, Q931Umes_Resume, Q931Pmes_Resume);
|
||||
Q931SetMesProc(Q931mes_RESUME_ACKNOWLEDGE, i, Q931ProcResumeAckNT, Q931Umes_ResumeAck, Q931Pmes_ResumeAck);
|
||||
Q931SetMesProc(Q931mes_RESUME_REJECT, i, Q931ProcResumeRejectNT, Q931Umes_ResumeReject, Q931Pmes_ResumeReject);
|
||||
Q931SetMesProc(Q931mes_SUSPEND, i, Q931ProcSuspendNT, Q931Umes_Suspend, Q931Pmes_Suspend);
|
||||
Q931SetMesProc(Q931mes_SUSPEND_ACKNOWLEDGE, i, Q931ProcSuspendAckNT, Q931Umes_SuspendAck, Q931Pmes_SuspendAck);
|
||||
Q931SetMesProc(Q931mes_SUSPEND_REJECT, i, Q931ProcSuspendRejectNT, Q931Umes_SuspendReject, Q931Pmes_SuspendReject);
|
||||
Q931SetMesProc(Q931mes_USER_INFORMATION, i, Q931ProcUserInformationNT, Q931Umes_UserInformation, Q931Pmes_UserInformation);
|
||||
Q931SetMesProc(Q931mes_DISCONNECT, i, Q931ProcDisconnectNT, Q931Umes_Disconnect, Q931Pmes_Disconnect);
|
||||
Q931SetMesProc(Q931mes_RELEASE, i, Q931ProcReleaseNT, Q931Umes_Release, Q931Pmes_Release);
|
||||
Q931SetMesProc(Q931mes_RELEASE_COMPLETE, i, Q931ProcReleaseCompleteNT, Q931Umes_ReleaseComplete, Q931Pmes_ReleaseComplete);
|
||||
Q931SetMesProc(Q931mes_RESTART, i, Q931ProcRestartNT, Q931Umes_Restart, Q931Pmes_Restart);
|
||||
Q931SetMesProc(Q931mes_RESTART_ACKNOWLEDGE, i, Q931ProcRestartAckNT, Q931Umes_RestartAck, Q931Pmes_RestartAck);
|
||||
Q931SetMesProc(Q931mes_CONGESTION_CONTROL, i, Q931ProcCongestionControlNT, Q931Umes_CongestionControl, Q931Pmes_CongestionControl);
|
||||
Q931SetMesProc(Q931mes_INFORMATION, i, Q931ProcInformationNT, Q931Umes_Information, Q931Pmes_Information);
|
||||
Q931SetMesProc(Q931mes_NOTIFY, i, Q931ProcNotifyNT, Q931Umes_Notify, Q931Pmes_Notify);
|
||||
Q931SetMesProc(Q931mes_STATUS, i, Q931ProcStatusNT, Q931Umes_Status, Q931Pmes_Status);
|
||||
Q931SetMesProc(Q931mes_STATUS_ENQUIRY, i, Q931ProcStatusEnquiryNT, Q931Umes_StatusEnquiry, Q931Pmes_StatusEnquiry);
|
||||
Q931SetMesProc(Q931mes_SEGMENT, i, Q931ProcSegmentNT, Q931Umes_Segment, Q931Pmes_Segment);
|
||||
|
||||
Q931SetMesProc(Q932mes_FACILITY, i,Q932ProcFacilityNT, Q932Umes_Facility, Q932Pmes_Facility);
|
||||
Q931SetMesProc(Q932mes_HOLD, i,Q932ProcHoldNT, Q932Umes_Hold, Q932Pmes_Hold);
|
||||
Q931SetMesProc(Q932mes_HOLD_ACKNOWLEDGE, i,Q932ProcHoldAckNT, Q932Umes_HoldAck, Q932Pmes_HoldAck);
|
||||
Q931SetMesProc(Q932mes_HOLD_REJECT, i,Q932ProcHoldRejectNT, Q932Umes_HoldReject, Q932Pmes_HoldReject);
|
||||
Q931SetMesProc(Q932mes_REGISTER, i,Q932ProcRegisterNT, Q932Umes_Register, Q932Pmes_Register);
|
||||
Q931SetMesProc(Q932mes_RETRIEVE, i,Q932ProcRetrieveNT, Q932Umes_Retrieve, Q932Pmes_Retrieve);
|
||||
Q931SetMesProc(Q932mes_RETRIEVE_ACKNOWLEDGE,i,Q932ProcRetrieveAckNT, Q932Umes_RetrieveAck, Q932Pmes_RetrieveAck);
|
||||
Q931SetMesProc(Q932mes_RETRIEVE_REJECT, i,Q932ProcRetrieveRejectNT, Q932Umes_RetrieveReject, Q932Pmes_RetrieveReject);
|
||||
Q931SetMesProc(Q932mes_FACILITY, i, Q932ProcFacilityNT, Q932Umes_Facility, Q932Pmes_Facility);
|
||||
Q931SetMesProc(Q932mes_HOLD, i, Q932ProcHoldNT, Q932Umes_Hold, Q932Pmes_Hold);
|
||||
Q931SetMesProc(Q932mes_HOLD_ACKNOWLEDGE, i, Q932ProcHoldAckNT, Q932Umes_HoldAck, Q932Pmes_HoldAck);
|
||||
Q931SetMesProc(Q932mes_HOLD_REJECT, i, Q932ProcHoldRejectNT, Q932Umes_HoldReject, Q932Pmes_HoldReject);
|
||||
Q931SetMesProc(Q932mes_REGISTER, i, Q932ProcRegisterNT, Q932Umes_Register, Q932Pmes_Register);
|
||||
Q931SetMesProc(Q932mes_RETRIEVE, i, Q932ProcRetrieveNT, Q932Umes_Retrieve, Q932Pmes_Retrieve);
|
||||
Q931SetMesProc(Q932mes_RETRIEVE_ACKNOWLEDGE, i, Q932ProcRetrieveAckNT, Q932Umes_RetrieveAck, Q932Pmes_RetrieveAck);
|
||||
Q931SetMesProc(Q932mes_RETRIEVE_REJECT, i, Q932ProcRetrieveRejectNT, Q932Umes_RetrieveReject, Q932Pmes_RetrieveReject);
|
||||
|
||||
/* Set up the IE encoder/decoder handle table.*/
|
||||
Q931SetIEProc(Q931ie_SEGMENTED_MESSAGE, i,Q931Pie_Segment, Q931Uie_Segment);
|
||||
Q931SetIEProc(Q931ie_BEARER_CAPABILITY, i,Q931Pie_BearerCap, Q931Uie_BearerCap);
|
||||
Q931SetIEProc(Q931ie_CAUSE, i,Q931Pie_Cause, Q931Uie_Cause);
|
||||
Q931SetIEProc(Q931ie_CALL_IDENTITY, i,Q931Pie_CallID, Q931Uie_CallID);
|
||||
Q931SetIEProc(Q931ie_CALL_STATE, i,Q931Pie_CallState, Q931Uie_CallState);
|
||||
Q931SetIEProc(Q931ie_CHANNEL_IDENTIFICATION, i,Q931Pie_ChanID, Q931Uie_ChanID);
|
||||
Q931SetIEProc(Q931ie_PROGRESS_INDICATOR, i,Q931Pie_ProgInd, Q931Uie_ProgInd);
|
||||
Q931SetIEProc(Q931ie_NETWORK_SPECIFIC_FACILITIES, i,Q931Pie_NetFac, Q931Uie_NetFac);
|
||||
Q931SetIEProc(Q931ie_NOTIFICATION_INDICATOR, i,Q931Pie_NotifInd, Q931Uie_NotifInd);
|
||||
Q931SetIEProc(Q931ie_DISPLAY, i,Q931Pie_Display, Q931Uie_Display);
|
||||
Q931SetIEProc(Q931ie_DATETIME, i,Q931Pie_DateTime, Q931Uie_DateTime);
|
||||
Q931SetIEProc(Q931ie_KEYPAD_FACILITY, i,Q931Pie_KeypadFac, Q931Uie_KeypadFac);
|
||||
Q931SetIEProc(Q931ie_SIGNAL, i,Q931Pie_Signal, Q931Uie_Signal);
|
||||
Q931SetIEProc(Q931ie_TRANSIT_DELAY_SELECTION_AND_IND, i,Q931Pie_TransNetSel, Q931Uie_TransNetSel);
|
||||
Q931SetIEProc(Q931ie_CALLING_PARTY_NUMBER, i,Q931Pie_CallingNum, Q931Uie_CallingNum);
|
||||
Q931SetIEProc(Q931ie_CALLING_PARTY_SUBADDRESS, i,Q931Pie_CallingSub, Q931Uie_CallingSub);
|
||||
Q931SetIEProc(Q931ie_CALLED_PARTY_NUMBER, i,Q931Pie_CalledNum, Q931Uie_CalledNum);
|
||||
Q931SetIEProc(Q931ie_CALLED_PARTY_SUBADDRESS, i,Q931Pie_CalledSub, Q931Uie_CalledSub);
|
||||
Q931SetIEProc(Q931ie_TRANSIT_NETWORK_SELECTION, i,Q931Pie_TransNetSel, Q931Uie_TransNetSel);
|
||||
Q931SetIEProc(Q931ie_RESTART_INDICATOR, i,Q931Pie_RestartInd, Q931Uie_RestartInd);
|
||||
Q931SetIEProc(Q931ie_LOW_LAYER_COMPATIBILITY, i,Q931Pie_LLComp, Q931Uie_LLComp);
|
||||
Q931SetIEProc(Q931ie_HIGH_LAYER_COMPATIBILITY, i,Q931Pie_HLComp, Q931Uie_HLComp);
|
||||
Q931SetIEProc(Q931ie_USER_USER, i,Q931Pie_UserUser, Q931Uie_UserUser);
|
||||
Q931SetIEProc(Q931ie_GENERIC_DIGITS, i,Q931Pie_GenericDigits, Q931Uie_GenericDigits);
|
||||
Q931SetIEProc(Q931ie_SEGMENTED_MESSAGE, i, Q931Pie_Segment, Q931Uie_Segment);
|
||||
Q931SetIEProc(Q931ie_BEARER_CAPABILITY, i, Q931Pie_BearerCap, Q931Uie_BearerCap);
|
||||
Q931SetIEProc(Q931ie_CAUSE, i, Q931Pie_Cause, Q931Uie_Cause);
|
||||
Q931SetIEProc(Q931ie_CALL_IDENTITY, i, Q931Pie_CallID, Q931Uie_CallID);
|
||||
Q931SetIEProc(Q931ie_CALL_STATE, i, Q931Pie_CallState, Q931Uie_CallState);
|
||||
Q931SetIEProc(Q931ie_CHANNEL_IDENTIFICATION, i, Q931Pie_ChanID, Q931Uie_ChanID);
|
||||
Q931SetIEProc(Q931ie_PROGRESS_INDICATOR, i, Q931Pie_ProgInd, Q931Uie_ProgInd);
|
||||
Q931SetIEProc(Q931ie_NETWORK_SPECIFIC_FACILITIES, i, Q931Pie_NetFac, Q931Uie_NetFac);
|
||||
Q931SetIEProc(Q931ie_NOTIFICATION_INDICATOR, i, Q931Pie_NotifInd, Q931Uie_NotifInd);
|
||||
Q931SetIEProc(Q931ie_DISPLAY, i, Q931Pie_Display, Q931Uie_Display);
|
||||
Q931SetIEProc(Q931ie_DATETIME, i, Q931Pie_DateTime, Q931Uie_DateTime);
|
||||
Q931SetIEProc(Q931ie_KEYPAD_FACILITY, i, Q931Pie_KeypadFac, Q931Uie_KeypadFac);
|
||||
Q931SetIEProc(Q931ie_SIGNAL, i, Q931Pie_Signal, Q931Uie_Signal);
|
||||
Q931SetIEProc(Q931ie_TRANSIT_DELAY_SELECTION_AND_IND, i, Q931Pie_TransNetSel, Q931Uie_TransNetSel);
|
||||
Q931SetIEProc(Q931ie_CALLING_PARTY_NUMBER, i, Q931Pie_CallingNum, Q931Uie_CallingNum);
|
||||
Q931SetIEProc(Q931ie_CALLING_PARTY_SUBADDRESS, i, Q931Pie_CallingSub, Q931Uie_CallingSub);
|
||||
Q931SetIEProc(Q931ie_CALLED_PARTY_NUMBER, i, Q931Pie_CalledNum, Q931Uie_CalledNum);
|
||||
Q931SetIEProc(Q931ie_CALLED_PARTY_SUBADDRESS, i, Q931Pie_CalledSub, Q931Uie_CalledSub);
|
||||
Q931SetIEProc(Q931ie_TRANSIT_NETWORK_SELECTION, i, Q931Pie_TransNetSel, Q931Uie_TransNetSel);
|
||||
Q931SetIEProc(Q931ie_RESTART_INDICATOR, i, Q931Pie_RestartInd, Q931Uie_RestartInd);
|
||||
Q931SetIEProc(Q931ie_LOW_LAYER_COMPATIBILITY, i, Q931Pie_LLComp, Q931Uie_LLComp);
|
||||
Q931SetIEProc(Q931ie_HIGH_LAYER_COMPATIBILITY, i, Q931Pie_HLComp, Q931Uie_HLComp);
|
||||
Q931SetIEProc(Q931ie_USER_USER, i, Q931Pie_UserUser, Q931Uie_UserUser);
|
||||
Q931SetIEProc(Q931ie_GENERIC_DIGITS, i, Q931Pie_GenericDigits, Q931Uie_GenericDigits);
|
||||
|
||||
/* The following define a state machine. The point is that the Message */
|
||||
/* procs can when search this to find out if the message/state */
|
||||
|
||||
@@ -4,18 +4,18 @@
|
||||
|
||||
Contents: National ISDN State Engine for TE (User Mode).
|
||||
|
||||
The controlling state engine for Q.931 is the state engine
|
||||
on the NT side. The state engine on the TE side is a slave
|
||||
of this. The TE side maintain it's own states as described in
|
||||
ITU-T Q931, but will in raise conditions be overridden by
|
||||
the NT side.
|
||||
The controlling state engine for Q.931 is the state engine
|
||||
on the NT side. The state engine on the TE side is a slave
|
||||
of this. The TE side maintain it's own states as described in
|
||||
ITU-T Q931, but will in raise conditions be overridden by
|
||||
the NT side.
|
||||
|
||||
This reference implementation uses a process per message,
|
||||
meaning that each message must check call states. This
|
||||
is easier for dialect maintenance as each message proc
|
||||
can be replaced individually. A new TE variant only
|
||||
need to copy the Q931CreateTE and replace those procs or
|
||||
need to override.
|
||||
This reference implementation uses a process per message,
|
||||
meaning that each message must check call states. This
|
||||
is easier for dialect maintenance as each message proc
|
||||
can be replaced individually. A new TE variant only
|
||||
need to copy the Q931CreateTE and replace those procs or
|
||||
need to override.
|
||||
|
||||
License/Copyright:
|
||||
|
||||
@@ -29,12 +29,12 @@
|
||||
modification, are permitted provided that the following conditions are
|
||||
met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright notice,
|
||||
* Redistributions of source code must retain the above copyright notice,
|
||||
this list of conditions and the following disclaimer.
|
||||
* Redistributions in binary form must reproduce the above copyright notice,
|
||||
* Redistributions in binary form must reproduce the above copyright notice,
|
||||
this list of conditions and the following disclaimer in the documentation
|
||||
and/or other materials provided with the distribution.
|
||||
* Neither the name of the Case Labs, Ltd nor the names of its contributors
|
||||
* Neither the name of the Case Labs, Ltd nor the names of its contributors
|
||||
may be used to endorse or promote products derived from this software
|
||||
without specific prior written permission.
|
||||
|
||||
@@ -65,152 +65,152 @@ extern L3INT Q931L4HeaderSpace;
|
||||
*****************************************************************************/
|
||||
void nationalCreateTE(L3UCHAR i)
|
||||
{
|
||||
Q931SetMesProc(Q931mes_ALERTING, i,Q931ProcAlertingTE, Q931Umes_Alerting, Q931Pmes_Alerting);
|
||||
Q931SetMesProc(Q931mes_CALL_PROCEEDING, i,Q931ProcCallProceedingTE, Q931Umes_CallProceeding, Q931Pmes_CallProceeding);
|
||||
Q931SetMesProc(Q931mes_CONNECT, i,DMSProc0x07TE, DMSUmes_0x07, DMSPmes_0x07);
|
||||
Q931SetMesProc(Q931mes_CONNECT_ACKNOWLEDGE, i,DMSProc0x0fTE, DMSUmes_0x0f, DMSPmes_0x0f);
|
||||
Q931SetMesProc(Q931mes_PROGRESS, i,Q931ProcProgressTE, Q931Umes_Progress, Q931Pmes_Progress);
|
||||
Q931SetMesProc(Q931mes_SETUP, i,Q931ProcSetupTE, nationalUmes_Setup, nationalPmes_Setup);
|
||||
Q931SetMesProc(Q931mes_SETUP_ACKNOWLEDGE, i,Q931ProcSetupAckTE, Q931Umes_SetupAck, Q931Pmes_SetupAck);
|
||||
Q931SetMesProc(Q931mes_RESUME, i,Q931ProcResumeTE, Q931Umes_Resume, Q931Pmes_Resume);
|
||||
Q931SetMesProc(Q931mes_RESUME_ACKNOWLEDGE, i,Q931ProcResumeAckTE, Q931Umes_ResumeAck, Q931Pmes_ResumeAck);
|
||||
Q931SetMesProc(Q931mes_RESUME_REJECT, i,Q931ProcResumeRejectTE, Q931Umes_ResumeReject, Q931Pmes_ResumeReject);
|
||||
Q931SetMesProc(Q931mes_SUSPEND, i,Q931ProcSuspendTE, Q931Umes_Suspend, Q931Pmes_Suspend);
|
||||
Q931SetMesProc(Q931mes_SUSPEND_ACKNOWLEDGE, i,Q931ProcSuspendAckTE, Q931Umes_SuspendAck, Q931Pmes_SuspendAck);
|
||||
Q931SetMesProc(Q931mes_SUSPEND_REJECT, i,Q931ProcSuspendRejectTE, Q931Umes_SuspendReject, Q931Pmes_SuspendReject);
|
||||
Q931SetMesProc(Q931mes_USER_INFORMATION, i,Q931ProcUserInformationTE, Q931Umes_UserInformation, Q931Pmes_UserInformation);
|
||||
Q931SetMesProc(Q931mes_DISCONNECT, i,Q931ProcDisconnectTE, Q931Umes_Disconnect, Q931Pmes_Disconnect);
|
||||
Q931SetMesProc(Q931mes_RELEASE, i,Q931ProcReleaseTE, Q931Umes_Release, Q931Pmes_Release);
|
||||
Q931SetMesProc(Q931mes_RELEASE_COMPLETE, i,Q931ProcReleaseCompleteTE, Q931Umes_ReleaseComplete, Q931Pmes_ReleaseComplete);
|
||||
Q931SetMesProc(Q931mes_RESTART, i,Q931ProcRestartTE, Q931Umes_Restart, Q931Pmes_Restart);
|
||||
Q931SetMesProc(Q931mes_RESTART_ACKNOWLEDGE, i,Q931ProcRestartAckTE, Q931Umes_RestartAck, Q931Pmes_RestartAck);
|
||||
Q931SetMesProc(Q931mes_CONGESTION_CONTROL, i,Q931ProcCongestionControlTE, Q931Umes_CongestionControl, Q931Pmes_CongestionControl);
|
||||
Q931SetMesProc(Q931mes_INFORMATION, i,Q931ProcInformationTE, Q931Umes_Information, Q931Pmes_Information);
|
||||
Q931SetMesProc(Q931mes_NOTIFY, i,Q931ProcNotifyTE, Q931Umes_Notify, Q931Pmes_Notify);
|
||||
Q931SetMesProc(Q931mes_STATUS, i,Q931ProcStatusTE, Q931Umes_Status, Q931Pmes_Status);
|
||||
Q931SetMesProc(Q931mes_STATUS_ENQUIRY, i,Q931ProcStatusEnquiryTE, Q931Umes_StatusEnquiry, Q931Pmes_StatusEnquiry);
|
||||
Q931SetMesProc(Q931mes_SEGMENT, i,Q931ProcSegmentTE, Q931Umes_Segment, Q931Pmes_Segment);
|
||||
Q931SetMesProc(Q931mes_ALERTING, i, Q931ProcAlertingTE, Q931Umes_Alerting, Q931Pmes_Alerting);
|
||||
Q931SetMesProc(Q931mes_CALL_PROCEEDING, i, Q931ProcCallProceedingTE, Q931Umes_CallProceeding, Q931Pmes_CallProceeding);
|
||||
Q931SetMesProc(Q931mes_CONNECT, i, DMSProc0x07TE, DMSUmes_0x07, DMSPmes_0x07);
|
||||
Q931SetMesProc(Q931mes_CONNECT_ACKNOWLEDGE, i, DMSProc0x0fTE, DMSUmes_0x0f, DMSPmes_0x0f);
|
||||
Q931SetMesProc(Q931mes_PROGRESS, i, Q931ProcProgressTE, Q931Umes_Progress, Q931Pmes_Progress);
|
||||
Q931SetMesProc(Q931mes_SETUP, i, Q931ProcSetupTE, nationalUmes_Setup, nationalPmes_Setup);
|
||||
Q931SetMesProc(Q931mes_SETUP_ACKNOWLEDGE, i, Q931ProcSetupAckTE, Q931Umes_SetupAck, Q931Pmes_SetupAck);
|
||||
Q931SetMesProc(Q931mes_RESUME, i, Q931ProcResumeTE, Q931Umes_Resume, Q931Pmes_Resume);
|
||||
Q931SetMesProc(Q931mes_RESUME_ACKNOWLEDGE, i, Q931ProcResumeAckTE, Q931Umes_ResumeAck, Q931Pmes_ResumeAck);
|
||||
Q931SetMesProc(Q931mes_RESUME_REJECT, i, Q931ProcResumeRejectTE, Q931Umes_ResumeReject, Q931Pmes_ResumeReject);
|
||||
Q931SetMesProc(Q931mes_SUSPEND, i, Q931ProcSuspendTE, Q931Umes_Suspend, Q931Pmes_Suspend);
|
||||
Q931SetMesProc(Q931mes_SUSPEND_ACKNOWLEDGE, i, Q931ProcSuspendAckTE, Q931Umes_SuspendAck, Q931Pmes_SuspendAck);
|
||||
Q931SetMesProc(Q931mes_SUSPEND_REJECT, i, Q931ProcSuspendRejectTE, Q931Umes_SuspendReject, Q931Pmes_SuspendReject);
|
||||
Q931SetMesProc(Q931mes_USER_INFORMATION, i, Q931ProcUserInformationTE, Q931Umes_UserInformation, Q931Pmes_UserInformation);
|
||||
Q931SetMesProc(Q931mes_DISCONNECT, i, Q931ProcDisconnectTE, Q931Umes_Disconnect, Q931Pmes_Disconnect);
|
||||
Q931SetMesProc(Q931mes_RELEASE, i, Q931ProcReleaseTE, Q931Umes_Release, Q931Pmes_Release);
|
||||
Q931SetMesProc(Q931mes_RELEASE_COMPLETE, i, Q931ProcReleaseCompleteTE, Q931Umes_ReleaseComplete, Q931Pmes_ReleaseComplete);
|
||||
Q931SetMesProc(Q931mes_RESTART, i, Q931ProcRestartTE, Q931Umes_Restart, Q931Pmes_Restart);
|
||||
Q931SetMesProc(Q931mes_RESTART_ACKNOWLEDGE, i, Q931ProcRestartAckTE, Q931Umes_RestartAck, Q931Pmes_RestartAck);
|
||||
Q931SetMesProc(Q931mes_CONGESTION_CONTROL, i, Q931ProcCongestionControlTE, Q931Umes_CongestionControl, Q931Pmes_CongestionControl);
|
||||
Q931SetMesProc(Q931mes_INFORMATION, i, Q931ProcInformationTE, Q931Umes_Information, Q931Pmes_Information);
|
||||
Q931SetMesProc(Q931mes_NOTIFY, i, Q931ProcNotifyTE, Q931Umes_Notify, Q931Pmes_Notify);
|
||||
Q931SetMesProc(Q931mes_STATUS, i, Q931ProcStatusTE, Q931Umes_Status, Q931Pmes_Status);
|
||||
Q931SetMesProc(Q931mes_STATUS_ENQUIRY, i, Q931ProcStatusEnquiryTE, Q931Umes_StatusEnquiry, Q931Pmes_StatusEnquiry);
|
||||
Q931SetMesProc(Q931mes_SEGMENT, i, Q931ProcSegmentTE, Q931Umes_Segment, Q931Pmes_Segment);
|
||||
|
||||
Q931SetMesProc(Q932mes_FACILITY, i,Q932ProcFacilityTE, Q932Umes_Facility, Q932Pmes_Facility);
|
||||
Q931SetMesProc(Q932mes_HOLD, i,Q932ProcHoldTE, Q932Umes_Hold, Q932Pmes_Hold);
|
||||
Q931SetMesProc(Q932mes_HOLD_ACKNOWLEDGE, i,Q932ProcHoldAckTE, Q932Umes_HoldAck, Q932Pmes_HoldAck);
|
||||
Q931SetMesProc(Q932mes_HOLD_REJECT, i,Q932ProcHoldRejectTE, Q932Umes_HoldReject, Q932Pmes_HoldReject);
|
||||
Q931SetMesProc(Q932mes_REGISTER, i,Q932ProcRegisterTE, Q932Umes_Register, Q932Pmes_Register);
|
||||
Q931SetMesProc(Q932mes_RETRIEVE, i,Q932ProcRetrieveTE, Q932Umes_Retrieve, Q932Pmes_Retrieve);
|
||||
Q931SetMesProc(Q932mes_RETRIEVE_ACKNOWLEDGE,i,Q932ProcRetrieveAckTE, Q932Umes_RetrieveAck, Q932Pmes_RetrieveAck);
|
||||
Q931SetMesProc(Q932mes_RETRIEVE_REJECT, i,Q932ProcRetrieveRejectTE, Q932Umes_RetrieveReject, Q932Pmes_RetrieveReject);
|
||||
Q931SetMesProc(Q932mes_FACILITY, i, Q932ProcFacilityTE, Q932Umes_Facility, Q932Pmes_Facility);
|
||||
Q931SetMesProc(Q932mes_HOLD, i, Q932ProcHoldTE, Q932Umes_Hold, Q932Pmes_Hold);
|
||||
Q931SetMesProc(Q932mes_HOLD_ACKNOWLEDGE, i, Q932ProcHoldAckTE, Q932Umes_HoldAck, Q932Pmes_HoldAck);
|
||||
Q931SetMesProc(Q932mes_HOLD_REJECT, i, Q932ProcHoldRejectTE, Q932Umes_HoldReject, Q932Pmes_HoldReject);
|
||||
Q931SetMesProc(Q932mes_REGISTER, i, Q932ProcRegisterTE, Q932Umes_Register, Q932Pmes_Register);
|
||||
Q931SetMesProc(Q932mes_RETRIEVE, i, Q932ProcRetrieveTE, Q932Umes_Retrieve, Q932Pmes_Retrieve);
|
||||
Q931SetMesProc(Q932mes_RETRIEVE_ACKNOWLEDGE, i, Q932ProcRetrieveAckTE, Q932Umes_RetrieveAck, Q932Pmes_RetrieveAck);
|
||||
Q931SetMesProc(Q932mes_RETRIEVE_REJECT, i, Q932ProcRetrieveRejectTE, Q932Umes_RetrieveReject, Q932Pmes_RetrieveReject);
|
||||
|
||||
/* Set up the IE encoder/decoder handle table.*/
|
||||
Q931SetIEProc(Q931ie_SEGMENTED_MESSAGE, i,Q931Pie_Segment, Q931Uie_Segment);
|
||||
Q931SetIEProc(Q931ie_BEARER_CAPABILITY, i,Q931Pie_BearerCap, Q931Uie_BearerCap);
|
||||
Q931SetIEProc(Q931ie_CAUSE, i,Q931Pie_Cause, Q931Uie_Cause);
|
||||
Q931SetIEProc(Q931ie_CALL_IDENTITY, i,Q931Pie_CallID, Q931Uie_CallID);
|
||||
Q931SetIEProc(Q931ie_CALL_STATE, i,Q931Pie_CallState, Q931Uie_CallState);
|
||||
Q931SetIEProc(Q931ie_CHANGE_STATUS, i,Q931Pie_ChangeStatus, Q931Uie_ChangeStatus);
|
||||
Q931SetIEProc(Q931ie_CHANNEL_IDENTIFICATION, i,Q931Pie_ChanID, Q931Uie_ChanID);
|
||||
Q931SetIEProc(Q931ie_PROGRESS_INDICATOR, i,Q931Pie_ProgInd, Q931Uie_ProgInd);
|
||||
Q931SetIEProc(Q931ie_NETWORK_SPECIFIC_FACILITIES, i,Q931Pie_NetFac, Q931Uie_NetFac);
|
||||
Q931SetIEProc(Q931ie_NOTIFICATION_INDICATOR, i,Q931Pie_NotifInd, Q931Uie_NotifInd);
|
||||
Q931SetIEProc(Q931ie_DISPLAY, i,Q931Pie_Display, Q931Uie_Display);
|
||||
Q931SetIEProc(Q931ie_DATETIME, i,Q931Pie_DateTime, Q931Uie_DateTime);
|
||||
Q931SetIEProc(Q931ie_KEYPAD_FACILITY, i,Q931Pie_KeypadFac, Q931Uie_KeypadFac);
|
||||
Q931SetIEProc(Q931ie_SIGNAL, i,Q931Pie_Signal, Q931Uie_Signal);
|
||||
Q931SetIEProc(Q931ie_TRANSIT_DELAY_SELECTION_AND_IND, i,Q931Pie_TransNetSel, Q931Uie_TransNetSel);
|
||||
Q931SetIEProc(Q931ie_CALLING_PARTY_NUMBER, i,Q931Pie_CallingNum, Q931Uie_CallingNum);
|
||||
Q931SetIEProc(Q931ie_CALLING_PARTY_SUBADDRESS, i,Q931Pie_CallingSub, Q931Uie_CallingSub);
|
||||
Q931SetIEProc(Q931ie_CALLED_PARTY_NUMBER, i,Q931Pie_CalledNum, Q931Uie_CalledNum);
|
||||
Q931SetIEProc(Q931ie_CALLED_PARTY_SUBADDRESS, i,Q931Pie_CalledSub, Q931Uie_CalledSub);
|
||||
Q931SetIEProc(Q931ie_TRANSIT_NETWORK_SELECTION, i,Q931Pie_TransNetSel, Q931Uie_TransNetSel);
|
||||
Q931SetIEProc(Q931ie_RESTART_INDICATOR, i,Q931Pie_RestartInd, Q931Uie_RestartInd);
|
||||
Q931SetIEProc(Q931ie_LOW_LAYER_COMPATIBILITY, i,Q931Pie_LLComp, Q931Uie_LLComp);
|
||||
Q931SetIEProc(Q931ie_HIGH_LAYER_COMPATIBILITY, i,Q931Pie_HLComp, Q931Uie_HLComp);
|
||||
Q931SetIEProc(Q931ie_USER_USER, i,Q931Pie_UserUser, Q931Uie_UserUser);
|
||||
Q931SetIEProc(Q931ie_GENERIC_DIGITS, i,Q931Pie_GenericDigits, Q931Uie_GenericDigits);
|
||||
Q931SetIEProc(Q931ie_SEGMENTED_MESSAGE, i, Q931Pie_Segment, Q931Uie_Segment);
|
||||
Q931SetIEProc(Q931ie_BEARER_CAPABILITY, i, Q931Pie_BearerCap, Q931Uie_BearerCap);
|
||||
Q931SetIEProc(Q931ie_CAUSE, i, Q931Pie_Cause, Q931Uie_Cause);
|
||||
Q931SetIEProc(Q931ie_CALL_IDENTITY, i, Q931Pie_CallID, Q931Uie_CallID);
|
||||
Q931SetIEProc(Q931ie_CALL_STATE, i, Q931Pie_CallState, Q931Uie_CallState);
|
||||
Q931SetIEProc(Q931ie_CHANGE_STATUS, i, Q931Pie_ChangeStatus, Q931Uie_ChangeStatus);
|
||||
Q931SetIEProc(Q931ie_CHANNEL_IDENTIFICATION, i, Q931Pie_ChanID, Q931Uie_ChanID);
|
||||
Q931SetIEProc(Q931ie_PROGRESS_INDICATOR, i, Q931Pie_ProgInd, Q931Uie_ProgInd);
|
||||
Q931SetIEProc(Q931ie_NETWORK_SPECIFIC_FACILITIES, i, Q931Pie_NetFac, Q931Uie_NetFac);
|
||||
Q931SetIEProc(Q931ie_NOTIFICATION_INDICATOR, i, Q931Pie_NotifInd, Q931Uie_NotifInd);
|
||||
Q931SetIEProc(Q931ie_DISPLAY, i, Q931Pie_Display, Q931Uie_Display);
|
||||
Q931SetIEProc(Q931ie_DATETIME, i, Q931Pie_DateTime, Q931Uie_DateTime);
|
||||
Q931SetIEProc(Q931ie_KEYPAD_FACILITY, i, Q931Pie_KeypadFac, Q931Uie_KeypadFac);
|
||||
Q931SetIEProc(Q931ie_SIGNAL, i, Q931Pie_Signal, Q931Uie_Signal);
|
||||
Q931SetIEProc(Q931ie_TRANSIT_DELAY_SELECTION_AND_IND, i, Q931Pie_TransNetSel, Q931Uie_TransNetSel);
|
||||
Q931SetIEProc(Q931ie_CALLING_PARTY_NUMBER, i, Q931Pie_CallingNum, Q931Uie_CallingNum);
|
||||
Q931SetIEProc(Q931ie_CALLING_PARTY_SUBADDRESS, i, Q931Pie_CallingSub, Q931Uie_CallingSub);
|
||||
Q931SetIEProc(Q931ie_CALLED_PARTY_NUMBER, i, Q931Pie_CalledNum, Q931Uie_CalledNum);
|
||||
Q931SetIEProc(Q931ie_CALLED_PARTY_SUBADDRESS, i, Q931Pie_CalledSub, Q931Uie_CalledSub);
|
||||
Q931SetIEProc(Q931ie_TRANSIT_NETWORK_SELECTION, i, Q931Pie_TransNetSel, Q931Uie_TransNetSel);
|
||||
Q931SetIEProc(Q931ie_RESTART_INDICATOR, i, Q931Pie_RestartInd, Q931Uie_RestartInd);
|
||||
Q931SetIEProc(Q931ie_LOW_LAYER_COMPATIBILITY, i, Q931Pie_LLComp, Q931Uie_LLComp);
|
||||
Q931SetIEProc(Q931ie_HIGH_LAYER_COMPATIBILITY, i, Q931Pie_HLComp, Q931Uie_HLComp);
|
||||
Q931SetIEProc(Q931ie_USER_USER, i, Q931Pie_UserUser, Q931Uie_UserUser);
|
||||
Q931SetIEProc(Q931ie_GENERIC_DIGITS, i, Q931Pie_GenericDigits, Q931Uie_GenericDigits);
|
||||
|
||||
Q931SetIEProc(Q931ie_CONNECTED_NUMBER, i, Q931Pie_Generic, Q931Uie_Generic);
|
||||
Q931SetIEProc(Q931ie_FACILITY, i, Q931Pie_Generic, Q931Uie_Generic);
|
||||
|
||||
/* The following define a state machine. The point is that the Message */
|
||||
/* procs can when search this to find out if the message/state */
|
||||
/* combination is legale. If not, the proc for unexpected message apply.*/
|
||||
/* The following define a state machine. The point is that the Message
|
||||
* procs can when search this to find out if the message/state
|
||||
* combination is legale. If not, the proc for unexpected message apply.
|
||||
*/
|
||||
|
||||
/* State 0 Idle */
|
||||
Q931AddStateEntry(i,Q931_U0, Q931mes_RESUME, 2);
|
||||
Q931AddStateEntry(i,Q931_U0, Q931mes_SETUP, 4);
|
||||
Q931AddStateEntry(i,Q931_U0, Q931mes_SETUP, 2);
|
||||
Q931AddStateEntry(i,Q931_U0, Q931mes_STATUS, 4);
|
||||
Q931AddStateEntry(i,Q931_U0, Q931mes_RELEASE, 4);
|
||||
Q931AddStateEntry(i,Q931_U0, Q931mes_RELEASE_COMPLETE,4);
|
||||
Q931AddStateEntry(i, Q931_U0, Q931mes_RESUME, 2);
|
||||
Q931AddStateEntry(i, Q931_U0, Q931mes_SETUP, 4);
|
||||
Q931AddStateEntry(i, Q931_U0, Q931mes_SETUP, 2);
|
||||
Q931AddStateEntry(i, Q931_U0, Q931mes_STATUS, 4);
|
||||
Q931AddStateEntry(i, Q931_U0, Q931mes_RELEASE, 4);
|
||||
Q931AddStateEntry(i, Q931_U0, Q931mes_RELEASE_COMPLETE, 4);
|
||||
|
||||
/* State 1 Call Initiating */
|
||||
Q931AddStateEntry(i,Q931_U1, Q931mes_DISCONNECT, 2);
|
||||
Q931AddStateEntry(i,Q931_U1, Q931mes_SETUP_ACKNOWLEDGE, 4);
|
||||
Q931AddStateEntry(i,Q931_U1, Q931mes_RELEASE_COMPLETE,4);
|
||||
Q931AddStateEntry(i,Q931_U1, Q931mes_CALL_PROCEEDING, 4);
|
||||
Q931AddStateEntry(i,Q931_U1, Q931mes_ALERTING, 4);
|
||||
Q931AddStateEntry(i,Q931_U1, Q931mes_CONNECT, 4);
|
||||
Q931AddStateEntry(i, Q931_U1, Q931mes_DISCONNECT, 2);
|
||||
Q931AddStateEntry(i, Q931_U1, Q931mes_SETUP_ACKNOWLEDGE, 4);
|
||||
Q931AddStateEntry(i, Q931_U1, Q931mes_RELEASE_COMPLETE, 4);
|
||||
Q931AddStateEntry(i, Q931_U1, Q931mes_CALL_PROCEEDING, 4);
|
||||
Q931AddStateEntry(i, Q931_U1, Q931mes_ALERTING, 4);
|
||||
Q931AddStateEntry(i, Q931_U1, Q931mes_CONNECT, 4);
|
||||
|
||||
/* State 2 Overlap Sending */
|
||||
Q931AddStateEntry(i,Q931_U2, Q931mes_INFORMATION, 2);
|
||||
Q931AddStateEntry(i,Q931_U2, Q931mes_CALL_PROCEEDING, 4);
|
||||
Q931AddStateEntry(i,Q931_U2, Q931mes_ALERTING, 4);
|
||||
Q931AddStateEntry(i,Q931_U2, Q931mes_PROGRESS, 4);
|
||||
Q931AddStateEntry(i,Q931_U2, Q931mes_CONNECT, 4);
|
||||
Q931AddStateEntry(i,Q931_U2, Q931mes_RELEASE, 2);
|
||||
Q931AddStateEntry(i, Q931_U2, Q931mes_INFORMATION, 2);
|
||||
Q931AddStateEntry(i, Q931_U2, Q931mes_CALL_PROCEEDING, 4);
|
||||
Q931AddStateEntry(i, Q931_U2, Q931mes_ALERTING, 4);
|
||||
Q931AddStateEntry(i, Q931_U2, Q931mes_PROGRESS, 4);
|
||||
Q931AddStateEntry(i, Q931_U2, Q931mes_CONNECT, 4);
|
||||
Q931AddStateEntry(i, Q931_U2, Q931mes_RELEASE, 2);
|
||||
|
||||
/* State 3 Outgoing Call Proceeding */
|
||||
Q931AddStateEntry(i,Q931_U3, Q931mes_PROGRESS, 4);
|
||||
Q931AddStateEntry(i,Q931_U3, Q931mes_ALERTING, 4);
|
||||
Q931AddStateEntry(i,Q931_U3, Q931mes_CONNECT, 4);
|
||||
Q931AddStateEntry(i,Q931_U3, Q931mes_RELEASE, 2);
|
||||
Q931AddStateEntry(i, Q931_U3, Q931mes_PROGRESS, 4);
|
||||
Q931AddStateEntry(i, Q931_U3, Q931mes_ALERTING, 4);
|
||||
Q931AddStateEntry(i, Q931_U3, Q931mes_CONNECT, 4);
|
||||
Q931AddStateEntry(i, Q931_U3, Q931mes_RELEASE, 2);
|
||||
|
||||
/* State 4 Call Delivered */
|
||||
Q931AddStateEntry(i,Q931_U4, Q931mes_CONNECT, 4);
|
||||
Q931AddStateEntry(i, Q931_U4, Q931mes_CONNECT, 4);
|
||||
|
||||
/* State 6 Call Precent */
|
||||
Q931AddStateEntry(i,Q931_U6, Q931mes_INFORMATION, 2);
|
||||
Q931AddStateEntry(i,Q931_U6, Q931mes_ALERTING, 2);
|
||||
Q931AddStateEntry(i,Q931_U6, Q931mes_CALL_PROCEEDING,2);
|
||||
Q931AddStateEntry(i,Q931_U6, Q931mes_CONNECT, 2);
|
||||
Q931AddStateEntry(i,Q931_U6, Q931mes_RELEASE_COMPLETE,2);
|
||||
Q931AddStateEntry(i,Q931_U6, Q931mes_RELEASE, 4);
|
||||
Q931AddStateEntry(i,Q931_U6, Q931mes_DISCONNECT, 4);
|
||||
Q931AddStateEntry(i, Q931_U6, Q931mes_INFORMATION, 2);
|
||||
Q931AddStateEntry(i, Q931_U6, Q931mes_ALERTING, 2);
|
||||
Q931AddStateEntry(i, Q931_U6, Q931mes_CALL_PROCEEDING, 2);
|
||||
Q931AddStateEntry(i, Q931_U6, Q931mes_CONNECT, 2);
|
||||
Q931AddStateEntry(i, Q931_U6, Q931mes_RELEASE_COMPLETE, 2);
|
||||
Q931AddStateEntry(i, Q931_U6, Q931mes_RELEASE, 4);
|
||||
Q931AddStateEntry(i, Q931_U6, Q931mes_DISCONNECT, 4);
|
||||
|
||||
/* State 7 Call Received */
|
||||
Q931AddStateEntry(i,Q931_U7, Q931mes_CONNECT, 2);
|
||||
Q931AddStateEntry(i, Q931_U7, Q931mes_CONNECT, 2);
|
||||
|
||||
/* State 8 Connect request */
|
||||
Q931AddStateEntry(i,Q931_U8, Q931mes_CONNECT_ACKNOWLEDGE, 4);
|
||||
Q931AddStateEntry(i, Q931_U8, Q931mes_CONNECT_ACKNOWLEDGE, 4);
|
||||
|
||||
/* State 9 Incoming Call Proceeding */
|
||||
Q931AddStateEntry(i,Q931_U9, Q931mes_CONNECT, 2);
|
||||
Q931AddStateEntry(i,Q931_U9, Q931mes_ALERTING, 2);
|
||||
Q931AddStateEntry(i,Q931_U9, Q931mes_PROGRESS, 2);
|
||||
Q931AddStateEntry(i, Q931_U9, Q931mes_CONNECT, 2);
|
||||
Q931AddStateEntry(i, Q931_U9, Q931mes_ALERTING, 2);
|
||||
Q931AddStateEntry(i, Q931_U9, Q931mes_PROGRESS, 2);
|
||||
|
||||
/* State 10 Active */
|
||||
Q931AddStateEntry(i,Q931_U10, Q931mes_SUSPEND, 2);
|
||||
Q931AddStateEntry(i,Q931_U10, Q931mes_NOTIFY, 4);
|
||||
Q931AddStateEntry(i,Q931_U10, Q931mes_NOTIFY, 2);
|
||||
Q931AddStateEntry(i, Q931_U10, Q931mes_SUSPEND, 2);
|
||||
Q931AddStateEntry(i, Q931_U10, Q931mes_NOTIFY, 4);
|
||||
Q931AddStateEntry(i, Q931_U10, Q931mes_NOTIFY, 2);
|
||||
|
||||
/* State 11 Disconnect Request */
|
||||
Q931AddStateEntry(i,Q931_U11, Q931mes_RELEASE, 4);
|
||||
Q931AddStateEntry(i,Q931_U11, Q931mes_DISCONNECT, 4);
|
||||
Q931AddStateEntry(i,Q931_U11, Q931mes_NOTIFY, 4);
|
||||
Q931AddStateEntry(i, Q931_U11, Q931mes_RELEASE, 4);
|
||||
Q931AddStateEntry(i, Q931_U11, Q931mes_DISCONNECT, 4);
|
||||
Q931AddStateEntry(i, Q931_U11, Q931mes_NOTIFY, 4);
|
||||
|
||||
/* State 12 Disconnect Ind */
|
||||
Q931AddStateEntry(i,Q931_U12, Q931mes_RELEASE, 4);
|
||||
Q931AddStateEntry(i,Q931_U12, Q931mes_RELEASE, 2);
|
||||
Q931AddStateEntry(i, Q931_U12, Q931mes_RELEASE, 4);
|
||||
Q931AddStateEntry(i, Q931_U12, Q931mes_RELEASE, 2);
|
||||
|
||||
/* State 15 Suspend Request */
|
||||
Q931AddStateEntry(i,Q931_U15, Q931mes_SUSPEND_ACKNOWLEDGE, 4);
|
||||
Q931AddStateEntry(i,Q931_U15, Q931mes_SUSPEND_REJECT, 4);
|
||||
Q931AddStateEntry(i,Q931_U15, Q931mes_DISCONNECT, 4);
|
||||
Q931AddStateEntry(i,Q931_U15, Q931mes_RELEASE, 4);
|
||||
Q931AddStateEntry(i, Q931_U15, Q931mes_SUSPEND_ACKNOWLEDGE, 4);
|
||||
Q931AddStateEntry(i, Q931_U15, Q931mes_SUSPEND_REJECT, 4);
|
||||
Q931AddStateEntry(i, Q931_U15, Q931mes_DISCONNECT, 4);
|
||||
Q931AddStateEntry(i, Q931_U15, Q931mes_RELEASE, 4);
|
||||
|
||||
/* TODO
|
||||
Q931AddStateEntry(i,Q931_U17,
|
||||
Q931AddStateEntry(i,Q931_U19,
|
||||
Q931AddStateEntry(i,Q931_U25,
|
||||
Q931AddStateEntry(i, Q931_U17,
|
||||
Q931AddStateEntry(i, Q931_U19,
|
||||
Q931AddStateEntry(i, Q931_U25,
|
||||
*/
|
||||
}
|
||||
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
/*****************************************************************************
|
||||
|
||||
FileName: nationalmes.c
|
||||
FileName: nationalmes.c
|
||||
|
||||
Contents: Pack/Unpack functions. These functions will unpack a National ISDN
|
||||
message from the bit packed original format into structs
|
||||
that contains variables sized by the user. It will also pack
|
||||
the struct back into a Q.931 message as required.
|
||||
Contents: Pack/Unpack functions. These functions will unpack a National ISDN
|
||||
message from the bit packed original format into structs
|
||||
that contains variables sized by the user. It will also pack
|
||||
the struct back into a Q.931 message as required.
|
||||
|
||||
See national.h for description.
|
||||
See national.h for description.
|
||||
|
||||
License/Copyright:
|
||||
|
||||
@@ -21,12 +21,12 @@
|
||||
modification, are permitted provided that the following conditions are
|
||||
met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright notice,
|
||||
* Redistributions of source code must retain the above copyright notice,
|
||||
this list of conditions and the following disclaimer.
|
||||
* Redistributions in binary form must reproduce the above copyright notice,
|
||||
* Redistributions in binary form must reproduce the above copyright notice,
|
||||
this list of conditions and the following disclaimer in the documentation
|
||||
and/or other materials provided with the distribution.
|
||||
* Neither the name of the Case Labs, Ltd nor the names of its contributors
|
||||
* Neither the name of the Case Labs, Ltd nor the names of its contributors
|
||||
may be used to endorse or promote products derived from this software
|
||||
without specific prior written permission.
|
||||
|
||||
@@ -48,19 +48,18 @@
|
||||
|
||||
/*****************************************************************************
|
||||
|
||||
Function: nationalUmes_Setup
|
||||
Function: nationalUmes_Setup
|
||||
|
||||
*****************************************************************************/
|
||||
L3INT nationalUmes_Setup(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, Q931mes_Generic *mes, L3INT IOff, L3INT Size)
|
||||
{
|
||||
L3INT ir=0;
|
||||
L3INT OOff=0;
|
||||
L3INT rc=Q931E_NO_ERROR;
|
||||
L3INT ir = 0;
|
||||
L3INT OOff = 0;
|
||||
L3INT rc = Q931E_NO_ERROR;
|
||||
L3UCHAR last_codeset = 0, codeset = 0;
|
||||
L3UCHAR shift_lock = 1;
|
||||
|
||||
while(IOff < Size)
|
||||
{
|
||||
while (IOff < Size) {
|
||||
if (!shift_lock) {
|
||||
codeset = last_codeset;
|
||||
}
|
||||
@@ -75,8 +74,7 @@ L3INT nationalUmes_Setup(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, Q931mes_Generi
|
||||
}
|
||||
|
||||
if (codeset == 0) {
|
||||
switch(IBuf[IOff])
|
||||
{
|
||||
switch (IBuf[IOff]) {
|
||||
case Q931ie_SENDING_COMPLETE:
|
||||
case Q931ie_BEARER_CAPABILITY:
|
||||
case Q931ie_CHANNEL_IDENTIFICATION:
|
||||
@@ -94,11 +92,11 @@ L3INT nationalUmes_Setup(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, Q931mes_Generi
|
||||
case Q931ie_LOW_LAYER_COMPATIBILITY:
|
||||
case Q931ie_HIGH_LAYER_COMPATIBILITY:
|
||||
rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, mes, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
|
||||
if(rc != Q931E_NO_ERROR)
|
||||
if (rc != Q931E_NO_ERROR)
|
||||
return rc;
|
||||
break;
|
||||
case Q931ie_REPEAT_INDICATOR:
|
||||
if(ir < 2) {
|
||||
if (ir < 2) {
|
||||
rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, mes, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
|
||||
ir++;
|
||||
} else {
|
||||
@@ -110,11 +108,10 @@ L3INT nationalUmes_Setup(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, Q931mes_Generi
|
||||
break;
|
||||
}
|
||||
} else if (codeset == 6) {
|
||||
switch(IBuf[IOff])
|
||||
{
|
||||
switch (IBuf[IOff]) {
|
||||
case Q931ie_GENERIC_DIGITS:
|
||||
rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, mes, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
|
||||
if(rc != Q931E_NO_ERROR)
|
||||
if (rc != Q931E_NO_ERROR)
|
||||
return rc;
|
||||
break;
|
||||
default:
|
||||
@@ -126,13 +123,13 @@ L3INT nationalUmes_Setup(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, Q931mes_Generi
|
||||
return Q931E_ILLEGAL_IE;
|
||||
}
|
||||
}
|
||||
mes->Size = sizeof(Q931mes_Generic) - 1 + OOff;
|
||||
return Q931E_NO_ERROR;
|
||||
mes->Size = sizeof(Q931mes_Generic) - 1 + OOff;
|
||||
return Q931E_NO_ERROR;
|
||||
}
|
||||
|
||||
/*****************************************************************************
|
||||
|
||||
Function: nationalPmes_Setup
|
||||
Function: nationalPmes_Setup
|
||||
|
||||
Decription: Pack a Q931mes_Generic into a real Q.931 message. The user will
|
||||
set up a SETUP message and issue this to the stack where it
|
||||
@@ -150,109 +147,121 @@ L3INT nationalUmes_Setup(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, Q931mes_Generi
|
||||
*****************************************************************************/
|
||||
L3INT nationalPmes_Setup(Q931_TrunkInfo_t *pTrunk, Q931mes_Generic *IBuf, L3INT ISize, L3UCHAR *OBuf, L3INT *OSize)
|
||||
{
|
||||
L3INT rc = Q931E_NO_ERROR;
|
||||
L3INT rc = Q931E_NO_ERROR;
|
||||
Q931mes_Generic *pMes = (Q931mes_Generic *)IBuf;
|
||||
L3INT Octet = 0;
|
||||
|
||||
/* Q931 Message Header */
|
||||
Q931MesgHeader(pTrunk, pMes, OBuf, *OSize, &Octet);
|
||||
|
||||
/* Sending Complete */
|
||||
if(Q931IsIEPresent(pMes->SendComplete))
|
||||
|
||||
/* Sending Complete */
|
||||
if (Q931IsIEPresent(pMes->SendComplete)) {
|
||||
OBuf[Octet++] = (L3UCHAR)(pMes->SendComplete & 0x00ff);
|
||||
}
|
||||
|
||||
/* Repeat Indicator */
|
||||
if(Q931IsIEPresent(pMes->RepeatInd))
|
||||
if (Q931IsIEPresent(pMes->RepeatInd)) {
|
||||
OBuf[Octet++] = (L3UCHAR)(pMes->RepeatInd & 0x00ff);
|
||||
}
|
||||
|
||||
/* Bearer capability */
|
||||
if(Q931IsIEPresent(pMes->BearerCap))
|
||||
{
|
||||
if((rc=Q931Pie[pTrunk->Dialect][Q931ie_BEARER_CAPABILITY](pTrunk, Q931GetIEPtr(pMes->BearerCap,pMes->buf), OBuf, &Octet))!=0)
|
||||
if (Q931IsIEPresent(pMes->BearerCap)) {
|
||||
if ((rc = Q931Pie[pTrunk->Dialect][Q931ie_BEARER_CAPABILITY](pTrunk, Q931GetIEPtr(pMes->BearerCap,pMes->buf), OBuf, &Octet)) != 0)
|
||||
return rc;
|
||||
}
|
||||
else
|
||||
{
|
||||
rc=Q931E_BEARERCAP;
|
||||
else {
|
||||
rc = Q931E_BEARERCAP;
|
||||
}
|
||||
|
||||
/* Channel Identification */
|
||||
if(Q931IsIEPresent(pMes->ChanID))
|
||||
if((rc=Q931Pie[pTrunk->Dialect][Q931ie_CHANNEL_IDENTIFICATION](pTrunk, Q931GetIEPtr(pMes->ChanID,pMes->buf), OBuf, &Octet))!=0)
|
||||
if (Q931IsIEPresent(pMes->ChanID)) {
|
||||
if ((rc = Q931Pie[pTrunk->Dialect][Q931ie_CHANNEL_IDENTIFICATION](pTrunk, Q931GetIEPtr(pMes->ChanID,pMes->buf), OBuf, &Octet)) != 0)
|
||||
return rc;
|
||||
}
|
||||
|
||||
/* Progress indicator */
|
||||
if(Q931IsIEPresent(pMes->ProgInd))
|
||||
if((rc=Q931Pie[pTrunk->Dialect][Q931ie_PROGRESS_INDICATOR](pTrunk, Q931GetIEPtr(pMes->ProgInd,pMes->buf), OBuf, &Octet))!=0)
|
||||
if (Q931IsIEPresent(pMes->ProgInd)) {
|
||||
if ((rc = Q931Pie[pTrunk->Dialect][Q931ie_PROGRESS_INDICATOR](pTrunk, Q931GetIEPtr(pMes->ProgInd,pMes->buf), OBuf, &Octet)) != 0)
|
||||
return rc;
|
||||
}
|
||||
|
||||
/* Network spesific facilities */
|
||||
if(Q931IsIEPresent(pMes->NetFac))
|
||||
if((rc=Q931Pie[pTrunk->Dialect][Q931ie_NETWORK_SPECIFIC_FACILITIES](pTrunk, Q931GetIEPtr(pMes->NetFac,pMes->buf), OBuf, &Octet))!=0)
|
||||
if (Q931IsIEPresent(pMes->NetFac)) {
|
||||
if ((rc = Q931Pie[pTrunk->Dialect][Q931ie_NETWORK_SPECIFIC_FACILITIES](pTrunk, Q931GetIEPtr(pMes->NetFac,pMes->buf), OBuf, &Octet)) != 0)
|
||||
return rc;
|
||||
}
|
||||
|
||||
/* Display */
|
||||
if(Q931IsIEPresent(pMes->Display))
|
||||
if((rc=Q931Pie[pTrunk->Dialect][Q931ie_DISPLAY](pTrunk, Q931GetIEPtr(pMes->Display,pMes->buf), OBuf, &Octet))!=0)
|
||||
if (Q931IsIEPresent(pMes->Display)) {
|
||||
if ((rc = Q931Pie[pTrunk->Dialect][Q931ie_DISPLAY](pTrunk, Q931GetIEPtr(pMes->Display,pMes->buf), OBuf, &Octet)) != 0)
|
||||
return rc;
|
||||
}
|
||||
|
||||
/* Date/Time */
|
||||
if(Q931IsIEPresent(pMes->DateTime))
|
||||
if((rc=Q931Pie[pTrunk->Dialect][Q931ie_DATETIME](pTrunk, Q931GetIEPtr(pMes->DateTime,pMes->buf), OBuf, &Octet))!=0)
|
||||
if (Q931IsIEPresent(pMes->DateTime)) {
|
||||
if ((rc = Q931Pie[pTrunk->Dialect][Q931ie_DATETIME](pTrunk, Q931GetIEPtr(pMes->DateTime,pMes->buf), OBuf, &Octet)) != 0)
|
||||
return rc;
|
||||
}
|
||||
|
||||
/* Keypad Facility */
|
||||
if(Q931IsIEPresent(pMes->KeypadFac))
|
||||
if((rc=Q931Pie[pTrunk->Dialect][Q931ie_KEYPAD_FACILITY](pTrunk, Q931GetIEPtr(pMes->KeypadFac,pMes->buf), OBuf, &Octet))!=0)
|
||||
if (Q931IsIEPresent(pMes->KeypadFac)) {
|
||||
if ((rc = Q931Pie[pTrunk->Dialect][Q931ie_KEYPAD_FACILITY](pTrunk, Q931GetIEPtr(pMes->KeypadFac,pMes->buf), OBuf, &Octet)) != 0)
|
||||
return rc;
|
||||
}
|
||||
|
||||
/* Signal */
|
||||
if(Q931IsIEPresent(pMes->Signal))
|
||||
if((rc=Q931Pie[pTrunk->Dialect][Q931ie_SIGNAL](pTrunk, Q931GetIEPtr(pMes->Signal,pMes->buf), OBuf, &Octet))!=0)
|
||||
if (Q931IsIEPresent(pMes->Signal)) {
|
||||
if ((rc = Q931Pie[pTrunk->Dialect][Q931ie_SIGNAL](pTrunk, Q931GetIEPtr(pMes->Signal,pMes->buf), OBuf, &Octet)) != 0)
|
||||
return rc;
|
||||
}
|
||||
|
||||
/* Calling Party Number */
|
||||
if(Q931IsIEPresent(pMes->CallingNum))
|
||||
if((rc=Q931Pie[pTrunk->Dialect][Q931ie_CALLING_PARTY_NUMBER](pTrunk, Q931GetIEPtr(pMes->CallingNum,pMes->buf), OBuf, &Octet))!=0)
|
||||
if (Q931IsIEPresent(pMes->CallingNum)) {
|
||||
if ((rc = Q931Pie[pTrunk->Dialect][Q931ie_CALLING_PARTY_NUMBER](pTrunk, Q931GetIEPtr(pMes->CallingNum,pMes->buf), OBuf, &Octet)) != 0)
|
||||
return rc;
|
||||
}
|
||||
|
||||
/* Calling Party Subaddress */
|
||||
if(Q931IsIEPresent(pMes->CallingSub))
|
||||
if((rc=Q931Pie[pTrunk->Dialect][Q931ie_CALLING_PARTY_SUBADDRESS](pTrunk, Q931GetIEPtr(pMes->CallingSub,pMes->buf), OBuf, &Octet))!=0)
|
||||
if (Q931IsIEPresent(pMes->CallingSub)) {
|
||||
if ((rc = Q931Pie[pTrunk->Dialect][Q931ie_CALLING_PARTY_SUBADDRESS](pTrunk, Q931GetIEPtr(pMes->CallingSub,pMes->buf), OBuf, &Octet)) != 0)
|
||||
return rc;
|
||||
}
|
||||
|
||||
/* Called Party number */
|
||||
if(Q931IsIEPresent(pMes->CalledNum))
|
||||
if((rc=Q931Pie[pTrunk->Dialect][Q931ie_CALLED_PARTY_NUMBER](pTrunk, Q931GetIEPtr(pMes->CalledNum,pMes->buf), OBuf, &Octet))!=0)
|
||||
if (Q931IsIEPresent(pMes->CalledNum)) {
|
||||
if ((rc = Q931Pie[pTrunk->Dialect][Q931ie_CALLED_PARTY_NUMBER](pTrunk, Q931GetIEPtr(pMes->CalledNum,pMes->buf), OBuf, &Octet)) != 0)
|
||||
return rc;
|
||||
}
|
||||
|
||||
/* Called party subaddress */
|
||||
if(Q931IsIEPresent(pMes->CalledSub))
|
||||
if((rc=Q931Pie[pTrunk->Dialect][Q931ie_CALLED_PARTY_SUBADDRESS](pTrunk, Q931GetIEPtr(pMes->CalledSub,pMes->buf), OBuf, &Octet))!=0)
|
||||
if (Q931IsIEPresent(pMes->CalledSub)) {
|
||||
if ((rc = Q931Pie[pTrunk->Dialect][Q931ie_CALLED_PARTY_SUBADDRESS](pTrunk, Q931GetIEPtr(pMes->CalledSub,pMes->buf), OBuf, &Octet)) != 0)
|
||||
return rc;
|
||||
}
|
||||
|
||||
/* Transit network selection */
|
||||
if(Q931IsIEPresent(pMes->TransNetSel))
|
||||
if((rc=Q931Pie[pTrunk->Dialect][Q931ie_TRANSIT_NETWORK_SELECTION](pTrunk, Q931GetIEPtr(pMes->TransNetSel,pMes->buf), OBuf, &Octet))!=0)
|
||||
if (Q931IsIEPresent(pMes->TransNetSel)) {
|
||||
if ((rc = Q931Pie[pTrunk->Dialect][Q931ie_TRANSIT_NETWORK_SELECTION](pTrunk, Q931GetIEPtr(pMes->TransNetSel,pMes->buf), OBuf, &Octet)) != 0)
|
||||
return rc;
|
||||
}
|
||||
|
||||
/* Repeat Indicator */
|
||||
if(Q931IsIEPresent(pMes->LLRepeatInd))
|
||||
if (Q931IsIEPresent(pMes->LLRepeatInd)) {
|
||||
rc = Q931E_UNKNOWN_IE;/* TODO */
|
||||
}
|
||||
|
||||
/* Low Layer Compatibility */
|
||||
if(Q931IsIEPresent(pMes->LLComp))
|
||||
if((rc=Q931Pie[pTrunk->Dialect][Q931ie_LOW_LAYER_COMPATIBILITY](pTrunk, Q931GetIEPtr(pMes->LLComp,pMes->buf), OBuf, &Octet))!=0)
|
||||
if (Q931IsIEPresent(pMes->LLComp)) {
|
||||
if ((rc = Q931Pie[pTrunk->Dialect][Q931ie_LOW_LAYER_COMPATIBILITY](pTrunk, Q931GetIEPtr(pMes->LLComp,pMes->buf), OBuf, &Octet)) != 0)
|
||||
return rc;
|
||||
}
|
||||
|
||||
/* High Layer Compatibility */
|
||||
if(Q931IsIEPresent(pMes->HLComp))
|
||||
if((rc=Q931Pie[pTrunk->Dialect][Q931ie_HIGH_LAYER_COMPATIBILITY](pTrunk, Q931GetIEPtr(pMes->HLComp,pMes->buf), OBuf, &Octet))!=0)
|
||||
if (Q931IsIEPresent(pMes->HLComp)) {
|
||||
if ((rc = Q931Pie[pTrunk->Dialect][Q931ie_HIGH_LAYER_COMPATIBILITY](pTrunk, Q931GetIEPtr(pMes->HLComp,pMes->buf), OBuf, &Octet)) != 0)
|
||||
return rc;
|
||||
}
|
||||
|
||||
*OSize = Octet;
|
||||
|
||||
return rc;
|
||||
return rc;
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user