[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