[libpri-commits] rmudgett: branch group/issue14292 r774 - /team/group/issue14292/

SVN commits to the libpri project libpri-commits at lists.digium.com
Tue Apr 21 18:47:39 CDT 2009


Author: rmudgett
Date: Tue Apr 21 18:47:36 2009
New Revision: 774

URL: http://svn.digium.com/svn-view/libpri?view=rev&rev=774
Log:
Merged revisions 773 via svnmerge from 
https://origsvn.digium.com/svn/libpri/team/group/issue14068

................
  r773 | rmudgett | 2009-04-21 18:37:20 -0500 (Tue, 21 Apr 2009) | 9 lines
  
  Merged revisions 772 via svnmerge from 
  https://origsvn.digium.com/svn/libpri/branches/1.4
  
  ........
    r772 | rmudgett | 2009-04-21 18:32:13 -0500 (Tue, 21 Apr 2009) | 2 lines
    
    Added Q.SIG Advice-Of-Charge encode/decode routines.
  ........
................

Added:
    team/group/issue14292/rose_qsig_aoc.c
      - copied unchanged from r773, team/group/issue14068/rose_qsig_aoc.c
Modified:
    team/group/issue14292/   (props changed)
    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

Propchange: team/group/issue14292/
------------------------------------------------------------------------------
--- issue14292-integrated (original)
+++ issue14292-integrated Tue Apr 21 18:47:36 2009
@@ -1,1 +1,1 @@
-/team/group/issue14068:1-770
+/team/group/issue14068:1-773

Propchange: team/group/issue14292/
------------------------------------------------------------------------------
--- svnmerge-integrated (original)
+++ svnmerge-integrated Tue Apr 21 18:47:36 2009
@@ -1,1 +1,1 @@
-/branches/1.4:1-769
+/branches/1.4:1-772

Modified: team/group/issue14292/Makefile
URL: http://svn.digium.com/svn-view/libpri/team/group/issue14292/Makefile?view=diff&rev=774&r1=773&r2=774
==============================================================================
--- team/group/issue14292/Makefile (original)
+++ team/group/issue14292/Makefile Tue Apr 21 18:47:36 2009
@@ -57,6 +57,7 @@
 	rose_etsi_ect.o \
 	rose_other.o \
 	rose_q931.o \
+	rose_qsig_aoc.o \
 	rose_qsig_cc.o \
 	rose_qsig_ct.o \
 	rose_qsig_diversion.o \
@@ -79,6 +80,7 @@
 	rose_etsi_ect.lo \
 	rose_other.lo \
 	rose_q931.lo \
+	rose_qsig_aoc.lo \
 	rose_qsig_cc.lo \
 	rose_qsig_ct.lo \
 	rose_qsig_diversion.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=774&r1=773&r2=774
==============================================================================
--- team/group/issue14292/pri_facility.c (original)
+++ team/group/issue14292/pri_facility.c Tue Apr 21 18:47:36 2009
@@ -2245,6 +2245,12 @@
 		break;
 #endif	/* Not handled yet */
 #if 0	/* Not handled yet */
+	case ROSE_QSIG_ChargeRequest:
+		break;
+	case ROSE_QSIG_AocComplete:
+		break;
+#endif	/* Not handled yet */
+#if 0	/* Not handled yet */
 	case ROSE_QSIG_CallTransferIdentify:
 		break;
 	case ROSE_QSIG_CallTransferInitiate:
@@ -2492,6 +2498,22 @@
 		break;
 #if 0	/* Not handled yet */
 	case ROSE_QSIG_BusyName:
+		break;
+#endif	/* Not handled yet */
+#if 0	/* Not handled yet */
+	case ROSE_QSIG_ChargeRequest:
+		break;
+	case ROSE_QSIG_GetFinalCharge:
+		break;
+	case ROSE_QSIG_AocFinal:
+		break;
+	case ROSE_QSIG_AocInterim:
+		break;
+	case ROSE_QSIG_AocRate:
+		break;
+	case ROSE_QSIG_AocComplete:
+		break;
+	case ROSE_QSIG_AocDivChargeReq:
 		break;
 #endif	/* Not handled yet */
 #if 0	/* Not handled yet */

Modified: team/group/issue14292/rose.c
URL: http://svn.digium.com/svn-view/libpri/team/group/issue14292/rose.c?view=diff&rev=774&r1=773&r2=774
==============================================================================
--- team/group/issue14292/rose.c (original)
+++ team/group/issue14292/rose.c Tue Apr 21 18:47:36 2009
@@ -728,6 +728,46 @@
 	},
 
 	/*
+	 * localValue's from Q.SIG SS-AOC-Operations
+	 * { iso(1) standard(0) pss1-advice-of-charge(15050) advice-of-charge-operations(0) }
+	 */
+	{
+		ROSE_QSIG_ChargeRequest,					NULL, 59,
+			rose_enc_qsig_ChargeRequest_ARG,		rose_enc_qsig_ChargeRequest_RES,
+			rose_dec_qsig_ChargeRequest_ARG,		rose_dec_qsig_ChargeRequest_RES
+	},
+	{
+		ROSE_QSIG_GetFinalCharge,					NULL, 60,
+			rose_enc_qsig_DummyArg_ARG,				NULL,
+			rose_dec_qsig_DummyArg_ARG,				NULL
+	},
+	{
+		ROSE_QSIG_AocFinal,							NULL, 61,
+			rose_enc_qsig_AocFinal_ARG,				NULL,
+			rose_dec_qsig_AocFinal_ARG,				NULL
+	},
+	{
+		ROSE_QSIG_AocInterim,						NULL, 62,
+			rose_enc_qsig_AocInterim_ARG,			NULL,
+			rose_dec_qsig_AocInterim_ARG,			NULL
+	},
+	{
+		ROSE_QSIG_AocRate,							NULL, 63,
+			rose_enc_qsig_AocRate_ARG,				NULL,
+			rose_dec_qsig_AocRate_ARG,				NULL
+	},
+	{
+		ROSE_QSIG_AocComplete,						NULL, 64,
+			rose_enc_qsig_AocComplete_ARG,			rose_enc_qsig_AocComplete_RES,
+			rose_dec_qsig_AocComplete_ARG,			rose_dec_qsig_AocComplete_RES
+	},
+	{
+		ROSE_QSIG_AocDivChargeReq,					NULL, 65,
+			rose_enc_qsig_AocDivChargeReq_ARG,		NULL,
+			rose_dec_qsig_AocDivChargeReq_ARG,		NULL
+	},
+
+	/*
 	 * localValue's from Q.SIG Call-Transfer-Operations
 	 * { iso(1) standard(0) pss1-call-transfer(13869) call-transfer-operations(0) }
 	 */
