wireshark/epan/dissectors/packet-charging_ase.c
Guy Harris e1d9a226a2 Fix the type of arrays of pointers to hf_ values for bitfield routines.
The static arrays are supposed to be arrays of const pointers to int,
not arrays of non-const pointers to const int.

Fixing that means some bugs (scribbling on what's *supposed* to be a
const array) will be caught (see packet-ieee80211-radiotap.c for
examples, the first of which inspired this change and the second of
which was discovered while testing compiles with this change), and
removes the need for some annoying casts.

Also make some of those arrays static while we're at it.

Update documentation and dissector-generator tools.

Change-Id: I789da5fc60aadc15797cefecfd9a9fbe9a130ccc
Reviewed-on: https://code.wireshark.org/review/37517
Petri-Dish: Guy Harris <gharris@sonic.net>
Tested-by: Petri Dish Buildbot
Reviewed-by: Anders Broman <a.broman58@gmail.com>
2020-06-19 11:32:26 +00:00

1170 lines
54 KiB
C

/* Do not modify this file. Changes will be overwritten. */
/* Generated automatically by the ASN.1 to Wireshark dissector compiler */
/* packet-charging_ase.c */
/* asn2wrs.py -b -p charging_ase -c ./charging_ase.cnf -s ./packet-charging_ase-template -D . -O ../.. Tariffing-Data-Types.asn */
/* Input file: packet-charging_ase-template.c */
#line 1 "./asn1/charging_ase/packet-charging_ase-template.c"
/* packet-charging_ase-template.c
* Copyright 2009 , Anders Broman <anders.broman [AT] ericsson.com>
*
* Wireshark - Network traffic analyzer
* By Gerald Combs <gerald@wireshark.org>
* Copyright 1998 Gerald Combs
*
* SPDX-License-Identifier: GPL-2.0-or-later
* References: ETSI ES 201 296 V1.3.1 (2003-04)
*/
#include "config.h"
#include <epan/packet.h>
#include <epan/expert.h>
#include <epan/asn1.h>
#include "packet-ber.h"
#include "packet-charging_ase.h"
#define PNAME "Charging ASE"
#define PSNAME "ChargingASE"
#define PFNAME "chargingase"
void proto_register_charging_ase(void);
void proto_reg_handoff_charging_ase(void);
/* Define the Charging ASE proto */
static int proto_charging_ase = -1;
/*--- Included file: packet-charging_ase-hf.c ---*/
#line 1 "./asn1/charging_ase/packet-charging_ase-hf.c"
static int hf_charging_ase_charging_ase_ChargingMessageType_PDU = -1; /* ChargingMessageType */
static int hf_charging_ase_crgt = -1; /* ChargingTariffInformation */
static int hf_charging_ase_aocrg = -1; /* AddOnChargingInformation */
static int hf_charging_ase_crga = -1; /* ChargingAcknowledgementInformation */
static int hf_charging_ase_start = -1; /* StartCharging */
static int hf_charging_ase_stop = -1; /* StopCharging */
static int hf_charging_ase_acknowledgementIndicators = -1; /* T_acknowledgementIndicators */
static int hf_charging_ase_extensions = -1; /* SEQUENCE_SIZE_1_numOfExtensions_OF_ExtensionField */
static int hf_charging_ase_extensions_item = -1; /* ExtensionField */
static int hf_charging_ase_originationIdentification = -1; /* ChargingReferenceIdentification */
static int hf_charging_ase_destinationIdentification = -1; /* ChargingReferenceIdentification */
static int hf_charging_ase_chargingControlIndicators = -1; /* ChargingControlIndicators */
static int hf_charging_ase_addOncharge = -1; /* T_addOncharge */
static int hf_charging_ase_addOnChargeCurrency = -1; /* CurrencyFactorScale */
static int hf_charging_ase_addOnChargePulse = -1; /* PulseUnits */
static int hf_charging_ase_currency = -1; /* Currency */
static int hf_charging_ase_chargingTariff = -1; /* T_chargingTariff */
static int hf_charging_ase_tariffCurrency = -1; /* TariffCurrency */
static int hf_charging_ase_tariffPulse = -1; /* TariffPulse */
static int hf_charging_ase_local = -1; /* INTEGER */
static int hf_charging_ase_global = -1; /* OBJECT_IDENTIFIER */
static int hf_charging_ase_currencyFactorScale = -1; /* CurrencyFactorScale */
static int hf_charging_ase_tariffDuration = -1; /* TariffDuration */
static int hf_charging_ase_subTariffControl = -1; /* SubTariffControl */
static int hf_charging_ase_pulseUnits = -1; /* PulseUnits */
static int hf_charging_ase_chargeUnitTimeInterval = -1; /* ChargeUnitTimeInterval */
static int hf_charging_ase_currencyFactor = -1; /* CurrencyFactor */
static int hf_charging_ase_currencyScale = -1; /* CurrencyScale */
static int hf_charging_ase_type = -1; /* Code */
static int hf_charging_ase_criticality = -1; /* CriticalityType */
static int hf_charging_ase_value = -1; /* T_value */
static int hf_charging_ase_networkOperators = -1; /* SEQUENCE_SIZE_1_maxNetworkOperators_OF_NetworkIdentification */
static int hf_charging_ase_networkOperators_item = -1; /* NetworkIdentification */
static int hf_charging_ase_stopIndicators = -1; /* T_stopIndicators */
static int hf_charging_ase_currentTariffCurrency = -1; /* TariffCurrencyFormat */
static int hf_charging_ase_tariffSwitchCurrency = -1; /* TariffSwitchCurrency */
static int hf_charging_ase_nextTariffCurrency = -1; /* TariffCurrencyFormat */
static int hf_charging_ase_tariffSwitchoverTime = -1; /* TariffSwitchoverTime */
static int hf_charging_ase_communicationChargeSequenceCurrency = -1; /* SEQUENCE_SIZE_minCommunicationTariffNum_maxCommunicationTariffNum_OF_CommunicationChargeCurrency */
static int hf_charging_ase_communicationChargeSequenceCurrency_item = -1; /* CommunicationChargeCurrency */
static int hf_charging_ase_tariffControlIndicators = -1; /* T_tariffControlIndicators */
static int hf_charging_ase_callAttemptChargeCurrency = -1; /* CurrencyFactorScale */
static int hf_charging_ase_callSetupChargeCurrency = -1; /* CurrencyFactorScale */
static int hf_charging_ase_currentTariffPulse = -1; /* TariffPulseFormat */
static int hf_charging_ase_tariffSwitchPulse = -1; /* TariffSwitchPulse */
static int hf_charging_ase_nextTariffPulse = -1; /* TariffPulseFormat */
static int hf_charging_ase_communicationChargeSequencePulse = -1; /* SEQUENCE_SIZE_minCommunicationTariffNum_maxCommunicationTariffNum_OF_CommunicationChargePulse */
static int hf_charging_ase_communicationChargeSequencePulse_item = -1; /* CommunicationChargePulse */
static int hf_charging_ase_tariffControlIndicators_01 = -1; /* T_tariffControlIndicators_01 */
static int hf_charging_ase_callAttemptChargePulse = -1; /* PulseUnits */
static int hf_charging_ase_callSetupChargePulse = -1; /* PulseUnits */
static int hf_charging_ase_networkIdentification = -1; /* NetworkIdentification */
static int hf_charging_ase_referenceID = -1; /* ReferenceID */
/* named bits */
static int hf_charging_ase_T_acknowledgementIndicators_accepted = -1;
static int hf_charging_ase_ChargingControlIndicators_subscriberCharge = -1;
static int hf_charging_ase_ChargingControlIndicators_immediateChangeOfActuallyAppliedTariff = -1;
static int hf_charging_ase_ChargingControlIndicators_delayUntilStart = -1;
static int hf_charging_ase_T_stopIndicators_callAttemptChargesApplicable = -1;
static int hf_charging_ase_SubTariffControl_oneTimeCharge = -1;
static int hf_charging_ase_T_tariffControlIndicators_non_cyclicTariff = -1;
static int hf_charging_ase_T_tariffControlIndicators_01_non_cyclicTariff = -1;
/*--- End of included file: packet-charging_ase-hf.c ---*/
#line 32 "./asn1/charging_ase/packet-charging_ase-template.c"
static int ett_charging_ase = -1;
/*--- Included file: packet-charging_ase-ett.c ---*/
#line 1 "./asn1/charging_ase/packet-charging_ase-ett.c"
static gint ett_charging_ase_ChargingMessageType = -1;
static gint ett_charging_ase_ChargingAcknowledgementInformation = -1;
static gint ett_charging_ase_T_acknowledgementIndicators = -1;
static gint ett_charging_ase_SEQUENCE_SIZE_1_numOfExtensions_OF_ExtensionField = -1;
static gint ett_charging_ase_ChargingControlIndicators = -1;
static gint ett_charging_ase_AddOnChargingInformation = -1;
static gint ett_charging_ase_T_addOncharge = -1;
static gint ett_charging_ase_ChargingTariffInformation = -1;
static gint ett_charging_ase_T_chargingTariff = -1;
static gint ett_charging_ase_Code = -1;
static gint ett_charging_ase_CommunicationChargeCurrency = -1;
static gint ett_charging_ase_CommunicationChargePulse = -1;
static gint ett_charging_ase_CurrencyFactorScale = -1;
static gint ett_charging_ase_ExtensionField = -1;
static gint ett_charging_ase_StartCharging = -1;
static gint ett_charging_ase_SEQUENCE_SIZE_1_maxNetworkOperators_OF_NetworkIdentification = -1;
static gint ett_charging_ase_StopCharging = -1;
static gint ett_charging_ase_T_stopIndicators = -1;
static gint ett_charging_ase_SubTariffControl = -1;
static gint ett_charging_ase_TariffCurrency = -1;
static gint ett_charging_ase_TariffSwitchCurrency = -1;
static gint ett_charging_ase_TariffCurrencyFormat = -1;
static gint ett_charging_ase_SEQUENCE_SIZE_minCommunicationTariffNum_maxCommunicationTariffNum_OF_CommunicationChargeCurrency = -1;
static gint ett_charging_ase_T_tariffControlIndicators = -1;
static gint ett_charging_ase_TariffPulse = -1;
static gint ett_charging_ase_TariffSwitchPulse = -1;
static gint ett_charging_ase_TariffPulseFormat = -1;
static gint ett_charging_ase_SEQUENCE_SIZE_minCommunicationTariffNum_maxCommunicationTariffNum_OF_CommunicationChargePulse = -1;
static gint ett_charging_ase_T_tariffControlIndicators_01 = -1;
static gint ett_charging_ase_ChargingReferenceIdentification = -1;
/*--- End of included file: packet-charging_ase-ett.c ---*/
#line 35 "./asn1/charging_ase/packet-charging_ase-template.c"
static expert_field ei_charging_ase_extensions_not_dissected = EI_INIT;
static dissector_handle_t charging_ase_handle;
/*--- Included file: packet-charging_ase-fn.c ---*/
#line 1 "./asn1/charging_ase/packet-charging_ase-fn.c"
static int * const ChargingControlIndicators_bits[] = {
&hf_charging_ase_ChargingControlIndicators_subscriberCharge,
&hf_charging_ase_ChargingControlIndicators_immediateChangeOfActuallyAppliedTariff,
&hf_charging_ase_ChargingControlIndicators_delayUntilStart,
NULL
};
static int
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_) {
offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
ChargingControlIndicators_bits, 3, hf_index, ett_charging_ase_ChargingControlIndicators,
NULL);
return offset;
}
static int
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_) {
offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
NULL);
return offset;
}
static int
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_) {
offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
NULL);
return offset;
}
static const ber_sequence_t CurrencyFactorScale_sequence[] = {
{ &hf_charging_ase_currencyFactor, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_charging_ase_CurrencyFactor },
{ &hf_charging_ase_currencyScale, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_charging_ase_CurrencyScale },
{ NULL, 0, 0, 0, NULL }
};
static int
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_) {
offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
CurrencyFactorScale_sequence, hf_index, ett_charging_ase_CurrencyFactorScale);
return offset;
}
static int
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_) {
offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
NULL);
return offset;
}
static int * const SubTariffControl_bits[] = {
&hf_charging_ase_SubTariffControl_oneTimeCharge,
NULL
};
static int
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_) {
offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
SubTariffControl_bits, 1, hf_index, ett_charging_ase_SubTariffControl,
NULL);
return offset;
}
static const ber_sequence_t CommunicationChargeCurrency_sequence[] = {
{ &hf_charging_ase_currencyFactorScale, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_charging_ase_CurrencyFactorScale },
{ &hf_charging_ase_tariffDuration, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_charging_ase_TariffDuration },
{ &hf_charging_ase_subTariffControl, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_charging_ase_SubTariffControl },
{ NULL, 0, 0, 0, NULL }
};
static int
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_) {
offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
CommunicationChargeCurrency_sequence, hf_index, ett_charging_ase_CommunicationChargeCurrency);
return offset;
}
static const ber_sequence_t SEQUENCE_SIZE_minCommunicationTariffNum_maxCommunicationTariffNum_OF_CommunicationChargeCurrency_sequence_of[1] = {
{ &hf_charging_ase_communicationChargeSequenceCurrency_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_charging_ase_CommunicationChargeCurrency },
};
static int
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_) {
offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
SEQUENCE_SIZE_minCommunicationTariffNum_maxCommunicationTariffNum_OF_CommunicationChargeCurrency_sequence_of, hf_index, ett_charging_ase_SEQUENCE_SIZE_minCommunicationTariffNum_maxCommunicationTariffNum_OF_CommunicationChargeCurrency);
return offset;
}
static int * const T_tariffControlIndicators_bits[] = {
&hf_charging_ase_T_tariffControlIndicators_non_cyclicTariff,
NULL
};
static int
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_) {
offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
T_tariffControlIndicators_bits, 1, hf_index, ett_charging_ase_T_tariffControlIndicators,
NULL);
return offset;
}
static const ber_sequence_t TariffCurrencyFormat_sequence[] = {
{ &hf_charging_ase_communicationChargeSequenceCurrency, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_charging_ase_SEQUENCE_SIZE_minCommunicationTariffNum_maxCommunicationTariffNum_OF_CommunicationChargeCurrency },
{ &hf_charging_ase_tariffControlIndicators, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_charging_ase_T_tariffControlIndicators },
{ &hf_charging_ase_callAttemptChargeCurrency, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_charging_ase_CurrencyFactorScale },
{ &hf_charging_ase_callSetupChargeCurrency, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_charging_ase_CurrencyFactorScale },
{ NULL, 0, 0, 0, NULL }
};
static int
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_) {
offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
TariffCurrencyFormat_sequence, hf_index, ett_charging_ase_TariffCurrencyFormat);
return offset;
}
static int
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_) {
offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
NULL);
return offset;
}
static const ber_sequence_t TariffSwitchCurrency_sequence[] = {
{ &hf_charging_ase_nextTariffCurrency, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_charging_ase_TariffCurrencyFormat },
{ &hf_charging_ase_tariffSwitchoverTime, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_charging_ase_TariffSwitchoverTime },
{ NULL, 0, 0, 0, NULL }
};
static int
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_) {
offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
TariffSwitchCurrency_sequence, hf_index, ett_charging_ase_TariffSwitchCurrency);
return offset;
}
static const ber_sequence_t TariffCurrency_sequence[] = {
{ &hf_charging_ase_currentTariffCurrency, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_charging_ase_TariffCurrencyFormat },
{ &hf_charging_ase_tariffSwitchCurrency, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_charging_ase_TariffSwitchCurrency },
{ NULL, 0, 0, 0, NULL }
};
static int
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_) {
offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
TariffCurrency_sequence, hf_index, ett_charging_ase_TariffCurrency);
return offset;
}
static int
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_) {
offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
NULL);
return offset;
}
static int
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_) {
offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
NULL);
return offset;
}
static const ber_sequence_t CommunicationChargePulse_sequence[] = {
{ &hf_charging_ase_pulseUnits, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_charging_ase_PulseUnits },
{ &hf_charging_ase_chargeUnitTimeInterval, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_charging_ase_ChargeUnitTimeInterval },
{ &hf_charging_ase_tariffDuration, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_charging_ase_TariffDuration },
{ NULL, 0, 0, 0, NULL }
};
static int
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_) {
offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
CommunicationChargePulse_sequence, hf_index, ett_charging_ase_CommunicationChargePulse);
return offset;
}
static const ber_sequence_t SEQUENCE_SIZE_minCommunicationTariffNum_maxCommunicationTariffNum_OF_CommunicationChargePulse_sequence_of[1] = {
{ &hf_charging_ase_communicationChargeSequencePulse_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_charging_ase_CommunicationChargePulse },
};
static int
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_) {
offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
SEQUENCE_SIZE_minCommunicationTariffNum_maxCommunicationTariffNum_OF_CommunicationChargePulse_sequence_of, hf_index, ett_charging_ase_SEQUENCE_SIZE_minCommunicationTariffNum_maxCommunicationTariffNum_OF_CommunicationChargePulse);
return offset;
}
static int * const T_tariffControlIndicators_01_bits[] = {
&hf_charging_ase_T_tariffControlIndicators_01_non_cyclicTariff,
NULL
};
static int
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_) {
offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
T_tariffControlIndicators_01_bits, 1, hf_index, ett_charging_ase_T_tariffControlIndicators_01,
NULL);
return offset;
}
static const ber_sequence_t TariffPulseFormat_sequence[] = {
{ &hf_charging_ase_communicationChargeSequencePulse, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_charging_ase_SEQUENCE_SIZE_minCommunicationTariffNum_maxCommunicationTariffNum_OF_CommunicationChargePulse },
{ &hf_charging_ase_tariffControlIndicators_01, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_charging_ase_T_tariffControlIndicators_01 },
{ &hf_charging_ase_callAttemptChargePulse, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_charging_ase_PulseUnits },
{ &hf_charging_ase_callSetupChargePulse, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_charging_ase_PulseUnits },
{ NULL, 0, 0, 0, NULL }
};
static int
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_) {
offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
TariffPulseFormat_sequence, hf_index, ett_charging_ase_TariffPulseFormat);
return offset;
}
static const ber_sequence_t TariffSwitchPulse_sequence[] = {
{ &hf_charging_ase_nextTariffPulse, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_charging_ase_TariffPulseFormat },
{ &hf_charging_ase_tariffSwitchoverTime, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_charging_ase_TariffSwitchoverTime },
{ NULL, 0, 0, 0, NULL }
};
static int
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_) {
offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
TariffSwitchPulse_sequence, hf_index, ett_charging_ase_TariffSwitchPulse);
return offset;
}
static const ber_sequence_t TariffPulse_sequence[] = {
{ &hf_charging_ase_currentTariffPulse, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_charging_ase_TariffPulseFormat },
{ &hf_charging_ase_tariffSwitchPulse, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_charging_ase_TariffSwitchPulse },
{ NULL, 0, 0, 0, NULL }
};
static int
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_) {
offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
TariffPulse_sequence, hf_index, ett_charging_ase_TariffPulse);
return offset;
}
static const value_string charging_ase_T_chargingTariff_vals[] = {
{ 0, "tariffCurrency" },
{ 1, "tariffPulse" },
{ 0, NULL }
};
static const ber_choice_t T_chargingTariff_choice[] = {
{ 0, &hf_charging_ase_tariffCurrency, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_charging_ase_TariffCurrency },
{ 1, &hf_charging_ase_tariffPulse, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_charging_ase_TariffPulse },
{ 0, NULL, 0, 0, 0, NULL }
};
static int
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_) {
offset = dissect_ber_choice(actx, tree, tvb, offset,
T_chargingTariff_choice, hf_index, ett_charging_ase_T_chargingTariff,
NULL);
return offset;
}
static int
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_) {
offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
NULL);
return offset;
}
static int
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_) {
offset = dissect_ber_object_identifier(implicit_tag, actx, tree, tvb, offset, hf_index, NULL);
return offset;
}
static const value_string charging_ase_Code_vals[] = {
{ 0, "local" },
{ 1, "global" },
{ 0, NULL }
};
static const ber_choice_t Code_choice[] = {
{ 0, &hf_charging_ase_local , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_charging_ase_INTEGER },
{ 1, &hf_charging_ase_global , BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_charging_ase_OBJECT_IDENTIFIER },
{ 0, NULL, 0, 0, 0, NULL }
};
static int
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_) {
offset = dissect_ber_choice(actx, tree, tvb, offset,
Code_choice, hf_index, ett_charging_ase_Code,
NULL);
return offset;
}
static const value_string charging_ase_CriticalityType_vals[] = {
{ 0, "ignore" },
{ 1, "abort" },
{ 0, NULL }
};
static int
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_) {
offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
NULL);
return offset;
}
static int
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_) {
#line 13 "./asn1/charging_ase/charging_ase.cnf"
proto_tree_add_expert(tree, actx->pinfo, &ei_charging_ase_extensions_not_dissected, tvb, offset, -1);
return tvb_reported_length(tvb);
return offset;
}
static const ber_sequence_t ExtensionField_sequence[] = {
{ &hf_charging_ase_type , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_charging_ase_Code },
{ &hf_charging_ase_criticality, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_charging_ase_CriticalityType },
{ &hf_charging_ase_value , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_charging_ase_T_value },
{ NULL, 0, 0, 0, NULL }
};
static int
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_) {
offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
ExtensionField_sequence, hf_index, ett_charging_ase_ExtensionField);
return offset;
}
static const ber_sequence_t SEQUENCE_SIZE_1_numOfExtensions_OF_ExtensionField_sequence_of[1] = {
{ &hf_charging_ase_extensions_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_charging_ase_ExtensionField },
};
static int
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_) {
offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
SEQUENCE_SIZE_1_numOfExtensions_OF_ExtensionField_sequence_of, hf_index, ett_charging_ase_SEQUENCE_SIZE_1_numOfExtensions_OF_ExtensionField);
return offset;
}
static int
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_) {
offset = dissect_ber_object_identifier(implicit_tag, actx, tree, tvb, offset, hf_index, NULL);
return offset;
}
static int
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_) {
offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
NULL);
return offset;
}
static const ber_sequence_t ChargingReferenceIdentification_sequence[] = {
{ &hf_charging_ase_networkIdentification, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_charging_ase_NetworkIdentification },
{ &hf_charging_ase_referenceID, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_charging_ase_ReferenceID },
{ NULL, 0, 0, 0, NULL }
};
static int
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_) {
offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
ChargingReferenceIdentification_sequence, hf_index, ett_charging_ase_ChargingReferenceIdentification);
return offset;
}
static const value_string charging_ase_Currency_vals[] = {
{ 0, "noIndication" },
{ 1, "australianDollar" },
{ 2, "austrianSchilling" },
{ 3, "belgianFranc" },
{ 4, "britishPound" },
{ 5, "czechKoruna" },
{ 6, "danishKrone" },
{ 7, "dutchGuilder" },
{ 8, "euro" },
{ 9, "finnishMarkka" },
{ 10, "frenchFranc" },
{ 11, "germanMark" },
{ 12, "greekDrachma" },
{ 13, "hungarianForint" },
{ 14, "irishPunt" },
{ 15, "italianLira" },
{ 16, "japaneseYen" },
{ 17, "luxembourgian-Franc" },
{ 18, "norwegianKrone" },
{ 19, "polishZloty" },
{ 20, "portugeseEscudo" },
{ 21, "russianRouble" },
{ 22, "slovakKoruna" },
{ 23, "spanishPeseta" },
{ 24, "swedishKrone" },
{ 25, "swissFranc" },
{ 26, "turkishLira" },
{ 27, "uSDollar" },
{ 0, NULL }
};
static int
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_) {
offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
NULL);
return offset;
}
static const ber_sequence_t ChargingTariffInformation_sequence[] = {
{ &hf_charging_ase_chargingControlIndicators, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_charging_ase_ChargingControlIndicators },
{ &hf_charging_ase_chargingTariff, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_charging_ase_T_chargingTariff },
{ &hf_charging_ase_extensions, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_charging_ase_SEQUENCE_SIZE_1_numOfExtensions_OF_ExtensionField },
{ &hf_charging_ase_originationIdentification, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_charging_ase_ChargingReferenceIdentification },
{ &hf_charging_ase_destinationIdentification, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_charging_ase_ChargingReferenceIdentification },
{ &hf_charging_ase_currency, BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_charging_ase_Currency },
{ NULL, 0, 0, 0, NULL }
};
static int
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_) {
offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
ChargingTariffInformation_sequence, hf_index, ett_charging_ase_ChargingTariffInformation);
return offset;
}
static const value_string charging_ase_T_addOncharge_vals[] = {
{ 0, "addOnChargeCurrency" },
{ 1, "addOnChargePulse" },
{ 0, NULL }
};
static const ber_choice_t T_addOncharge_choice[] = {
{ 0, &hf_charging_ase_addOnChargeCurrency, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_charging_ase_CurrencyFactorScale },
{ 1, &hf_charging_ase_addOnChargePulse, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_charging_ase_PulseUnits },
{ 0, NULL, 0, 0, 0, NULL }
};
static int
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_) {
offset = dissect_ber_choice(actx, tree, tvb, offset,
T_addOncharge_choice, hf_index, ett_charging_ase_T_addOncharge,
NULL);
return offset;
}
static const ber_sequence_t AddOnChargingInformation_sequence[] = {
{ &hf_charging_ase_chargingControlIndicators, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_charging_ase_ChargingControlIndicators },
{ &hf_charging_ase_addOncharge, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_charging_ase_T_addOncharge },
{ &hf_charging_ase_extensions, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_charging_ase_SEQUENCE_SIZE_1_numOfExtensions_OF_ExtensionField },
{ &hf_charging_ase_originationIdentification, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_charging_ase_ChargingReferenceIdentification },
{ &hf_charging_ase_destinationIdentification, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_charging_ase_ChargingReferenceIdentification },
{ &hf_charging_ase_currency, BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_charging_ase_Currency },
{ NULL, 0, 0, 0, NULL }
};
static int
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_) {
offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
AddOnChargingInformation_sequence, hf_index, ett_charging_ase_AddOnChargingInformation);
return offset;
}
static int * const T_acknowledgementIndicators_bits[] = {
&hf_charging_ase_T_acknowledgementIndicators_accepted,
NULL
};
static int
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_) {
offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
T_acknowledgementIndicators_bits, 1, hf_index, ett_charging_ase_T_acknowledgementIndicators,
NULL);
return offset;
}
static const ber_sequence_t ChargingAcknowledgementInformation_sequence[] = {
{ &hf_charging_ase_acknowledgementIndicators, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_charging_ase_T_acknowledgementIndicators },
{ &hf_charging_ase_extensions, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_charging_ase_SEQUENCE_SIZE_1_numOfExtensions_OF_ExtensionField },
{ &hf_charging_ase_originationIdentification, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_charging_ase_ChargingReferenceIdentification },
{ &hf_charging_ase_destinationIdentification, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_charging_ase_ChargingReferenceIdentification },
{ NULL, 0, 0, 0, NULL }
};
static int
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_) {
offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
ChargingAcknowledgementInformation_sequence, hf_index, ett_charging_ase_ChargingAcknowledgementInformation);
return offset;
}
static const ber_sequence_t SEQUENCE_SIZE_1_maxNetworkOperators_OF_NetworkIdentification_sequence_of[1] = {
{ &hf_charging_ase_networkOperators_item, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_charging_ase_NetworkIdentification },
};
static int
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_) {
offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
SEQUENCE_SIZE_1_maxNetworkOperators_OF_NetworkIdentification_sequence_of, hf_index, ett_charging_ase_SEQUENCE_SIZE_1_maxNetworkOperators_OF_NetworkIdentification);
return offset;
}
static const ber_sequence_t StartCharging_sequence[] = {
{ &hf_charging_ase_networkOperators, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_charging_ase_SEQUENCE_SIZE_1_maxNetworkOperators_OF_NetworkIdentification },
{ &hf_charging_ase_extensions, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_charging_ase_SEQUENCE_SIZE_1_numOfExtensions_OF_ExtensionField },
{ &hf_charging_ase_originationIdentification, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_charging_ase_ChargingReferenceIdentification },
{ NULL, 0, 0, 0, NULL }
};
static int
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_) {
offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
StartCharging_sequence, hf_index, ett_charging_ase_StartCharging);
return offset;
}
static int * const T_stopIndicators_bits[] = {
&hf_charging_ase_T_stopIndicators_callAttemptChargesApplicable,
NULL
};
static int
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_) {
offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
T_stopIndicators_bits, 1, hf_index, ett_charging_ase_T_stopIndicators,
NULL);
return offset;
}
static const ber_sequence_t StopCharging_sequence[] = {
{ &hf_charging_ase_stopIndicators, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_charging_ase_T_stopIndicators },
{ &hf_charging_ase_networkOperators, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_charging_ase_SEQUENCE_SIZE_1_maxNetworkOperators_OF_NetworkIdentification },
{ &hf_charging_ase_extensions, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_charging_ase_SEQUENCE_SIZE_1_numOfExtensions_OF_ExtensionField },
{ &hf_charging_ase_originationIdentification, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_charging_ase_ChargingReferenceIdentification },
{ NULL, 0, 0, 0, NULL }
};
static int
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_) {
offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
StopCharging_sequence, hf_index, ett_charging_ase_StopCharging);
return offset;
}
const value_string charging_ase_ChargingMessageType_vals[] = {
{ 0, "crgt" },
{ 1, "aocrg" },
{ 2, "crga" },
{ 3, "start" },
{ 4, "stop" },
{ 0, NULL }
};
static const ber_choice_t ChargingMessageType_choice[] = {
{ 0, &hf_charging_ase_crgt , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_charging_ase_ChargingTariffInformation },
{ 1, &hf_charging_ase_aocrg , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_charging_ase_AddOnChargingInformation },
{ 2, &hf_charging_ase_crga , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_charging_ase_ChargingAcknowledgementInformation },
{ 3, &hf_charging_ase_start , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_charging_ase_StartCharging },
{ 4, &hf_charging_ase_stop , BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_charging_ase_StopCharging },
{ 0, NULL, 0, 0, 0, NULL }
};
int
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_) {
offset = dissect_ber_choice(actx, tree, tvb, offset,
ChargingMessageType_choice, hf_index, ett_charging_ase_ChargingMessageType,
NULL);
return offset;
}
/*--- PDUs ---*/
int dissect_charging_ase_ChargingMessageType_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
int offset = 0;
asn1_ctx_t asn1_ctx;
asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
offset = dissect_charging_ase_ChargingMessageType(FALSE, tvb, offset, &asn1_ctx, tree, hf_charging_ase_charging_ase_ChargingMessageType_PDU);
return offset;
}
/*--- End of included file: packet-charging_ase-fn.c ---*/
#line 41 "./asn1/charging_ase/packet-charging_ase-template.c"
static int
dissect_charging_ase(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_)
{
proto_item *it;
proto_tree *tr;
it=proto_tree_add_protocol_format(tree, proto_charging_ase, tvb, 0, -1, "Charging ASE");
tr=proto_item_add_subtree(it, ett_charging_ase);
if(tvb_reported_length(tvb)>0)
{
dissect_charging_ase_ChargingMessageType_PDU(tvb , pinfo, tr, NULL);
}
return tvb_captured_length(tvb);
}
/* Register all the bits needed with the filtering engine */
void
proto_register_charging_ase(void)
{
/* List of fields */
static hf_register_info hf[] = {
/*--- Included file: packet-charging_ase-hfarr.c ---*/
#line 1 "./asn1/charging_ase/packet-charging_ase-hfarr.c"
{ &hf_charging_ase_charging_ase_ChargingMessageType_PDU,
{ "ChargingMessageType", "charging_ase.ChargingMessageType",
FT_UINT32, BASE_DEC, VALS(charging_ase_ChargingMessageType_vals), 0,
NULL, HFILL }},
{ &hf_charging_ase_crgt,
{ "crgt", "charging_ase.crgt_element",
FT_NONE, BASE_NONE, NULL, 0,
"ChargingTariffInformation", HFILL }},
{ &hf_charging_ase_aocrg,
{ "aocrg", "charging_ase.aocrg_element",
FT_NONE, BASE_NONE, NULL, 0,
"AddOnChargingInformation", HFILL }},
{ &hf_charging_ase_crga,
{ "crga", "charging_ase.crga_element",
FT_NONE, BASE_NONE, NULL, 0,
"ChargingAcknowledgementInformation", HFILL }},
{ &hf_charging_ase_start,
{ "start", "charging_ase.start_element",
FT_NONE, BASE_NONE, NULL, 0,
"StartCharging", HFILL }},
{ &hf_charging_ase_stop,
{ "stop", "charging_ase.stop_element",
FT_NONE, BASE_NONE, NULL, 0,
"StopCharging", HFILL }},
{ &hf_charging_ase_acknowledgementIndicators,
{ "acknowledgementIndicators", "charging_ase.acknowledgementIndicators",
FT_BYTES, BASE_NONE, NULL, 0,
NULL, HFILL }},
{ &hf_charging_ase_extensions,
{ "extensions", "charging_ase.extensions",
FT_UINT32, BASE_DEC, NULL, 0,
"SEQUENCE_SIZE_1_numOfExtensions_OF_ExtensionField", HFILL }},
{ &hf_charging_ase_extensions_item,
{ "ExtensionField", "charging_ase.ExtensionField_element",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
{ &hf_charging_ase_originationIdentification,
{ "originationIdentification", "charging_ase.originationIdentification_element",
FT_NONE, BASE_NONE, NULL, 0,
"ChargingReferenceIdentification", HFILL }},
{ &hf_charging_ase_destinationIdentification,
{ "destinationIdentification", "charging_ase.destinationIdentification_element",
FT_NONE, BASE_NONE, NULL, 0,
"ChargingReferenceIdentification", HFILL }},
{ &hf_charging_ase_chargingControlIndicators,
{ "chargingControlIndicators", "charging_ase.chargingControlIndicators",
FT_BYTES, BASE_NONE, NULL, 0,
NULL, HFILL }},
{ &hf_charging_ase_addOncharge,
{ "addOncharge", "charging_ase.addOncharge",
FT_UINT32, BASE_DEC, VALS(charging_ase_T_addOncharge_vals), 0,
NULL, HFILL }},
{ &hf_charging_ase_addOnChargeCurrency,
{ "addOnChargeCurrency", "charging_ase.addOnChargeCurrency_element",
FT_NONE, BASE_NONE, NULL, 0,
"CurrencyFactorScale", HFILL }},
{ &hf_charging_ase_addOnChargePulse,
{ "addOnChargePulse", "charging_ase.addOnChargePulse",
FT_BYTES, BASE_NONE, NULL, 0,
"PulseUnits", HFILL }},
{ &hf_charging_ase_currency,
{ "currency", "charging_ase.currency",
FT_UINT32, BASE_DEC, VALS(charging_ase_Currency_vals), 0,
NULL, HFILL }},
{ &hf_charging_ase_chargingTariff,
{ "chargingTariff", "charging_ase.chargingTariff",
FT_UINT32, BASE_DEC, VALS(charging_ase_T_chargingTariff_vals), 0,
NULL, HFILL }},
{ &hf_charging_ase_tariffCurrency,
{ "tariffCurrency", "charging_ase.tariffCurrency_element",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
{ &hf_charging_ase_tariffPulse,
{ "tariffPulse", "charging_ase.tariffPulse_element",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
{ &hf_charging_ase_local,
{ "local", "charging_ase.local",
FT_INT32, BASE_DEC, NULL, 0,
"INTEGER", HFILL }},
{ &hf_charging_ase_global,
{ "global", "charging_ase.global",
FT_OID, BASE_NONE, NULL, 0,
"OBJECT_IDENTIFIER", HFILL }},
{ &hf_charging_ase_currencyFactorScale,
{ "currencyFactorScale", "charging_ase.currencyFactorScale_element",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
{ &hf_charging_ase_tariffDuration,
{ "tariffDuration", "charging_ase.tariffDuration",
FT_UINT32, BASE_DEC, NULL, 0,
NULL, HFILL }},
{ &hf_charging_ase_subTariffControl,
{ "subTariffControl", "charging_ase.subTariffControl",
FT_BYTES, BASE_NONE, NULL, 0,
NULL, HFILL }},
{ &hf_charging_ase_pulseUnits,
{ "pulseUnits", "charging_ase.pulseUnits",
FT_BYTES, BASE_NONE, NULL, 0,
NULL, HFILL }},
{ &hf_charging_ase_chargeUnitTimeInterval,
{ "chargeUnitTimeInterval", "charging_ase.chargeUnitTimeInterval",
FT_BYTES, BASE_NONE, NULL, 0,
NULL, HFILL }},
{ &hf_charging_ase_currencyFactor,
{ "currencyFactor", "charging_ase.currencyFactor",
FT_UINT32, BASE_DEC, NULL, 0,
NULL, HFILL }},
{ &hf_charging_ase_currencyScale,
{ "currencyScale", "charging_ase.currencyScale",
FT_INT32, BASE_DEC, NULL, 0,
NULL, HFILL }},
{ &hf_charging_ase_type,
{ "type", "charging_ase.type",
FT_UINT32, BASE_DEC, VALS(charging_ase_Code_vals), 0,
"Code", HFILL }},
{ &hf_charging_ase_criticality,
{ "criticality", "charging_ase.criticality",
FT_UINT32, BASE_DEC, VALS(charging_ase_CriticalityType_vals), 0,
"CriticalityType", HFILL }},
{ &hf_charging_ase_value,
{ "value", "charging_ase.value_element",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
{ &hf_charging_ase_networkOperators,
{ "networkOperators", "charging_ase.networkOperators",
FT_UINT32, BASE_DEC, NULL, 0,
"SEQUENCE_SIZE_1_maxNetworkOperators_OF_NetworkIdentification", HFILL }},
{ &hf_charging_ase_networkOperators_item,
{ "NetworkIdentification", "charging_ase.NetworkIdentification",
FT_OID, BASE_NONE, NULL, 0,
NULL, HFILL }},
{ &hf_charging_ase_stopIndicators,
{ "stopIndicators", "charging_ase.stopIndicators",
FT_BYTES, BASE_NONE, NULL, 0,
NULL, HFILL }},
{ &hf_charging_ase_currentTariffCurrency,
{ "currentTariffCurrency", "charging_ase.currentTariffCurrency_element",
FT_NONE, BASE_NONE, NULL, 0,
"TariffCurrencyFormat", HFILL }},
{ &hf_charging_ase_tariffSwitchCurrency,
{ "tariffSwitchCurrency", "charging_ase.tariffSwitchCurrency_element",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
{ &hf_charging_ase_nextTariffCurrency,
{ "nextTariffCurrency", "charging_ase.nextTariffCurrency_element",
FT_NONE, BASE_NONE, NULL, 0,
"TariffCurrencyFormat", HFILL }},
{ &hf_charging_ase_tariffSwitchoverTime,
{ "tariffSwitchoverTime", "charging_ase.tariffSwitchoverTime",
FT_BYTES, BASE_NONE, NULL, 0,
NULL, HFILL }},
{ &hf_charging_ase_communicationChargeSequenceCurrency,
{ "communicationChargeSequenceCurrency", "charging_ase.communicationChargeSequenceCurrency",
FT_UINT32, BASE_DEC, NULL, 0,
"SEQUENCE_SIZE_minCommunicationTariffNum_maxCommunicationTariffNum_OF_CommunicationChargeCurrency", HFILL }},
{ &hf_charging_ase_communicationChargeSequenceCurrency_item,
{ "CommunicationChargeCurrency", "charging_ase.CommunicationChargeCurrency_element",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
{ &hf_charging_ase_tariffControlIndicators,
{ "tariffControlIndicators", "charging_ase.tariffControlIndicators",
FT_BYTES, BASE_NONE, NULL, 0,
NULL, HFILL }},
{ &hf_charging_ase_callAttemptChargeCurrency,
{ "callAttemptChargeCurrency", "charging_ase.callAttemptChargeCurrency_element",
FT_NONE, BASE_NONE, NULL, 0,
"CurrencyFactorScale", HFILL }},
{ &hf_charging_ase_callSetupChargeCurrency,
{ "callSetupChargeCurrency", "charging_ase.callSetupChargeCurrency_element",
FT_NONE, BASE_NONE, NULL, 0,
"CurrencyFactorScale", HFILL }},
{ &hf_charging_ase_currentTariffPulse,
{ "currentTariffPulse", "charging_ase.currentTariffPulse_element",
FT_NONE, BASE_NONE, NULL, 0,
"TariffPulseFormat", HFILL }},
{ &hf_charging_ase_tariffSwitchPulse,
{ "tariffSwitchPulse", "charging_ase.tariffSwitchPulse_element",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
{ &hf_charging_ase_nextTariffPulse,
{ "nextTariffPulse", "charging_ase.nextTariffPulse_element",
FT_NONE, BASE_NONE, NULL, 0,
"TariffPulseFormat", HFILL }},
{ &hf_charging_ase_communicationChargeSequencePulse,
{ "communicationChargeSequencePulse", "charging_ase.communicationChargeSequencePulse",
FT_UINT32, BASE_DEC, NULL, 0,
"SEQUENCE_SIZE_minCommunicationTariffNum_maxCommunicationTariffNum_OF_CommunicationChargePulse", HFILL }},
{ &hf_charging_ase_communicationChargeSequencePulse_item,
{ "CommunicationChargePulse", "charging_ase.CommunicationChargePulse_element",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
{ &hf_charging_ase_tariffControlIndicators_01,
{ "tariffControlIndicators", "charging_ase.tariffControlIndicators",
FT_BYTES, BASE_NONE, NULL, 0,
"T_tariffControlIndicators_01", HFILL }},
{ &hf_charging_ase_callAttemptChargePulse,
{ "callAttemptChargePulse", "charging_ase.callAttemptChargePulse",
FT_BYTES, BASE_NONE, NULL, 0,
"PulseUnits", HFILL }},
{ &hf_charging_ase_callSetupChargePulse,
{ "callSetupChargePulse", "charging_ase.callSetupChargePulse",
FT_BYTES, BASE_NONE, NULL, 0,
"PulseUnits", HFILL }},
{ &hf_charging_ase_networkIdentification,
{ "networkIdentification", "charging_ase.networkIdentification",
FT_OID, BASE_NONE, NULL, 0,
NULL, HFILL }},
{ &hf_charging_ase_referenceID,
{ "referenceID", "charging_ase.referenceID",
FT_UINT32, BASE_DEC, NULL, 0,
NULL, HFILL }},
{ &hf_charging_ase_T_acknowledgementIndicators_accepted,
{ "accepted", "charging.ase.T.acknowledgementIndicators.accepted",
FT_BOOLEAN, 8, NULL, 0x80,
NULL, HFILL }},
{ &hf_charging_ase_ChargingControlIndicators_subscriberCharge,
{ "subscriberCharge", "charging.ase.ChargingControlIndicators.subscriberCharge",
FT_BOOLEAN, 8, NULL, 0x80,
NULL, HFILL }},
{ &hf_charging_ase_ChargingControlIndicators_immediateChangeOfActuallyAppliedTariff,
{ "immediateChangeOfActuallyAppliedTariff", "charging.ase.ChargingControlIndicators.immediateChangeOfActuallyAppliedTariff",
FT_BOOLEAN, 8, NULL, 0x40,
NULL, HFILL }},
{ &hf_charging_ase_ChargingControlIndicators_delayUntilStart,
{ "delayUntilStart", "charging.ase.ChargingControlIndicators.delayUntilStart",
FT_BOOLEAN, 8, NULL, 0x20,
NULL, HFILL }},
{ &hf_charging_ase_T_stopIndicators_callAttemptChargesApplicable,
{ "callAttemptChargesApplicable", "charging.ase.T.stopIndicators.callAttemptChargesApplicable",
FT_BOOLEAN, 8, NULL, 0x80,
NULL, HFILL }},
{ &hf_charging_ase_SubTariffControl_oneTimeCharge,
{ "oneTimeCharge", "charging.ase.SubTariffControl.oneTimeCharge",
FT_BOOLEAN, 8, NULL, 0x80,
NULL, HFILL }},
{ &hf_charging_ase_T_tariffControlIndicators_non_cyclicTariff,
{ "non-cyclicTariff", "charging.ase.T.tariffControlIndicators.non.cyclicTariff",
FT_BOOLEAN, 8, NULL, 0x80,
NULL, HFILL }},
{ &hf_charging_ase_T_tariffControlIndicators_01_non_cyclicTariff,
{ "non-cyclicTariff", "charging.ase.T.tariffControlIndicators.01.non.cyclicTariff",
FT_BOOLEAN, 8, NULL, 0x80,
NULL, HFILL }},
/*--- End of included file: packet-charging_ase-hfarr.c ---*/
#line 65 "./asn1/charging_ase/packet-charging_ase-template.c"
};
/* List of subtrees */
static gint *ett[] = {
&ett_charging_ase,
/*--- Included file: packet-charging_ase-ettarr.c ---*/
#line 1 "./asn1/charging_ase/packet-charging_ase-ettarr.c"
&ett_charging_ase_ChargingMessageType,
&ett_charging_ase_ChargingAcknowledgementInformation,
&ett_charging_ase_T_acknowledgementIndicators,
&ett_charging_ase_SEQUENCE_SIZE_1_numOfExtensions_OF_ExtensionField,
&ett_charging_ase_ChargingControlIndicators,
&ett_charging_ase_AddOnChargingInformation,
&ett_charging_ase_T_addOncharge,
&ett_charging_ase_ChargingTariffInformation,
&ett_charging_ase_T_chargingTariff,
&ett_charging_ase_Code,
&ett_charging_ase_CommunicationChargeCurrency,
&ett_charging_ase_CommunicationChargePulse,
&ett_charging_ase_CurrencyFactorScale,
&ett_charging_ase_ExtensionField,
&ett_charging_ase_StartCharging,
&ett_charging_ase_SEQUENCE_SIZE_1_maxNetworkOperators_OF_NetworkIdentification,
&ett_charging_ase_StopCharging,
&ett_charging_ase_T_stopIndicators,
&ett_charging_ase_SubTariffControl,
&ett_charging_ase_TariffCurrency,
&ett_charging_ase_TariffSwitchCurrency,
&ett_charging_ase_TariffCurrencyFormat,
&ett_charging_ase_SEQUENCE_SIZE_minCommunicationTariffNum_maxCommunicationTariffNum_OF_CommunicationChargeCurrency,
&ett_charging_ase_T_tariffControlIndicators,
&ett_charging_ase_TariffPulse,
&ett_charging_ase_TariffSwitchPulse,
&ett_charging_ase_TariffPulseFormat,
&ett_charging_ase_SEQUENCE_SIZE_minCommunicationTariffNum_maxCommunicationTariffNum_OF_CommunicationChargePulse,
&ett_charging_ase_T_tariffControlIndicators_01,
&ett_charging_ase_ChargingReferenceIdentification,
/*--- End of included file: packet-charging_ase-ettarr.c ---*/
#line 71 "./asn1/charging_ase/packet-charging_ase-template.c"
};
static ei_register_info ei[] = {
{ &ei_charging_ase_extensions_not_dissected, { "charging_ase.extensions_not_dissected", PI_UNDECODED, PI_WARN, "Extensions not dissected", EXPFILL }},
};
expert_module_t* expert_charging_ase;
proto_charging_ase = proto_register_protocol(PNAME, PSNAME, PFNAME);
proto_register_field_array(proto_charging_ase, hf, array_length(hf));
proto_register_subtree_array(ett, array_length(ett));
expert_charging_ase = expert_register_protocol(proto_charging_ase);
expert_register_field_array(expert_charging_ase, ei, array_length(ei));
}
/* The registration hand-off routine */
void
proto_reg_handoff_charging_ase(void)
{
charging_ase_handle = create_dissector_handle(dissect_charging_ase, proto_charging_ase);
}