Version

struct acu_ss_aoc_request_invoke
{
struct acu_ext_hdr ext_hdr; /* Extension header */
struct acu_ss_hdr ss_hdr; /* Supp. services header */
uchar aoc_s; /* Request AOC-S services (ON/OFF)*/
uchar aoc_d; /* Request AOC-D services (ON/OFF)*/
uchar aoc_e; /* Request AOC-E services (ON/OFF)*/
pad5
};

struct acu_ss_aoc_request_ret_result
{
struct acu_ext_hdr ext_hdr; /* Extension header */
struct acu_ss_hdr ss_hdr; /* Supp. services header */
uchar aoc_s; /* AOC-S services active (ON/OFF)*/
uchar aoc_d; /* AOC-D services active (ON/OFF)*/
uchar aoc_e; /* AOC-E services active (ON/OFF)*/
pad5
};

struct acu_ss_aoc_request_ret_error
{
struct acu_ext_hdr ext_hdr; /* Extension header */
struct acu_ss_hdr ss_hdr; /* Supp. services header */
ushort cause; /* From ACU_SS_AOC_ERR.. constants */
uchar aoc_s; /* Error applies to AOC-S service (ON/OFF)*/
uchar aoc_d; /* Error applies to AOC-D service (ON/OFF)*/
uchar aoc_e; /* Error applies to AOC-E service (ON/OFF)*/
pad3
};
Figure 42. AOC Request Procedure During Call Establishment

struct acu_ss_aoc_inform_invoke
{
struct acu_ext_hdr ext_hdr; /* Extension header */
struct acu_ss_hdr ss_hdr; /* Supp. services header */
uchar aoc_type; /* From ACU_SS_AOC_TYPE... constants */
pad7
union
{
tAcuSSAocSInform aoc_s; /* aoc_type==AOC_SS_TYPE_AOC_S_INFORM*/
tAcuSSAocDInform aoc_d; /* aoc_type==AOC_SS_TYPE_AOC_D_INFORM*/
tAcuSSAocEInform aoc_e; /* aoc_type==AOC_SS_TYPE_AOC_E_INFORM*/
} aoc_data;
};

typedef struct tAcuSSAocSInform
{
uchar type_of_info; /* From ACU_SS_AOC_TYPE_OF_INFO_ constants*/
uchar charged_item; /* Bitmap of charged item constants */
uchar charging_rate; /* One of charging rate constants */
pad5
union
{
tAcuSSAocDuration duration; /* charging_rate=CHARGING_RATE_DURATION */
tAcuSSAocSpecific specific; /* charging_rate=CHARGING_RATE_SPECIFIC */
tAcuSSAocVolume volume; /* charging_rate=CHARGING_RATE_VOLUME */
}rate;
};
typedef struct tAcuSSAocDuration
{
struct op_byte_field multiplier; /* Applies to currency amount */
struct op_long_field currency_amount; /* No. of currency units charged*/
struct op_long_field time; /* Number of time units charged */
struct op_long_field granularity; /* Integer or not included */
struct op_byte_field time_scale; /* Applies to time */
struct op_byte_field granularity_scale; /* Applies to granularity */
struct op_byte_field currency_id_size; /* 0 if currency ID not included*/
uchar currency_id[MAX_CURRENCY_SIZE]; /* Currency ID */
uchar type_of_charging; /* From SS_AOC_S_TYPE_OF_CHARGE */
pad3 /* constants */
};
typedef struct tAcuSSAocSpecific
{
struct op_byte_field multiplier; /* From ACU_SS_AOC_MULTIPLIER_ */
/* constants */
struct op_long_field currency_amount; /* No. of currency units charged*/
struct op_byte_field charge_code; /* 10 */
struct op_byte_field currency_id_size; /* No. of bytes from currency_id*/
uchar currency_id[MAX_CURRENCY_SIZE]; /* Currency ID string */
uchar rate_type; /* From ACU_SS_AOC_RATE_TYPE_ */
pad3 /* constants */
};
typedef struct tAcuSSAocVolume
{
struct op_long_field currency_amount; /* No of currency units charged*/
struct op_byte_field currency_id_size; /* No of bytes from currency_id*/
struct op_byte_field multiplier; /* From ACU_SS_AOC_MULTIPLIER_ */
/* constants* /
uchar currency_id[MAX_CURRENCY_SIZE]; /* Currency ID string */
uchar volume_type; /* From ACU_SS_AOC_VOLUME_TYPE_*/
pad3 /* constants */
};

typedef struct tAcuSSAocDInform
{
struct op_byte_field currency_id_size; /* Used only if type_of_charging*/
/* is CURRENCY_UNITS */
struct op_long_field currency_amount; /* Used only if type_of_charging*/
/* is CURRENCY_UNITS */
struct op_byte_field multiplier; /* Used only if type_of_charging*/
/* is CURRENCY_UNITS */
struct op_byte_field billing_id; /* From ACU_SS_AOC_BILLING_ID */
/* constants */
struct acu_ss_association charge_association; /* Returns ID of charge */
/* for AOC-E after call clearing*/
tRecordedUnits recorded_units; /* Used only if type_of_charging*/
/* is CHARGING_UNITS */
uchar currency_id[MAX_CURRENCY_SIZE]; /* Used only if type_of_charging*/
/* is CURRENCY_UNITS */
uchar type_of_charging; /* From SS_AOC_TYPE_OF_CHARGE...*/
/* constants */
uchar recorded_charges; /* From SS_AOC_RECORDED_CHARGES */
/* constants */
uchar completed; /* Set to OFF if additional */
/* recorded units are queued */
pad1 /* in a subsequent message */
};

typedef struct tAcuSSAocEInform
{
struct op_byte_field currency_id_size;/* Used only if type_of_charging*/
/* is CURRENCY_UNITS */
struct op_long_field currency_amount; /* Used only if type_of_charging*/
/* is CURRENCY_UNITS */
struct op_byte_field multiplier; /* Used only if type_of_charging*/
/* is CURRENCY_UNITS */
struct op_byte_field billing_id; /* From ACU_SS_AOC_BILLING_ID */
/* constants */
struct acu_ss_association charge_association; /* Returns ID of charge */
/* for AOC-E after call clearing*/
tRecordedUnits recorded_units; /* Used only if type_of_charging*/
/* is CHARGING_UNITS */
uchar currency_id[MAX_CURRENCY_SIZE]; /* Used only if type_of_charging*/
/* is CURRENCY_UNITS */
uchar type_of_charging; /* From SS_AOC_TYPE_OF_CHARGE...*/
/* constants */
uchar recorded_charges; /* From SS_AOC_RECORDED_CHARGES */
/* constants */
uchar completed; /* Set to OFF if additional */
/* recorded units are queued */
pad1 /* in a subsequent message */
};
Figure 43. Transfer of Charging Information During the Active State of a Call
Figure 44. Transfer of Charging Information During the Call Clearing Phase, Clearing Initiated by the Calling User
Figure 45. Transfer of Charging Information During the Call Clearing Phase, Clearing Initiated by the Called User




Figure 46. AOC and Call Transfer




Version