@@ -971,6 +1011,15 @@
 	 */
 	{
 		ROSE_ERROR_QSIG_Unspecified,				NULL, 1008,
+			NULL,									NULL
+	},
+
+	/*
+	 * localValue Errors from Q.SIG SS-AOC-Operations
+	 * { iso(1) standard(0) pss1-advice-of-charge(15050) advice-of-charge-operations(0) }
+	 */
+	{
+		ROSE_ERROR_QSIG_AOC_FreeOfCharge,			NULL, 1016,
 			NULL,									NULL
 	},
 
@@ -1347,6 +1396,14 @@
 		{ ROSE_QSIG_ConnectedName,                  "ROSE_QSIG_ConnectedName" },
 		{ ROSE_QSIG_BusyName,                       "ROSE_QSIG_BusyName" },
 
+		{ ROSE_QSIG_ChargeRequest,                  "ROSE_QSIG_ChargeRequest" },
+		{ ROSE_QSIG_GetFinalCharge,                 "ROSE_QSIG_GetFinalCharge" },
+		{ ROSE_QSIG_AocFinal,                       "ROSE_QSIG_AocFinal" },
+		{ ROSE_QSIG_AocInterim,                     "ROSE_QSIG_AocInterim" },
+		{ ROSE_QSIG_AocRate,                        "ROSE_QSIG_AocRate" },
+		{ ROSE_QSIG_AocComplete,                    "ROSE_QSIG_AocComplete" },
+		{ ROSE_QSIG_AocDivChargeReq,                "ROSE_QSIG_AocDivChargeReq" },
+
 		{ ROSE_QSIG_CallTransferIdentify,           "ROSE_QSIG_CallTransferIdentify" },
 		{ ROSE_QSIG_CallTransferAbandon,            "ROSE_QSIG_CallTransferAbandon" },
 		{ ROSE_QSIG_CallTransferInitiate,           "ROSE_QSIG_CallTransferInitiate" },
@@ -1450,6 +1507,8 @@
 
 		/* Q.SIG specific errors */
 		{ ROSE_ERROR_QSIG_Unspecified,                "Unspecified" },
+
+		{ ROSE_ERROR_QSIG_AOC_FreeOfCharge,           "AOC: FreeOfCharge" },
 
 		{ ROSE_ERROR_QSIG_CT_InvalidReroutingNumber,  "CT: Invalid Rerouting Number" },
 		{ ROSE_ERROR_QSIG_CT_UnrecognizedCallIdentity,"CT: Unrecognized Call Identity" },

Modified: team/group/issue14292/rose.h
URL: http://svn.digium.com/svn-view/libpri/team/group/issue14292/rose.h?view=diff&rev=774&r1=773&r2=774
==============================================================================
--- team/group/issue14292/rose.h (original)
+++ team/group/issue14292/rose.h Tue Apr 21 18:47:36 2009
@@ -140,6 +140,15 @@
 	ROSE_QSIG_ConnectedName,                /*!< Invoke only */
 	ROSE_QSIG_BusyName,                     /*!< Invoke only */
 
+	/* Q.SIG SS-AOC-Operations */
+	ROSE_QSIG_ChargeRequest,                /*!< Invoke/Result */
+	ROSE_QSIG_GetFinalCharge,               /*!< Invoke only */
+	ROSE_QSIG_AocFinal,                     /*!< Invoke only */
+	ROSE_QSIG_AocInterim,                   /*!< Invoke only */
+	ROSE_QSIG_AocRate,                      /*!< Invoke only */
+	ROSE_QSIG_AocComplete,                  /*!< Invoke/Result */
+	ROSE_QSIG_AocDivChargeReq,              /*!< Invoke only */
+
 	/* Q.SIG Call-Transfer-Operations (CT) */
 	ROSE_QSIG_CallTransferIdentify,         /*!< Invoke/Result */
 	ROSE_QSIG_CallTransferAbandon,          /*!< Invoke only */
@@ -247,6 +256,9 @@
 
 	/* Q.SIG from various specifications */
 	ROSE_ERROR_QSIG_Unspecified,
+
+	/* Q.SIG SS-AOC-Operations */
+	ROSE_ERROR_QSIG_AOC_FreeOfCharge,
 
 	/* Q.SIG Call-Transfer-Operations (CT) */
 	ROSE_ERROR_QSIG_CT_InvalidReroutingNumber,
