Postfix FT_NONE fields with "_element" string to reduce number of incompatible filter...
[metze/wireshark/wip.git] / epan / dissectors / packet-charging_ase.c
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 */
5
6 /* Input file: packet-charging_ase-template.c */
7
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>
11  *
12  * $Id$
13  *
14  * Wireshark - Network traffic analyzer
15  * By Gerald Combs <gerald@wireshark.org>
16  * Copyright 1998 Gerald Combs
17  *
18  * This program is free software; you can redistribute it and/or
19  * modify it under the terms of the GNU General Public License
20  * as published by the Free Software Foundation; either version 2
21  * of the License, or (at your option) any later version.
22  *
23  * This program is distributed in the hope that it will be useful,
24  * but WITHOUT ANY WARRANTY; without even the implied warranty of
25  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
26  * GNU General Public License for more details.
27  *
28  * You should have received a copy of the GNU General Public License
29  * along with this program; if not, write to the Free Software
30  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
31  * References: ETSI ES 201 296 V1.3.1 (2003-04)
32  */
33
34 #include "config.h"
35
36 #include <glib.h>
37 #include <epan/packet.h>
38 #include <epan/asn1.h>
39
40 #include "packet-ber.h"
41 #include "packet-charging_ase.h"
42
43 #define PNAME  "Charging ASE"
44 #define PSNAME "ChargingASE"
45 #define PFNAME "chargingase"
46
47 /* Define the Charging ASE proto */
48 static int proto_charging_ase = -1;
49
50
51 /*--- Included file: packet-charging_ase-hf.c ---*/
52 #line 1 "../../asn1/charging_ase/packet-charging_ase-hf.c"
53 static int hf_charging_ase_charging_ase_ChargingMessageType_PDU = -1;  /* ChargingMessageType */
54 static int hf_charging_ase_crgt = -1;             /* ChargingTariffInformation */
55 static int hf_charging_ase_aocrg = -1;            /* AddOnChargingInformation */
56 static int hf_charging_ase_crga = -1;             /* ChargingAcknowledgementInformation */
57 static int hf_charging_ase_start = -1;            /* StartCharging */
58 static int hf_charging_ase_stop = -1;             /* StopCharging */
59 static int hf_charging_ase_acknowledgementIndicators = -1;  /* T_acknowledgementIndicators */
60 static int hf_charging_ase_extensions = -1;       /* SEQUENCE_SIZE_1_numOfExtensions_OF_ExtensionField */
61 static int hf_charging_ase_extensions_item = -1;  /* ExtensionField */
62 static int hf_charging_ase_originationIdentification = -1;  /* ChargingReferenceIdentification */
63 static int hf_charging_ase_destinationIdentification = -1;  /* ChargingReferenceIdentification */
64 static int hf_charging_ase_chargingControlIndicators = -1;  /* ChargingControlIndicators */
65 static int hf_charging_ase_addOncharge = -1;      /* T_addOncharge */
66 static int hf_charging_ase_addOnChargeCurrency = -1;  /* CurrencyFactorScale */
67 static int hf_charging_ase_addOnChargePulse = -1;  /* PulseUnits */
68 static int hf_charging_ase_currency = -1;         /* Currency */
69 static int hf_charging_ase_chargingTariff = -1;   /* T_chargingTariff */
70 static int hf_charging_ase_tariffCurrency = -1;   /* TariffCurrency */
71 static int hf_charging_ase_tariffPulse = -1;      /* TariffPulse */
72 static int hf_charging_ase_local = -1;            /* INTEGER */
73 static int hf_charging_ase_global = -1;           /* OBJECT_IDENTIFIER */
74 static int hf_charging_ase_currencyFactorScale = -1;  /* CurrencyFactorScale */
75 static int hf_charging_ase_tariffDuration = -1;   /* TariffDuration */
76 static int hf_charging_ase_subTariffControl = -1;  /* SubTariffControl */
77 static int hf_charging_ase_pulseUnits = -1;       /* PulseUnits */
78 static int hf_charging_ase_chargeUnitTimeInterval = -1;  /* ChargeUnitTimeInterval */
79 static int hf_charging_ase_currencyFactor = -1;   /* CurrencyFactor */
80 static int hf_charging_ase_currencyScale = -1;    /* CurrencyScale */
81 static int hf_charging_ase_type = -1;             /* Code */
82 static int hf_charging_ase_criticality = -1;      /* CriticalityType */
83 static int hf_charging_ase_value = -1;            /* T_value */
84 static int hf_charging_ase_networkOperators = -1;  /* SEQUENCE_SIZE_1_maxNetworkOperators_OF_NetworkIdentification */
85 static int hf_charging_ase_networkOperators_item = -1;  /* NetworkIdentification */
86 static int hf_charging_ase_stopIndicators = -1;   /* T_stopIndicators */
87 static int hf_charging_ase_currentTariffCurrency = -1;  /* TariffCurrencyFormat */
88 static int hf_charging_ase_tariffSwitchCurrency = -1;  /* TariffSwitchCurrency */
89 static int hf_charging_ase_nextTariffCurrency = -1;  /* TariffCurrencyFormat */
90 static int hf_charging_ase_tariffSwitchoverTime = -1;  /* TariffSwitchoverTime */
91 static int hf_charging_ase_communicationChargeSequenceCurrency = -1;  /* SEQUENCE_SIZE_minCommunicationTariffNum_maxCommunicationTariffNum_OF_CommunicationChargeCurrency */
92 static int hf_charging_ase_communicationChargeSequenceCurrency_item = -1;  /* CommunicationChargeCurrency */
93 static int hf_charging_ase_tariffControlIndicators = -1;  /* T_tariffControlIndicators */
94 static int hf_charging_ase_callAttemptChargeCurrency = -1;  /* CurrencyFactorScale */
95 static int hf_charging_ase_callSetupChargeCurrency = -1;  /* CurrencyFactorScale */
96 static int hf_charging_ase_currentTariffPulse = -1;  /* TariffPulseFormat */
97 static int hf_charging_ase_tariffSwitchPulse = -1;  /* TariffSwitchPulse */
98 static int hf_charging_ase_nextTariffPulse = -1;  /* TariffPulseFormat */
99 static int hf_charging_ase_communicationChargeSequencePulse = -1;  /* SEQUENCE_SIZE_minCommunicationTariffNum_maxCommunicationTariffNum_OF_CommunicationChargePulse */
100 static int hf_charging_ase_communicationChargeSequencePulse_item = -1;  /* CommunicationChargePulse */
101 static int hf_charging_ase_tariffControlIndicators_01 = -1;  /* T_tariffControlIndicators_01 */
102 static int hf_charging_ase_callAttemptChargePulse = -1;  /* PulseUnits */
103 static int hf_charging_ase_callSetupChargePulse = -1;  /* PulseUnits */
104 static int hf_charging_ase_networkIdentification = -1;  /* NetworkIdentification */
105 static int hf_charging_ase_referenceID = -1;      /* ReferenceID */
106 /* named bits */
107 static int hf_charging_ase_T_acknowledgementIndicators_accepted = -1;
108 static int hf_charging_ase_ChargingControlIndicators_subscriberCharge = -1;
109 static int hf_charging_ase_ChargingControlIndicators_immediateChangeOfActuallyAppliedTariff = -1;
110 static int hf_charging_ase_ChargingControlIndicators_delayUntilStart = -1;
111 static int hf_charging_ase_T_stopIndicators_callAttemptChargesApplicable = -1;
112 static int hf_charging_ase_SubTariffControl_oneTimeCharge = -1;
113 static int hf_charging_ase_T_tariffControlIndicators_non_cyclicTariff = -1;
114 static int hf_charging_ase_T_tariffControlIndicators_01_non_cyclicTariff = -1;
115
116 /*--- End of included file: packet-charging_ase-hf.c ---*/
117 #line 43 "../../asn1/charging_ase/packet-charging_ase-template.c"
118
119 static int ett_charging_ase = -1;
120
121 /*--- Included file: packet-charging_ase-ett.c ---*/
122 #line 1 "../../asn1/charging_ase/packet-charging_ase-ett.c"
123 static gint ett_charging_ase_ChargingMessageType = -1;
124 static gint ett_charging_ase_ChargingAcknowledgementInformation = -1;
125 static gint ett_charging_ase_T_acknowledgementIndicators = -1;
126 static gint ett_charging_ase_SEQUENCE_SIZE_1_numOfExtensions_OF_ExtensionField = -1;
127 static gint ett_charging_ase_ChargingControlIndicators = -1;
128 static gint ett_charging_ase_AddOnChargingInformation = -1;
129 static gint ett_charging_ase_T_addOncharge = -1;
130 static gint ett_charging_ase_ChargingTariffInformation = -1;
131 static gint ett_charging_ase_T_chargingTariff = -1;
132 static gint ett_charging_ase_Code = -1;
133 static gint ett_charging_ase_CommunicationChargeCurrency = -1;
134 static gint ett_charging_ase_CommunicationChargePulse = -1;
135 static gint ett_charging_ase_CurrencyFactorScale = -1;
136 static gint ett_charging_ase_ExtensionField = -1;
137 static gint ett_charging_ase_StartCharging = -1;
138 static gint ett_charging_ase_SEQUENCE_SIZE_1_maxNetworkOperators_OF_NetworkIdentification = -1;
139 static gint ett_charging_ase_StopCharging = -1;
140 static gint ett_charging_ase_T_stopIndicators = -1;
141 static gint ett_charging_ase_SubTariffControl = -1;
142 static gint ett_charging_ase_TariffCurrency = -1;
143 static gint ett_charging_ase_TariffSwitchCurrency = -1;
144 static gint ett_charging_ase_TariffCurrencyFormat = -1;
145 static gint ett_charging_ase_SEQUENCE_SIZE_minCommunicationTariffNum_maxCommunicationTariffNum_OF_CommunicationChargeCurrency = -1;
146 static gint ett_charging_ase_T_tariffControlIndicators = -1;
147 static gint ett_charging_ase_TariffPulse = -1;
148 static gint ett_charging_ase_TariffSwitchPulse = -1;
149 static gint ett_charging_ase_TariffPulseFormat = -1;
150 static gint ett_charging_ase_SEQUENCE_SIZE_minCommunicationTariffNum_maxCommunicationTariffNum_OF_CommunicationChargePulse = -1;
151 static gint ett_charging_ase_T_tariffControlIndicators_01 = -1;
152 static gint ett_charging_ase_ChargingReferenceIdentification = -1;
153
154 /*--- End of included file: packet-charging_ase-ett.c ---*/
155 #line 46 "../../asn1/charging_ase/packet-charging_ase-template.c"
156
157 static dissector_handle_t charging_ase_handle;
158
159
160 /*--- Included file: packet-charging_ase-fn.c ---*/
161 #line 1 "../../asn1/charging_ase/packet-charging_ase-fn.c"
162
163 static const asn_namedbit ChargingControlIndicators_bits[] = {
164   {  0, &hf_charging_ase_ChargingControlIndicators_subscriberCharge, -1, -1, "subscriberCharge", NULL },
165   {  1, &hf_charging_ase_ChargingControlIndicators_immediateChangeOfActuallyAppliedTariff, -1, -1, "immediateChangeOfActuallyAppliedTariff", NULL },
166   {  2, &hf_charging_ase_ChargingControlIndicators_delayUntilStart, -1, -1, "delayUntilStart", NULL },
167   { 0, NULL, 0, 0, NULL, NULL }
168 };
169
170 static int
171 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_) {
172   offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
173                                     ChargingControlIndicators_bits, hf_index, ett_charging_ase_ChargingControlIndicators,
174                                     NULL);
175
176   return offset;
177 }
178
179
180
181 static int
182 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_) {
183   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
184                                                 NULL);
185
186   return offset;
187 }
188
189
190
191 static int
192 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_) {
193   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
194                                                 NULL);
195
196   return offset;
197 }
198
199
200 static const ber_sequence_t CurrencyFactorScale_sequence[] = {
201   { &hf_charging_ase_currencyFactor, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_charging_ase_CurrencyFactor },
202   { &hf_charging_ase_currencyScale, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_charging_ase_CurrencyScale },
203   { NULL, 0, 0, 0, NULL }
204 };
205
206 static int
207 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_) {
208   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
209                                    CurrencyFactorScale_sequence, hf_index, ett_charging_ase_CurrencyFactorScale);
210
211   return offset;
212 }
213
214
215
216 static int
217 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_) {
218   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
219                                                 NULL);
220
221   return offset;
222 }
223
224
225 static const asn_namedbit SubTariffControl_bits[] = {
226   {  0, &hf_charging_ase_SubTariffControl_oneTimeCharge, -1, -1, "oneTimeCharge", NULL },
227   { 0, NULL, 0, 0, NULL, NULL }
228 };
229
230 static int
231 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_) {
232   offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
233                                     SubTariffControl_bits, hf_index, ett_charging_ase_SubTariffControl,
234                                     NULL);
235
236   return offset;
237 }
238
239
240 static const ber_sequence_t CommunicationChargeCurrency_sequence[] = {
241   { &hf_charging_ase_currencyFactorScale, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_charging_ase_CurrencyFactorScale },
242   { &hf_charging_ase_tariffDuration, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_charging_ase_TariffDuration },
243   { &hf_charging_ase_subTariffControl, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_charging_ase_SubTariffControl },
244   { NULL, 0, 0, 0, NULL }
245 };
246
247 static int
248 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_) {
249   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
250                                    CommunicationChargeCurrency_sequence, hf_index, ett_charging_ase_CommunicationChargeCurrency);
251
252   return offset;
253 }
254
255
256 static const ber_sequence_t SEQUENCE_SIZE_minCommunicationTariffNum_maxCommunicationTariffNum_OF_CommunicationChargeCurrency_sequence_of[1] = {
257   { &hf_charging_ase_communicationChargeSequenceCurrency_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_charging_ase_CommunicationChargeCurrency },
258 };
259
260 static int
261 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_) {
262   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
263                                       SEQUENCE_SIZE_minCommunicationTariffNum_maxCommunicationTariffNum_OF_CommunicationChargeCurrency_sequence_of, hf_index, ett_charging_ase_SEQUENCE_SIZE_minCommunicationTariffNum_maxCommunicationTariffNum_OF_CommunicationChargeCurrency);
264
265   return offset;
266 }
267
268
269 static const asn_namedbit T_tariffControlIndicators_bits[] = {
270   {  0, &hf_charging_ase_T_tariffControlIndicators_non_cyclicTariff, -1, -1, "non-cyclicTariff", NULL },
271   { 0, NULL, 0, 0, NULL, NULL }
272 };
273
274 static int
275 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_) {
276   offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
277                                     T_tariffControlIndicators_bits, hf_index, ett_charging_ase_T_tariffControlIndicators,
278                                     NULL);
279
280   return offset;
281 }
282
283
284 static const ber_sequence_t TariffCurrencyFormat_sequence[] = {
285   { &hf_charging_ase_communicationChargeSequenceCurrency, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_charging_ase_SEQUENCE_SIZE_minCommunicationTariffNum_maxCommunicationTariffNum_OF_CommunicationChargeCurrency },
286   { &hf_charging_ase_tariffControlIndicators, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_charging_ase_T_tariffControlIndicators },
287   { &hf_charging_ase_callAttemptChargeCurrency, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_charging_ase_CurrencyFactorScale },
288   { &hf_charging_ase_callSetupChargeCurrency, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_charging_ase_CurrencyFactorScale },
289   { NULL, 0, 0, 0, NULL }
290 };
291
292 static int
293 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_) {
294   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
295                                    TariffCurrencyFormat_sequence, hf_index, ett_charging_ase_TariffCurrencyFormat);
296
297   return offset;
298 }
299
300
301
302 static int
303 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_) {
304   offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
305                                        NULL);
306
307   return offset;
308 }
309
310
311 static const ber_sequence_t TariffSwitchCurrency_sequence[] = {
312   { &hf_charging_ase_nextTariffCurrency, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_charging_ase_TariffCurrencyFormat },
313   { &hf_charging_ase_tariffSwitchoverTime, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_charging_ase_TariffSwitchoverTime },
314   { NULL, 0, 0, 0, NULL }
315 };
316
317 static int
318 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_) {
319   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
320                                    TariffSwitchCurrency_sequence, hf_index, ett_charging_ase_TariffSwitchCurrency);
321
322   return offset;
323 }
324
325
326 static const ber_sequence_t TariffCurrency_sequence[] = {
327   { &hf_charging_ase_currentTariffCurrency, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_charging_ase_TariffCurrencyFormat },
328   { &hf_charging_ase_tariffSwitchCurrency, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_charging_ase_TariffSwitchCurrency },
329   { NULL, 0, 0, 0, NULL }
330 };
331
332 static int
333 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_) {
334   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
335                                    TariffCurrency_sequence, hf_index, ett_charging_ase_TariffCurrency);
336
337   return offset;
338 }
339
340
341
342 static int
343 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_) {
344   offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
345                                        NULL);
346
347   return offset;
348 }
349
350
351
352 static int
353 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_) {
354   offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
355                                        NULL);
356
357   return offset;
358 }
359
360
361 static const ber_sequence_t CommunicationChargePulse_sequence[] = {
362   { &hf_charging_ase_pulseUnits, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_charging_ase_PulseUnits },
363   { &hf_charging_ase_chargeUnitTimeInterval, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_charging_ase_ChargeUnitTimeInterval },
364   { &hf_charging_ase_tariffDuration, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_charging_ase_TariffDuration },
365   { NULL, 0, 0, 0, NULL }
366 };
367
368 static int
369 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_) {
370   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
371                                    CommunicationChargePulse_sequence, hf_index, ett_charging_ase_CommunicationChargePulse);
372
373   return offset;
374 }
375
376
377 static const ber_sequence_t SEQUENCE_SIZE_minCommunicationTariffNum_maxCommunicationTariffNum_OF_CommunicationChargePulse_sequence_of[1] = {
378   { &hf_charging_ase_communicationChargeSequencePulse_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_charging_ase_CommunicationChargePulse },
379 };
380
381 static int
382 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_) {
383   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
384                                       SEQUENCE_SIZE_minCommunicationTariffNum_maxCommunicationTariffNum_OF_CommunicationChargePulse_sequence_of, hf_index, ett_charging_ase_SEQUENCE_SIZE_minCommunicationTariffNum_maxCommunicationTariffNum_OF_CommunicationChargePulse);
385
386   return offset;
387 }
388
389
390 static const asn_namedbit T_tariffControlIndicators_01_bits[] = {
391   {  0, &hf_charging_ase_T_tariffControlIndicators_01_non_cyclicTariff, -1, -1, "non-cyclicTariff", NULL },
392   { 0, NULL, 0, 0, NULL, NULL }
393 };
394
395 static int
396 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_) {
397   offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
398                                     T_tariffControlIndicators_01_bits, hf_index, ett_charging_ase_T_tariffControlIndicators_01,
399                                     NULL);
400
401   return offset;
402 }
403
404
405 static const ber_sequence_t TariffPulseFormat_sequence[] = {
406   { &hf_charging_ase_communicationChargeSequencePulse, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_charging_ase_SEQUENCE_SIZE_minCommunicationTariffNum_maxCommunicationTariffNum_OF_CommunicationChargePulse },
407   { &hf_charging_ase_tariffControlIndicators_01, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_charging_ase_T_tariffControlIndicators_01 },
408   { &hf_charging_ase_callAttemptChargePulse, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_charging_ase_PulseUnits },
409   { &hf_charging_ase_callSetupChargePulse, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_charging_ase_PulseUnits },
410   { NULL, 0, 0, 0, NULL }
411 };
412
413 static int
414 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_) {
415   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
416                                    TariffPulseFormat_sequence, hf_index, ett_charging_ase_TariffPulseFormat);
417
418   return offset;
419 }
420
421
422 static const ber_sequence_t TariffSwitchPulse_sequence[] = {
423   { &hf_charging_ase_nextTariffPulse, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_charging_ase_TariffPulseFormat },
424   { &hf_charging_ase_tariffSwitchoverTime, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_charging_ase_TariffSwitchoverTime },
425   { NULL, 0, 0, 0, NULL }
426 };
427
428 static int
429 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_) {
430   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
431                                    TariffSwitchPulse_sequence, hf_index, ett_charging_ase_TariffSwitchPulse);
432
433   return offset;
434 }
435
436
437 static const ber_sequence_t TariffPulse_sequence[] = {
438   { &hf_charging_ase_currentTariffPulse, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_charging_ase_TariffPulseFormat },
439   { &hf_charging_ase_tariffSwitchPulse, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_charging_ase_TariffSwitchPulse },
440   { NULL, 0, 0, 0, NULL }
441 };
442
443 static int
444 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_) {
445   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
446                                    TariffPulse_sequence, hf_index, ett_charging_ase_TariffPulse);
447
448   return offset;
449 }
450
451
452 static const value_string charging_ase_T_chargingTariff_vals[] = {
453   {   0, "tariffCurrency" },
454   {   1, "tariffPulse" },
455   { 0, NULL }
456 };
457
458 static const ber_choice_t T_chargingTariff_choice[] = {
459   {   0, &hf_charging_ase_tariffCurrency, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_charging_ase_TariffCurrency },
460   {   1, &hf_charging_ase_tariffPulse, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_charging_ase_TariffPulse },
461   { 0, NULL, 0, 0, 0, NULL }
462 };
463
464 static int
465 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_) {
466   offset = dissect_ber_choice(actx, tree, tvb, offset,
467                                  T_chargingTariff_choice, hf_index, ett_charging_ase_T_chargingTariff,
468                                  NULL);
469
470   return offset;
471 }
472
473
474
475 static int
476 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_) {
477   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
478                                                 NULL);
479
480   return offset;
481 }
482
483
484
485 static int
486 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_) {
487   offset = dissect_ber_object_identifier(implicit_tag, actx, tree, tvb, offset, hf_index, NULL);
488
489   return offset;
490 }
491
492
493 static const value_string charging_ase_Code_vals[] = {
494   {   0, "local" },
495   {   1, "global" },
496   { 0, NULL }
497 };
498
499 static const ber_choice_t Code_choice[] = {
500   {   0, &hf_charging_ase_local  , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_charging_ase_INTEGER },
501   {   1, &hf_charging_ase_global , BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_charging_ase_OBJECT_IDENTIFIER },
502   { 0, NULL, 0, 0, 0, NULL }
503 };
504
505 static int
506 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_) {
507   offset = dissect_ber_choice(actx, tree, tvb, offset,
508                                  Code_choice, hf_index, ett_charging_ase_Code,
509                                  NULL);
510
511   return offset;
512 }
513
514
515 static const value_string charging_ase_CriticalityType_vals[] = {
516   {   0, "ignore" },
517   {   1, "abort" },
518   { 0, NULL }
519 };
520
521
522 static int
523 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_) {
524   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
525                                   NULL);
526
527   return offset;
528 }
529
530
531
532 static int
533 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_) {
534 #line 14 "../../asn1/charging_ase/charging_ase.cnf"
535
536         proto_tree_add_text(tree, tvb, offset, -1, "Extensions not dissected");
537         return tvb_length(tvb);
538
539
540   return offset;
541 }
542
543
544 static const ber_sequence_t ExtensionField_sequence[] = {
545   { &hf_charging_ase_type   , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_charging_ase_Code },
546   { &hf_charging_ase_criticality, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_charging_ase_CriticalityType },
547   { &hf_charging_ase_value  , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_charging_ase_T_value },
548   { NULL, 0, 0, 0, NULL }
549 };
550
551 static int
552 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_) {
553   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
554                                    ExtensionField_sequence, hf_index, ett_charging_ase_ExtensionField);
555
556   return offset;
557 }
558
559
560 static const ber_sequence_t SEQUENCE_SIZE_1_numOfExtensions_OF_ExtensionField_sequence_of[1] = {
561   { &hf_charging_ase_extensions_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_charging_ase_ExtensionField },
562 };
563
564 static int
565 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_) {
566   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
567                                       SEQUENCE_SIZE_1_numOfExtensions_OF_ExtensionField_sequence_of, hf_index, ett_charging_ase_SEQUENCE_SIZE_1_numOfExtensions_OF_ExtensionField);
568
569   return offset;
570 }
571
572
573
574 static int
575 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_) {
576   offset = dissect_ber_object_identifier(implicit_tag, actx, tree, tvb, offset, hf_index, NULL);
577
578   return offset;
579 }
580
581
582
583 static int
584 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_) {
585   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
586                                                 NULL);
587
588   return offset;
589 }
590
591
592 static const ber_sequence_t ChargingReferenceIdentification_sequence[] = {
593   { &hf_charging_ase_networkIdentification, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_charging_ase_NetworkIdentification },
594   { &hf_charging_ase_referenceID, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_charging_ase_ReferenceID },
595   { NULL, 0, 0, 0, NULL }
596 };
597
598 static int
599 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_) {
600   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
601                                    ChargingReferenceIdentification_sequence, hf_index, ett_charging_ase_ChargingReferenceIdentification);
602
603   return offset;
604 }
605
606
607 static const value_string charging_ase_Currency_vals[] = {
608   {   0, "noIndication" },
609   {   1, "australianDollar" },
610   {   2, "austrianSchilling" },
611   {   3, "belgianFranc" },
612   {   4, "britishPound" },
613   {   5, "czechKoruna" },
614   {   6, "danishKrone" },
615   {   7, "dutchGuilder" },
616   {   8, "euro" },
617   {   9, "finnishMarkka" },
618   {  10, "frenchFranc" },
619   {  11, "germanMark" },
620   {  12, "greekDrachma" },
621   {  13, "hungarianForint" },
622   {  14, "irishPunt" },
623   {  15, "italianLira" },
624   {  16, "japaneseYen" },
625   {  17, "luxembourgian-Franc" },
626   {  18, "norwegianKrone" },
627   {  19, "polishZloty" },
628   {  20, "portugeseEscudo" },
629   {  21, "russianRouble" },
630   {  22, "slovakKoruna" },
631   {  23, "spanishPeseta" },
632   {  24, "swedishKrone" },
633   {  25, "swissFranc" },
634   {  26, "turkishLira" },
635   {  27, "uSDollar" },
636   { 0, NULL }
637 };
638
639
640 static int
641 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_) {
642   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
643                                   NULL);
644
645   return offset;
646 }
647
648
649 static const ber_sequence_t ChargingTariffInformation_sequence[] = {
650   { &hf_charging_ase_chargingControlIndicators, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_charging_ase_ChargingControlIndicators },
651   { &hf_charging_ase_chargingTariff, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_charging_ase_T_chargingTariff },
652   { &hf_charging_ase_extensions, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_charging_ase_SEQUENCE_SIZE_1_numOfExtensions_OF_ExtensionField },
653   { &hf_charging_ase_originationIdentification, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_charging_ase_ChargingReferenceIdentification },
654   { &hf_charging_ase_destinationIdentification, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_charging_ase_ChargingReferenceIdentification },
655   { &hf_charging_ase_currency, BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_charging_ase_Currency },
656   { NULL, 0, 0, 0, NULL }
657 };
658
659 static int
660 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_) {
661   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
662                                    ChargingTariffInformation_sequence, hf_index, ett_charging_ase_ChargingTariffInformation);
663
664   return offset;
665 }
666
667
668 static const value_string charging_ase_T_addOncharge_vals[] = {
669   {   0, "addOnChargeCurrency" },
670   {   1, "addOnChargePulse" },
671   { 0, NULL }
672 };
673
674 static const ber_choice_t T_addOncharge_choice[] = {
675   {   0, &hf_charging_ase_addOnChargeCurrency, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_charging_ase_CurrencyFactorScale },
676   {   1, &hf_charging_ase_addOnChargePulse, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_charging_ase_PulseUnits },
677   { 0, NULL, 0, 0, 0, NULL }
678 };
679
680 static int
681 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_) {
682   offset = dissect_ber_choice(actx, tree, tvb, offset,
683                                  T_addOncharge_choice, hf_index, ett_charging_ase_T_addOncharge,
684                                  NULL);
685
686   return offset;
687 }
688
689
690 static const ber_sequence_t AddOnChargingInformation_sequence[] = {
691   { &hf_charging_ase_chargingControlIndicators, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_charging_ase_ChargingControlIndicators },
692   { &hf_charging_ase_addOncharge, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_charging_ase_T_addOncharge },
693   { &hf_charging_ase_extensions, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_charging_ase_SEQUENCE_SIZE_1_numOfExtensions_OF_ExtensionField },
694   { &hf_charging_ase_originationIdentification, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_charging_ase_ChargingReferenceIdentification },
695   { &hf_charging_ase_destinationIdentification, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_charging_ase_ChargingReferenceIdentification },
696   { &hf_charging_ase_currency, BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_charging_ase_Currency },
697   { NULL, 0, 0, 0, NULL }
698 };
699
700 static int
701 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_) {
702   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
703                                    AddOnChargingInformation_sequence, hf_index, ett_charging_ase_AddOnChargingInformation);
704
705   return offset;
706 }
707
708
709 static const asn_namedbit T_acknowledgementIndicators_bits[] = {
710   {  0, &hf_charging_ase_T_acknowledgementIndicators_accepted, -1, -1, "accepted", NULL },
711   { 0, NULL, 0, 0, NULL, NULL }
712 };
713
714 static int
715 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_) {
716   offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
717                                     T_acknowledgementIndicators_bits, hf_index, ett_charging_ase_T_acknowledgementIndicators,
718                                     NULL);
719
720   return offset;
721 }
722
723
724 static const ber_sequence_t ChargingAcknowledgementInformation_sequence[] = {
725   { &hf_charging_ase_acknowledgementIndicators, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_charging_ase_T_acknowledgementIndicators },
726   { &hf_charging_ase_extensions, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_charging_ase_SEQUENCE_SIZE_1_numOfExtensions_OF_ExtensionField },
727   { &hf_charging_ase_originationIdentification, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_charging_ase_ChargingReferenceIdentification },
728   { &hf_charging_ase_destinationIdentification, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_charging_ase_ChargingReferenceIdentification },
729   { NULL, 0, 0, 0, NULL }
730 };
731
732 static int
733 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_) {
734   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
735                                    ChargingAcknowledgementInformation_sequence, hf_index, ett_charging_ase_ChargingAcknowledgementInformation);
736
737   return offset;
738 }
739
740
741 static const ber_sequence_t SEQUENCE_SIZE_1_maxNetworkOperators_OF_NetworkIdentification_sequence_of[1] = {
742   { &hf_charging_ase_networkOperators_item, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_charging_ase_NetworkIdentification },
743 };
744
745 static int
746 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_) {
747   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
748                                       SEQUENCE_SIZE_1_maxNetworkOperators_OF_NetworkIdentification_sequence_of, hf_index, ett_charging_ase_SEQUENCE_SIZE_1_maxNetworkOperators_OF_NetworkIdentification);
749
750   return offset;
751 }
752
753
754 static const ber_sequence_t StartCharging_sequence[] = {
755   { &hf_charging_ase_networkOperators, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_charging_ase_SEQUENCE_SIZE_1_maxNetworkOperators_OF_NetworkIdentification },
756   { &hf_charging_ase_extensions, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_charging_ase_SEQUENCE_SIZE_1_numOfExtensions_OF_ExtensionField },
757   { &hf_charging_ase_originationIdentification, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_charging_ase_ChargingReferenceIdentification },
758   { NULL, 0, 0, 0, NULL }
759 };
760
761 static int
762 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_) {
763   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
764                                    StartCharging_sequence, hf_index, ett_charging_ase_StartCharging);
765
766   return offset;
767 }
768
769
770 static const asn_namedbit T_stopIndicators_bits[] = {
771   {  0, &hf_charging_ase_T_stopIndicators_callAttemptChargesApplicable, -1, -1, "callAttemptChargesApplicable", NULL },
772   { 0, NULL, 0, 0, NULL, NULL }
773 };
774
775 static int
776 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_) {
777   offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
778                                     T_stopIndicators_bits, hf_index, ett_charging_ase_T_stopIndicators,
779                                     NULL);
780
781   return offset;
782 }
783
784
785 static const ber_sequence_t StopCharging_sequence[] = {
786   { &hf_charging_ase_stopIndicators, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_charging_ase_T_stopIndicators },
787   { &hf_charging_ase_networkOperators, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_charging_ase_SEQUENCE_SIZE_1_maxNetworkOperators_OF_NetworkIdentification },
788   { &hf_charging_ase_extensions, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_charging_ase_SEQUENCE_SIZE_1_numOfExtensions_OF_ExtensionField },
789   { &hf_charging_ase_originationIdentification, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_charging_ase_ChargingReferenceIdentification },
790   { NULL, 0, 0, 0, NULL }
791 };
792
793 static int
794 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_) {
795   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
796                                    StopCharging_sequence, hf_index, ett_charging_ase_StopCharging);
797
798   return offset;
799 }
800
801
802 const value_string charging_ase_ChargingMessageType_vals[] = {
803   {   0, "crgt" },
804   {   1, "aocrg" },
805   {   2, "crga" },
806   {   3, "start" },
807   {   4, "stop" },
808   { 0, NULL }
809 };
810
811 static const ber_choice_t ChargingMessageType_choice[] = {
812   {   0, &hf_charging_ase_crgt   , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_charging_ase_ChargingTariffInformation },
813   {   1, &hf_charging_ase_aocrg  , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_charging_ase_AddOnChargingInformation },
814   {   2, &hf_charging_ase_crga   , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_charging_ase_ChargingAcknowledgementInformation },
815   {   3, &hf_charging_ase_start  , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_charging_ase_StartCharging },
816   {   4, &hf_charging_ase_stop   , BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_charging_ase_StopCharging },
817   { 0, NULL, 0, 0, 0, NULL }
818 };
819
820 int
821 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_) {
822   offset = dissect_ber_choice(actx, tree, tvb, offset,
823                                  ChargingMessageType_choice, hf_index, ett_charging_ase_ChargingMessageType,
824                                  NULL);
825
826   return offset;
827 }
828
829 /*--- PDUs ---*/
830
831 int dissect_charging_ase_ChargingMessageType_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
832   int offset = 0;
833   asn1_ctx_t asn1_ctx;
834   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
835   offset = dissect_charging_ase_ChargingMessageType(FALSE, tvb, offset, &asn1_ctx, tree, hf_charging_ase_charging_ase_ChargingMessageType_PDU);
836   return offset;
837 }
838
839
840 /*--- End of included file: packet-charging_ase-fn.c ---*/
841 #line 50 "../../asn1/charging_ase/packet-charging_ase-template.c"
842
843 static void
844 dissect_charging_ase(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
845 {
846     proto_item *it;
847     proto_tree *tr;
848
849     it=proto_tree_add_protocol_format(tree, proto_charging_ase, tvb, 0, tvb_length(tvb), "Charging ASE");
850     tr=proto_item_add_subtree(it, ett_charging_ase);
851
852     if(tvb_length(tvb)>0)
853     {
854         dissect_charging_ase_ChargingMessageType_PDU(tvb , pinfo, tr, NULL);
855     }
856 }
857
858 /* Register all the bits needed with the filtering engine */
859 void
860 proto_register_charging_ase(void)
861 {
862   /* List of fields */
863   static hf_register_info hf[] = {
864
865 /*--- Included file: packet-charging_ase-hfarr.c ---*/
866 #line 1 "../../asn1/charging_ase/packet-charging_ase-hfarr.c"
867     { &hf_charging_ase_charging_ase_ChargingMessageType_PDU,
868       { "ChargingMessageType", "charging_ase.ChargingMessageType",
869         FT_UINT32, BASE_DEC, VALS(charging_ase_ChargingMessageType_vals), 0,
870         NULL, HFILL }},
871     { &hf_charging_ase_crgt,
872       { "crgt", "charging_ase.crgt_element",
873         FT_NONE, BASE_NONE, NULL, 0,
874         "ChargingTariffInformation", HFILL }},
875     { &hf_charging_ase_aocrg,
876       { "aocrg", "charging_ase.aocrg_element",
877         FT_NONE, BASE_NONE, NULL, 0,
878         "AddOnChargingInformation", HFILL }},
879     { &hf_charging_ase_crga,
880       { "crga", "charging_ase.crga_element",
881         FT_NONE, BASE_NONE, NULL, 0,
882         "ChargingAcknowledgementInformation", HFILL }},
883     { &hf_charging_ase_start,
884       { "start", "charging_ase.start_element",
885         FT_NONE, BASE_NONE, NULL, 0,
886         "StartCharging", HFILL }},
887     { &hf_charging_ase_stop,
888       { "stop", "charging_ase.stop_element",
889         FT_NONE, BASE_NONE, NULL, 0,
890         "StopCharging", HFILL }},
891     { &hf_charging_ase_acknowledgementIndicators,
892       { "acknowledgementIndicators", "charging_ase.acknowledgementIndicators",
893         FT_BYTES, BASE_NONE, NULL, 0,
894         NULL, HFILL }},
895     { &hf_charging_ase_extensions,
896       { "extensions", "charging_ase.extensions",
897         FT_UINT32, BASE_DEC, NULL, 0,
898         "SEQUENCE_SIZE_1_numOfExtensions_OF_ExtensionField", HFILL }},
899     { &hf_charging_ase_extensions_item,
900       { "ExtensionField", "charging_ase.ExtensionField_element",
901         FT_NONE, BASE_NONE, NULL, 0,
902         NULL, HFILL }},
903     { &hf_charging_ase_originationIdentification,
904       { "originationIdentification", "charging_ase.originationIdentification_element",
905         FT_NONE, BASE_NONE, NULL, 0,
906         "ChargingReferenceIdentification", HFILL }},
907     { &hf_charging_ase_destinationIdentification,
908       { "destinationIdentification", "charging_ase.destinationIdentification_element",
909         FT_NONE, BASE_NONE, NULL, 0,
910         "ChargingReferenceIdentification", HFILL }},
911     { &hf_charging_ase_chargingControlIndicators,
912       { "chargingControlIndicators", "charging_ase.chargingControlIndicators",
913         FT_BYTES, BASE_NONE, NULL, 0,
914         NULL, HFILL }},
915     { &hf_charging_ase_addOncharge,
916       { "addOncharge", "charging_ase.addOncharge",
917         FT_UINT32, BASE_DEC, VALS(charging_ase_T_addOncharge_vals), 0,
918         NULL, HFILL }},
919     { &hf_charging_ase_addOnChargeCurrency,
920       { "addOnChargeCurrency", "charging_ase.addOnChargeCurrency_element",
921         FT_NONE, BASE_NONE, NULL, 0,
922         "CurrencyFactorScale", HFILL }},
923     { &hf_charging_ase_addOnChargePulse,
924       { "addOnChargePulse", "charging_ase.addOnChargePulse",
925         FT_BYTES, BASE_NONE, NULL, 0,
926         "PulseUnits", HFILL }},
927     { &hf_charging_ase_currency,
928       { "currency", "charging_ase.currency",
929         FT_UINT32, BASE_DEC, VALS(charging_ase_Currency_vals), 0,
930         NULL, HFILL }},
931     { &hf_charging_ase_chargingTariff,
932       { "chargingTariff", "charging_ase.chargingTariff",
933         FT_UINT32, BASE_DEC, VALS(charging_ase_T_chargingTariff_vals), 0,
934         NULL, HFILL }},
935     { &hf_charging_ase_tariffCurrency,
936       { "tariffCurrency", "charging_ase.tariffCurrency_element",
937         FT_NONE, BASE_NONE, NULL, 0,
938         NULL, HFILL }},
939     { &hf_charging_ase_tariffPulse,
940       { "tariffPulse", "charging_ase.tariffPulse_element",
941         FT_NONE, BASE_NONE, NULL, 0,
942         NULL, HFILL }},
943     { &hf_charging_ase_local,
944       { "local", "charging_ase.local",
945         FT_INT32, BASE_DEC, NULL, 0,
946         "INTEGER", HFILL }},
947     { &hf_charging_ase_global,
948       { "global", "charging_ase.global",
949         FT_OID, BASE_NONE, NULL, 0,
950         "OBJECT_IDENTIFIER", HFILL }},
951     { &hf_charging_ase_currencyFactorScale,
952       { "currencyFactorScale", "charging_ase.currencyFactorScale_element",
953         FT_NONE, BASE_NONE, NULL, 0,
954         NULL, HFILL }},
955     { &hf_charging_ase_tariffDuration,
956       { "tariffDuration", "charging_ase.tariffDuration",
957         FT_UINT32, BASE_DEC, NULL, 0,
958         NULL, HFILL }},
959     { &hf_charging_ase_subTariffControl,
960       { "subTariffControl", "charging_ase.subTariffControl",
961         FT_BYTES, BASE_NONE, NULL, 0,
962         NULL, HFILL }},
963     { &hf_charging_ase_pulseUnits,
964       { "pulseUnits", "charging_ase.pulseUnits",
965         FT_BYTES, BASE_NONE, NULL, 0,
966         NULL, HFILL }},
967     { &hf_charging_ase_chargeUnitTimeInterval,
968       { "chargeUnitTimeInterval", "charging_ase.chargeUnitTimeInterval",
969         FT_BYTES, BASE_NONE, NULL, 0,
970         NULL, HFILL }},
971     { &hf_charging_ase_currencyFactor,
972       { "currencyFactor", "charging_ase.currencyFactor",
973         FT_UINT32, BASE_DEC, NULL, 0,
974         NULL, HFILL }},
975     { &hf_charging_ase_currencyScale,
976       { "currencyScale", "charging_ase.currencyScale",
977         FT_INT32, BASE_DEC, NULL, 0,
978         NULL, HFILL }},
979     { &hf_charging_ase_type,
980       { "type", "charging_ase.type",
981         FT_UINT32, BASE_DEC, VALS(charging_ase_Code_vals), 0,
982         "Code", HFILL }},
983     { &hf_charging_ase_criticality,
984       { "criticality", "charging_ase.criticality",
985         FT_UINT32, BASE_DEC, VALS(charging_ase_CriticalityType_vals), 0,
986         "CriticalityType", HFILL }},
987     { &hf_charging_ase_value,
988       { "value", "charging_ase.value_element",
989         FT_NONE, BASE_NONE, NULL, 0,
990         NULL, HFILL }},
991     { &hf_charging_ase_networkOperators,
992       { "networkOperators", "charging_ase.networkOperators",
993         FT_UINT32, BASE_DEC, NULL, 0,
994         "SEQUENCE_SIZE_1_maxNetworkOperators_OF_NetworkIdentification", HFILL }},
995     { &hf_charging_ase_networkOperators_item,
996       { "NetworkIdentification", "charging_ase.NetworkIdentification",
997         FT_OID, BASE_NONE, NULL, 0,
998         NULL, HFILL }},
999     { &hf_charging_ase_stopIndicators,
1000       { "stopIndicators", "charging_ase.stopIndicators",
1001         FT_BYTES, BASE_NONE, NULL, 0,
1002         NULL, HFILL }},
1003     { &hf_charging_ase_currentTariffCurrency,
1004       { "currentTariffCurrency", "charging_ase.currentTariffCurrency_element",
1005         FT_NONE, BASE_NONE, NULL, 0,
1006         "TariffCurrencyFormat", HFILL }},
1007     { &hf_charging_ase_tariffSwitchCurrency,
1008       { "tariffSwitchCurrency", "charging_ase.tariffSwitchCurrency_element",
1009         FT_NONE, BASE_NONE, NULL, 0,
1010         NULL, HFILL }},
1011     { &hf_charging_ase_nextTariffCurrency,
1012       { "nextTariffCurrency", "charging_ase.nextTariffCurrency_element",
1013         FT_NONE, BASE_NONE, NULL, 0,
1014         "TariffCurrencyFormat", HFILL }},
1015     { &hf_charging_ase_tariffSwitchoverTime,
1016       { "tariffSwitchoverTime", "charging_ase.tariffSwitchoverTime",
1017         FT_BYTES, BASE_NONE, NULL, 0,
1018         NULL, HFILL }},
1019     { &hf_charging_ase_communicationChargeSequenceCurrency,
1020       { "communicationChargeSequenceCurrency", "charging_ase.communicationChargeSequenceCurrency",
1021         FT_UINT32, BASE_DEC, NULL, 0,
1022         "SEQUENCE_SIZE_minCommunicationTariffNum_maxCommunicationTariffNum_OF_CommunicationChargeCurrency", HFILL }},
1023     { &hf_charging_ase_communicationChargeSequenceCurrency_item,
1024       { "CommunicationChargeCurrency", "charging_ase.CommunicationChargeCurrency_element",
1025         FT_NONE, BASE_NONE, NULL, 0,
1026         NULL, HFILL }},
1027     { &hf_charging_ase_tariffControlIndicators,
1028       { "tariffControlIndicators", "charging_ase.tariffControlIndicators",
1029         FT_BYTES, BASE_NONE, NULL, 0,
1030         NULL, HFILL }},
1031     { &hf_charging_ase_callAttemptChargeCurrency,
1032       { "callAttemptChargeCurrency", "charging_ase.callAttemptChargeCurrency_element",
1033         FT_NONE, BASE_NONE, NULL, 0,
1034         "CurrencyFactorScale", HFILL }},
1035     { &hf_charging_ase_callSetupChargeCurrency,
1036       { "callSetupChargeCurrency", "charging_ase.callSetupChargeCurrency_element",
1037         FT_NONE, BASE_NONE, NULL, 0,
1038         "CurrencyFactorScale", HFILL }},
1039     { &hf_charging_ase_currentTariffPulse,
1040       { "currentTariffPulse", "charging_ase.currentTariffPulse_element",
1041         FT_NONE, BASE_NONE, NULL, 0,
1042         "TariffPulseFormat", HFILL }},
1043     { &hf_charging_ase_tariffSwitchPulse,
1044       { "tariffSwitchPulse", "charging_ase.tariffSwitchPulse_element",
1045         FT_NONE, BASE_NONE, NULL, 0,
1046         NULL, HFILL }},
1047     { &hf_charging_ase_nextTariffPulse,
1048       { "nextTariffPulse", "charging_ase.nextTariffPulse_element",
1049         FT_NONE, BASE_NONE, NULL, 0,
1050         "TariffPulseFormat", HFILL }},
1051     { &hf_charging_ase_communicationChargeSequencePulse,
1052       { "communicationChargeSequencePulse", "charging_ase.communicationChargeSequencePulse",
1053         FT_UINT32, BASE_DEC, NULL, 0,
1054         "SEQUENCE_SIZE_minCommunicationTariffNum_maxCommunicationTariffNum_OF_CommunicationChargePulse", HFILL }},
1055     { &hf_charging_ase_communicationChargeSequencePulse_item,
1056       { "CommunicationChargePulse", "charging_ase.CommunicationChargePulse_element",
1057         FT_NONE, BASE_NONE, NULL, 0,
1058         NULL, HFILL }},
1059     { &hf_charging_ase_tariffControlIndicators_01,
1060       { "tariffControlIndicators", "charging_ase.tariffControlIndicators",
1061         FT_BYTES, BASE_NONE, NULL, 0,
1062         "T_tariffControlIndicators_01", HFILL }},
1063     { &hf_charging_ase_callAttemptChargePulse,
1064       { "callAttemptChargePulse", "charging_ase.callAttemptChargePulse",
1065         FT_BYTES, BASE_NONE, NULL, 0,
1066         "PulseUnits", HFILL }},
1067     { &hf_charging_ase_callSetupChargePulse,
1068       { "callSetupChargePulse", "charging_ase.callSetupChargePulse",
1069         FT_BYTES, BASE_NONE, NULL, 0,
1070         "PulseUnits", HFILL }},
1071     { &hf_charging_ase_networkIdentification,
1072       { "networkIdentification", "charging_ase.networkIdentification",
1073         FT_OID, BASE_NONE, NULL, 0,
1074         NULL, HFILL }},
1075     { &hf_charging_ase_referenceID,
1076       { "referenceID", "charging_ase.referenceID",
1077         FT_UINT32, BASE_DEC, NULL, 0,
1078         NULL, HFILL }},
1079     { &hf_charging_ase_T_acknowledgementIndicators_accepted,
1080       { "accepted", "charging_ase.accepted",
1081         FT_BOOLEAN, 8, NULL, 0x80,
1082         NULL, HFILL }},
1083     { &hf_charging_ase_ChargingControlIndicators_subscriberCharge,
1084       { "subscriberCharge", "charging_ase.subscriberCharge",
1085         FT_BOOLEAN, 8, NULL, 0x80,
1086         NULL, HFILL }},
1087     { &hf_charging_ase_ChargingControlIndicators_immediateChangeOfActuallyAppliedTariff,
1088       { "immediateChangeOfActuallyAppliedTariff", "charging_ase.immediateChangeOfActuallyAppliedTariff",
1089         FT_BOOLEAN, 8, NULL, 0x40,
1090         NULL, HFILL }},
1091     { &hf_charging_ase_ChargingControlIndicators_delayUntilStart,
1092       { "delayUntilStart", "charging_ase.delayUntilStart",
1093         FT_BOOLEAN, 8, NULL, 0x20,
1094         NULL, HFILL }},
1095     { &hf_charging_ase_T_stopIndicators_callAttemptChargesApplicable,
1096       { "callAttemptChargesApplicable", "charging_ase.callAttemptChargesApplicable",
1097         FT_BOOLEAN, 8, NULL, 0x80,
1098         NULL, HFILL }},
1099     { &hf_charging_ase_SubTariffControl_oneTimeCharge,
1100       { "oneTimeCharge", "charging_ase.oneTimeCharge",
1101         FT_BOOLEAN, 8, NULL, 0x80,
1102         NULL, HFILL }},
1103     { &hf_charging_ase_T_tariffControlIndicators_non_cyclicTariff,
1104       { "non-cyclicTariff", "charging_ase.non-cyclicTariff",
1105         FT_BOOLEAN, 8, NULL, 0x80,
1106         NULL, HFILL }},
1107     { &hf_charging_ase_T_tariffControlIndicators_01_non_cyclicTariff,
1108       { "non-cyclicTariff", "charging_ase.non-cyclicTariff",
1109         FT_BOOLEAN, 8, NULL, 0x80,
1110         NULL, HFILL }},
1111
1112 /*--- End of included file: packet-charging_ase-hfarr.c ---*/
1113 #line 73 "../../asn1/charging_ase/packet-charging_ase-template.c"
1114   };
1115
1116   /* List of subtrees */
1117     static gint *ett[] = {
1118     &ett_charging_ase,
1119
1120 /*--- Included file: packet-charging_ase-ettarr.c ---*/
1121 #line 1 "../../asn1/charging_ase/packet-charging_ase-ettarr.c"
1122     &ett_charging_ase_ChargingMessageType,
1123     &ett_charging_ase_ChargingAcknowledgementInformation,
1124     &ett_charging_ase_T_acknowledgementIndicators,
1125     &ett_charging_ase_SEQUENCE_SIZE_1_numOfExtensions_OF_ExtensionField,
1126     &ett_charging_ase_ChargingControlIndicators,
1127     &ett_charging_ase_AddOnChargingInformation,
1128     &ett_charging_ase_T_addOncharge,
1129     &ett_charging_ase_ChargingTariffInformation,
1130     &ett_charging_ase_T_chargingTariff,
1131     &ett_charging_ase_Code,
1132     &ett_charging_ase_CommunicationChargeCurrency,
1133     &ett_charging_ase_CommunicationChargePulse,
1134     &ett_charging_ase_CurrencyFactorScale,
1135     &ett_charging_ase_ExtensionField,
1136     &ett_charging_ase_StartCharging,
1137     &ett_charging_ase_SEQUENCE_SIZE_1_maxNetworkOperators_OF_NetworkIdentification,
1138     &ett_charging_ase_StopCharging,
1139     &ett_charging_ase_T_stopIndicators,
1140     &ett_charging_ase_SubTariffControl,
1141     &ett_charging_ase_TariffCurrency,
1142     &ett_charging_ase_TariffSwitchCurrency,
1143     &ett_charging_ase_TariffCurrencyFormat,
1144     &ett_charging_ase_SEQUENCE_SIZE_minCommunicationTariffNum_maxCommunicationTariffNum_OF_CommunicationChargeCurrency,
1145     &ett_charging_ase_T_tariffControlIndicators,
1146     &ett_charging_ase_TariffPulse,
1147     &ett_charging_ase_TariffSwitchPulse,
1148     &ett_charging_ase_TariffPulseFormat,
1149     &ett_charging_ase_SEQUENCE_SIZE_minCommunicationTariffNum_maxCommunicationTariffNum_OF_CommunicationChargePulse,
1150     &ett_charging_ase_T_tariffControlIndicators_01,
1151     &ett_charging_ase_ChargingReferenceIdentification,
1152
1153 /*--- End of included file: packet-charging_ase-ettarr.c ---*/
1154 #line 79 "../../asn1/charging_ase/packet-charging_ase-template.c"
1155         };
1156
1157   proto_charging_ase = proto_register_protocol(PNAME, PSNAME, PFNAME);
1158
1159   proto_register_field_array(proto_charging_ase, hf, array_length(hf));
1160   proto_register_subtree_array(ett, array_length(ett));
1161 }
1162
1163 /* The registration hand-off routine */
1164 void
1165 proto_reg_handoff_charging_ase(void)
1166 {
1167   charging_ase_handle = create_dissector_handle(dissect_charging_ase, proto_charging_ase);
1168 }
1169