1 /* Do not modify this file. Changes will be overwritten. */
2 /* Generated automatically by the ASN.1 to Wireshark dissector compiler */
3 /* packet-charging_ase.c */
4 /* ../../tools/asn2wrs.py -b -p charging_ase -c ./charging_ase.cnf -s ./packet-charging_ase-template -D . -O ../../epan/dissectors Tariffing-Data-Types.asn */
6 /* Input file: packet-charging_ase-template.c */
8 #line 1 "../../asn1/charging_ase/packet-charging_ase-template.c"
9 /* packet-charging_ase-template.c
10 * Copyright 2009 , Anders Broman <anders.broman [AT] ericsson.com>
12 * Wireshark - Network traffic analyzer
13 * By Gerald Combs <gerald@wireshark.org>
14 * Copyright 1998 Gerald Combs
16 * This program is free software; you can redistribute it and/or
17 * modify it under the terms of the GNU General Public License
18 * as published by the Free Software Foundation; either version 2
19 * of the License, or (at your option) any later version.
21 * This program is distributed in the hope that it will be useful,
22 * but WITHOUT ANY WARRANTY; without even the implied warranty of
23 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
24 * GNU General Public License for more details.
26 * You should have received a copy of the GNU General Public License
27 * along with this program; if not, write to the Free Software
28 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
29 * References: ETSI ES 201 296 V1.3.1 (2003-04)
35 #include <epan/packet.h>
36 #include <epan/asn1.h>
38 #include "packet-ber.h"
39 #include "packet-charging_ase.h"
41 #define PNAME "Charging ASE"
42 #define PSNAME "ChargingASE"
43 #define PFNAME "chargingase"
45 void proto_register_charging_ase(void);
46 void proto_reg_handoff_charging_ase(void);
48 /* Define the Charging ASE proto */
49 static int proto_charging_ase = -1;
52 /*--- Included file: packet-charging_ase-hf.c ---*/
53 #line 1 "../../asn1/charging_ase/packet-charging_ase-hf.c"
54 static int hf_charging_ase_charging_ase_ChargingMessageType_PDU = -1; /* ChargingMessageType */
55 static int hf_charging_ase_crgt = -1; /* ChargingTariffInformation */
56 static int hf_charging_ase_aocrg = -1; /* AddOnChargingInformation */
57 static int hf_charging_ase_crga = -1; /* ChargingAcknowledgementInformation */
58 static int hf_charging_ase_start = -1; /* StartCharging */
59 static int hf_charging_ase_stop = -1; /* StopCharging */
60 static int hf_charging_ase_acknowledgementIndicators = -1; /* T_acknowledgementIndicators */
61 static int hf_charging_ase_extensions = -1; /* SEQUENCE_SIZE_1_numOfExtensions_OF_ExtensionField */
62 static int hf_charging_ase_extensions_item = -1; /* ExtensionField */
63 static int hf_charging_ase_originationIdentification = -1; /* ChargingReferenceIdentification */
64 static int hf_charging_ase_destinationIdentification = -1; /* ChargingReferenceIdentification */
65 static int hf_charging_ase_chargingControlIndicators = -1; /* ChargingControlIndicators */
66 static int hf_charging_ase_addOncharge = -1; /* T_addOncharge */
67 static int hf_charging_ase_addOnChargeCurrency = -1; /* CurrencyFactorScale */
68 static int hf_charging_ase_addOnChargePulse = -1; /* PulseUnits */
69 static int hf_charging_ase_currency = -1; /* Currency */
70 static int hf_charging_ase_chargingTariff = -1; /* T_chargingTariff */
71 static int hf_charging_ase_tariffCurrency = -1; /* TariffCurrency */
72 static int hf_charging_ase_tariffPulse = -1; /* TariffPulse */
73 static int hf_charging_ase_local = -1; /* INTEGER */
74 static int hf_charging_ase_global = -1; /* OBJECT_IDENTIFIER */
75 static int hf_charging_ase_currencyFactorScale = -1; /* CurrencyFactorScale */
76 static int hf_charging_ase_tariffDuration = -1; /* TariffDuration */
77 static int hf_charging_ase_subTariffControl = -1; /* SubTariffControl */
78 static int hf_charging_ase_pulseUnits = -1; /* PulseUnits */
79 static int hf_charging_ase_chargeUnitTimeInterval = -1; /* ChargeUnitTimeInterval */
80 static int hf_charging_ase_currencyFactor = -1; /* CurrencyFactor */
81 static int hf_charging_ase_currencyScale = -1; /* CurrencyScale */
82 static int hf_charging_ase_type = -1; /* Code */
83 static int hf_charging_ase_criticality = -1; /* CriticalityType */
84 static int hf_charging_ase_value = -1; /* T_value */
85 static int hf_charging_ase_networkOperators = -1; /* SEQUENCE_SIZE_1_maxNetworkOperators_OF_NetworkIdentification */
86 static int hf_charging_ase_networkOperators_item = -1; /* NetworkIdentification */
87 static int hf_charging_ase_stopIndicators = -1; /* T_stopIndicators */
88 static int hf_charging_ase_currentTariffCurrency = -1; /* TariffCurrencyFormat */
89 static int hf_charging_ase_tariffSwitchCurrency = -1; /* TariffSwitchCurrency */
90 static int hf_charging_ase_nextTariffCurrency = -1; /* TariffCurrencyFormat */
91 static int hf_charging_ase_tariffSwitchoverTime = -1; /* TariffSwitchoverTime */
92 static int hf_charging_ase_communicationChargeSequenceCurrency = -1; /* SEQUENCE_SIZE_minCommunicationTariffNum_maxCommunicationTariffNum_OF_CommunicationChargeCurrency */
93 static int hf_charging_ase_communicationChargeSequenceCurrency_item = -1; /* CommunicationChargeCurrency */
94 static int hf_charging_ase_tariffControlIndicators = -1; /* T_tariffControlIndicators */
95 static int hf_charging_ase_callAttemptChargeCurrency = -1; /* CurrencyFactorScale */
96 static int hf_charging_ase_callSetupChargeCurrency = -1; /* CurrencyFactorScale */
97 static int hf_charging_ase_currentTariffPulse = -1; /* TariffPulseFormat */
98 static int hf_charging_ase_tariffSwitchPulse = -1; /* TariffSwitchPulse */
99 static int hf_charging_ase_nextTariffPulse = -1; /* TariffPulseFormat */
100 static int hf_charging_ase_communicationChargeSequencePulse = -1; /* SEQUENCE_SIZE_minCommunicationTariffNum_maxCommunicationTariffNum_OF_CommunicationChargePulse */
101 static int hf_charging_ase_communicationChargeSequencePulse_item = -1; /* CommunicationChargePulse */
102 static int hf_charging_ase_tariffControlIndicators_01 = -1; /* T_tariffControlIndicators_01 */
103 static int hf_charging_ase_callAttemptChargePulse = -1; /* PulseUnits */
104 static int hf_charging_ase_callSetupChargePulse = -1; /* PulseUnits */
105 static int hf_charging_ase_networkIdentification = -1; /* NetworkIdentification */
106 static int hf_charging_ase_referenceID = -1; /* ReferenceID */
108 static int hf_charging_ase_T_acknowledgementIndicators_accepted = -1;
109 static int hf_charging_ase_ChargingControlIndicators_subscriberCharge = -1;
110 static int hf_charging_ase_ChargingControlIndicators_immediateChangeOfActuallyAppliedTariff = -1;
111 static int hf_charging_ase_ChargingControlIndicators_delayUntilStart = -1;
112 static int hf_charging_ase_T_stopIndicators_callAttemptChargesApplicable = -1;
113 static int hf_charging_ase_SubTariffControl_oneTimeCharge = -1;
114 static int hf_charging_ase_T_tariffControlIndicators_non_cyclicTariff = -1;
115 static int hf_charging_ase_T_tariffControlIndicators_01_non_cyclicTariff = -1;
117 /*--- End of included file: packet-charging_ase-hf.c ---*/
118 #line 44 "../../asn1/charging_ase/packet-charging_ase-template.c"
120 static int ett_charging_ase = -1;
122 /*--- Included file: packet-charging_ase-ett.c ---*/
123 #line 1 "../../asn1/charging_ase/packet-charging_ase-ett.c"
124 static gint ett_charging_ase_ChargingMessageType = -1;
125 static gint ett_charging_ase_ChargingAcknowledgementInformation = -1;
126 static gint ett_charging_ase_T_acknowledgementIndicators = -1;
127 static gint ett_charging_ase_SEQUENCE_SIZE_1_numOfExtensions_OF_ExtensionField = -1;
128 static gint ett_charging_ase_ChargingControlIndicators = -1;
129 static gint ett_charging_ase_AddOnChargingInformation = -1;
130 static gint ett_charging_ase_T_addOncharge = -1;
131 static gint ett_charging_ase_ChargingTariffInformation = -1;
132 static gint ett_charging_ase_T_chargingTariff = -1;
133 static gint ett_charging_ase_Code = -1;
134 static gint ett_charging_ase_CommunicationChargeCurrency = -1;
135 static gint ett_charging_ase_CommunicationChargePulse = -1;
136 static gint ett_charging_ase_CurrencyFactorScale = -1;
137 static gint ett_charging_ase_ExtensionField = -1;
138 static gint ett_charging_ase_StartCharging = -1;
139 static gint ett_charging_ase_SEQUENCE_SIZE_1_maxNetworkOperators_OF_NetworkIdentification = -1;
140 static gint ett_charging_ase_StopCharging = -1;
141 static gint ett_charging_ase_T_stopIndicators = -1;
142 static gint ett_charging_ase_SubTariffControl = -1;
143 static gint ett_charging_ase_TariffCurrency = -1;
144 static gint ett_charging_ase_TariffSwitchCurrency = -1;
145 static gint ett_charging_ase_TariffCurrencyFormat = -1;
146 static gint ett_charging_ase_SEQUENCE_SIZE_minCommunicationTariffNum_maxCommunicationTariffNum_OF_CommunicationChargeCurrency = -1;
147 static gint ett_charging_ase_T_tariffControlIndicators = -1;
148 static gint ett_charging_ase_TariffPulse = -1;
149 static gint ett_charging_ase_TariffSwitchPulse = -1;
150 static gint ett_charging_ase_TariffPulseFormat = -1;
151 static gint ett_charging_ase_SEQUENCE_SIZE_minCommunicationTariffNum_maxCommunicationTariffNum_OF_CommunicationChargePulse = -1;
152 static gint ett_charging_ase_T_tariffControlIndicators_01 = -1;
153 static gint ett_charging_ase_ChargingReferenceIdentification = -1;
155 /*--- End of included file: packet-charging_ase-ett.c ---*/
156 #line 47 "../../asn1/charging_ase/packet-charging_ase-template.c"
158 static dissector_handle_t charging_ase_handle;
161 /*--- Included file: packet-charging_ase-fn.c ---*/
162 #line 1 "../../asn1/charging_ase/packet-charging_ase-fn.c"
164 static const asn_namedbit ChargingControlIndicators_bits[] = {
165 { 0, &hf_charging_ase_ChargingControlIndicators_subscriberCharge, -1, -1, "subscriberCharge", NULL },
166 { 1, &hf_charging_ase_ChargingControlIndicators_immediateChangeOfActuallyAppliedTariff, -1, -1, "immediateChangeOfActuallyAppliedTariff", NULL },
167 { 2, &hf_charging_ase_ChargingControlIndicators_delayUntilStart, -1, -1, "delayUntilStart", NULL },
168 { 0, NULL, 0, 0, NULL, NULL }
172 dissect_charging_ase_ChargingControlIndicators(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
173 offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
174 ChargingControlIndicators_bits, hf_index, ett_charging_ase_ChargingControlIndicators,
183 dissect_charging_ase_CurrencyFactor(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
184 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
193 dissect_charging_ase_CurrencyScale(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
194 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
201 static const ber_sequence_t CurrencyFactorScale_sequence[] = {
202 { &hf_charging_ase_currencyFactor, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_charging_ase_CurrencyFactor },
203 { &hf_charging_ase_currencyScale, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_charging_ase_CurrencyScale },
204 { NULL, 0, 0, 0, NULL }
208 dissect_charging_ase_CurrencyFactorScale(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
209 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
210 CurrencyFactorScale_sequence, hf_index, ett_charging_ase_CurrencyFactorScale);
218 dissect_charging_ase_TariffDuration(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
219 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
226 static const asn_namedbit SubTariffControl_bits[] = {
227 { 0, &hf_charging_ase_SubTariffControl_oneTimeCharge, -1, -1, "oneTimeCharge", NULL },
228 { 0, NULL, 0, 0, NULL, NULL }
232 dissect_charging_ase_SubTariffControl(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
233 offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
234 SubTariffControl_bits, hf_index, ett_charging_ase_SubTariffControl,
241 static const ber_sequence_t CommunicationChargeCurrency_sequence[] = {
242 { &hf_charging_ase_currencyFactorScale, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_charging_ase_CurrencyFactorScale },
243 { &hf_charging_ase_tariffDuration, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_charging_ase_TariffDuration },
244 { &hf_charging_ase_subTariffControl, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_charging_ase_SubTariffControl },
245 { NULL, 0, 0, 0, NULL }
249 dissect_charging_ase_CommunicationChargeCurrency(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
250 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
251 CommunicationChargeCurrency_sequence, hf_index, ett_charging_ase_CommunicationChargeCurrency);
257 static const ber_sequence_t SEQUENCE_SIZE_minCommunicationTariffNum_maxCommunicationTariffNum_OF_CommunicationChargeCurrency_sequence_of[1] = {
258 { &hf_charging_ase_communicationChargeSequenceCurrency_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_charging_ase_CommunicationChargeCurrency },
262 dissect_charging_ase_SEQUENCE_SIZE_minCommunicationTariffNum_maxCommunicationTariffNum_OF_CommunicationChargeCurrency(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
263 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
264 SEQUENCE_SIZE_minCommunicationTariffNum_maxCommunicationTariffNum_OF_CommunicationChargeCurrency_sequence_of, hf_index, ett_charging_ase_SEQUENCE_SIZE_minCommunicationTariffNum_maxCommunicationTariffNum_OF_CommunicationChargeCurrency);
270 static const asn_namedbit T_tariffControlIndicators_bits[] = {
271 { 0, &hf_charging_ase_T_tariffControlIndicators_non_cyclicTariff, -1, -1, "non-cyclicTariff", NULL },
272 { 0, NULL, 0, 0, NULL, NULL }
276 dissect_charging_ase_T_tariffControlIndicators(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
277 offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
278 T_tariffControlIndicators_bits, hf_index, ett_charging_ase_T_tariffControlIndicators,
285 static const ber_sequence_t TariffCurrencyFormat_sequence[] = {
286 { &hf_charging_ase_communicationChargeSequenceCurrency, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_charging_ase_SEQUENCE_SIZE_minCommunicationTariffNum_maxCommunicationTariffNum_OF_CommunicationChargeCurrency },
287 { &hf_charging_ase_tariffControlIndicators, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_charging_ase_T_tariffControlIndicators },
288 { &hf_charging_ase_callAttemptChargeCurrency, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_charging_ase_CurrencyFactorScale },
289 { &hf_charging_ase_callSetupChargeCurrency, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_charging_ase_CurrencyFactorScale },
290 { NULL, 0, 0, 0, NULL }
294 dissect_charging_ase_TariffCurrencyFormat(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
295 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
296 TariffCurrencyFormat_sequence, hf_index, ett_charging_ase_TariffCurrencyFormat);
304 dissect_charging_ase_TariffSwitchoverTime(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
305 offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
312 static const ber_sequence_t TariffSwitchCurrency_sequence[] = {
313 { &hf_charging_ase_nextTariffCurrency, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_charging_ase_TariffCurrencyFormat },
314 { &hf_charging_ase_tariffSwitchoverTime, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_charging_ase_TariffSwitchoverTime },
315 { NULL, 0, 0, 0, NULL }
319 dissect_charging_ase_TariffSwitchCurrency(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
320 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
321 TariffSwitchCurrency_sequence, hf_index, ett_charging_ase_TariffSwitchCurrency);
327 static const ber_sequence_t TariffCurrency_sequence[] = {
328 { &hf_charging_ase_currentTariffCurrency, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_charging_ase_TariffCurrencyFormat },
329 { &hf_charging_ase_tariffSwitchCurrency, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_charging_ase_TariffSwitchCurrency },
330 { NULL, 0, 0, 0, NULL }
334 dissect_charging_ase_TariffCurrency(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
335 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
336 TariffCurrency_sequence, hf_index, ett_charging_ase_TariffCurrency);
344 dissect_charging_ase_PulseUnits(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
345 offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
354 dissect_charging_ase_ChargeUnitTimeInterval(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
355 offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
362 static const ber_sequence_t CommunicationChargePulse_sequence[] = {
363 { &hf_charging_ase_pulseUnits, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_charging_ase_PulseUnits },
364 { &hf_charging_ase_chargeUnitTimeInterval, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_charging_ase_ChargeUnitTimeInterval },
365 { &hf_charging_ase_tariffDuration, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_charging_ase_TariffDuration },
366 { NULL, 0, 0, 0, NULL }
370 dissect_charging_ase_CommunicationChargePulse(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
371 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
372 CommunicationChargePulse_sequence, hf_index, ett_charging_ase_CommunicationChargePulse);
378 static const ber_sequence_t SEQUENCE_SIZE_minCommunicationTariffNum_maxCommunicationTariffNum_OF_CommunicationChargePulse_sequence_of[1] = {
379 { &hf_charging_ase_communicationChargeSequencePulse_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_charging_ase_CommunicationChargePulse },
383 dissect_charging_ase_SEQUENCE_SIZE_minCommunicationTariffNum_maxCommunicationTariffNum_OF_CommunicationChargePulse(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
384 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
385 SEQUENCE_SIZE_minCommunicationTariffNum_maxCommunicationTariffNum_OF_CommunicationChargePulse_sequence_of, hf_index, ett_charging_ase_SEQUENCE_SIZE_minCommunicationTariffNum_maxCommunicationTariffNum_OF_CommunicationChargePulse);
391 static const asn_namedbit T_tariffControlIndicators_01_bits[] = {
392 { 0, &hf_charging_ase_T_tariffControlIndicators_01_non_cyclicTariff, -1, -1, "non-cyclicTariff", NULL },
393 { 0, NULL, 0, 0, NULL, NULL }
397 dissect_charging_ase_T_tariffControlIndicators_01(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
398 offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
399 T_tariffControlIndicators_01_bits, hf_index, ett_charging_ase_T_tariffControlIndicators_01,
406 static const ber_sequence_t TariffPulseFormat_sequence[] = {
407 { &hf_charging_ase_communicationChargeSequencePulse, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_charging_ase_SEQUENCE_SIZE_minCommunicationTariffNum_maxCommunicationTariffNum_OF_CommunicationChargePulse },
408 { &hf_charging_ase_tariffControlIndicators_01, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_charging_ase_T_tariffControlIndicators_01 },
409 { &hf_charging_ase_callAttemptChargePulse, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_charging_ase_PulseUnits },
410 { &hf_charging_ase_callSetupChargePulse, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_charging_ase_PulseUnits },
411 { NULL, 0, 0, 0, NULL }
415 dissect_charging_ase_TariffPulseFormat(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
416 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
417 TariffPulseFormat_sequence, hf_index, ett_charging_ase_TariffPulseFormat);
423 static const ber_sequence_t TariffSwitchPulse_sequence[] = {
424 { &hf_charging_ase_nextTariffPulse, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_charging_ase_TariffPulseFormat },
425 { &hf_charging_ase_tariffSwitchoverTime, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_charging_ase_TariffSwitchoverTime },
426 { NULL, 0, 0, 0, NULL }
430 dissect_charging_ase_TariffSwitchPulse(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
431 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
432 TariffSwitchPulse_sequence, hf_index, ett_charging_ase_TariffSwitchPulse);
438 static const ber_sequence_t TariffPulse_sequence[] = {
439 { &hf_charging_ase_currentTariffPulse, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_charging_ase_TariffPulseFormat },
440 { &hf_charging_ase_tariffSwitchPulse, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_charging_ase_TariffSwitchPulse },
441 { NULL, 0, 0, 0, NULL }
445 dissect_charging_ase_TariffPulse(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
446 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
447 TariffPulse_sequence, hf_index, ett_charging_ase_TariffPulse);
453 static const value_string charging_ase_T_chargingTariff_vals[] = {
454 { 0, "tariffCurrency" },
455 { 1, "tariffPulse" },
459 static const ber_choice_t T_chargingTariff_choice[] = {
460 { 0, &hf_charging_ase_tariffCurrency, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_charging_ase_TariffCurrency },
461 { 1, &hf_charging_ase_tariffPulse, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_charging_ase_TariffPulse },
462 { 0, NULL, 0, 0, 0, NULL }
466 dissect_charging_ase_T_chargingTariff(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
467 offset = dissect_ber_choice(actx, tree, tvb, offset,
468 T_chargingTariff_choice, hf_index, ett_charging_ase_T_chargingTariff,
477 dissect_charging_ase_INTEGER(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
478 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
487 dissect_charging_ase_OBJECT_IDENTIFIER(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
488 offset = dissect_ber_object_identifier(implicit_tag, actx, tree, tvb, offset, hf_index, NULL);
494 static const value_string charging_ase_Code_vals[] = {
500 static const ber_choice_t Code_choice[] = {
501 { 0, &hf_charging_ase_local , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_charging_ase_INTEGER },
502 { 1, &hf_charging_ase_global , BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_charging_ase_OBJECT_IDENTIFIER },
503 { 0, NULL, 0, 0, 0, NULL }
507 dissect_charging_ase_Code(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
508 offset = dissect_ber_choice(actx, tree, tvb, offset,
509 Code_choice, hf_index, ett_charging_ase_Code,
516 static const value_string charging_ase_CriticalityType_vals[] = {
524 dissect_charging_ase_CriticalityType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
525 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
534 dissect_charging_ase_T_value(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
535 #line 13 "../../asn1/charging_ase/charging_ase.cnf"
537 proto_tree_add_text(tree, tvb, offset, -1, "Extensions not dissected");
538 return tvb_length(tvb);
545 static const ber_sequence_t ExtensionField_sequence[] = {
546 { &hf_charging_ase_type , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_charging_ase_Code },
547 { &hf_charging_ase_criticality, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_charging_ase_CriticalityType },
548 { &hf_charging_ase_value , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_charging_ase_T_value },
549 { NULL, 0, 0, 0, NULL }
553 dissect_charging_ase_ExtensionField(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
554 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
555 ExtensionField_sequence, hf_index, ett_charging_ase_ExtensionField);
561 static const ber_sequence_t SEQUENCE_SIZE_1_numOfExtensions_OF_ExtensionField_sequence_of[1] = {
562 { &hf_charging_ase_extensions_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_charging_ase_ExtensionField },
566 dissect_charging_ase_SEQUENCE_SIZE_1_numOfExtensions_OF_ExtensionField(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
567 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
568 SEQUENCE_SIZE_1_numOfExtensions_OF_ExtensionField_sequence_of, hf_index, ett_charging_ase_SEQUENCE_SIZE_1_numOfExtensions_OF_ExtensionField);
576 dissect_charging_ase_NetworkIdentification(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
577 offset = dissect_ber_object_identifier(implicit_tag, actx, tree, tvb, offset, hf_index, NULL);
585 dissect_charging_ase_ReferenceID(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
586 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
593 static const ber_sequence_t ChargingReferenceIdentification_sequence[] = {
594 { &hf_charging_ase_networkIdentification, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_charging_ase_NetworkIdentification },
595 { &hf_charging_ase_referenceID, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_charging_ase_ReferenceID },
596 { NULL, 0, 0, 0, NULL }
600 dissect_charging_ase_ChargingReferenceIdentification(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
601 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
602 ChargingReferenceIdentification_sequence, hf_index, ett_charging_ase_ChargingReferenceIdentification);
608 static const value_string charging_ase_Currency_vals[] = {
609 { 0, "noIndication" },
610 { 1, "australianDollar" },
611 { 2, "austrianSchilling" },
612 { 3, "belgianFranc" },
613 { 4, "britishPound" },
614 { 5, "czechKoruna" },
615 { 6, "danishKrone" },
616 { 7, "dutchGuilder" },
618 { 9, "finnishMarkka" },
619 { 10, "frenchFranc" },
620 { 11, "germanMark" },
621 { 12, "greekDrachma" },
622 { 13, "hungarianForint" },
624 { 15, "italianLira" },
625 { 16, "japaneseYen" },
626 { 17, "luxembourgian-Franc" },
627 { 18, "norwegianKrone" },
628 { 19, "polishZloty" },
629 { 20, "portugeseEscudo" },
630 { 21, "russianRouble" },
631 { 22, "slovakKoruna" },
632 { 23, "spanishPeseta" },
633 { 24, "swedishKrone" },
634 { 25, "swissFranc" },
635 { 26, "turkishLira" },
642 dissect_charging_ase_Currency(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
643 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
650 static const ber_sequence_t ChargingTariffInformation_sequence[] = {
651 { &hf_charging_ase_chargingControlIndicators, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_charging_ase_ChargingControlIndicators },
652 { &hf_charging_ase_chargingTariff, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_charging_ase_T_chargingTariff },
653 { &hf_charging_ase_extensions, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_charging_ase_SEQUENCE_SIZE_1_numOfExtensions_OF_ExtensionField },
654 { &hf_charging_ase_originationIdentification, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_charging_ase_ChargingReferenceIdentification },
655 { &hf_charging_ase_destinationIdentification, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_charging_ase_ChargingReferenceIdentification },
656 { &hf_charging_ase_currency, BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_charging_ase_Currency },
657 { NULL, 0, 0, 0, NULL }
661 dissect_charging_ase_ChargingTariffInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
662 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
663 ChargingTariffInformation_sequence, hf_index, ett_charging_ase_ChargingTariffInformation);
669 static const value_string charging_ase_T_addOncharge_vals[] = {
670 { 0, "addOnChargeCurrency" },
671 { 1, "addOnChargePulse" },
675 static const ber_choice_t T_addOncharge_choice[] = {
676 { 0, &hf_charging_ase_addOnChargeCurrency, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_charging_ase_CurrencyFactorScale },
677 { 1, &hf_charging_ase_addOnChargePulse, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_charging_ase_PulseUnits },
678 { 0, NULL, 0, 0, 0, NULL }
682 dissect_charging_ase_T_addOncharge(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
683 offset = dissect_ber_choice(actx, tree, tvb, offset,
684 T_addOncharge_choice, hf_index, ett_charging_ase_T_addOncharge,
691 static const ber_sequence_t AddOnChargingInformation_sequence[] = {
692 { &hf_charging_ase_chargingControlIndicators, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_charging_ase_ChargingControlIndicators },
693 { &hf_charging_ase_addOncharge, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_charging_ase_T_addOncharge },
694 { &hf_charging_ase_extensions, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_charging_ase_SEQUENCE_SIZE_1_numOfExtensions_OF_ExtensionField },
695 { &hf_charging_ase_originationIdentification, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_charging_ase_ChargingReferenceIdentification },
696 { &hf_charging_ase_destinationIdentification, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_charging_ase_ChargingReferenceIdentification },
697 { &hf_charging_ase_currency, BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_charging_ase_Currency },
698 { NULL, 0, 0, 0, NULL }
702 dissect_charging_ase_AddOnChargingInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
703 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
704 AddOnChargingInformation_sequence, hf_index, ett_charging_ase_AddOnChargingInformation);
710 static const asn_namedbit T_acknowledgementIndicators_bits[] = {
711 { 0, &hf_charging_ase_T_acknowledgementIndicators_accepted, -1, -1, "accepted", NULL },
712 { 0, NULL, 0, 0, NULL, NULL }
716 dissect_charging_ase_T_acknowledgementIndicators(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
717 offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
718 T_acknowledgementIndicators_bits, hf_index, ett_charging_ase_T_acknowledgementIndicators,
725 static const ber_sequence_t ChargingAcknowledgementInformation_sequence[] = {
726 { &hf_charging_ase_acknowledgementIndicators, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_charging_ase_T_acknowledgementIndicators },
727 { &hf_charging_ase_extensions, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_charging_ase_SEQUENCE_SIZE_1_numOfExtensions_OF_ExtensionField },
728 { &hf_charging_ase_originationIdentification, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_charging_ase_ChargingReferenceIdentification },
729 { &hf_charging_ase_destinationIdentification, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_charging_ase_ChargingReferenceIdentification },
730 { NULL, 0, 0, 0, NULL }
734 dissect_charging_ase_ChargingAcknowledgementInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
735 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
736 ChargingAcknowledgementInformation_sequence, hf_index, ett_charging_ase_ChargingAcknowledgementInformation);
742 static const ber_sequence_t SEQUENCE_SIZE_1_maxNetworkOperators_OF_NetworkIdentification_sequence_of[1] = {
743 { &hf_charging_ase_networkOperators_item, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_charging_ase_NetworkIdentification },
747 dissect_charging_ase_SEQUENCE_SIZE_1_maxNetworkOperators_OF_NetworkIdentification(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
748 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
749 SEQUENCE_SIZE_1_maxNetworkOperators_OF_NetworkIdentification_sequence_of, hf_index, ett_charging_ase_SEQUENCE_SIZE_1_maxNetworkOperators_OF_NetworkIdentification);
755 static const ber_sequence_t StartCharging_sequence[] = {
756 { &hf_charging_ase_networkOperators, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_charging_ase_SEQUENCE_SIZE_1_maxNetworkOperators_OF_NetworkIdentification },
757 { &hf_charging_ase_extensions, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_charging_ase_SEQUENCE_SIZE_1_numOfExtensions_OF_ExtensionField },
758 { &hf_charging_ase_originationIdentification, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_charging_ase_ChargingReferenceIdentification },
759 { NULL, 0, 0, 0, NULL }
763 dissect_charging_ase_StartCharging(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
764 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
765 StartCharging_sequence, hf_index, ett_charging_ase_StartCharging);
771 static const asn_namedbit T_stopIndicators_bits[] = {
772 { 0, &hf_charging_ase_T_stopIndicators_callAttemptChargesApplicable, -1, -1, "callAttemptChargesApplicable", NULL },
773 { 0, NULL, 0, 0, NULL, NULL }
777 dissect_charging_ase_T_stopIndicators(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
778 offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
779 T_stopIndicators_bits, hf_index, ett_charging_ase_T_stopIndicators,
786 static const ber_sequence_t StopCharging_sequence[] = {
787 { &hf_charging_ase_stopIndicators, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_charging_ase_T_stopIndicators },
788 { &hf_charging_ase_networkOperators, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_charging_ase_SEQUENCE_SIZE_1_maxNetworkOperators_OF_NetworkIdentification },
789 { &hf_charging_ase_extensions, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_charging_ase_SEQUENCE_SIZE_1_numOfExtensions_OF_ExtensionField },
790 { &hf_charging_ase_originationIdentification, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_charging_ase_ChargingReferenceIdentification },
791 { NULL, 0, 0, 0, NULL }
795 dissect_charging_ase_StopCharging(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
796 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
797 StopCharging_sequence, hf_index, ett_charging_ase_StopCharging);
803 const value_string charging_ase_ChargingMessageType_vals[] = {
812 static const ber_choice_t ChargingMessageType_choice[] = {
813 { 0, &hf_charging_ase_crgt , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_charging_ase_ChargingTariffInformation },
814 { 1, &hf_charging_ase_aocrg , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_charging_ase_AddOnChargingInformation },
815 { 2, &hf_charging_ase_crga , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_charging_ase_ChargingAcknowledgementInformation },
816 { 3, &hf_charging_ase_start , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_charging_ase_StartCharging },
817 { 4, &hf_charging_ase_stop , BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_charging_ase_StopCharging },
818 { 0, NULL, 0, 0, 0, NULL }
822 dissect_charging_ase_ChargingMessageType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
823 offset = dissect_ber_choice(actx, tree, tvb, offset,
824 ChargingMessageType_choice, hf_index, ett_charging_ase_ChargingMessageType,
832 int dissect_charging_ase_ChargingMessageType_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
835 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
836 offset = dissect_charging_ase_ChargingMessageType(FALSE, tvb, offset, &asn1_ctx, tree, hf_charging_ase_charging_ase_ChargingMessageType_PDU);
841 /*--- End of included file: packet-charging_ase-fn.c ---*/
842 #line 51 "../../asn1/charging_ase/packet-charging_ase-template.c"
845 dissect_charging_ase(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
850 it=proto_tree_add_protocol_format(tree, proto_charging_ase, tvb, 0, -1, "Charging ASE");
851 tr=proto_item_add_subtree(it, ett_charging_ase);
853 if(tvb_reported_length(tvb)>0)
855 dissect_charging_ase_ChargingMessageType_PDU(tvb , pinfo, tr, NULL);
859 /* Register all the bits needed with the filtering engine */
861 proto_register_charging_ase(void)
864 static hf_register_info hf[] = {
866 /*--- Included file: packet-charging_ase-hfarr.c ---*/
867 #line 1 "../../asn1/charging_ase/packet-charging_ase-hfarr.c"
868 { &hf_charging_ase_charging_ase_ChargingMessageType_PDU,
869 { "ChargingMessageType", "charging_ase.ChargingMessageType",
870 FT_UINT32, BASE_DEC, VALS(charging_ase_ChargingMessageType_vals), 0,
872 { &hf_charging_ase_crgt,
873 { "crgt", "charging_ase.crgt_element",
874 FT_NONE, BASE_NONE, NULL, 0,
875 "ChargingTariffInformation", HFILL }},
876 { &hf_charging_ase_aocrg,
877 { "aocrg", "charging_ase.aocrg_element",
878 FT_NONE, BASE_NONE, NULL, 0,
879 "AddOnChargingInformation", HFILL }},
880 { &hf_charging_ase_crga,
881 { "crga", "charging_ase.crga_element",
882 FT_NONE, BASE_NONE, NULL, 0,
883 "ChargingAcknowledgementInformation", HFILL }},
884 { &hf_charging_ase_start,
885 { "start", "charging_ase.start_element",
886 FT_NONE, BASE_NONE, NULL, 0,
887 "StartCharging", HFILL }},
888 { &hf_charging_ase_stop,
889 { "stop", "charging_ase.stop_element",
890 FT_NONE, BASE_NONE, NULL, 0,
891 "StopCharging", HFILL }},
892 { &hf_charging_ase_acknowledgementIndicators,
893 { "acknowledgementIndicators", "charging_ase.acknowledgementIndicators",
894 FT_BYTES, BASE_NONE, NULL, 0,
896 { &hf_charging_ase_extensions,
897 { "extensions", "charging_ase.extensions",
898 FT_UINT32, BASE_DEC, NULL, 0,
899 "SEQUENCE_SIZE_1_numOfExtensions_OF_ExtensionField", HFILL }},
900 { &hf_charging_ase_extensions_item,
901 { "ExtensionField", "charging_ase.ExtensionField_element",
902 FT_NONE, BASE_NONE, NULL, 0,
904 { &hf_charging_ase_originationIdentification,
905 { "originationIdentification", "charging_ase.originationIdentification_element",
906 FT_NONE, BASE_NONE, NULL, 0,
907 "ChargingReferenceIdentification", HFILL }},
908 { &hf_charging_ase_destinationIdentification,
909 { "destinationIdentification", "charging_ase.destinationIdentification_element",
910 FT_NONE, BASE_NONE, NULL, 0,
911 "ChargingReferenceIdentification", HFILL }},
912 { &hf_charging_ase_chargingControlIndicators,
913 { "chargingControlIndicators", "charging_ase.chargingControlIndicators",
914 FT_BYTES, BASE_NONE, NULL, 0,
916 { &hf_charging_ase_addOncharge,
917 { "addOncharge", "charging_ase.addOncharge",
918 FT_UINT32, BASE_DEC, VALS(charging_ase_T_addOncharge_vals), 0,
920 { &hf_charging_ase_addOnChargeCurrency,
921 { "addOnChargeCurrency", "charging_ase.addOnChargeCurrency_element",
922 FT_NONE, BASE_NONE, NULL, 0,
923 "CurrencyFactorScale", HFILL }},
924 { &hf_charging_ase_addOnChargePulse,
925 { "addOnChargePulse", "charging_ase.addOnChargePulse",
926 FT_BYTES, BASE_NONE, NULL, 0,
927 "PulseUnits", HFILL }},
928 { &hf_charging_ase_currency,
929 { "currency", "charging_ase.currency",
930 FT_UINT32, BASE_DEC, VALS(charging_ase_Currency_vals), 0,
932 { &hf_charging_ase_chargingTariff,
933 { "chargingTariff", "charging_ase.chargingTariff",
934 FT_UINT32, BASE_DEC, VALS(charging_ase_T_chargingTariff_vals), 0,
936 { &hf_charging_ase_tariffCurrency,
937 { "tariffCurrency", "charging_ase.tariffCurrency_element",
938 FT_NONE, BASE_NONE, NULL, 0,
940 { &hf_charging_ase_tariffPulse,
941 { "tariffPulse", "charging_ase.tariffPulse_element",
942 FT_NONE, BASE_NONE, NULL, 0,
944 { &hf_charging_ase_local,
945 { "local", "charging_ase.local",
946 FT_INT32, BASE_DEC, NULL, 0,
948 { &hf_charging_ase_global,
949 { "global", "charging_ase.global",
950 FT_OID, BASE_NONE, NULL, 0,
951 "OBJECT_IDENTIFIER", HFILL }},
952 { &hf_charging_ase_currencyFactorScale,
953 { "currencyFactorScale", "charging_ase.currencyFactorScale_element",
954 FT_NONE, BASE_NONE, NULL, 0,
956 { &hf_charging_ase_tariffDuration,
957 { "tariffDuration", "charging_ase.tariffDuration",
958 FT_UINT32, BASE_DEC, NULL, 0,
960 { &hf_charging_ase_subTariffControl,
961 { "subTariffControl", "charging_ase.subTariffControl",
962 FT_BYTES, BASE_NONE, NULL, 0,
964 { &hf_charging_ase_pulseUnits,
965 { "pulseUnits", "charging_ase.pulseUnits",
966 FT_BYTES, BASE_NONE, NULL, 0,
968 { &hf_charging_ase_chargeUnitTimeInterval,
969 { "chargeUnitTimeInterval", "charging_ase.chargeUnitTimeInterval",
970 FT_BYTES, BASE_NONE, NULL, 0,
972 { &hf_charging_ase_currencyFactor,
973 { "currencyFactor", "charging_ase.currencyFactor",
974 FT_UINT32, BASE_DEC, NULL, 0,
976 { &hf_charging_ase_currencyScale,
977 { "currencyScale", "charging_ase.currencyScale",
978 FT_INT32, BASE_DEC, NULL, 0,
980 { &hf_charging_ase_type,
981 { "type", "charging_ase.type",
982 FT_UINT32, BASE_DEC, VALS(charging_ase_Code_vals), 0,
984 { &hf_charging_ase_criticality,
985 { "criticality", "charging_ase.criticality",
986 FT_UINT32, BASE_DEC, VALS(charging_ase_CriticalityType_vals), 0,
987 "CriticalityType", HFILL }},
988 { &hf_charging_ase_value,
989 { "value", "charging_ase.value_element",
990 FT_NONE, BASE_NONE, NULL, 0,
992 { &hf_charging_ase_networkOperators,
993 { "networkOperators", "charging_ase.networkOperators",
994 FT_UINT32, BASE_DEC, NULL, 0,
995 "SEQUENCE_SIZE_1_maxNetworkOperators_OF_NetworkIdentification", HFILL }},
996 { &hf_charging_ase_networkOperators_item,
997 { "NetworkIdentification", "charging_ase.NetworkIdentification",
998 FT_OID, BASE_NONE, NULL, 0,
1000 { &hf_charging_ase_stopIndicators,
1001 { "stopIndicators", "charging_ase.stopIndicators",
1002 FT_BYTES, BASE_NONE, NULL, 0,
1004 { &hf_charging_ase_currentTariffCurrency,
1005 { "currentTariffCurrency", "charging_ase.currentTariffCurrency_element",
1006 FT_NONE, BASE_NONE, NULL, 0,
1007 "TariffCurrencyFormat", HFILL }},
1008 { &hf_charging_ase_tariffSwitchCurrency,
1009 { "tariffSwitchCurrency", "charging_ase.tariffSwitchCurrency_element",
1010 FT_NONE, BASE_NONE, NULL, 0,
1012 { &hf_charging_ase_nextTariffCurrency,
1013 { "nextTariffCurrency", "charging_ase.nextTariffCurrency_element",
1014 FT_NONE, BASE_NONE, NULL, 0,
1015 "TariffCurrencyFormat", HFILL }},
1016 { &hf_charging_ase_tariffSwitchoverTime,
1017 { "tariffSwitchoverTime", "charging_ase.tariffSwitchoverTime",
1018 FT_BYTES, BASE_NONE, NULL, 0,
1020 { &hf_charging_ase_communicationChargeSequenceCurrency,
1021 { "communicationChargeSequenceCurrency", "charging_ase.communicationChargeSequenceCurrency",
1022 FT_UINT32, BASE_DEC, NULL, 0,
1023 "SEQUENCE_SIZE_minCommunicationTariffNum_maxCommunicationTariffNum_OF_CommunicationChargeCurrency", HFILL }},
1024 { &hf_charging_ase_communicationChargeSequenceCurrency_item,
1025 { "CommunicationChargeCurrency", "charging_ase.CommunicationChargeCurrency_element",
1026 FT_NONE, BASE_NONE, NULL, 0,
1028 { &hf_charging_ase_tariffControlIndicators,
1029 { "tariffControlIndicators", "charging_ase.tariffControlIndicators",
1030 FT_BYTES, BASE_NONE, NULL, 0,
1032 { &hf_charging_ase_callAttemptChargeCurrency,
1033 { "callAttemptChargeCurrency", "charging_ase.callAttemptChargeCurrency_element",
1034 FT_NONE, BASE_NONE, NULL, 0,
1035 "CurrencyFactorScale", HFILL }},
1036 { &hf_charging_ase_callSetupChargeCurrency,
1037 { "callSetupChargeCurrency", "charging_ase.callSetupChargeCurrency_element",
1038 FT_NONE, BASE_NONE, NULL, 0,
1039 "CurrencyFactorScale", HFILL }},
1040 { &hf_charging_ase_currentTariffPulse,
1041 { "currentTariffPulse", "charging_ase.currentTariffPulse_element",
1042 FT_NONE, BASE_NONE, NULL, 0,
1043 "TariffPulseFormat", HFILL }},
1044 { &hf_charging_ase_tariffSwitchPulse,
1045 { "tariffSwitchPulse", "charging_ase.tariffSwitchPulse_element",
1046 FT_NONE, BASE_NONE, NULL, 0,
1048 { &hf_charging_ase_nextTariffPulse,
1049 { "nextTariffPulse", "charging_ase.nextTariffPulse_element",
1050 FT_NONE, BASE_NONE, NULL, 0,
1051 "TariffPulseFormat", HFILL }},
1052 { &hf_charging_ase_communicationChargeSequencePulse,
1053 { "communicationChargeSequencePulse", "charging_ase.communicationChargeSequencePulse",
1054 FT_UINT32, BASE_DEC, NULL, 0,
1055 "SEQUENCE_SIZE_minCommunicationTariffNum_maxCommunicationTariffNum_OF_CommunicationChargePulse", HFILL }},
1056 { &hf_charging_ase_communicationChargeSequencePulse_item,
1057 { "CommunicationChargePulse", "charging_ase.CommunicationChargePulse_element",
1058 FT_NONE, BASE_NONE, NULL, 0,
1060 { &hf_charging_ase_tariffControlIndicators_01,
1061 { "tariffControlIndicators", "charging_ase.tariffControlIndicators",
1062 FT_BYTES, BASE_NONE, NULL, 0,
1063 "T_tariffControlIndicators_01", HFILL }},
1064 { &hf_charging_ase_callAttemptChargePulse,
1065 { "callAttemptChargePulse", "charging_ase.callAttemptChargePulse",
1066 FT_BYTES, BASE_NONE, NULL, 0,
1067 "PulseUnits", HFILL }},
1068 { &hf_charging_ase_callSetupChargePulse,
1069 { "callSetupChargePulse", "charging_ase.callSetupChargePulse",
1070 FT_BYTES, BASE_NONE, NULL, 0,
1071 "PulseUnits", HFILL }},
1072 { &hf_charging_ase_networkIdentification,
1073 { "networkIdentification", "charging_ase.networkIdentification",
1074 FT_OID, BASE_NONE, NULL, 0,
1076 { &hf_charging_ase_referenceID,
1077 { "referenceID", "charging_ase.referenceID",
1078 FT_UINT32, BASE_DEC, NULL, 0,
1080 { &hf_charging_ase_T_acknowledgementIndicators_accepted,
1081 { "accepted", "charging_ase.accepted",
1082 FT_BOOLEAN, 8, NULL, 0x80,
1084 { &hf_charging_ase_ChargingControlIndicators_subscriberCharge,
1085 { "subscriberCharge", "charging_ase.subscriberCharge",
1086 FT_BOOLEAN, 8, NULL, 0x80,
1088 { &hf_charging_ase_ChargingControlIndicators_immediateChangeOfActuallyAppliedTariff,
1089 { "immediateChangeOfActuallyAppliedTariff", "charging_ase.immediateChangeOfActuallyAppliedTariff",
1090 FT_BOOLEAN, 8, NULL, 0x40,
1092 { &hf_charging_ase_ChargingControlIndicators_delayUntilStart,
1093 { "delayUntilStart", "charging_ase.delayUntilStart",
1094 FT_BOOLEAN, 8, NULL, 0x20,
1096 { &hf_charging_ase_T_stopIndicators_callAttemptChargesApplicable,
1097 { "callAttemptChargesApplicable", "charging_ase.callAttemptChargesApplicable",
1098 FT_BOOLEAN, 8, NULL, 0x80,
1100 { &hf_charging_ase_SubTariffControl_oneTimeCharge,
1101 { "oneTimeCharge", "charging_ase.oneTimeCharge",
1102 FT_BOOLEAN, 8, NULL, 0x80,
1104 { &hf_charging_ase_T_tariffControlIndicators_non_cyclicTariff,
1105 { "non-cyclicTariff", "charging_ase.non-cyclicTariff",
1106 FT_BOOLEAN, 8, NULL, 0x80,
1108 { &hf_charging_ase_T_tariffControlIndicators_01_non_cyclicTariff,
1109 { "non-cyclicTariff", "charging_ase.non-cyclicTariff",
1110 FT_BOOLEAN, 8, NULL, 0x80,
1113 /*--- End of included file: packet-charging_ase-hfarr.c ---*/
1114 #line 74 "../../asn1/charging_ase/packet-charging_ase-template.c"
1117 /* List of subtrees */
1118 static gint *ett[] = {
1121 /*--- Included file: packet-charging_ase-ettarr.c ---*/
1122 #line 1 "../../asn1/charging_ase/packet-charging_ase-ettarr.c"
1123 &ett_charging_ase_ChargingMessageType,
1124 &ett_charging_ase_ChargingAcknowledgementInformation,
1125 &ett_charging_ase_T_acknowledgementIndicators,
1126 &ett_charging_ase_SEQUENCE_SIZE_1_numOfExtensions_OF_ExtensionField,
1127 &ett_charging_ase_ChargingControlIndicators,
1128 &ett_charging_ase_AddOnChargingInformation,
1129 &ett_charging_ase_T_addOncharge,
1130 &ett_charging_ase_ChargingTariffInformation,
1131 &ett_charging_ase_T_chargingTariff,
1132 &ett_charging_ase_Code,
1133 &ett_charging_ase_CommunicationChargeCurrency,
1134 &ett_charging_ase_CommunicationChargePulse,
1135 &ett_charging_ase_CurrencyFactorScale,
1136 &ett_charging_ase_ExtensionField,
1137 &ett_charging_ase_StartCharging,
1138 &ett_charging_ase_SEQUENCE_SIZE_1_maxNetworkOperators_OF_NetworkIdentification,
1139 &ett_charging_ase_StopCharging,
1140 &ett_charging_ase_T_stopIndicators,
1141 &ett_charging_ase_SubTariffControl,
1142 &ett_charging_ase_TariffCurrency,
1143 &ett_charging_ase_TariffSwitchCurrency,
1144 &ett_charging_ase_TariffCurrencyFormat,
1145 &ett_charging_ase_SEQUENCE_SIZE_minCommunicationTariffNum_maxCommunicationTariffNum_OF_CommunicationChargeCurrency,
1146 &ett_charging_ase_T_tariffControlIndicators,
1147 &ett_charging_ase_TariffPulse,
1148 &ett_charging_ase_TariffSwitchPulse,
1149 &ett_charging_ase_TariffPulseFormat,
1150 &ett_charging_ase_SEQUENCE_SIZE_minCommunicationTariffNum_maxCommunicationTariffNum_OF_CommunicationChargePulse,
1151 &ett_charging_ase_T_tariffControlIndicators_01,
1152 &ett_charging_ase_ChargingReferenceIdentification,
1154 /*--- End of included file: packet-charging_ase-ettarr.c ---*/
1155 #line 80 "../../asn1/charging_ase/packet-charging_ase-template.c"
1158 proto_charging_ase = proto_register_protocol(PNAME, PSNAME, PFNAME);
1160 proto_register_field_array(proto_charging_ase, hf, array_length(hf));
1161 proto_register_subtree_array(ett, array_length(ett));
1164 /* The registration hand-off routine */
1166 proto_reg_handoff_charging_ase(void)
1168 charging_ase_handle = create_dissector_handle(dissect_charging_ase, proto_charging_ase);