@@ -2149,6 +2161,455 @@
  */
 struct roseQsigPartyName_ARG {
 	struct roseQsigName name;
+};
+
+
+/* ------------------------------------------------------------------- */
+
+
+/*
+ * Time ::= SEQUENCE {
+ *     lengthOfTimeUnit [1] IMPLICIT LengthOfTimeUnit,
+ *     scale            [2] IMPLICIT Scale
+ * }
+ */
+struct roseQsigAOCTime {
+	/*! LengthOfTimeUnit ::= INTEGER (0..16777215) -- 24 bit number */
+	u_int32_t length;
+	/*!
+	 * \details
+	 * oneHundredthSecond(0),
+	 * oneTenthSecond(1),
+	 * oneSecond(2),
+	 * tenSeconds(3),
+	 * oneMinute(4),
+	 * oneHour(5),
+	 * twentyFourHours(6)
+	 */
+	u_int8_t scale;
+};
+
+/*
+ * Amount ::= SEQUENCE {
+ *     currencyAmount [1] IMPLICIT CurrencyAmount,
+ *     multiplier     [2] IMPLICIT Multiplier
+ * }
+ */
+struct roseQsigAOCAmount {
+	/*! CurrencyAmount ::= INTEGER (0..16777215) -- 24 bit number */
+	u_int32_t currency;
+	/*!
+	 * \details
+	 * oneThousandth(0),
+	 * oneHundredth(1),
+	 * oneTenth(2),
+	 * one(3),
+	 * ten(4),
+	 * hundred(5),
+	 * thousand(6)
+	 */
+	u_int8_t multiplier;
+};
+
+/*
+ * DurationCurrency ::= SEQUENCE {
+ *     dCurrency       [1] IMPLICIT Currency,
+ *     dAmount         [2] IMPLICIT Amount,
+ *     dChargingType   [3] IMPLICIT ChargingType,
+ *     dTime           [4] IMPLICIT Time,
+ *     dGranularity    [5] IMPLICIT Time OPTIONAL
+ * }
+ */
+struct roseQsigAOCDurationCurrency {
+	struct roseQsigAOCAmount amount;
+	struct roseQsigAOCTime time;
+	/*! \brief dGranularity (optional) */
+	struct roseQsigAOCTime granularity;
+	/*!
+	 * \brief Name of currency
+	 * \details
+	 * Currency ::= IA5String (SIZE (0..10))
+	 * \note The empty string is the default currency for the network.
+	 */
+	unsigned char currency[10 + 1];
+	/*!
+	 * \details
+	 * continuousCharging(0),
+	 * stepFunction(1)
+	 */
+	u_int8_t charging_type;
+	/*! TRUE if granularity time is present */
+	u_int8_t granularity_present;
+};
+
+/*
+ * FlatRateCurrency ::= SEQUENCE {
+ *     fRCurrency      [1] IMPLICIT Currency,
+ *     fRAmount        [2] IMPLICIT Amount
+ * }
+ */
+struct roseQsigAOCFlatRateCurrency {
+	struct roseQsigAOCAmount amount;
+	/*!
+	 * \brief Name of currency
+	 * \details
+	 * Currency ::= IA5String (SIZE (0..10))
+	 * \note The empty string is the default currency for the network.
+	 */
+	unsigned char currency[10 + 1];
+};
+
+/*
+ * VolumeRateCurrency ::= SEQUENCE {
+ *     vRCurrency      [1] IMPLICIT Currency,
+ *     vRAmount        [2] IMPLICIT Amount,
+ *     vRVolumeUnit    [3] IMPLICIT VolumeUnit
+ * }
+ */
+struct roseQsigAOCVolumeRateCurrency {
+	struct roseQsigAOCAmount amount;
+	/*!
+	 * \brief Name of currency
+	 * \details
+	 * Currency ::= IA5String (SIZE (0..10))
+	 * \note The empty string is the default currency for the network.
+	 */
+	unsigned char currency[10 + 1];
+	/*!
+	 * \brief Volume rate volume unit
+	 * \details
+	 * octet(0),
+	 * segment(1),
+	 * message(2)
+	 */
+	u_int8_t unit;
+};
+
+/*
+ * AOCSCurrencyInfo ::= SEQUENCE {
+ *     chargedItem                     ChargedItem,
+ *     rateType CHOICE {
+ *         durationCurrency            [1] IMPLICIT DurationCurrency,
+ *         flatRateCurrency            [2] IMPLICIT FlatRateCurrency,
+ *         volumeRateCurrency          [3] IMPLICIT VolumeRateCurrency,
+ *         specialChargingCode         SpecialChargingCode,
+ *         freeOfCharge                [4] IMPLICIT NULL,
+ *         currencyInfoNotAvailable    [5] IMPLICIT NULL,
+ *         freeOfChargefromBeginning   [6] IMPLICIT NULL
+ *     }
+ * }
+ */
+struct roseQsigAOCSCurrencyInfo {
+	union {
+		struct roseQsigAOCDurationCurrency duration;
+		struct roseQsigAOCFlatRateCurrency flat_rate;
+		struct roseQsigAOCVolumeRateCurrency volume_rate;
+		/*! SpecialChargingCode ::= INTEGER (1..10) */
+		u_int8_t special_charging_code;
+	} u;
+	/*!
+	 * \brief Determine what is stored in the union.
+	 * \details
+	 * specialChargingCode(0),
+	 * durationCurrency(1),
+	 * flatRateCurrency(2),
+	 * volumeRateCurrency(3),
+	 * freeOfCharge(4),
+	 * currencyInfoNotAvailable(5),
+	 * freeOfChargeFromBeginning(6)
+	 */
+	u_int8_t currency_type;
+	/*!
+	 * \brief What service is being billed.
+	 * \details
+	 * basicCommunication(0),
+	 * callAttempt(1),
+	 * callSetup(2),
+	 * userToUserInfo(3),
+	 * operationOfSupplementaryServ(4)
+	 */
+	u_int8_t charged_item;
+};
+
+/*
+ * AOCSCurrencyInfoList ::= SEQUENCE SIZE (1..10) OF AOCSCurrencyInfo
+ */
+struct roseQsigAOCSCurrencyInfoList {
+	/*! \brief SEQUENCE SIZE (1..10) OF AOCSCurrencyInfo */
+	struct roseQsigAOCSCurrencyInfo list[10];
+
+	/*! \brief Number of AOCSCurrencyInfo records present */
+	u_int8_t num_records;
+};
+
+/*
+ * RecordedCurrency ::= SEQUENCE {
+ *     rCurrency       [1] IMPLICIT Currency,
+ *     rAmount         [2] IMPLICIT Amount
+ * }
+ */
+struct roseQsigAOCRecordedCurrency {
+	/*! Amount of currency involved. */
+	struct roseQsigAOCAmount amount;
+	/*!
+	 * \brief Name of currency
+	 * \details
+	 * Currency ::= IA5String (SIZE (0..10))
+	 * \note The empty string is the default currency for the network.
+	 */
+	unsigned char currency[10 + 1];
+};
+
+/*
+ * ChargingAssociation ::= CHOICE {
+ *     chargedNumber     [0] EXPLICIT PartyNumber,
+ *     chargeIdentifier  ChargeIdentifier
+ * }
+ */
+struct roseQsigAOCChargingAssociation {
+	/*! chargeIdentifier: INTEGER (-32768..32767) -- 16 bit number */
+	int16_t id;
+	/*! chargedNumber */
+	struct rosePartyNumber number;
+	/*!
+	 * \details
+	 * charge_identifier(0)
+	 * charged_number(1),
+	 */
+	u_int8_t type;
+};
+
+/*
+ * AocRateArg ::= SEQUENCE {
+ *     aocRate CHOICE
+ *     {
+ *         chargeNotAvailable      NULL,
+ *         aocSCurrencyInfoList    AOCSCurrencyInfoList
+ *     },
+ *     rateArgExtension CHOICE {
+ *         extension               [1] IMPLICIT Extension,
+ *         multipleExtension       [2] IMPLICIT SEQUENCE OF Extension
+ *     } OPTIONAL
+ * }
+ */
+struct roseQsigAocRateArg_ARG {
+	struct roseQsigAOCSCurrencyInfoList currency_info;
+	/*!
+	 * \details
+	 * charge_not_available(0),
+	 * currency_info_list(1)
+	 */
+	u_int8_t type;
+};
+
+/*
+ * AocInterimArg ::= SEQUENCE {
+ *     interimCharge CHOICE {
+ *         chargeNotAvailable      [0] IMPLICIT NULL,
+ *         freeOfCharge            [1] IMPLICIT NULL,
+ *         specificCurrency        SEQUENCE {
+ *             recordedCurrency    [1] IMPLICIT RecordedCurrency,
+ *             interimBillingId    [2] IMPLICIT InterimBillingId OPTIONAL
+ *         }
+ *     },
+ *     interimArgExtension CHOICE {
+ *         extension           [1] IMPLICIT Extension,
+ *         multipleExtension   [2] IMPLICIT SEQUENCE OF Extension
+ *     } OPTIONAL
+ * }
+ */
+struct roseQsigAocInterimArg_ARG {
+	struct {
+		/*! \brief recorded currency */
+		struct roseQsigAOCRecordedCurrency recorded;
+		/*!
+		 * \brief InterimBillingId (optional)
+		 * \details
+		 * normalCharging(0),
+		 * creditCardCharging(2)
+		 */
+		u_int8_t billing_id;
+		/*! \brief TRUE if billing id is present */
+		u_int8_t billing_id_present;
+	} specific;
+	/*!
+	 * \details
+	 * charge_not_available(0),
+	 * free_of_charge(1),
+	 * specific_currency(2)
+	 */
+	u_int8_t type;
+};
+
+/*
+ * AocFinalArg ::= SEQUENCE {
+ *     finalCharge CHOICE {
+ *         chargeNotAvailable      [0] IMPLICIT NULL,
+ *         freeOfCharge            [1] IMPLICIT NULL,
+ *         specificCurrency        SEQUENCE {
+ *             recordedCurrency    [1] IMPLICIT RecordedCurrency,
+ *             finalBillingId      [2] IMPLICIT FinalBillingId OPTIONAL
+ *         }
+ *     },
+ *     chargingAssociation ChargingAssociation OPTIONAL,
+ *     finalArgExtension   CHOICE {
+ *         extension           [1] IMPLICIT Extension,
+ *         multipleExtension   [2] IMPLICIT SEQUENCE OF Extension
+ *     } OPTIONAL
+ * }
+ */
+struct roseQsigAocFinalArg_ARG {
+	struct {
+		/*! \brief recorded currency */
+		struct roseQsigAOCRecordedCurrency recorded;
+		/*!
+		 * \brief FinalBillingId (optional)
+		 * \details
+		 * normalCharging(0),
+		 * creditCardCharging(2),
+		 * callForwardingUnconditional(3),
+		 * callForwardingBusy(4),
+		 * callForwardingNoReply(5),
+		 * callDeflection(6),
+		 * callTransfer(7)
+		 */
+		u_int8_t billing_id;
+		/*! \brief TRUE if billing id is present */
+		u_int8_t billing_id_present;
+	} specific;
+
+	/*! \brief chargingAssociation (optional) */
+	struct roseQsigAOCChargingAssociation charging_association;
+
+	/*! \brief TRUE if charging_association is present */
+	u_int8_t charging_association_present;
+
+	/*!
+	 * \details
+	 * charge_not_available(0),
+	 * free_of_charge(1),
+	 * specific_currency(2)
+	 */
+	u_int8_t type;
+};
+
+/*
+ * ChargeRequestArg ::= SEQUENCE {
+ *     adviceModeCombinations  SEQUENCE SIZE(0..7) OF AdviceModeCombination,
+ *     chargeReqArgExtension   CHOICE {
+ *         extension           [1] IMPLICIT Extension,
+ *         multipleExtension   [2] IMPLICIT SEQUENCE OF Extension
+ *     } OPTIONAL
+ * }
+ */
+struct roseQsigChargeRequestArg_ARG {
+	/*!
+	 * \brief SEQUENCE SIZE(0..7) OF AdviceModeCombination
+	 * \details
+	 * rate(0) <charge rate provision>,
+	 * rateInterim(1) <charge rate and interim charge provision>,
+	 * rateFinal(2) <charge rate and final charge provision>,
+	 * interim(3) <interim charge provision>,
+	 * final(4) <final charge provision>,
+	 * interimFinal(5) <interim charge and final charge provision>,
+	 * rateInterimFinal(6) <charge rate, interim charge and final charge provision>
+	 */
+	u_int8_t advice_mode_combinations[7];
+
+	/*! \brief Number of AdviceModeCombination values present */
+	u_int8_t num_records;
+};
+
+/*
+ * ChargeRequestRes ::= SEQUENCE {
+ *     adviceModeCombination   AdviceModeCombination,
+ *     chargeReqResExtension   CHOICE {
+ *         extension           [1] IMPLICIT Extension,
+ *         multipleExtension   [2] IMPLICIT SEQUENCE OF Extension
+ *     } OPTIONAL
+ * }
+ */
+struct roseQsigChargeRequestRes_RES {
+	/*!
+	 * \details
+	 * rate(0) <charge rate provision>,
+	 * rateInterim(1) <charge rate and interim charge provision>,
+	 * rateFinal(2) <charge rate and final charge provision>,
+	 * interim(3) <interim charge provision>,
+	 * final(4) <final charge provision>,
+	 * interimFinal(5) <interim charge and final charge provision>,
+	 * rateInterimFinal(6) <charge rate, interim charge and final charge provision>
+	 */
+	u_int8_t advice_mode_combination;
+};
+
+/*
+ * AocCompleteArg ::= SEQUENCE {
+ *     chargedUser             PartyNumber,
+ *     chargingAssociation     ChargingAssociation OPTIONAL,
+ *     completeArgExtension    CHOICE {
+ *         extension           [1] IMPLICIT Extension,
+ *         multipleExtension   [2] IMPLICIT SEQUENCE OF Extension
+ *     } OPTIONAL
+ * }
+ */
+struct roseQsigAocCompleteArg_ARG {
+	/*! \brief chargingAssociation (optional) */
+	struct roseQsigAOCChargingAssociation charging_association;
+
+	struct rosePartyNumber charged_user_number;
+
+	/*! \brief TRUE if charging_association is present */
+	u_int8_t charging_association_present;
+};
+
+/*
+ * AocCompleteRes ::= SEQUENCE {
+ *     chargingOption          ChargingOption,
+ *     completeResExtension    CHOICE {
+ *         extension           [1] IMPLICIT Extension,
+ *         multipleExtension   [2] IMPLICIT SEQUENCE OF Extension
+ *     } OPTIONAL
+ * }
+ */
+struct roseQsigAocCompleteRes_RES {
+	/*!
+	 * \details
+	 * aocFreeOfCharge(0),
+	 * aocContinueCharging(1),
+	 * aocStopCharging(2)
+	 */
+	u_int8_t charging_option;
+};
+
+/*
+ * AocDivChargeReqArg ::= SEQUENCE {
+ *     divertingUser           PartyNumber,
+ *     chargingAssociation     ChargingAssociation OPTIONAL,
+ *     diversionType           DiversionType,
+ *     aocDivChargeReqArgExt   CHOICE {
+ *         extension           [1] IMPLICIT Extension,
+ *         multipleExtension   [2] IMPLICIT SEQUENCE OF Extension
+ *     } OPTIONAL
+ * }
+ */
+struct roseQsigAocDivChargeReqArg_ARG {
+	/*! \brief chargingAssociation (optional) */
+	struct roseQsigAOCChargingAssociation charging_association;
+
+	struct rosePartyNumber diverting_user_number;
+
+	/*! \brief TRUE if charging_association is present */
+	u_int8_t charging_association_present;
+
+	/*!
+	 * \details
+	 * callForwardingUnconditional(0),
+	 * callForwardingBusy(1),
+	 * callForwardingNoReply(2),
+	 * callDeflection(3)
+	 */
+	u_int8_t diversion_type;
 };
 
 
