[libpri-commits] rmudgett: branch group/issue14292 r745 - /team/group/issue14292/
SVN commits to the libpri project
libpri-commits at lists.digium.com
Thu Apr 16 19:52:50 CDT 2009
Author: rmudgett
Date: Thu Apr 16 19:52:47 2009
New Revision: 745
URL: http://svn.digium.com/svn-view/libpri?view=rev&rev=745
Log:
Added ETSI CCBS/CCNR and Status-Request encode/decode routines.
Added:
team/group/issue14292/rose_etsi_cc.c (with props)
Modified:
team/group/issue14292/Makefile
team/group/issue14292/pri_facility.c
team/group/issue14292/rose.c
team/group/issue14292/rose.h
team/group/issue14292/rose_internal.h
team/group/issue14292/rosetest.c
Modified: team/group/issue14292/Makefile
URL: http://svn.digium.com/svn-view/libpri/team/group/issue14292/Makefile?view=diff&rev=745&r1=744&r2=745
==============================================================================
--- team/group/issue14292/Makefile (original)
+++ team/group/issue14292/Makefile Thu Apr 16 19:52:47 2009
@@ -52,6 +52,7 @@
rose.o \
rose_address.o \
rose_etsi_aoc.o \
+ rose_etsi_cc.o \
rose_etsi_diversion.o \
rose_etsi_ect.o \
rose_other.o \
@@ -73,6 +74,7 @@
rose.lo \
rose_address.lo \
rose_etsi_aoc.lo \
+ rose_etsi_cc.lo \
rose_etsi_diversion.lo \
rose_etsi_ect.lo \
rose_other.lo \
Modified: team/group/issue14292/pri_facility.c
URL: http://svn.digium.com/svn-view/libpri/team/group/issue14292/pri_facility.c?view=diff&rev=745&r1=744&r2=745
==============================================================================
--- team/group/issue14292/pri_facility.c (original)
+++ team/group/issue14292/pri_facility.c Thu Apr 16 19:52:47 2009
@@ -2221,6 +2221,30 @@
break;
#endif /* Not handled yet */
#if 0 /* Not handled yet */
+ case ROSE_ETSI_StatusRequest:
+ break;
+#endif /* Not handled yet */
+#if 0 /* Not handled yet */
+ case ROSE_ETSI_CCBSRequest:
+ break;
+ case ROSE_ETSI_CCBSDeactivate:
+ break;
+ case ROSE_ETSI_CCBSInterrogate:
+ break;
+ case ROSE_ETSI_CCBSStatusRequest:
+ break;
+ case ROSE_ETSI_CCBS_T_Request:
+ break;
+#endif /* Not handled yet */
+#if 0 /* Not handled yet */
+ case ROSE_ETSI_CCNRRequest:
+ break;
+ case ROSE_ETSI_CCNRInterrogate:
+ break;
+ case ROSE_ETSI_CCNR_T_Request:
+ break;
+#endif /* Not handled yet */
+#if 0 /* Not handled yet */
case ROSE_QSIG_CallTransferIdentify:
break;
case ROSE_QSIG_CallTransferInitiate:
@@ -2389,6 +2413,54 @@
case ROSE_ETSI_EctInform:
break;
case ROSE_ETSI_EctLoopTest:
+ break;
+#endif /* Not handled yet */
+#if 0 /* Not handled yet */
+ case ROSE_ETSI_StatusRequest:
+ break;
+#endif /* Not handled yet */
+#if 0 /* Not handled yet */
+ case ROSE_ETSI_CallInfoRetain:
+ break;
+ case ROSE_ETSI_CCBSRequest:
+ break;
+ case ROSE_ETSI_CCBSDeactivate:
+ break;
+ case ROSE_ETSI_CCBSInterrogate:
+ break;
+ case ROSE_ETSI_CCBSErase:
+ break;
+ case ROSE_ETSI_CCBSRemoteUserFree:
+ break;
+ case ROSE_ETSI_CCBSCall:
+ break;
+ case ROSE_ETSI_CCBSStatusRequest:
+ break;
+ case ROSE_ETSI_CCBSBFree:
+ break;
+ case ROSE_ETSI_EraseCallLinkageID:
+ break;
+ case ROSE_ETSI_CCBSStopAlerting:
+ break;
+ case ROSE_ETSI_CCBS_T_Request:
+ break;
+ case ROSE_ETSI_CCBS_T_Call:
+ break;
+ case ROSE_ETSI_CCBS_T_Suspend:
+ break;
+ case ROSE_ETSI_CCBS_T_Resume:
+ break;
+ case ROSE_ETSI_CCBS_T_RemoteUserFree:
+ break;
+ case ROSE_ETSI_CCBS_T_Available:
+ break;
+#endif /* Not handled yet */
+#if 0 /* Not handled yet */
+ case ROSE_ETSI_CCNRRequest:
+ break;
+ case ROSE_ETSI_CCNRInterrogate:
+ break;
+ case ROSE_ETSI_CCNR_T_Request:
break;
#endif /* Not handled yet */
case ROSE_QSIG_CallingName:
Modified: team/group/issue14292/rose.c
URL: http://svn.digium.com/svn-view/libpri/team/group/issue14292/rose.c?view=diff&rev=745&r1=744&r2=745
==============================================================================
--- team/group/issue14292/rose.c (original)
+++ team/group/issue14292/rose.c Thu Apr 16 19:52:47 2009
@@ -200,6 +200,46 @@
/* *INDENT-ON* */
};
+/*! \brief ETSI Status Request OID prefix. */
+static const struct asn1_oid rose_etsi_status_request = {
+/* *INDENT-OFF* */
+ /* {itu-t(0) identified-organization(4) etsi(0) 196 status-request-procedure(9)} */
+ 4, { 4, 0, 196, 9 }
+/* *INDENT-ON* */
+};
+
+/*! \brief ETSI Call Completion Busy Status OID prefix. */
+static const struct asn1_oid rose_etsi_ccbs = {
+/* *INDENT-OFF* */
+ /* {ccitt(0) identified-organization(4) etsi(0) 359 operations-and-errors(1)} */
+ 4, { 4, 0, 359, 1 }
+/* *INDENT-ON* */
+};
+
+/*! \brief ETSI Call Completion Busy Status public-private interworking OID prefix. */
+static const struct asn1_oid rose_etsi_ccbs_t = {
+/* *INDENT-OFF* */
+ /* {ccitt(0) identified-organization(4) etsi(0) 359 private-networks-operations-and-errors(2)} */
+ 4, { 4, 0, 359, 2 }
+/* *INDENT-ON* */
+};
+
+/*! \brief ETSI Call Completion No Reply OID prefix. */
+static const struct asn1_oid rose_etsi_ccnr = {
+/* *INDENT-OFF* */
+ /* {ccitt(0) identified-organization(4) etsi(0) 1065 operations-and-errors(1)} */
+ 4, { 4, 0, 1065, 1 }
+/* *INDENT-ON* */
+};
+
+/*! \brief ETSI Call Completion No Reply public-private interworking OID prefix. */
+static const struct asn1_oid rose_etsi_ccnr_t = {
+/* *INDENT-OFF* */
+ /* {ccitt(0) identified-organization(4) etsi(0) 1065 private-networks-operations-and-errors(2)} */
+ 4, { 4, 0, 1065, 2 }
+/* *INDENT-ON* */
+};
+
/*! \brief ETSI specific invoke/result encode/decode message table */
static const struct rose_convert_msg rose_etsi_msgs[] = {
/* *INDENT-OFF* */
@@ -361,6 +401,136 @@
rose_enc_etsi_EctLoopTest_ARG, rose_enc_etsi_EctLoopTest_RES,
rose_dec_etsi_EctLoopTest_ARG, rose_dec_etsi_EctLoopTest_RES
},
+
+ /*
+ * globalValue's (OIDs) from Status-Request-Procedure
+ * {itu-t identified-organization etsi(0) 196 status-request-procedure(9)}
+ */
+ {
+ ROSE_ETSI_StatusRequest, &rose_etsi_status_request, 1,
+ rose_enc_etsi_StatusRequest_ARG, rose_enc_etsi_StatusRequest_RES,
+ rose_dec_etsi_StatusRequest_ARG, rose_dec_etsi_StatusRequest_RES
+ },
+
+ /*
+ * globalValue's (OIDs) from CCBS-Operations-and-Errors
+ * {ccitt identified-organization etsi(0) 359 operations-and-errors(1)}
+ */
+ {
+ ROSE_ETSI_CallInfoRetain, &rose_etsi_ccbs, 1,
+ rose_enc_etsi_CallInfoRetain_ARG, NULL,
+ rose_dec_etsi_CallInfoRetain_ARG, NULL
+ },
+ {
+ ROSE_ETSI_CCBSRequest, &rose_etsi_ccbs, 2,
+ rose_enc_etsi_CCBSRequest_ARG, rose_enc_etsi_CCBSRequest_RES,
+ rose_dec_etsi_CCBSRequest_ARG, rose_dec_etsi_CCBSRequest_RES
+ },
+ {
+ ROSE_ETSI_CCBSDeactivate, &rose_etsi_ccbs, 3,
+ rose_enc_etsi_CCBSDeactivate_ARG, NULL,
+ rose_dec_etsi_CCBSDeactivate_ARG, NULL
+ },
+ {
+ ROSE_ETSI_CCBSInterrogate, &rose_etsi_ccbs, 4,
+ rose_enc_etsi_CCBSInterrogate_ARG, rose_enc_etsi_CCBSInterrogate_RES,
+ rose_dec_etsi_CCBSInterrogate_ARG, rose_dec_etsi_CCBSInterrogate_RES
+ },
+ {
+ ROSE_ETSI_CCBSErase, &rose_etsi_ccbs, 5,
+ rose_enc_etsi_CCBSErase_ARG, NULL,
+ rose_dec_etsi_CCBSErase_ARG, NULL
+ },
+ {
+ ROSE_ETSI_CCBSRemoteUserFree, &rose_etsi_ccbs, 6,
+ rose_enc_etsi_CCBSRemoteUserFree_ARG, NULL,
+ rose_dec_etsi_CCBSRemoteUserFree_ARG, NULL
+ },
+ {
+ ROSE_ETSI_CCBSCall, &rose_etsi_ccbs, 7,
+ rose_enc_etsi_CCBSCall_ARG, NULL,
+ rose_dec_etsi_CCBSCall_ARG, NULL
+ },
+ {
+ ROSE_ETSI_CCBSStatusRequest, &rose_etsi_ccbs, 8,
+ rose_enc_etsi_CCBSStatusRequest_ARG, rose_enc_etsi_CCBSStatusRequest_RES,
+ rose_dec_etsi_CCBSStatusRequest_ARG, rose_dec_etsi_CCBSStatusRequest_RES
+ },
+ {
+ ROSE_ETSI_CCBSBFree, &rose_etsi_ccbs, 9,
+ rose_enc_etsi_CCBSBFree_ARG, NULL,
+ rose_dec_etsi_CCBSBFree_ARG, NULL
+ },
+ {
+ ROSE_ETSI_EraseCallLinkageID, &rose_etsi_ccbs, 10,
+ rose_enc_etsi_EraseCallLinkageID_ARG, NULL,
+ rose_dec_etsi_EraseCallLinkageID_ARG, NULL
+ },
+ {
+ ROSE_ETSI_CCBSStopAlerting, &rose_etsi_ccbs, 11,
+ rose_enc_etsi_CCBSStopAlerting_ARG, NULL,
+ rose_dec_etsi_CCBSStopAlerting_ARG, NULL
+ },
+
+ /*
+ * globalValue's (OIDs) from CCBS-private-networks-Operations-and-Errors
+ * {ccitt identified-organization etsi(0) 359 private-networks-operations-and-errors(2)}
+ */
+ {
+ ROSE_ETSI_CCBS_T_Request, &rose_etsi_ccbs_t, 1,
+ rose_enc_etsi_CCBS_T_Request_ARG, rose_enc_etsi_CCBS_T_Request_RES,
+ rose_dec_etsi_CCBS_T_Request_ARG, rose_dec_etsi_CCBS_T_Request_RES
+ },
+ {
+ ROSE_ETSI_CCBS_T_Call, &rose_etsi_ccbs_t, 2,
+ NULL, NULL,
+ NULL, NULL
+ },
+ {
+ ROSE_ETSI_CCBS_T_Suspend, &rose_etsi_ccbs_t, 3,
+ NULL, NULL,
+ NULL, NULL
+ },
+ {
+ ROSE_ETSI_CCBS_T_Resume, &rose_etsi_ccbs_t, 4,
+ NULL, NULL,
+ NULL, NULL
+ },
+ {
+ ROSE_ETSI_CCBS_T_RemoteUserFree, &rose_etsi_ccbs_t, 5,
+ NULL, NULL,
+ NULL, NULL
+ },
+ {
+ ROSE_ETSI_CCBS_T_Available, &rose_etsi_ccbs_t, 6,
+ NULL, NULL,
+ NULL, NULL
+ },
+
+ /*
+ * globalValue's (OIDs) from CCNR-Operations-and-Errors
+ * {ccitt identified-organization etsi(0) 1065 operations-and-errors(1)}
+ */
+ {
+ ROSE_ETSI_CCNRRequest, &rose_etsi_ccnr, 1,
+ rose_enc_etsi_CCNRRequest_ARG, rose_enc_etsi_CCNRRequest_RES,
+ rose_dec_etsi_CCNRRequest_ARG, rose_dec_etsi_CCNRRequest_RES
+ },
+ {
+ ROSE_ETSI_CCNRInterrogate, &rose_etsi_ccnr, 2,
+ rose_enc_etsi_CCNRInterrogate_ARG, rose_enc_etsi_CCNRInterrogate_RES,
+ rose_dec_etsi_CCNRInterrogate_ARG, rose_dec_etsi_CCNRInterrogate_RES
+ },
+
+ /*
+ * globalValue's (OIDs) from CCNR-private-networks-Operations-and-Errors
+ * {ccitt identified-organization etsi(0) 1065 private-networks-operations-and-errors(2)}
+ */
+ {
+ ROSE_ETSI_CCNR_T_Request, &rose_etsi_ccnr_t, 1,
+ rose_enc_etsi_CCNR_T_Request_ARG, rose_enc_etsi_CCNR_T_Request_RES,
+ rose_dec_etsi_CCNR_T_Request_ARG, rose_dec_etsi_CCNR_T_Request_RES
+ },
/* *INDENT-ON* */
};
@@ -461,6 +631,60 @@
*/
{
ROSE_ERROR_ECT_LinkIdNotAssignedByNetwork, &rose_etsi_ect, 21,
+ NULL, NULL
+ },
+
+ /*
+ * globalValue Errors (OIDs) from CCBS-Operations-and-Errors
+ * {ccitt identified-organization etsi(0) 359 operations-and-errors(1)}
+ */
+ {
+ ROSE_ERROR_CCBS_InvalidCallLinkageID, &rose_etsi_ccbs, 20,
+ NULL, NULL
+ },
+ {
+ ROSE_ERROR_CCBS_InvalidCCBSReference, &rose_etsi_ccbs, 21,
+ NULL, NULL
+ },
+ {
+ ROSE_ERROR_CCBS_LongTermDenial, &rose_etsi_ccbs, 22,
+ NULL, NULL
+ },
+ {
+ ROSE_ERROR_CCBS_ShortTermDenial, &rose_etsi_ccbs, 23,
+ NULL, NULL
+ },
+ {
+ ROSE_ERROR_CCBS_IsAlreadyActivated, &rose_etsi_ccbs, 24,
+ NULL, NULL
+ },
+ {
+ ROSE_ERROR_CCBS_AlreadyAccepted, &rose_etsi_ccbs, 25,
+ NULL, NULL
+ },
+ {
+ ROSE_ERROR_CCBS_OutgoingCCBSQueueFull, &rose_etsi_ccbs, 26,
+ NULL, NULL
+ },
+ {
+ ROSE_ERROR_CCBS_CallFailureReasonNotBusy, &rose_etsi_ccbs, 27,
+ NULL, NULL
+ },
+ {
+ ROSE_ERROR_CCBS_NotReadyForCall, &rose_etsi_ccbs, 28,
+ NULL, NULL
+ },
+
+ /*
+ * globalValue Errors (OIDs) from CCBS-private-networks-Operations-and-Errors
+ * {ccitt identified-organization etsi(0) 359 private-networks-operations-and-errors(2)}
+ */
+ {
+ ROSE_ERROR_CCBS_T_LongTermDenial, &rose_etsi_ccbs_t, 20,
+ NULL, NULL
+ },
+ {
+ ROSE_ERROR_CCBS_T_ShortTermDenial, &rose_etsi_ccbs_t, 21,
NULL, NULL
},
/* *INDENT-ON* */
@@ -1090,6 +1314,34 @@
{ ROSE_ETSI_AOCECurrency, "ROSE_ETSI_AOCECurrency" },
{ ROSE_ETSI_AOCEChargingUnit, "ROSE_ETSI_AOCEChargingUnit" },
+ { ROSE_ETSI_StatusRequest, "ROSE_ETSI_StatusRequest" },
+
+ { ROSE_ETSI_CallInfoRetain, "ROSE_ETSI_CallInfoRetain" },
+ { ROSE_ETSI_EraseCallLinkageID, "ROSE_ETSI_EraseCallLinkageID" },
+ { ROSE_ETSI_CCBSDeactivate, "ROSE_ETSI_CCBSDeactivate" },
+ { ROSE_ETSI_CCBSErase, "ROSE_ETSI_CCBSErase" },
+ { ROSE_ETSI_CCBSRemoteUserFree, "ROSE_ETSI_CCBSRemoteUserFree" },
+ { ROSE_ETSI_CCBSCall, "ROSE_ETSI_CCBSCall" },
+ { ROSE_ETSI_CCBSStatusRequest, "ROSE_ETSI_CCBSStatusRequest" },
+ { ROSE_ETSI_CCBSBFree, "ROSE_ETSI_CCBSBFree" },
+ { ROSE_ETSI_CCBSStopAlerting, "ROSE_ETSI_CCBSStopAlerting" },
+
+ { ROSE_ETSI_CCBSRequest, "ROSE_ETSI_CCBSRequest" },
+ { ROSE_ETSI_CCBSInterrogate, "ROSE_ETSI_CCBSInterrogate" },
+
+ { ROSE_ETSI_CCNRRequest, "ROSE_ETSI_CCNRRequest" },
+ { ROSE_ETSI_CCNRInterrogate, "ROSE_ETSI_CCNRInterrogate" },
+
+ { ROSE_ETSI_CCBS_T_Call, "ROSE_ETSI_CCBS_T_Call" },
+ { ROSE_ETSI_CCBS_T_Suspend, "ROSE_ETSI_CCBS_T_Suspend" },
+ { ROSE_ETSI_CCBS_T_Resume, "ROSE_ETSI_CCBS_T_Resume" },
+ { ROSE_ETSI_CCBS_T_RemoteUserFree, "ROSE_ETSI_CCBS_T_RemoteUserFree" },
+ { ROSE_ETSI_CCBS_T_Available, "ROSE_ETSI_CCBS_T_Available" },
+
+ { ROSE_ETSI_CCBS_T_Request, "ROSE_ETSI_CCBS_T_Request" },
+
+ { ROSE_ETSI_CCNR_T_Request, "ROSE_ETSI_CCNR_T_Request" },
+
{ ROSE_QSIG_CallingName, "ROSE_QSIG_CallingName" },
{ ROSE_QSIG_CalledName, "ROSE_QSIG_CalledName" },
{ ROSE_QSIG_ConnectedName, "ROSE_QSIG_ConnectedName" },
@@ -1182,6 +1434,19 @@
{ ROSE_ERROR_AOC_NoChargingInfoAvailable, "AOC: No Charging Info Available" },
{ ROSE_ERROR_ECT_LinkIdNotAssignedByNetwork, "ECT: Link ID Not Assigned By Network" },
+
+ { ROSE_ERROR_CCBS_InvalidCallLinkageID, "CCBS: Invalid Call Linkage ID" },
+ { ROSE_ERROR_CCBS_InvalidCCBSReference, "CCBS: Invalid CCBS Reference" },
+ { ROSE_ERROR_CCBS_LongTermDenial, "CCBS: Long Term Denial" },
+ { ROSE_ERROR_CCBS_ShortTermDenial, "CCBS: Short Term Denial" },
+ { ROSE_ERROR_CCBS_IsAlreadyActivated, "CCBS: Is Already Activated" },
+ { ROSE_ERROR_CCBS_AlreadyAccepted, "CCBS: Already Accepted" },
+ { ROSE_ERROR_CCBS_OutgoingCCBSQueueFull, "CCBS: Outgoing CCBS Queue Full" },
+ { ROSE_ERROR_CCBS_CallFailureReasonNotBusy, "CCBS: Call Failure Reason Not Busy" },
+ { ROSE_ERROR_CCBS_NotReadyForCall, "CCBS: Not Ready For Call" },
+
+ { ROSE_ERROR_CCBS_T_LongTermDenial, "CCBS-T: Long Term Denial" },
+ { ROSE_ERROR_CCBS_T_ShortTermDenial, "CCBS-T: Short Term Denial" },
/* Q.SIG specific errors */
{ ROSE_ERROR_QSIG_Unspecified, "Unspecified" },
Modified: team/group/issue14292/rose.h
URL: http://svn.digium.com/svn-view/libpri/team/group/issue14292/rose.h?view=diff&rev=745&r1=744&r2=745
==============================================================================
--- team/group/issue14292/rose.h (original)
+++ team/group/issue14292/rose.h Thu Apr 16 19:52:47 2009
@@ -103,6 +103,37 @@
ROSE_ETSI_EctInform, /*!< Invoke only */
ROSE_ETSI_EctLoopTest, /*!< Invoke/Result */
+ /* ETSI Status-Request-Procedure */
+ ROSE_ETSI_StatusRequest, /*!< Invoke/Result */
+
+ /* ETSI CCBS-Operations-and-Errors */
+ ROSE_ETSI_CallInfoRetain, /*!< Invoke only */
+ ROSE_ETSI_CCBSRequest, /*!< Invoke/Result */
+ ROSE_ETSI_CCBSDeactivate, /*!< Invoke/Result */
+ ROSE_ETSI_CCBSInterrogate, /*!< Invoke/Result */
+ ROSE_ETSI_CCBSErase, /*!< Invoke only */
+ ROSE_ETSI_CCBSRemoteUserFree, /*!< Invoke only */
+ ROSE_ETSI_CCBSCall, /*!< Invoke only */
+ ROSE_ETSI_CCBSStatusRequest, /*!< Invoke/Result */
+ ROSE_ETSI_CCBSBFree, /*!< Invoke only */
+ ROSE_ETSI_EraseCallLinkageID, /*!< Invoke only */
+ ROSE_ETSI_CCBSStopAlerting, /*!< Invoke only */
+
+ /* ETSI CCBS-private-networks-Operations-and-Errors */
+ ROSE_ETSI_CCBS_T_Request, /*!< Invoke/Result */
+ ROSE_ETSI_CCBS_T_Call, /*!< Invoke only */
+ ROSE_ETSI_CCBS_T_Suspend, /*!< Invoke only */
+ ROSE_ETSI_CCBS_T_Resume, /*!< Invoke only */
+ ROSE_ETSI_CCBS_T_RemoteUserFree, /*!< Invoke only */
+ ROSE_ETSI_CCBS_T_Available, /*!< Invoke only */
+
+ /* ETSI CCNR-Operations-and-Errors */
+ ROSE_ETSI_CCNRRequest, /*!< Invoke/Result */
+ ROSE_ETSI_CCNRInterrogate, /*!< Invoke/Result */
+
+ /* ETSI CCNR-private-networks-Operations-and-Errors */
+ ROSE_ETSI_CCNR_T_Request, /*!< Invoke/Result */
+
/* Q.SIG Name-Operations */
ROSE_QSIG_CallingName, /*!< Invoke only */
ROSE_QSIG_CalledName, /*!< Invoke only */
@@ -198,6 +229,21 @@
/* ETSI Explicit-Call-Transfer-Operations-and-Errors */
ROSE_ERROR_ECT_LinkIdNotAssignedByNetwork,
+
+ /* ETSI CCBS-Operations-and-Errors */
+ ROSE_ERROR_CCBS_InvalidCallLinkageID,
+ ROSE_ERROR_CCBS_InvalidCCBSReference,
+ ROSE_ERROR_CCBS_LongTermDenial,
+ ROSE_ERROR_CCBS_ShortTermDenial,
+ ROSE_ERROR_CCBS_IsAlreadyActivated,
+ ROSE_ERROR_CCBS_AlreadyAccepted,
+ ROSE_ERROR_CCBS_OutgoingCCBSQueueFull,
+ ROSE_ERROR_CCBS_CallFailureReasonNotBusy,
+ ROSE_ERROR_CCBS_NotReadyForCall,
+
+ /* ETSI CCBS-private-networks-Operations-and-Errors */
+ ROSE_ERROR_CCBS_T_LongTermDenial,
+ ROSE_ERROR_CCBS_T_ShortTermDenial,
/* Q.SIG from various specifications */
ROSE_ERROR_QSIG_Unspecified,
@@ -1670,6 +1716,351 @@
* simultaneousTransfer(2)
*/
u_int8_t loop_result;
+};
+
+
+/* ------------------------------------------------------------------- */
+
+
+/*
+ * ARGUMENT SEQUENCE {
+ * compatibilityMode CompatibilityMode,
+ *
+ * -- The BC, HLC (optional) and LLC (optional) information
+ * -- elements shall be embedded in q931InfoElement
+ * q931InformationElement Q931InformationElement
+ * }
+ */
+struct roseEtsiStatusRequest_ARG {
+ /*! \brief The BC, HLC (optional) and LLC (optional) information */
+ struct roseQ931ie q931ie;
+ /*! \brief q931ie.contents "allocated" after the stucture. */
+ unsigned char q931ie_contents[ROSE_Q931_MAX_BC + ROSE_Q931_MAX_HLC +
+ ROSE_Q931_MAX_LLC + 1];
+
+ /*! \details allBasicServices(0), oneOrMoreBasicServices(1) */
+ u_int8_t compatibility_mode;
+};
+
+/*
+ * RESULT StatusResult
+ */
+struct roseEtsiStatusRequest_RES {
+ /*! \details compatibleAndFree(0), compatibleAndBusy(1), incompatible(2) */
+ u_int8_t status;
+};
+
+
+/* ------------------------------------------------------------------- */
+
+
+/*
+ * CallLinkageID ::= INTEGER (0..127)
+ * CCBSReference ::= INTEGER (0..127)
+ */
+
+/*
+ * ARGUMENT callLinkageID CallLinkageID
+ */
+struct roseEtsiCallInfoRetain_ARG {
+ /*! \brief Call Linkage Record ID */
+ u_int8_t call_linkage_id;
+};
+
+/*
+ * ARGUMENT callLinkageID CallLinkageID
+ */
+struct roseEtsiEraseCallLinkageID_ARG {
+ /*! \brief Call Linkage Record ID */
+ u_int8_t call_linkage_id;
+};
+
+
+/*
+ * ARGUMENT callLinkageID CallLinkageID
+ */
+struct roseEtsiCCBSRequest_ARG {
+ /*! \brief Call Linkage Record ID */
+ u_int8_t call_linkage_id;
+};
+
+/*
+ * RESULT SEQUENCE {
+ * recallMode RecallMode,
+ * cCBSReference CCBSReference
+ * }
+ */
+struct roseEtsiCCBSRequest_RES {
+ /*! \details globalRecall(0), specificRecall(1) */
+ u_int8_t recall_mode;
+
+ /*! \brief CCBS Record ID */
+ u_int8_t ccbs_reference;
+};
+
+
+/*
+ * ARGUMENT cCBSReference CCBSReference
+ */
+struct roseEtsiCCBSDeactivate_ARG {
+ /*! \brief CCBS Record ID */
+ u_int8_t ccbs_reference;
+};
+
+
+/*
+ * ARGUMENT SEQUENCE {
+ * cCBSReference CCBSReference OPTIONAL,
+ * partyNumberOfA PartyNumber OPTIONAL
+ * }
+ */
+struct roseEtsiCCBSInterrogate_ARG {
+ /*! \brief Party A number (Optional) */
+ struct rosePartyNumber a_party_number;
+
+ /*! \brief TRUE if CCBSReference present */
+ u_int8_t ccbs_reference_present;
+
+ /*! \brief CCBS Record ID (optional) */
+ u_int8_t ccbs_reference;
+};
+
+/*
+ * -- The Bearer capability, High layer compatibility (optional)
+ * -- and Low layer compatibility (optional) information elements
+ * -- shall be embedded in q931InfoElement.
+ * CallInformation ::= SEQUENCE {
+ * addressOfB Address,
+ * q931InfoElement Q931InformationElement,
+ * cCBSReference CCBSReference,
+ * subAddressOfA PartySubaddress OPTIONAL
+ * }
+ */
+struct roseEtsiCallInformation {
+ /*! \brief The BC, HLC (optional) and LLC (optional) information */
+ struct roseQ931ie q931ie;
+ /*! \brief q931ie.contents "allocated" after the stucture. */
+ unsigned char q931ie_contents[ROSE_Q931_MAX_BC + ROSE_Q931_MAX_HLC +
+ ROSE_Q931_MAX_LLC + 1];
+
+ /*! \brief Address of B */
+ struct roseAddress address_of_b;
+
+ /*! \brief Subaddress of A (Optional) */
+ struct rosePartySubaddress subaddress_of_a;
+
+ /*! \brief CCBS Record ID */
+ u_int8_t ccbs_reference;
+};
+
+/*
+ * CallDetails ::= SEQUENCE SIZE(1..5) OF CallInformation
+ */
+struct roseEtsiCallDetailsList {
+ struct roseEtsiCallInformation list[5];
+
+ /*! \brief Number of CallDetails records present */
+ u_int8_t num_records;
+};
+
+/*
+ * RESULT SEQUENCE {
+ * recallMode RecallMode,
+ * callDetails CallDetails OPTIONAL
+ * }
+ */
+struct roseEtsiCCBSInterrogate_RES {
+ struct roseEtsiCallDetailsList call_details;
+
+ /*! \details globalRecall(0), specificRecall(1) */
+ u_int8_t recall_mode;
+};
+
+
+/*
+ * ARGUMENT SEQUENCE {
+ * recallMode RecallMode,
+ * cCBSReference CCBSReference,
+ * addressOfB Address,
+ * q931InfoElement Q931InformationElement,
+ * eraseReason CCBSEraseReason
+ * }
+ */
+struct roseEtsiCCBSErase_ARG {
+ /*! \brief The BC, HLC (optional) and LLC (optional) information */
+ struct roseQ931ie q931ie;
+ /*! \brief q931ie.contents "allocated" after the stucture. */
+ unsigned char q931ie_contents[ROSE_Q931_MAX_BC + ROSE_Q931_MAX_HLC +
+ ROSE_Q931_MAX_LLC + 1];
+
+ /*! \brief Address of B */
+ struct roseAddress address_of_b;
+
+ /*! \details globalRecall(0), specificRecall(1) */
+ u_int8_t recall_mode;
+
+ /*! \brief CCBS Record ID */
+ u_int8_t ccbs_reference;
+
+ /*!
+ * \brief CCBS Erase reason
+ * \details
+ * normal-unspecified(0),
+ * t-CCBS2-timeout(1),
+ * t-CCBS3-timeout(2),
+ * basic-call-failed(3)
+ */
+ u_int8_t reason;
+};
+
+/*
+ * ARGUMENT SEQUENCE {
+ * recallMode RecallMode,
+ * cCBSReference CCBSReference,
+ * addressOfB Address,
+ * q931InfoElement Q931InformationElement
+ * }
+ */
+struct roseEtsiCCBSRemoteUserFree_ARG {
+ /*! \brief The BC, HLC (optional) and LLC (optional) information */
+ struct roseQ931ie q931ie;
+ /*! \brief q931ie.contents "allocated" after the stucture. */
+ unsigned char q931ie_contents[ROSE_Q931_MAX_BC + ROSE_Q931_MAX_HLC +
+ ROSE_Q931_MAX_LLC + 1];
+
+ /*! \brief Address of B */
+ struct roseAddress address_of_b;
+
+ /*! \details globalRecall(0), specificRecall(1) */
+ u_int8_t recall_mode;
+
+ /*! \brief CCBS Record ID */
+ u_int8_t ccbs_reference;
+};
+
+/*
+ * ARGUMENT cCBSReference CCBSReference
+ */
+struct roseEtsiCCBSCall_ARG {
+ /*! \brief CCBS Record ID */
+ u_int8_t ccbs_reference;
+};
+
+
+/*
+ * ARGUMENT SEQUENCE {
+ * recallMode RecallMode,
+ * cCBSReference CCBSReference,
+ * q931InfoElement Q931InformationElement
+ * }
+ */
+struct roseEtsiCCBSStatusRequest_ARG {
+ /*! \brief The BC, HLC (optional) and LLC (optional) information */
+ struct roseQ931ie q931ie;
+ /*! \brief q931ie.contents "allocated" after the stucture. */
+ unsigned char q931ie_contents[ROSE_Q931_MAX_BC + ROSE_Q931_MAX_HLC +
+ ROSE_Q931_MAX_LLC + 1];
+
+ /*! \details globalRecall(0), specificRecall(1) */
+ u_int8_t recall_mode;
+
+ /*! \brief CCBS Record ID */
+ u_int8_t ccbs_reference;
+};
+
+/*
+ * RESULT BOOLEAN -- free=TRUE, busy=FALSE
+ */
+struct roseEtsiCCBSStatusRequest_RES {
+ /*! \brief TRUE if User A is free */
+ u_int8_t free;
+};
+
+
+/*
+ * ARGUMENT SEQUENCE {
+ * recallMode RecallMode,
+ * cCBSReference CCBSReference,
+ * addressOfB Address,
+ * q931InfoElement Q931InformationElement
+ * }
+ */
+struct roseEtsiCCBSBFree_ARG {
+ /*! \brief The BC, HLC (optional) and LLC (optional) information */
+ struct roseQ931ie q931ie;
+ /*! \brief q931ie.contents "allocated" after the stucture. */
+ unsigned char q931ie_contents[ROSE_Q931_MAX_BC + ROSE_Q931_MAX_HLC +
+ ROSE_Q931_MAX_LLC + 1];
+
+ /*! \brief Address of B */
+ struct roseAddress address_of_b;
+
+ /*! \details globalRecall(0), specificRecall(1) */
+ u_int8_t recall_mode;
+
+ /*! \brief CCBS Record ID */
+ u_int8_t ccbs_reference;
+};
+
+/*
+ * ARGUMENT cCBSReference CCBSReference
+ */
+struct roseEtsiCCBSStopAlerting_ARG {
+ /*! \brief CCBS Record ID */
+ u_int8_t ccbs_reference;
+};
+
+
+/* ------------------------------------------------------------------- */
+
+
+/*
+ * ARGUMENT SEQUENCE {
+ * destinationAddress Address,
+ *
+ * -- contains HLC, LLC and BC information
+ * q931InfoElement Q931InformationElement,
+ *
+ * retentionSupported [1] IMPLICIT BOOLEAN DEFAULT FALSE,
+ *
+ * -- The use of this parameter is specified in
+ * -- EN 300 195-1 for interaction of CCBS with CLIP
+ * presentationAllowedIndicator [2] IMPLICIT BOOLEAN OPTIONAL,
+ *
+ * -- The use of this parameter is specified in
+ * -- EN 300 195-1 for interaction of CCBS with CLIP
+ * originatingAddress Address OPTIONAL
+ * }
+ */
+struct roseEtsiCCBS_T_Request_ARG {
+ /*! \brief The BC, HLC (optional) and LLC (optional) information */
+ struct roseQ931ie q931ie;
+ /*! \brief q931ie.contents "allocated" after the stucture. */
+ unsigned char q931ie_contents[ROSE_Q931_MAX_BC + ROSE_Q931_MAX_HLC +
+ ROSE_Q931_MAX_LLC + 1];
+
+ /*! \brief Address of B */
+ struct roseAddress destination;
+
+ /*! \brief Caller-ID Address (Present if Originating.Party.LengthOfNumber is nonzero) */
+ struct roseAddress originating;
+
+ /*! \brief TRUE if the PresentationAllowedIndicator is present */
+ u_int8_t presentation_allowed_indicator_present;
+
+ /*! \brief TRUE if presentation is allowed for the originating address (optional) */
+ u_int8_t presentation_allowed_indicator;
+
+ /*! \brief TRUE if User A's CCBS request is continued if user B is busy again. */
+ u_int8_t retention_supported;
+};
+
+/*
+ * RESULT retentionSupported BOOLEAN -- Default False
+ */
+struct roseEtsiCCBS_T_Request_RES {
+ /*! \brief TRUE if User A's CCBS request is continued if user B is busy again. */
+ u_int8_t retention_supported;
};
@@ -2979,6 +3370,34 @@
struct roseEtsiSubaddressTransfer_ARG SubaddressTransfer;
struct roseEtsiEctInform_ARG EctInform;
struct roseEtsiEctLoopTest_ARG EctLoopTest;
+
+ /* ETSI Status Request (CCBS/CCNR support) */
+ struct roseEtsiStatusRequest_ARG StatusRequest;
+
+ /* ETSI CCBS/CCNR support */
+ struct roseEtsiCallInfoRetain_ARG CallInfoRetain;
+ struct roseEtsiEraseCallLinkageID_ARG EraseCallLinkageID;
+ struct roseEtsiCCBSDeactivate_ARG CCBSDeactivate;
+ struct roseEtsiCCBSErase_ARG CCBSErase;
+ struct roseEtsiCCBSRemoteUserFree_ARG CCBSRemoteUserFree;
+ struct roseEtsiCCBSCall_ARG CCBSCall;
+ struct roseEtsiCCBSStatusRequest_ARG CCBSStatusRequest;
+ struct roseEtsiCCBSBFree_ARG CCBSBFree;
+ struct roseEtsiCCBSStopAlerting_ARG CCBSStopAlerting;
+
+ /* ETSI CCBS */
+ struct roseEtsiCCBSRequest_ARG CCBSRequest;
+ struct roseEtsiCCBSInterrogate_ARG CCBSInterrogate;
+
+ /* ETSI CCNR */
+ struct roseEtsiCCBSRequest_ARG CCNRRequest;
+ struct roseEtsiCCBSInterrogate_ARG CCNRInterrogate;
+
+ /* ETSI CCBS-T */
+ struct roseEtsiCCBS_T_Request_ARG CCBS_T_Request;
+
+ /* ETSI CCNR-T */
+ struct roseEtsiCCBS_T_Request_ARG CCNR_T_Request;
};
/*! \brief Facility ie result etsi messages with arguments. */
@@ -2993,6 +3412,26 @@
/* ETSI Explicit Call Transfer (ECT) */
struct roseEtsiEctLinkIdRequest_RES EctLinkIdRequest;
struct roseEtsiEctLoopTest_RES EctLoopTest;
+
+ /* ETSI Status Request (CCBS/CCNR support) */
+ struct roseEtsiStatusRequest_RES StatusRequest;
+
+ /* ETSI CCBS/CCNR support */
+ struct roseEtsiCCBSStatusRequest_RES CCBSStatusRequest;
+
+ /* ETSI CCBS */
+ struct roseEtsiCCBSRequest_RES CCBSRequest;
+ struct roseEtsiCCBSInterrogate_RES CCBSInterrogate;
+
+ /* ETSI CCNR */
+ struct roseEtsiCCBSRequest_RES CCNRRequest;
+ struct roseEtsiCCBSInterrogate_RES CCNRInterrogate;
+
+ /* ETSI CCBS-T */
+ struct roseEtsiCCBS_T_Request_RES CCBS_T_Request;
+
+ /* ETSI CCNR-T */
+ struct roseEtsiCCBS_T_Request_RES CCNR_T_Request;
};
/*! \brief Facility ie invoke qsig messages with arguments. */
Added: team/group/issue14292/rose_etsi_cc.c
URL: http://svn.digium.com/svn-view/libpri/team/group/issue14292/rose_etsi_cc.c?view=auto&rev=745
==============================================================================
--- team/group/issue14292/rose_etsi_cc.c (added)
+++ team/group/issue14292/rose_etsi_cc.c Thu Apr 16 19:52:47 2009
@@ -1,0 +1,1853 @@
+/*
+ * libpri: An implementation of Primary Rate ISDN
+ *
+ * Copyright (C) 2009 Digium, Inc.
+ *
+ * Richard Mudgett <rmudgett at digium.com>
+ *
+ * See http://www.asterisk.org for more information about
+ * the Asterisk project. Please do not directly contact
+ * any of the maintainers of this project for assistance;
+ * the project provides a web site, mailing lists and IRC
+ * channels for your use.
+ *
+ * This program is free software, distributed under the terms of
+ * the GNU General Public License Version 2 as published by the
+ * Free Software Foundation. See the LICENSE file included with
+ * this program for more details.
+ *
+ * In addition, when this program is distributed with Asterisk in
+ * any form that would qualify as a 'combined work' or as a
+ * 'derivative work' (but not mere aggregation), you can redistribute
+ * and/or modify the combination under the terms of the license
+ * provided with that copy of Asterisk, instead of the license
+ * terms granted here.
+ */
+
+/*!
+ * \file
+ * \brief ROSE Status-Request/CCBS/CCBS-T/CCNR/CCNR-T operations
+ *
+ * Status-Request ETS 300 196-1 D.7
+ * CCBS Supplementary Services ETS 300 359-1
+ * CCNR Supplementary Services ETS 301 065-1
+ *
+ * \author Richard Mudgett <rmudgett at digium.com>
+ */
+
+
+#include "compat.h"
+#include "libpri.h"
+#include "pri_internal.h"
+#include "rose.h"
+#include "rose_internal.h"
+#include "asn1.h"
+
+
+/* ------------------------------------------------------------------- */
+
+/*!
+ * \internal
+ * \brief Encode the array of call information details type.
+ *
+ * \param ctrl D channel controller for diagnostic messages or global options.
+ * \param pos Starting position to encode ASN.1 component.
+ * \param end End of ASN.1 encoding data buffer.
+ * \param tag Component tag to identify the encoded component.
+ * The tag should be ASN1_TAG_SEQUENCE unless the caller implicitly
+ * tags it otherwise.
+ * \param call_information Call information record to encode.
+ *
+ * \retval Start of the next ASN.1 component to encode on success.
+ * \retval NULL on error.
+ */
+static unsigned char *rose_enc_etsi_CallInformation(struct pri *ctrl, unsigned char *pos,
+ unsigned char *end, unsigned tag,
+ const struct roseEtsiCallInformation *call_information)
+{
+ unsigned char *seq_len;
+
+ ASN1_CONSTRUCTED_BEGIN(seq_len, pos, end, tag);
+
+ ASN1_CALL(pos, rose_enc_Address(ctrl, pos, end, ASN1_TAG_SEQUENCE,
+ &call_information->address_of_b));
+ ASN1_CALL(pos, rose_enc_Q931ie(ctrl, pos, end, ASN1_CLASS_APPLICATION | 0,
+ &call_information->q931ie));
+ ASN1_CALL(pos, asn1_enc_int(pos, end, ASN1_TYPE_INTEGER,
+ call_information->ccbs_reference));
+ if (call_information->subaddress_of_a.length) {
+ ASN1_CALL(pos, rose_enc_PartySubaddress(ctrl, pos, end,
+ &call_information->subaddress_of_a));
+ }
+
+ ASN1_CONSTRUCTED_END(seq_len, pos, end);
+
+ return pos;
+}
+
+/*!
+ * \internal
+ * \brief Encode the array of call information details type.
+ *
+ * \param ctrl D channel controller for diagnostic messages or global options.
+ * \param pos Starting position to encode ASN.1 component.
+ * \param end End of ASN.1 encoding data buffer.
+ * \param tag Component tag to identify the encoded component.
+ * The tag should be ASN1_TAG_SEQUENCE unless the caller implicitly
+ * tags it otherwise.
+ * \param call_details Call detail list information to encode.
+ *
+ * \retval Start of the next ASN.1 component to encode on success.
+ * \retval NULL on error.
+ */
+static unsigned char *rose_enc_etsi_CallDetails(struct pri *ctrl, unsigned char *pos,
+ unsigned char *end, unsigned tag, const struct roseEtsiCallDetailsList *call_details)
+{
+ unsigned index;
+ unsigned char *seq_len;
+
+ ASN1_CONSTRUCTED_BEGIN(seq_len, pos, end, tag);
+
+ for (index = 0; index < call_details->num_records; ++index) {
+ ASN1_CALL(pos, rose_enc_etsi_CallInformation(ctrl, pos, end, ASN1_TAG_SEQUENCE,
+ &call_details->list[index]));
+ }
+
+ ASN1_CONSTRUCTED_END(seq_len, pos, end);
+
+ return pos;
+}
+
+/*!
+ * \brief Encode the StatusRequest invoke facility ie arguments.
+ *
+ * \param ctrl D channel controller for diagnostic messages or global options.
+ * \param pos Starting position to encode ASN.1 component.
+ * \param end End of ASN.1 encoding data buffer.
+ * \param args Arguments to encode in the buffer.
+ *
+ * \retval Start of the next ASN.1 component to encode on success.
+ * \retval NULL on error.
+ */
+unsigned char *rose_enc_etsi_StatusRequest_ARG(struct pri *ctrl, unsigned char *pos,
+ unsigned char *end, const union rose_msg_invoke_args *args)
+{
+ const struct roseEtsiStatusRequest_ARG *status_request;
+ unsigned char *seq_len;
+
+ ASN1_CONSTRUCTED_BEGIN(seq_len, pos, end, ASN1_TAG_SEQUENCE);
+
+ status_request = &args->etsi.StatusRequest;
+ ASN1_CALL(pos, asn1_enc_int(pos, end, ASN1_TYPE_ENUMERATED,
+ status_request->compatibility_mode));
+ ASN1_CALL(pos, rose_enc_Q931ie(ctrl, pos, end, ASN1_CLASS_APPLICATION | 0,
+ &status_request->q931ie));
+
+ ASN1_CONSTRUCTED_END(seq_len, pos, end);
+
+ return pos;
+}
+
+/*!
+ * \brief Encode the StatusRequest result facility ie arguments.
+ *
+ * \param ctrl D channel controller for diagnostic messages or global options.
+ * \param pos Starting position to encode ASN.1 component.
+ * \param end End of ASN.1 encoding data buffer.
+ * \param args Arguments to encode in the buffer.
+ *
+ * \retval Start of the next ASN.1 component to encode on success.
+ * \retval NULL on error.
+ */
+unsigned char *rose_enc_etsi_StatusRequest_RES(struct pri *ctrl, unsigned char *pos,
+ unsigned char *end, const union rose_msg_result_args *args)
+{
+ return asn1_enc_int(pos, end, ASN1_TYPE_ENUMERATED, args->etsi.StatusRequest.status);
+}
+
+/*!
+ * \brief Encode the CallInfoRetain invoke facility ie arguments.
+ *
+ * \param ctrl D channel controller for diagnostic messages or global options.
+ * \param pos Starting position to encode ASN.1 component.
+ * \param end End of ASN.1 encoding data buffer.
+ * \param args Arguments to encode in the buffer.
+ *
+ * \retval Start of the next ASN.1 component to encode on success.
+ * \retval NULL on error.
+ */
+unsigned char *rose_enc_etsi_CallInfoRetain_ARG(struct pri *ctrl, unsigned char *pos,
+ unsigned char *end, const union rose_msg_invoke_args *args)
+{
+ return asn1_enc_int(pos, end, ASN1_TYPE_INTEGER,
+ args->etsi.CallInfoRetain.call_linkage_id);
+}
+
+/*!
+ * \brief Encode the EraseCallLinkageID invoke facility ie arguments.
+ *
+ * \param ctrl D channel controller for diagnostic messages or global options.
+ * \param pos Starting position to encode ASN.1 component.
+ * \param end End of ASN.1 encoding data buffer.
+ * \param args Arguments to encode in the buffer.
+ *
+ * \retval Start of the next ASN.1 component to encode on success.
+ * \retval NULL on error.
+ */
+unsigned char *rose_enc_etsi_EraseCallLinkageID_ARG(struct pri *ctrl, unsigned char *pos,
+ unsigned char *end, const union rose_msg_invoke_args *args)
+{
+ return asn1_enc_int(pos, end, ASN1_TYPE_INTEGER,
+ args->etsi.EraseCallLinkageID.call_linkage_id);
+}
+
+/*!
+ * \brief Encode the CCBSDeactivate invoke facility ie arguments.
+ *
+ * \param ctrl D channel controller for diagnostic messages or global options.
+ * \param pos Starting position to encode ASN.1 component.
+ * \param end End of ASN.1 encoding data buffer.
+ * \param args Arguments to encode in the buffer.
+ *
+ * \retval Start of the next ASN.1 component to encode on success.
+ * \retval NULL on error.
+ */
+unsigned char *rose_enc_etsi_CCBSDeactivate_ARG(struct pri *ctrl, unsigned char *pos,
+ unsigned char *end, const union rose_msg_invoke_args *args)
+{
+ return asn1_enc_int(pos, end, ASN1_TYPE_INTEGER,
+ args->etsi.CCBSDeactivate.ccbs_reference);
+}
+
+/*!
+ * \brief Encode the CCBSErase invoke facility ie arguments.
+ *
+ * \param ctrl D channel controller for diagnostic messages or global options.
+ * \param pos Starting position to encode ASN.1 component.
+ * \param end End of ASN.1 encoding data buffer.
+ * \param args Arguments to encode in the buffer.
+ *
+ * \retval Start of the next ASN.1 component to encode on success.
+ * \retval NULL on error.
+ */
+unsigned char *rose_enc_etsi_CCBSErase_ARG(struct pri *ctrl, unsigned char *pos,
+ unsigned char *end, const union rose_msg_invoke_args *args)
+{
+ const struct roseEtsiCCBSErase_ARG *ccbs_erase;
+ unsigned char *seq_len;
+
+ ASN1_CONSTRUCTED_BEGIN(seq_len, pos, end, ASN1_TAG_SEQUENCE);
+
+ ccbs_erase = &args->etsi.CCBSErase;
+ ASN1_CALL(pos, asn1_enc_int(pos, end, ASN1_TYPE_ENUMERATED,
+ ccbs_erase->recall_mode));
+ ASN1_CALL(pos, asn1_enc_int(pos, end, ASN1_TYPE_INTEGER,
+ ccbs_erase->ccbs_reference));
+ ASN1_CALL(pos, rose_enc_Address(ctrl, pos, end, ASN1_TAG_SEQUENCE,
+ &ccbs_erase->address_of_b));
+ ASN1_CALL(pos, rose_enc_Q931ie(ctrl, pos, end, ASN1_CLASS_APPLICATION | 0,
+ &ccbs_erase->q931ie));
+ ASN1_CALL(pos, asn1_enc_int(pos, end, ASN1_TYPE_ENUMERATED, ccbs_erase->reason));
+
+ ASN1_CONSTRUCTED_END(seq_len, pos, end);
+
+ return pos;
+}
+
+/*!
+ * \brief Encode the CCBSRemoteUserFree invoke facility ie arguments.
+ *
+ * \param ctrl D channel controller for diagnostic messages or global options.
+ * \param pos Starting position to encode ASN.1 component.
+ * \param end End of ASN.1 encoding data buffer.
+ * \param args Arguments to encode in the buffer.
+ *
+ * \retval Start of the next ASN.1 component to encode on success.
+ * \retval NULL on error.
+ */
+unsigned char *rose_enc_etsi_CCBSRemoteUserFree_ARG(struct pri *ctrl, unsigned char *pos,
+ unsigned char *end, const union rose_msg_invoke_args *args)
+{
+ const struct roseEtsiCCBSRemoteUserFree_ARG *ccbs_remote_user_free;
+ unsigned char *seq_len;
+
+ ASN1_CONSTRUCTED_BEGIN(seq_len, pos, end, ASN1_TAG_SEQUENCE);
+
+ ccbs_remote_user_free = &args->etsi.CCBSRemoteUserFree;
+ ASN1_CALL(pos, asn1_enc_int(pos, end, ASN1_TYPE_ENUMERATED,
+ ccbs_remote_user_free->recall_mode));
+ ASN1_CALL(pos, asn1_enc_int(pos, end, ASN1_TYPE_INTEGER,
+ ccbs_remote_user_free->ccbs_reference));
+ ASN1_CALL(pos, rose_enc_Address(ctrl, pos, end, ASN1_TAG_SEQUENCE,
+ &ccbs_remote_user_free->address_of_b));
+ ASN1_CALL(pos, rose_enc_Q931ie(ctrl, pos, end, ASN1_CLASS_APPLICATION | 0,
+ &ccbs_remote_user_free->q931ie));
+
+ ASN1_CONSTRUCTED_END(seq_len, pos, end);
+
+ return pos;
+}
+
+/*!
+ * \brief Encode the CCBSCall invoke facility ie arguments.
+ *
+ * \param ctrl D channel controller for diagnostic messages or global options.
+ * \param pos Starting position to encode ASN.1 component.
+ * \param end End of ASN.1 encoding data buffer.
+ * \param args Arguments to encode in the buffer.
+ *
+ * \retval Start of the next ASN.1 component to encode on success.
+ * \retval NULL on error.
+ */
+unsigned char *rose_enc_etsi_CCBSCall_ARG(struct pri *ctrl, unsigned char *pos,
+ unsigned char *end, const union rose_msg_invoke_args *args)
+{
[... 2164 lines stripped ...]
More information about the libpri-commits
mailing list