@@ -3442,6 +3903,14 @@
 	struct roseQsigPartyName_ARG ConnectedName;
 	struct roseQsigPartyName_ARG BusyName;
 
+	/* Q.SIG SS-AOC-Operations */
+	struct roseQsigChargeRequestArg_ARG ChargeRequest;
+	struct roseQsigAocFinalArg_ARG AocFinal;
+	struct roseQsigAocInterimArg_ARG AocInterim;
+	struct roseQsigAocRateArg_ARG AocRate;
+	struct roseQsigAocCompleteArg_ARG AocComplete;
+	struct roseQsigAocDivChargeReqArg_ARG AocDivChargeReq;
+
 	/* Q.SIG Call-Transfer-Operations */
 	struct roseQsigCTInitiateArg_ARG CallTransferInitiate;
 	struct roseQsigCTSetupArg_ARG CallTransferSetup;
@@ -3474,6 +3943,10 @@
 
 /*! \brief Facility ie result qsig messages with arguments. */
 union rose_msg_result_qsig_args {
+	/* Q.SIG SS-AOC-Operations */
+	struct roseQsigChargeRequestRes_RES ChargeRequest;
+	struct roseQsigAocCompleteRes_RES AocComplete;
+
 	/* Q.SIG Call-Transfer-Operations */
 	struct roseQsigCTIdentifyRes_RES CallTransferIdentify;
 

Modified: team/group/issue14292/rose_internal.h
URL: http://svn.digium.com/svn-view/libpri/team/group/issue14292/rose_internal.h?view=diff&rev=774&r1=773&r2=774
==============================================================================
--- team/group/issue14292/rose_internal.h (original)
+++ team/group/issue14292/rose_internal.h Tue Apr 21 18:47:36 2009
@@ -399,9 +399,10 @@
 
 /*
  * Q.SIG Dummy invoke/result argument used by:
+ * SS-AOC-Operations,
  * Call-Transfer-Operations,
- * Call-Diversion-Operations, 
- * and SS-MWI-Operations 
+ * Call-Diversion-Operations,
+ * and SS-MWI-Operations.
  */
 unsigned char *rose_enc_qsig_DummyArg_ARG(struct pri *ctrl, unsigned char *pos,
 	unsigned char *end, const union rose_msg_invoke_args *args);
@@ -414,6 +415,49 @@
 const unsigned char *rose_dec_qsig_DummyRes_RES(struct pri *ctrl, unsigned tag,
 	const unsigned char *pos, const unsigned char *end,
 	union rose_msg_result_args *args);
+
+/* Q.SIG SS-AOC-Operations */
+unsigned char *rose_enc_qsig_ChargeRequest_ARG(struct pri *ctrl, unsigned char *pos,
+	unsigned char *end, const union rose_msg_invoke_args *args);
+unsigned char *rose_enc_qsig_ChargeRequest_RES(struct pri *ctrl, unsigned char *pos,
+	unsigned char *end, const union rose_msg_result_args *args);
+unsigned char *rose_enc_qsig_AocFinal_ARG(struct pri *ctrl, unsigned char *pos,
+	unsigned char *end, const union rose_msg_invoke_args *args);
+unsigned char *rose_enc_qsig_AocInterim_ARG(struct pri *ctrl, unsigned char *pos,
+	unsigned char *end, const union rose_msg_invoke_args *args);
+unsigned char *rose_enc_qsig_AocRate_ARG(struct pri *ctrl, unsigned char *pos,
+	unsigned char *end, const union rose_msg_invoke_args *args);
+unsigned char *rose_enc_qsig_AocComplete_ARG(struct pri *ctrl, unsigned char *pos,
+	unsigned char *end, const union rose_msg_invoke_args *args);
+unsigned char *rose_enc_qsig_AocComplete_RES(struct pri *ctrl, unsigned char *pos,
+	unsigned char *end, const union rose_msg_result_args *args);
+unsigned char *rose_enc_qsig_AocDivChargeReq_ARG(struct pri *ctrl, unsigned char *pos,
+	unsigned char *end, const union rose_msg_invoke_args *args);
+
+const unsigned char *rose_dec_qsig_ChargeRequest_ARG(struct pri *ctrl, unsigned tag,
+	const unsigned char *pos, const unsigned char *end,
+	union rose_msg_invoke_args *args);
+const unsigned char *rose_dec_qsig_ChargeRequest_RES(struct pri *ctrl, unsigned tag,
+	const unsigned char *pos, const unsigned char *end,
+	union rose_msg_result_args *args);
+const unsigned char *rose_dec_qsig_AocFinal_ARG(struct pri *ctrl, unsigned tag,
+	const unsigned char *pos, const unsigned char *end,
+	union rose_msg_invoke_args *args);
+const unsigned char *rose_dec_qsig_AocInterim_ARG(struct pri *ctrl, unsigned tag,
+	const unsigned char *pos, const unsigned char *end,
+	union rose_msg_invoke_args *args);
+const unsigned char *rose_dec_qsig_AocRate_ARG(struct pri *ctrl, unsigned tag,
+	const unsigned char *pos, const unsigned char *end,
+	union rose_msg_invoke_args *args);
+const unsigned char *rose_dec_qsig_AocComplete_ARG(struct pri *ctrl, unsigned tag,
+	const unsigned char *pos, const unsigned char *end,
+	union rose_msg_invoke_args *args);
+const unsigned char *rose_dec_qsig_AocComplete_RES(struct pri *ctrl, unsigned tag,
+	const unsigned char *pos, const unsigned char *end,
+	union rose_msg_result_args *args);
+const unsigned char *rose_dec_qsig_AocDivChargeReq_ARG(struct pri *ctrl, unsigned tag,
+	const unsigned char *pos, const unsigned char *end,
+	union rose_msg_invoke_args *args);
 
 /* Q.SIG Call-Diversion-Operations */
 unsigned char *rose_enc_qsig_ActivateDiversionQ_ARG(struct pri *ctrl, unsigned char *pos,

Modified: team/group/issue14292/rosetest.c
URL: http://svn.digium.com/svn-view/libpri/team/group/issue14292/rosetest.c?view=diff&rev=774&r1=773&r2=774
==============================================================================
--- team/group/issue14292/rosetest.c (original)
+++ team/group/issue14292/rosetest.c Tue Apr 21 18:47:36 2009
@@ -1633,6 +1633,316 @@
 		.component.invoke.args.qsig.CallingName.name.char_set = 1,
 	},
 
+	/* Q.SIG SS-AOC-Operations */
+	{
+		.type = ROSE_COMP_TYPE_INVOKE,
+		.component.invoke.operation = ROSE_QSIG_ChargeRequest,
+		.component.invoke.invoke_id = 11,
+		.component.invoke.args.qsig.ChargeRequest.num_records = 0,
+	},
+	{
+		.type = ROSE_COMP_TYPE_INVOKE,
+		.component.invoke.operation = ROSE_QSIG_ChargeRequest,
+		.component.invoke.invoke_id = 12,
+		.component.invoke.args.qsig.ChargeRequest.num_records = 1,
+		.component.invoke.args.qsig.ChargeRequest.advice_mode_combinations[0] = 3,
+	},
+	{
+		.type = ROSE_COMP_TYPE_INVOKE,
+		.component.invoke.operation = ROSE_QSIG_ChargeRequest,
+		.component.invoke.invoke_id = 13,
+		.component.invoke.args.qsig.ChargeRequest.num_records = 2,
+		.component.invoke.args.qsig.ChargeRequest.advice_mode_combinations[0] = 4,
+		.component.invoke.args.qsig.ChargeRequest.advice_mode_combinations[1] = 3,
+	},
+	{
+		.type = ROSE_COMP_TYPE_RESULT,
+		.component.result.operation = ROSE_QSIG_ChargeRequest,
+		.component.result.invoke_id = 14,
+		.component.result.args.qsig.ChargeRequest.advice_mode_combination = 3,
+	},
+
+	{
+		.type = ROSE_COMP_TYPE_INVOKE,
+		.component.invoke.operation = ROSE_QSIG_GetFinalCharge,
+		.component.invoke.invoke_id = 15,
+	},
+
+	{
+		.type = ROSE_COMP_TYPE_INVOKE,
+		.component.invoke.operation = ROSE_QSIG_AocFinal,
+		.component.invoke.invoke_id = 16,
+		.component.invoke.args.qsig.AocFinal.type = 0,
+	},
+	{
+		.type = ROSE_COMP_TYPE_INVOKE,
+		.component.invoke.operation = ROSE_QSIG_AocFinal,
+		.component.invoke.invoke_id = 17,
+		.component.invoke.args.qsig.AocFinal.type = 1,
+	},
+	{
+		.type = ROSE_COMP_TYPE_INVOKE,
+		.component.invoke.operation = ROSE_QSIG_AocFinal,
+		.component.invoke.invoke_id = 18,
+		.component.invoke.args.qsig.AocFinal.type = 2,
+		.component.invoke.args.qsig.AocFinal.specific.recorded.amount.currency = 800,
+		.component.invoke.args.qsig.AocFinal.specific.recorded.amount.multiplier = 2,
+		.component.invoke.args.qsig.AocFinal.specific.recorded.currency = "Rupies",
+	},
+	{
+		.type = ROSE_COMP_TYPE_INVOKE,
+		.component.invoke.operation = ROSE_QSIG_AocFinal,
+		.component.invoke.invoke_id = 19,
+		.component.invoke.args.qsig.AocFinal.type = 2,
+		.component.invoke.args.qsig.AocFinal.specific.recorded.amount.currency = 800,
+		.component.invoke.args.qsig.AocFinal.specific.recorded.amount.multiplier = 2,
+		.component.invoke.args.qsig.AocFinal.specific.recorded.currency = "Rupies",
+		.component.invoke.args.qsig.AocFinal.specific.billing_id_present = 1,
+		.component.invoke.args.qsig.AocFinal.specific.billing_id = 2,
+	},
+	{
+		.type = ROSE_COMP_TYPE_INVOKE,
+		.component.invoke.operation = ROSE_QSIG_AocFinal,
+		.component.invoke.invoke_id = 20,
+		.component.invoke.args.qsig.AocFinal.type = 2,
+		.component.invoke.args.qsig.AocFinal.specific.recorded.amount.currency = 800,
+		.component.invoke.args.qsig.AocFinal.specific.recorded.amount.multiplier = 2,
+		.component.invoke.args.qsig.AocFinal.specific.recorded.currency = "Rupies",
+		.component.invoke.args.qsig.AocFinal.charging_association_present = 1,
+		.component.invoke.args.qsig.AocFinal.charging_association.type = 0,
+		.component.invoke.args.qsig.AocFinal.charging_association.id = 200,
+	},
+	{
+		.type = ROSE_COMP_TYPE_INVOKE,
+		.component.invoke.operation = ROSE_QSIG_AocFinal,
+		.component.invoke.invoke_id = 21,
+		.component.invoke.args.qsig.AocFinal.type = 2,
+		.component.invoke.args.qsig.AocFinal.specific.recorded.amount.currency = 800,
+		.component.invoke.args.qsig.AocFinal.specific.recorded.amount.multiplier = 2,
+		.component.invoke.args.qsig.AocFinal.specific.recorded.currency = "Rupies",
+		.component.invoke.args.qsig.AocFinal.specific.billing_id_present = 1,
+		.component.invoke.args.qsig.AocFinal.specific.billing_id = 2,
+		.component.invoke.args.qsig.AocFinal.charging_association_present = 1,
+		.component.invoke.args.qsig.AocFinal.charging_association.type = 0,
+		.component.invoke.args.qsig.AocFinal.charging_association.id = 200,
+	},
+	{
+		.type = ROSE_COMP_TYPE_INVOKE,
+		.component.invoke.operation = ROSE_QSIG_AocFinal,
+		.component.invoke.invoke_id = 22,
+		.component.invoke.args.qsig.AocFinal.type = 2,
+		.component.invoke.args.qsig.AocFinal.specific.recorded.amount.currency = 800,
+		.component.invoke.args.qsig.AocFinal.specific.recorded.amount.multiplier = 2,
+		.component.invoke.args.qsig.AocFinal.specific.recorded.currency = "Rupies",
+		.component.invoke.args.qsig.AocFinal.charging_association_present = 1,
+		.component.invoke.args.qsig.AocFinal.charging_association.type = 1,
+		.component.invoke.args.qsig.AocFinal.charging_association.number.plan = 4,
+		.component.invoke.args.qsig.AocFinal.charging_association.number.length = 4,
+		.component.invoke.args.qsig.AocFinal.charging_association.number.str = "1802",
+	},
+
+	{
+		.type = ROSE_COMP_TYPE_INVOKE,
+		.component.invoke.operation = ROSE_QSIG_AocInterim,
+		.component.invoke.invoke_id = 23,
+		.component.invoke.args.qsig.AocInterim.type = 0,
+	},
+	{
+		.type = ROSE_COMP_TYPE_INVOKE,
+		.component.invoke.operation = ROSE_QSIG_AocInterim,
+		.component.invoke.invoke_id = 24,
+		.component.invoke.args.qsig.AocInterim.type = 1,
+	},
+	{
+		.type = ROSE_COMP_TYPE_INVOKE,
+		.component.invoke.operation = ROSE_QSIG_AocInterim,
+		.component.invoke.invoke_id = 25,
+		.component.invoke.args.qsig.AocInterim.type = 2,
+		.component.invoke.args.qsig.AocInterim.specific.recorded.amount.currency = 800,
+		.component.invoke.args.qsig.AocInterim.specific.recorded.amount.multiplier = 2,
+		.component.invoke.args.qsig.AocInterim.specific.recorded.currency = "Rupies",
+	},
+	{
+		.type = ROSE_COMP_TYPE_INVOKE,
+		.component.invoke.operation = ROSE_QSIG_AocInterim,
+		.component.invoke.invoke_id = 26,
+		.component.invoke.args.qsig.AocInterim.type = 2,
+		.component.invoke.args.qsig.AocInterim.specific.recorded.amount.currency = 800,
+		.component.invoke.args.qsig.AocInterim.specific.recorded.amount.multiplier = 2,
+		.component.invoke.args.qsig.AocInterim.specific.recorded.currency = "Rupies",
+		.component.invoke.args.qsig.AocInterim.specific.billing_id_present = 1,
+		.component.invoke.args.qsig.AocInterim.specific.billing_id = 2,
+	},
+
+	{
+		.type = ROSE_COMP_TYPE_INVOKE,
+		.component.invoke.operation = ROSE_QSIG_AocRate,
+		.component.invoke.invoke_id = 27,
+		.component.invoke.args.qsig.AocRate.type = 0,
+	},
+	{
+		.type = ROSE_COMP_TYPE_INVOKE,
+		.component.invoke.operation = ROSE_QSIG_AocRate,
+		.component.invoke.invoke_id = 28,
+		.component.invoke.args.qsig.AocRate.type = 1,
+		.component.invoke.args.qsig.AocRate.currency_info.num_records = 1,
+		.component.invoke.args.qsig.AocRate.currency_info.list[0].charged_item = 4,
+		.component.invoke.args.qsig.AocRate.currency_info.list[0].currency_type = 0,
+		.component.invoke.args.qsig.AocRate.currency_info.list[0].u.special_charging_code = 3,
+	},
+	{
+		.type = ROSE_COMP_TYPE_INVOKE,
+		.component.invoke.operation = ROSE_QSIG_AocRate,
+		.component.invoke.invoke_id = 29,
+		.component.invoke.args.qsig.AocRate.type = 1,
+		.component.invoke.args.qsig.AocRate.currency_info.num_records = 1,
+		.component.invoke.args.qsig.AocRate.currency_info.list[0].charged_item = 4,
+		.component.invoke.args.qsig.AocRate.currency_info.list[0].currency_type = 1,
+		.component.invoke.args.qsig.AocRate.currency_info.list[0].u.duration.currency = "Dollars",
+		.component.invoke.args.qsig.AocRate.currency_info.list[0].u.duration.amount.currency = 7,
+		.component.invoke.args.qsig.AocRate.currency_info.list[0].u.duration.amount.multiplier = 1,
+		.component.invoke.args.qsig.AocRate.currency_info.list[0].u.duration.charging_type = 1,
+		.component.invoke.args.qsig.AocRate.currency_info.list[0].u.duration.time.length = 8,
+		.component.invoke.args.qsig.AocRate.currency_info.list[0].u.duration.time.scale = 4,
+	},
+	{
+		.type = ROSE_COMP_TYPE_INVOKE,
+		.component.invoke.operation = ROSE_QSIG_AocRate,
+		.component.invoke.invoke_id = 30,
+		.component.invoke.args.qsig.AocRate.type = 1,
+		.component.invoke.args.qsig.AocRate.currency_info.num_records = 1,
+		.component.invoke.args.qsig.AocRate.currency_info.list[0].charged_item = 4,
+		.component.invoke.args.qsig.AocRate.currency_info.list[0].currency_type = 1,
+		.component.invoke.args.qsig.AocRate.currency_info.list[0].u.duration.currency = "Dollars",
+		.component.invoke.args.qsig.AocRate.currency_info.list[0].u.duration.amount.currency = 7,
+		.component.invoke.args.qsig.AocRate.currency_info.list[0].u.duration.amount.multiplier = 1,
+		.component.invoke.args.qsig.AocRate.currency_info.list[0].u.duration.charging_type = 1,
+		.component.invoke.args.qsig.AocRate.currency_info.list[0].u.duration.time.length = 8,
+		.component.invoke.args.qsig.AocRate.currency_info.list[0].u.duration.time.scale = 4,
+		.component.invoke.args.qsig.AocRate.currency_info.list[0].u.duration.granularity_present = 1,
+		.component.invoke.args.qsig.AocRate.currency_info.list[0].u.duration.granularity.length = 20,
+		.component.invoke.args.qsig.AocRate.currency_info.list[0].u.duration.granularity.scale = 3,
+	},
+	{
+		.type = ROSE_COMP_TYPE_INVOKE,
+		.component.invoke.operation = ROSE_QSIG_AocRate,
+		.component.invoke.invoke_id = 31,
+		.component.invoke.args.qsig.AocRate.type = 1,
+		.component.invoke.args.qsig.AocRate.currency_info.num_records = 1,
+		.component.invoke.args.qsig.AocRate.currency_info.list[0].charged_item = 4,
+		.component.invoke.args.qsig.AocRate.currency_info.list[0].currency_type = 2,
+		.component.invoke.args.qsig.AocRate.currency_info.list[0].u.flat_rate.currency = "Euros",
+		.component.invoke.args.qsig.AocRate.currency_info.list[0].u.flat_rate.amount.currency = 4,
+		.component.invoke.args.qsig.AocRate.currency_info.list[0].u.flat_rate.amount.multiplier = 1,
+	},
+	{
+		.type = ROSE_COMP_TYPE_INVOKE,
+		.component.invoke.operation = ROSE_QSIG_AocRate,
+		.component.invoke.invoke_id = 32,
+		.component.invoke.args.qsig.AocRate.type = 1,
+		.component.invoke.args.qsig.AocRate.currency_info.num_records = 1,
+		.component.invoke.args.qsig.AocRate.currency_info.list[0].charged_item = 4,
+		.component.invoke.args.qsig.AocRate.currency_info.list[0].currency_type = 3,
+		.component.invoke.args.qsig.AocRate.currency_info.list[0].u.volume_rate.currency = "Yen",
+		.component.invoke.args.qsig.AocRate.currency_info.list[0].u.volume_rate.amount.currency = 300,
+		.component.invoke.args.qsig.AocRate.currency_info.list[0].u.volume_rate.amount.multiplier = 5,
+		.component.invoke.args.qsig.AocRate.currency_info.list[0].u.volume_rate.unit = 2,
+	},
+	{
+		.type = ROSE_COMP_TYPE_INVOKE,
+		.component.invoke.operation = ROSE_QSIG_AocRate,
+		.component.invoke.invoke_id = 33,
+		.component.invoke.args.qsig.AocRate.type = 1,
+		.component.invoke.args.qsig.AocRate.currency_info.num_records = 2,
+		.component.invoke.args.qsig.AocRate.currency_info.list[0].charged_item = 4,
+		.component.invoke.args.qsig.AocRate.currency_info.list[0].currency_type = 2,
+		.component.invoke.args.qsig.AocRate.currency_info.list[0].u.flat_rate.currency = "Euros",
+		.component.invoke.args.qsig.AocRate.currency_info.list[0].u.flat_rate.amount.currency = 4,
+		.component.invoke.args.qsig.AocRate.currency_info.list[0].u.flat_rate.amount.multiplier = 1,
+		.component.invoke.args.qsig.AocRate.currency_info.list[1].charged_item = 4,
+		.component.invoke.args.qsig.AocRate.currency_info.list[1].currency_type = 3,
+		.component.invoke.args.qsig.AocRate.currency_info.list[1].u.volume_rate.currency = "Yen",
+		.component.invoke.args.qsig.AocRate.currency_info.list[1].u.volume_rate.amount.currency = 300,
+		.component.invoke.args.qsig.AocRate.currency_info.list[1].u.volume_rate.amount.multiplier = 5,
+		.component.invoke.args.qsig.AocRate.currency_info.list[1].u.volume_rate.unit = 2,
+	},
+	{
+		.type = ROSE_COMP_TYPE_INVOKE,
+		.component.invoke.operation = ROSE_QSIG_AocRate,
+		.component.invoke.invoke_id = 34,
+		.component.invoke.args.qsig.AocRate.type = 1,
+		.component.invoke.args.qsig.AocRate.currency_info.num_records = 1,
+		.component.invoke.args.qsig.AocRate.currency_info.list[0].charged_item = 4,
+		.component.invoke.args.qsig.AocRate.currency_info.list[0].currency_type = 4,
+	},
+	{
+		.type = ROSE_COMP_TYPE_INVOKE,
+		.component.invoke.operation = ROSE_QSIG_AocRate,
+		.component.invoke.invoke_id = 35,
+		.component.invoke.args.qsig.AocRate.type = 1,
+		.component.invoke.args.qsig.AocRate.currency_info.num_records = 1,
+		.component.invoke.args.qsig.AocRate.currency_info.list[0].charged_item = 4,
+		.component.invoke.args.qsig.AocRate.currency_info.list[0].currency_type = 5,
+	},
+	{
+		.type = ROSE_COMP_TYPE_INVOKE,
+		.component.invoke.operation = ROSE_QSIG_AocRate,
+		.component.invoke.invoke_id = 36,
+		.component.invoke.args.qsig.AocRate.type = 1,
+		.component.invoke.args.qsig.AocRate.currency_info.num_records = 1,
+		.component.invoke.args.qsig.AocRate.currency_info.list[0].charged_item = 4,
+		.component.invoke.args.qsig.AocRate.currency_info.list[0].currency_type = 6,
+	},
+
+	{
+		.type = ROSE_COMP_TYPE_INVOKE,
+		.component.invoke.operation = ROSE_QSIG_AocComplete,
+		.component.invoke.invoke_id = 37,
+		.component.invoke.args.qsig.AocComplete.charged_user_number.plan = 4,
+		.component.invoke.args.qsig.AocComplete.charged_user_number.length = 4,
+		.component.invoke.args.qsig.AocComplete.charged_user_number.str = "8340",
+	},
+	{
+		.type = ROSE_COMP_TYPE_INVOKE,
+		.component.invoke.operation = ROSE_QSIG_AocComplete,
+		.component.invoke.invoke_id = 38,
+		.component.invoke.args.qsig.AocComplete.charged_user_number.plan = 4,
+		.component.invoke.args.qsig.AocComplete.charged_user_number.length = 4,
+		.component.invoke.args.qsig.AocComplete.charged_user_number.str = "8340",
+		.component.invoke.args.qsig.AocComplete.charging_association_present = 1,
+		.component.invoke.args.qsig.AocComplete.charging_association.type = 0,
+		.component.invoke.args.qsig.AocComplete.charging_association.id = 8298,
+	},
+
+	{
+		.type = ROSE_COMP_TYPE_RESULT,
+		.component.result.operation = ROSE_QSIG_AocComplete,
+		.component.result.invoke_id = 39,
+		.component.result.args.qsig.AocComplete.charging_option = 2,
+	},
+
+	{
+		.type = ROSE_COMP_TYPE_INVOKE,
+		.component.invoke.operation = ROSE_QSIG_AocDivChargeReq,
+		.component.invoke.invoke_id = 40,
+		.component.invoke.args.qsig.AocDivChargeReq.diverting_user_number.plan = 4,

[... 30 lines stripped ...]



More information about the libpri-commits mailing list