#ifndef __OCPP21_ENUM_H__
#define __OCPP21_ENUM_H__
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <stdbool.h>
#include <time.h>

//3. Enumerations

// 3.1
typedef enum APNAuthenticationEnumType
{
	APNAuthenticationEnumType_PAP = 1,
	APNAuthenticationEnumType_CHAP,
	APNAuthenticationEnumType_NONE,
	APNAuthenticationEnumType_AUTO,
}APNAuthenticationEnumType_t;
int APNAuthenticationEnumType_fromString(const char *string);
const char* APNAuthenticationEnumType_toString(int type);

// 3.2
typedef enum AttributeEnumType
{
	AttributeEnumType_Actual = 1,
	AttributeEnumType_Target,
	AttributeEnumType_MinSet,
	AttributeEnumType_MaxSet,
}AttributeEnumType_t;
int AttributeEnumType_fromString(const char *string);
const char* AttributeEnumType_toString(int type);

// 3.3
typedef enum AuthorizationStatusEnumType
{
	AuthorizationStatusEnumType_Accepted = 1,
	AuthorizationStatusEnumType_Blocked,
	AuthorizationStatusEnumType_ConcurrentTx,
	AuthorizationStatusEnumType_Expired,
	AuthorizationStatusEnumType_NoCredit,
	AuthorizationStatusEnumType_NotAllowedTypeEVSE,
	AuthorizationStatusEnumType_NotAtThisLocation,
	AuthorizationStatusEnumType_NotAtThisTime,
	AuthorizationStatusEnumType_Unknown,
}AuthorizationStatusEnumType_t;
int AuthorizationStatusEnumType_fromString(const char *string);
const char* AuthorizationStatusEnumType_toString(int type);

// 3.4
typedef enum AuthorizeCertificateStatusEnumType
{
	AuthorizeCertificateStatusEnumType_Accepted = 1,
	AuthorizeCertificateStatusEnumType_SignatureError,
	AuthorizeCertificateStatusEnumType_CertificateExpired,
	AuthorizeCertificateStatusEnumType_CertificateRevoked,
	AuthorizeCertificateStatusEnumType_NoCertificateAvailable,
	AuthorizeCertificateStatusEnumType_CertChainError,
	AuthorizeCertificateStatusEnumType_ContractCancelled,
}AuthorizeCertificateStatusEnumType_t;
int AuthorizeCertificateStatusEnumType_fromString(const char *string);
const char* AuthorizeCertificateStatusEnumType_toString(int type);

// 3.5
typedef enum BatterySwapEventEnumType
{
	BatterySwapEventEnumType_BatteryIn = 1,
	BatterySwapEventEnumType_BatteryOut,
	BatterySwapEventEnumType_BatteryOutTimeout,
}BatterySwapEventEnumType_t;
int BatterySwapEventEnumType_fromString(const char *string);
const char* BatterySwapEventEnumType_toString(int type);

// 3.6
typedef enum BootReasonEnumType
{
	BootReasonEnumType_ApplicationReset = 1,
	BootReasonEnumType_FirmwareUpdate,
	BootReasonEnumType_LocalReset,
	BootReasonEnumType_PowerUp,
	BootReasonEnumType_RemoteReset,
	BootReasonEnumType_ScheduledReset,
	BootReasonEnumType_Triggered,
	BootReasonEnumType_Unknown,
	BootReasonEnumType_Watchdog,
}BootReasonEnumType_t;
int BootReasonEnumType_fromString(const char *string);
const char* BootReasonEnumType_toString(int type);

// 3.7
typedef enum CancelReservationStatusEnumType
{
	CancelReservationStatusEnumType_Accepted = 1,
	CancelReservationStatusEnumType_Rejected,
}CancelReservationStatusEnumType_t;
int CancelReservationStatusEnumType_fromString(const char *string);
const char* CancelReservationStatusEnumType_toString(int type);

// 3.8
typedef enum CertificateActionEnumType
{
	CertificateActionEnumType_Install = 1,
	CertificateActionEnumType_Update,
}CertificateActionEnumType_t;
int CertificateActionEnumType_fromString(const char *string);
const char* CertificateActionEnumType_toString(int type);

// 3.9
typedef enum CertificateSignedStatusEnumType
{
	CertificateSignedStatusEnumType_Accepted = 1,
	CertificateSignedStatusEnumType_Rejected,
}CertificateSignedStatusEnumType_t;
int CertificateSignedStatusEnumType_fromString(const char *string);
const char* CertificateSignedStatusEnumType_toString(int type);

// 3.10
typedef enum CertificateSigningUseEnumType
{
	CertificateSigningUseEnumType_ChargingStationCertificate=1,
	CertificateSigningUseEnumType_V2GCertificate,
	CertificateSigningUseEnumType_V2G20Certificate,
}CertificateSigningUseEnumType_t;
int CertificateSigningUseEnumType_fromString(const char *string);
const char* CertificateSigningUseEnumType_toString(int type);

// 3.11
typedef enum CertificateStatusEnumType
{
	CertificateStatusEnumType_Good = 1,
	CertificateStatusEnumType_Revoked,
	CertificateStatusEnumType_Unknown,
	CertificateStatusEnumType_Failed,
}CertificateStatusEnumType_t;
int CertificateStatusEnumType_fromString(const char *string);
const char* CertificateStatusEnumType_toString(int type);

// 3.12
typedef enum CertificateStatusSourceEnumType
{
	CertificateStatusSourceEnumType_CRL = 1,
	CertificateStatusSourceEnumType_OCSP,
}CertificateStatusSourceEnumType_t;
int CertificateStatusSourceEnumType_fromString(const char *string);
const char* CertificateStatusSourceEnumType_toString(int type);

// 3.13
typedef enum ChangeAvailabilityStatusEnumType
{
	ChangeAvailabilityStatusEnumType_Accepted = 1,
	ChangeAvailabilityStatusEnumType_Rejected,
	ChangeAvailabilityStatusEnumType_Scheduled,
}ChangeAvailabilityStatusEnumType_t;
int ChangeAvailabilityStatusEnumType_fromString(const char *string);
const char* ChangeAvailabilityStatusEnumType_toString(int type);

// 3.14
typedef enum ChargingProfileKindEnumType
{
	ChargingProfileKindEnumType_Absolute = 1,
	ChargingProfileKindEnumType_Recurring,
	ChargingProfileKindEnumType_Relative,
	ChargingProfileKindEnumType_Dynamic,
}ChargingProfileKindEnumType_t;
int ChargingProfileKindEnumType_fromString(const char *string);
const char* ChargingProfileKindEnumType_toString(int type);

// 3.15
typedef enum ChargingProfilePurposeEnumType
{
	ChargingProfilePurposeEnumType_ChargingStationExternalConstraints = 1,
	ChargingProfilePurposeEnumType_ChargingStationMaxProfile,
	ChargingProfilePurposeEnumType_TxDefaultProfile,
	ChargingProfilePurposeEnumType_TxProfile,
	ChargingProfilePurposeEnumType_PriorityCharging,
	ChargingProfilePurposeEnumType_LocalGeneration,
}ChargingProfilePurposeEnumType_t;
int ChargingProfilePurposeEnumType_fromString(const char *string);
const char* ChargingProfilePurposeEnumType_toString(int type);

// 3.16
typedef enum ChargingProfileStatusEnumType
{
	ChargingProfileStatusEnumType_Accepted = 1,
	ChargingProfileStatusEnumType_Rejected,
}ChargingProfileStatusEnumType_t;
int ChargingProfileStatusEnumType_fromString(const char *string);
const char* ChargingProfileStatusEnumType_toString(int type);

// 3.17
typedef enum ChargingRateUnitEnumType
{
	ChargingRateUnitEnumType_W = 1,
	ChargingRateUnitEnumType_A,
}ChargingRateUnitEnumType_t;
int ChargingRateUnitEnumType_fromString(const char *string);
const char* ChargingRateUnitEnumType_toString(int type);

// 3.18
typedef enum ChargingStateEnumType
{
	ChargingStateEnumType_EVConnected = 1,
	ChargingStateEnumType_Charging,
	ChargingStateEnumType_SuspendedEV,
	ChargingStateEnumType_SuspendedEVSE,
	ChargingStateEnumType_Idle,
}ChargingStateEnumType_t;
int ChargingStateEnumType_fromString(const char *string);
const char* ChargingStateEnumType_toString(int type);

// 3.19
typedef enum ClearCacheStatusEnumType
{
	ClearCacheStatusEnumType_Accepted = 1,
	ClearCacheStatusEnumType_Rejected,
}ClearCacheStatusEnumType_t;
int ClearCacheStatusEnumType_fromString(const char *string);
const char* ClearCacheStatusEnumType_toString(int type);

// 3.20
typedef enum ClearChargingProfileStatusEnumType
{
	ClearChargingProfileStatusEnumType_Accepted = 1,
	ClearChargingProfileStatusEnumType_Unknown,
}ClearChargingProfileStatusEnumType_t;
int ClearChargingProfileStatusEnumType_fromString(const char *string);
const char* ClearChargingProfileStatusEnumType_toString(int type);

// 3.21
typedef enum ClearMessageStatusEnumType
{
	ClearMessageStatusEnumType_Accepted = 1,
	ClearMessageStatusEnumType_Unknown,
	ClearMessageStatusEnumType_Rejected,
}ClearMessageStatusEnumType_t;
int ClearMessageStatusEnumType_fromString(const char *string);
const char* ClearMessageStatusEnumType_toString(int type);

// 3.22
typedef enum ClearMonitoringStatusEnumType
{
	ClearMonitoringStatusEnumType_Accepted = 1,
	ClearMonitoringStatusEnumType_Rejected,
	ClearMonitoringStatusEnumType_NotFound,
}ClearMonitoringStatusEnumType_t;
int ClearMonitoringStatusEnumType_fromString(const char *string);
const char* ClearMonitoringStatusEnumType_toString(int type);

// 3.23
typedef enum ComponentCriterionEnumType
{
	ComponentCriterionEnumType_Active = 1,
	ComponentCriterionEnumType_Available,
	ComponentCriterionEnumType_Enabled,
	ComponentCriterionEnumType_Problem,
}ComponentCriterionEnumType_t;
int ComponentCriterionEnumType_fromString(const char *string);
const char* ComponentCriterionEnumType_toString(int type);

// 3.24
typedef enum ConnectorStatusEnumType
{
	ConnectorStatusEnumType_Available = 1,
	ConnectorStatusEnumType_Occupied,
	ConnectorStatusEnumType_Reserved,
	ConnectorStatusEnumType_Unavailable,
	ConnectorStatusEnumType_Faulted,
}ConnectorStatusEnumType_t;
int ConnectorStatusEnumType_fromString(const char *string);
const char* ConnectorStatusEnumType_toString(int type);

// 3.25
typedef enum ControlModeEnumType
{
	ControlModeEnumType_ScheduledControl = 1,
	ControlModeEnumType_DynamicControl,
}ControlModeEnumType_t;
int ControlModeEnumType_fromString(const char *string);
const char* ControlModeEnumType_toString(int type);

// 3.26
typedef enum CostDimensionEnumType
{
	CostDimensionEnumType_Energy = 1,
	CostDimensionEnumType_MaxCurrent,
	CostDimensionEnumType_MinCurrent,
	CostDimensionEnumType_MaxPower,
	CostDimensionEnumType_MinPower,
	CostDimensionEnumType_IdleTIme,
	CostDimensionEnumType_ChargingTime,
}CostDimensionEnumType_t;
int CostDimensionEnumType_fromString(const char *string);
const char* CostDimensionEnumType_toString(int type);

// 3.27
typedef enum CostKindEnumType
{
	CostKindEnumType_CarbonDioxideEmission = 1,
	CostKindEnumType_RelativePricePercentage,
	CostKindEnumType_RenewableGenerationPercentage,
}CostKindEnumType_t;
int CostKindEnumType_fromString(const char *string);
const char* CostKindEnumType_toString(int type);

// 3.28
typedef enum CustomerInformationStatusEnumType
{
	CustomerInformationStatusEnumType_Accepted = 1,
	CustomerInformationStatusEnumType_Rejected,
	CustomerInformationStatusEnumType_Invalid,
}CustomerInformationStatusEnumType_t;
int CustomerInformationStatusEnumType_fromString(const char *string);
const char* CustomerInformationStatusEnumType_toString(int type);

// 3.29
typedef enum DataEnumType
{
	DataEnumType_string = 1,
	DataEnumType_decimal,
	DataEnumType_integer,
	DataEnumType_dateTime,
	DataEnumType_boolean,
	DataEnumType_OptionList,
	DataEnumType_SequenceList,
	DataEnumType_MemberList,
}DataEnumType_t;
int DataEnumType_fromString(const char *string);
const char* DataEnumType_toString(int type);

// 3.30
typedef enum DataTransferStatusEnumType
{
	DataTransferStatusEnumType_Accepted = 1,
	DataTransferStatusEnumType_Rejected,
	DataTransferStatusEnumType_UnknownMessageId,
	DataTransferStatusEnumType_UnknownVendorId,
}DataTransferStatusEnumType_t;
int DataTransferStatusEnumType_fromString(const char *string);
const char* DataTransferStatusEnumType_toString(int type);

// 3.31
typedef enum DayOfWeekEnumType
{
	DayOfWeekEnumType_Monday = 1,
	DayOfWeekEnumType_Tuesday,
	DayOfWeekEnumType_Wednesday,
	DayOfWeekEnumType_Thursday,
	DayOfWeekEnumType_Friday,
	DayOfWeekEnumType_Saturday,
	DayOfWeekEnumType_Sunday,
}DayOfWeekEnumType_t;
int DayOfWeekEnumType_fromString(const char *string);
const char* DayOfWeekEnumType_toString(int type);

// 3.32
typedef enum DeleteCertificateStatusEnumType
{
	DeleteCertificateStatusEnumType_Accepted = 1,
	DeleteCertificateStatusEnumType_Failed,
	DeleteCertificateStatusEnumType_NotFound,
}DeleteCertificateStatusEnumType_t;
int DeleteCertificateStatusEnumType_fromString(const char *string);
const char* DeleteCertificateStatusEnumType_toString(int type);

// 3.33
typedef enum DERControlEnumType
{
	DERControlEnumType_EnterService = 1,
	DERControlEnumType_FreqDroop,
	DERControlEnumType_FreqWatt,
	DERControlEnumType_FixedPFAbsorb,
	DERControlEnumType_FixedPFInject,
	DERControlEnumType_FixedVar,
	DERControlEnumType_Gradients,
	DERControlEnumType_HFMustTrip,
	DERControlEnumType_HFMayTrip,
	DERControlEnumType_HVMustTrip,
	DERControlEnumType_HVMomCess,
	DERControlEnumType_HVMayTrip,
	DERControlEnumType_LimitMaxDischarge,
	DERControlEnumType_LFMustTrip,
	DERControlEnumType_LVMustTrip,
	DERControlEnumType_LVMomCess,
	DERControlEnumType_LVMayTrip,
	DERControlEnumType_PowerMonitoringMustTrip,
	DERControlEnumType_VoltVar,
	DERControlEnumType_VoltWatt,
	DERControlEnumType_WattPF,
	DERControlEnumType_WattVar,
}DERControlEnumType_t;
int DERControlEnumType_fromString(const char *string);
const char* DERControlEnumType_toString(int type);

// 3.34
typedef enum DERControlStatusEnumType
{
	DERControlStatusEnumType_Accepted = 1,
	DERControlStatusEnumType_Rejected,
	DERControlStatusEnumType_NotSupported,
	DERControlStatusEnumType_NotFound,
}DERControlStatusEnumType_t;
int DERControlStatusEnumType_fromString(const char *string);
const char* DERControlStatusEnumType_toString(int type);

// 3.35
typedef enum DERUnitEnumType
{
	DERUnitEnumType_Not_Applicable = 1,
	DERUnitEnumType_PctMaxW,
	DERUnitEnumType_PctMaxVar,
	DERUnitEnumType_PctWAvail,
	DERUnitEnumType_PctVarAvail,
	DERUnitEnumType_PctEffectiveV,
}DERUnitEnumType_t;
int DERUnitEnumType_fromString(const char *string);
const char* DERUnitEnumType_toString(int type);

// 3.36
typedef enum DisplayMessageStatusEnumType
{
	DisplayMessageStatusEnumType_Accepted = 1,
	DisplayMessageStatusEnumType_NotSupportedMessageFormat,
	DisplayMessageStatusEnumType_Rejected,
	DisplayMessageStatusEnumType_NotSupportedPriority,
	DisplayMessageStatusEnumType_NotSupportedState,
	DisplayMessageStatusEnumType_UnknownTransaction,
	DisplayMessageStatusEnumType_LanguageNotSupported,
}DisplayMessageStatusEnumType_t;
int DisplayMessageStatusEnumType_fromString(const char *string);
const char* DisplayMessageStatusEnumType_toString(int type);

// 3.37
typedef enum EnergyTransferModeEnumType
{
	EnergyTransferModeEnumType_AC_single_phase = 1,
	EnergyTransferModeEnumType_AC_two_phase,
	EnergyTransferModeEnumType_AC_three_phase,
	EnergyTransferModeEnumType_DC,
	EnergyTransferModeEnumType_AC_BPT,
	EnergyTransferModeEnumType_AC_BPT_DER,
	EnergyTransferModeEnumType_AC_DER,
	EnergyTransferModeEnumType_DC_BPT,
	EnergyTransferModeEnumType_DC_ACDP,
	EnergyTransferModeEnumType_DC_ACDP_BPT,
	EnergyTransferModeEnumType_WPT,
}EnergyTransferModeEnumType_t;
int EnergyTransferModeEnumType_fromString(const char *string);
const char* EnergyTransferModeEnumType_toString(int type);

// 3.38
typedef enum EventNotificationEnumType
{
	EventNotificationEnumType_HardWiredNotification = 1,
	EventNotificationEnumType_HardWiredMonitor,
	EventNotificationEnumType_PreconfiguredMonitor,
	EventNotificationEnumType_CustomMonitor,
}EventNotificationEnumType_t;
int EventNotificationEnumType_fromString(const char *string);
const char* EventNotificationEnumType_toString(int type);

// 3.39
typedef enum EventTriggerEnumType
{
	EventTriggerEnumType_Alerting = 1,
	EventTriggerEnumType_Delta,
	EventTriggerEnumType_Periodic,
}EventTriggerEnumType_t;
int EventTriggerEnumType_fromString(const char *string);
const char* EventTriggerEnumType_toString(int type);

// 3.40
typedef enum EvseKindEnumType
{
	EvseKindEnumType_AC = 1,
	EvseKindEnumType_DC,
}EvseKindEnumType_t;
int EvseKindEnumType_fromString(const char *string);
const char* EvseKindEnumType_toString(int type);

// 3.41
typedef enum FirmwareStatusEnumType
{
	FirmwareStatusEnumType_Downloaded = 1,
	FirmwareStatusEnumType_DownloadFailed,
	FirmwareStatusEnumType_Downloading,
	FirmwareStatusEnumType_DownloadScheduled,
	FirmwareStatusEnumType_DownloadPaused,
	FirmwareStatusEnumType_Idle,
	FirmwareStatusEnumType_InstallationFailed,
	FirmwareStatusEnumType_Installing,
	FirmwareStatusEnumType_Installed,
	FirmwareStatusEnumType_InstallRebooting,
	FirmwareStatusEnumType_InstallScheduled,
	FirmwareStatusEnumType_InstallVerificationFailed,
	FirmwareStatusEnumType_InvalidSignature,
	FirmwareStatusEnumType_SignatureVerified,
}FirmwareStatusEnumType_t;
int FirmwareStatusEnumType_fromString(const char *string);
const char* FirmwareStatusEnumType_toString(int type);

// 3.42
typedef enum GenericDeviceModelStatusEnumType
{
	GenericDeviceModelStatusEnumType_Accepted = 1,
	GenericDeviceModelStatusEnumType_Rejected,
	GenericDeviceModelStatusEnumType_NotSupported,
	GenericDeviceModelStatusEnumType_EmptyResultSet,
}GenericDeviceModelStatusEnumType_t;
int GenericDeviceModelStatusEnumType_fromString(const char *string);
const char* GenericDeviceModelStatusEnumType_toString(int type);

// 3.43
typedef enum GenericStatusEnumType
{
	GenericStatusEnumType_Accepted = 1,
	GenericStatusEnumType_Rejected,
}GenericStatusEnumType_t;
int GenericStatusEnumType_fromString(const char *string);
const char* GenericStatusEnumType_toString(int type);

// 3.44
typedef enum GetCertificateIdUseEnumType
{
	GetCertificateIdUseEnumType_V2GRootCertificate = 1,
	GetCertificateIdUseEnumType_MORootCertificate,
	GetCertificateIdUseEnumType_CSMSRootCertificate,
	GetCertificateIdUseEnumType_V2GCertificateChain,
	GetCertificateIdUseEnumType_ManufacturerRootCertificate,
	GetCertificateIdUseEnumType_OEMRootCertificate,
}GetCertificateIdUseEnumType_t;
int GetCertificateIdUseEnumType_fromString(const char *string);
const char* GetCertificateIdUseEnumType_toString(int type);

// 3.45
typedef enum GetCertificateStatusEnumType
{
	GetCertificateStatusEnumType_Accepted = 1,
	GetCertificateStatusEnumType_Failed,
}GetCertificateStatusEnumType_t;
int GetCertificateStatusEnumType_fromString(const char *string);
const char* GetCertificateStatusEnumType_toString(int type);

// 3.46
typedef enum GetChargingProfileStatusEnumType
{
	GetChargingProfileStatusEnumType_Accepted = 1,
	GetChargingProfileStatusEnumType_NoProfiles,
}GetChargingProfileStatusEnumType_t;
int GetChargingProfileStatusEnumType_fromString(const char *string);
const char* GetChargingProfileStatusEnumType_toString(int type);

// 3.47
typedef enum GetDisplayMessagesStatusEnumType
{
	GetDisplayMessagesStatusEnumType_Accepted = 1,
	GetDisplayMessagesStatusEnumType_Unknown,
}GetDisplayMessagesStatusEnumType_t;
int GetDisplayMessagesStatusEnumType_fromString(const char *string);
const char* GetDisplayMessagesStatusEnumType_toString(int type);

// 3.48
typedef enum GetInstalledCertificateStatusEnumType
{
	GetInstalledCertificateStatusEnumType_Accepted = 1,
	GetInstalledCertificateStatusEnumType_NotFound,
}GetInstalledCertificateStatusEnumType_t;
int GetInstalledCertificateStatusEnumType_fromString(const char *string);
const char* GetInstalledCertificateStatusEnumType_toString(int type);

// 3.49
typedef enum GetVariableStatusEnumType
{
	GetVariableStatusEnumType_Accepted = 1,
	GetVariableStatusEnumType_Rejected,
	GetVariableStatusEnumType_UnknownComponent,
	GetVariableStatusEnumType_UnknownVariable,
	GetVariableStatusEnumType_NotSupportedAttributeType,
}GetVariableStatusEnumType_t;
int GetVariableStatusEnumType_fromString(const char *string);
const char* GetVariableStatusEnumType_toString(int type);

// 3.50
typedef enum GridEventFaultEnumType
{
	GridEventFaultEnumType_CurrentImbalance= 1,
	GridEventFaultEnumType_LocalEmergency,
	GridEventFaultEnumType_LowInputPower,
	GridEventFaultEnumType_OverCurrent,
	GridEventFaultEnumType_OverFrequency,
	GridEventFaultEnumType_OverVoltage,
	GridEventFaultEnumType_PhaseRotation,
	GridEventFaultEnumType_RemoteEmergency,
	GridEventFaultEnumType_UnderFrequency,
	GridEventFaultEnumType_UnderVoltage,
	GridEventFaultEnumType_VoltageImbalance,
}GridEventFaultEnumType_t;
int GridEventFaultEnumType_fromString(const char *string);
const char* GridEventFaultEnumType_toString(int type);

// 3.51
typedef enum HashAlgorithmEnumType
{
	HashAlgorithmEnumType_SHA256 = 1,
	HashAlgorithmEnumType_SHA384,
	HashAlgorithmEnumType_SHA512,
}HashAlgorithmEnumType_t;
int HashAlgorithmEnumType_fromString(const char *string);
const char* HashAlgorithmEnumType_toString(int type);

// 3.52
typedef enum InstallCertificateStatusEnumType
{
	InstallCertificateStatusEnumType_Accepted = 1,
	InstallCertificateStatusEnumType_Rejected,
	InstallCertificateStatusEnumType_Failed,
}InstallCertificateStatusEnumType_t;
int InstallCertificateStatusEnumType_fromString(const char *string);
const char* InstallCertificateStatusEnumType_toString(int type);

// 3.53
typedef enum InstallCertificateUseEnumType
{
	InstallCertificateUseEnumType_V2GRootCertificate = 1,
	InstallCertificateUseEnumType_MORootCertificate,
	InstallCertificateUseEnumType_ManufacturerRootCertificate,
	InstallCertificateUseEnumType_CSMSRootCertificate,
	InstallCertificateUseEnumType_OEMRootCertificate,
}InstallCertificateUseEnumType_t;
int InstallCertificateUseEnumType_fromString(const char *string);
const char* InstallCertificateUseEnumType_toString(int type);

// 3.54
typedef enum IslandingDetectionEnumType
{
	IslandingDetectionEnumType_NoAntiIslandingSupport = 1,
	IslandingDetectionEnumType_RoCoF,
	IslandingDetectionEnumType_UVP_OVP,
	IslandingDetectionEnumType_UFP_OFP,
	IslandingDetectionEnumType_VoltageVectorShift,
	IslandingDetectionEnumType_ZeroCrossingDetection,
	IslandingDetectionEnumType_OtherPassive,
	IslandingDetectionEnumType_ImpedanceMeasurement,
	IslandingDetectionEnumType_ImpedanceAtFrequency,
	IslandingDetectionEnumType_SlipModeFrequencyShift,
	IslandingDetectionEnumType_SandiaFrequencyShift,
	IslandingDetectionEnumType_SandiaVoltageShift,
	IslandingDetectionEnumType_FrequencyJump,
	IslandingDetectionEnumType_RCLQFactor,
	IslandingDetectionEnumType_OtherActive,
}IslandingDetectionEnumType_t;
int IslandingDetectionEnumType_fromString(const char *string);
const char* IslandingDetectionEnumType_toString(int type);

// 3.55
typedef enum Iso15118EVCertificateStatusEnumType
{
	Iso15118EVCertificateStatusEnumType_Accepted = 1,
	Iso15118EVCertificateStatusEnumType_Failed,
}Iso15118EVCertificateStatusEnumType_t;
int Iso15118EVCertificateStatusEnumType_fromString(const char *string);
const char* Iso15118EVCertificateStatusEnumType_toString(int type);

// 3.56
typedef enum LocationEnumType
{
	LocationEnumType_Body = 1,
	LocationEnumType_Cable,
	LocationEnumType_EV,
	LocationEnumType_Inlet,
	LocationEnumType_Outlet,
	LocationEnumType_Upstream,
}LocationEnumType_t;
int LocationEnumType_fromString(const char *string);
const char* LocationEnumType_toString(int type);

// 3.57
typedef enum LogEnumType
{
	LogEnumType_DiagnosticsLog = 1,
	LogEnumType_SecurityLog,
	LogEnumType_DataCollectorLog,
}LogEnumType_t;
int LogEnumType_fromString(const char *string);
const char* LogEnumType_toString(int type);

// 3.58
typedef enum LogStatusEnumType
{
	LogStatusEnumType_Accepted = 1,
	LogStatusEnumType_Rejected,
	LogStatusEnumType_AcceptedCanceled,
}LogStatusEnumType_t;
int LogStatusEnumType_fromString(const char *string);
const char* LogStatusEnumType_toString(int type);

// 3.59
typedef enum MeasurandEnumType
{
	MeasurandEnumType_Current_Export = 1,
	MeasurandEnumType_Current_Export_Offered,
	MeasurandEnumType_Current_Export_Minimum,
	MeasurandEnumType_Current_Import,
	MeasurandEnumType_Current_Import_Offered,
	MeasurandEnumType_Current_Import_Minimum,
	MeasurandEnumType_Current_Offered,
	
	MeasurandEnumType_Display_PresentSOC,
	MeasurandEnumType_Display_MinimumSOC,
	MeasurandEnumType_Display_TargetSOC,
	MeasurandEnumType_Display_MaximumSOC,
	MeasurandEnumType_Display_RemainingTimeToMinimumSOC,
	MeasurandEnumType_Display_RemainingTimeToTargetSOC,
	MeasurandEnumType_Display_RemainingTimeToMaximumSOC,
	MeasurandEnumType_Display_ChargingComplete,
	MeasurandEnumType_Display_BatteryEnergyCapacity,
	MeasurandEnumType_Display_InletHot,

	MeasurandEnumType_Energy_Active_Export_Interval,
	MeasurandEnumType_Energy_Active_Export_Register,
	MeasurandEnumType_Energy_Active_Import_Interval,
	MeasurandEnumType_Energy_Active_Import_Register,
	MeasurandEnumType_Energy_Active_Import_CableLoss,
	MeasurandEnumType_Energy_Active_Import_LocalGeneration_Register,
	MeasurandEnumType_Energy_Active_Net,
	MeasurandEnumType_Energy_Active_Setpoint_Interval,
	MeasurandEnumType_Energy_Apparent_Export,
	MeasurandEnumType_Energy_Apparent_Import,
	MeasurandEnumType_Energy_Apparent_Net,
	MeasurandEnumType_Energy_Reactive_Export_Interval,
	MeasurandEnumType_Energy_Reactive_Export_Register,
	MeasurandEnumType_Energy_Reactive_Import_Interval,
	MeasurandEnumType_Energy_Reactive_Import_Register,
	MeasurandEnumType_Energy_Reactive_Net,

	MeasurandEnumType_EnergyRequest_Target,
	MeasurandEnumType_EnergyRequest_Minimum,
	MeasurandEnumType_EnergyRequest_Maximum,
	MeasurandEnumType_EnergyRequest_Minimum_V2X,
	MeasurandEnumType_EnergyRequest_Maximum_V2X,
	MeasurandEnumType_EnergyRequest_Bulk,

	MeasurandEnumType_Frequency,
	MeasurandEnumType_Power_Active_Export,
	MeasurandEnumType_Power_Active_Import,
	MeasurandEnumType_Power_Active_Setpoint,
	MeasurandEnumType_Power_Active_Residual,
	MeasurandEnumType_Power_Export_Minimum,
	MeasurandEnumType_Power_Export_Offered,
	MeasurandEnumType_Power_Factor,
	MeasurandEnumType_Power_Import_Offered,
	MeasurandEnumType_Power_Import_Minimum,
	MeasurandEnumType_Power_Offered,
	MeasurandEnumType_Power_Reactive_Export,
	MeasurandEnumType_Power_Reactive_Import,
	MeasurandEnumType_SoC,
	MeasurandEnumType_Voltage,
	MeasurandEnumType_Voltage_Minimum,
	MeasurandEnumType_Voltage_Maximum,
}MeasurandEnumType_t;
int MeasurandEnumType_fromString(const char *string);
const char* MeasurandEnumType_toString(int type);

// 3.60
typedef enum MessageFormatEnumType
{
	MessageFormatEnumType_ASCII = 1,
	MessageFormatEnumType_HTML,
	MessageFormatEnumType_URI,
	MessageFormatEnumType_UTF8,
	MessageFormatEnumType_QRCODE,
}MessageFormatEnumType_t;
int MessageFormatEnumType_fromString(const char *string);
const char* MessageFormatEnumType_toString(int type);

// 3.61
typedef enum MessagePriorityEnumType
{
	MessagePriorityEnumType_AlwaysFront = 1,
	MessagePriorityEnumType_InFront,
	MessagePriorityEnumType_NormalCycle,
}MessagePriorityEnumType_t;
int MessagePriorityEnumType_fromString(const char *string);
const char* MessagePriorityEnumType_toString(int type);

// 3.62
typedef enum MessageStateEnumType
{
	MessageStateEnumType_Charging = 1,
	MessageStateEnumType_Faulted,
	MessageStateEnumType_Idle,
	MessageStateEnumType_Unavailable,
	MessageStateEnumType_Suspended,
	MessageStateEnumType_Discharging,
}MessageStateEnumType_t;
int MessageStateEnumType_fromString(const char *string);
const char* MessageStateEnumType_toString(int type);

// 3.63
typedef enum MessageTriggerEnumType
{
	MessageTriggerEnumType_BootNotification = 1,
	MessageTriggerEnumType_LogStatusNotification,
	MessageTriggerEnumType_FirmwareStatusNotification,
	MessageTriggerEnumType_Heartbeat,
	MessageTriggerEnumType_MeterValues,
	MessageTriggerEnumType_SignChargingStationCertificate,
	MessageTriggerEnumType_SignV2GCertificate,
	MessageTriggerEnumType_SignV2G20Certificate,
	MessageTriggerEnumType_StatusNotification,
	MessageTriggerEnumType_TransactionEvent,
	MessageTriggerEnumType_SignCombinedCertificate,
	MessageTriggerEnumType_PublishFirmwareStatusNotification,
	MessageTriggerEnumType_CustomTrigger,
}MessageTriggerEnumType_t;
int MessageTriggerEnumType_fromString(const char *string);
const char* MessageTriggerEnumType_toString(int type);

// 3.64
typedef enum MobilityNeedsModeEnumType
{
	MobilityNeedsModeEnumType_EVCC = 1,
	MobilityNeedsModeEnumType_EVCC_SECC,
}MobilityNeedsModeEnumType_t;
int MobilityNeedsModeEnumType_fromString(const char *string);
const char* MobilityNeedsModeEnumType_toString(int type);

// 3.65
typedef enum MonitorEnumType
{
	MonitorEnumType_UpperThreshold = 1,
	MonitorEnumType_LowerThreshold,
	MonitorEnumType_Delta,
	MonitorEnumType_Periodic,
	MonitorEnumType_PeriodicClockAligned,
	MonitorEnumType_TargetDelta,
	MonitorEnumType_TargetDeltaRelative,
}MonitorEnumType_t;
int MonitorEnumType_fromString(const char *string);
const char* MonitorEnumType_toString(int type);

// 3.66
typedef enum MonitoringBaseEnumType
{
	MonitoringBaseEnumType_All = 1,
	MonitoringBaseEnumType_FactoryDefault,
	MonitoringBaseEnumType_HardWiredOnly,
}MonitoringBaseEnumType_t;
int MonitoringBaseEnumType_fromString(const char *string);
const char* MonitoringBaseEnumType_toString(int type);

// 3.67
typedef enum MonitoringCriterionEnumType
{
	MonitoringCriterionEnumType_ThresholdMonitoring = 1,
	MonitoringCriterionEnumType_DeltaMonitoring,
	MonitoringCriterionEnumType_PeriodicMonitoring,
}MonitoringCriterionEnumType_t;
int MonitoringCriterionEnumType_fromString(const char *string);
const char* MonitoringCriterionEnumType_toString(int type);

// 3.68
typedef enum MutabilityEnumType
{
	MutabilityEnumType_ReadOnly = 1,
	MutabilityEnumType_WriteOnly,
	MutabilityEnumType_ReadWrite,
}MutabilityEnumType_t;
int MutabilityEnumType_fromString(const char *string);
const char* MutabilityEnumType_toString(int type);

// 3.69
typedef enum NotifyAllowedEnergyTransferStatusEnumType
{
	NotifyAllowedEnergyTransferStatusEnumType_Accepted = 1,
	NotifyAllowedEnergyTransferStatusEnumType_Rejected,
}NotifyAllowedEnergyTransferStatusEnumType_t;
int NotifyAllowedEnergyTransferStatusEnumType_fromString(const char *string);
const char* NotifyAllowedEnergyTransferStatusEnumType_toString(int type);

// 3.70
typedef enum NotifyEVChargingNeedsStatusEnumType
{
	NotifyEVChargingNeedsStatusEnumType_Accepted = 1,
	NotifyEVChargingNeedsStatusEnumType_Rejected,
	NotifyEVChargingNeedsStatusEnumType_Processing,
	NotifyEVChargingNeedsStatusEnumType_NoChargingProfile,
}NotifyEVChargingNeedsStatusEnumType_t;
int NotifyEVChargingNeedsStatusEnumType_fromString(const char *string);
const char* NotifyEVChargingNeedsStatusEnumType_toString(int type);

// 3.71
typedef enum OCPPInterfaceEnumType
{
	OCPPInterfaceEnumType_Wired0 = 1,
	OCPPInterfaceEnumType_Wired1,
	OCPPInterfaceEnumType_Wired2,
	OCPPInterfaceEnumType_Wired3,
	OCPPInterfaceEnumType_Wireless0,
	OCPPInterfaceEnumType_Wireless1,
	OCPPInterfaceEnumType_Wireless2,
	OCPPInterfaceEnumType_Wireless3,
	OCPPInterfaceEnumType_Any,
}OCPPInterfaceEnumType_t;
int OCPPInterfaceEnumType_fromString(const char *string);
const char* OCPPInterfaceEnumType_toString(int type);

// 3.72
typedef enum OCPPTransportEnumType
{
	OCPPTransportEnumType_SOAP = 1,
	OCPPTransportEnumType_JSON,
}OCPPTransportEnumType_t;
int OCPPTransportEnumType_fromString(const char *string);
const char* OCPPTransportEnumType_toString(int type);

// 3.73
typedef enum OCPPVersionEnumType
{
	OCPPVersionEnumType_OCPP12 = 1,
	OCPPVersionEnumType_OCPP15,
	OCPPVersionEnumType_OCPP16,
	OCPPVersionEnumType_OCPP20,
	OCPPVersionEnumType_OCPP201,
	OCPPVersionEnumType_OCPP21,
}OCPPVersionEnumType_t;
int OCPPVersionEnumType_fromString(const char *string);
const char* OCPPVersionEnumType_toString(int type);

// 3.74
typedef enum OperationalStatusEnumType
{
	OperationalStatusEnumType_Inoperative = 1,
	OperationalStatusEnumType_Operative,
}OperationalStatusEnumType_t;
int OperationalStatusEnumType_fromString(const char *string);
const char* OperationalStatusEnumType_toString(int type);

// 3.75
typedef enum OperationModeEnumType
{
	OperationModeEnumType_Idle = 1,
	OperationModeEnumType_ChargingOnly,
	OperationModeEnumType_CentralSetpoint,
	OperationModeEnumType_ExternalSetpoint,
	OperationModeEnumType_ExternalLimits,
	OperationModeEnumType_CentralFrequency,
	OperationModeEnumType_LocalFrequency,
	OperationModeEnumType_LocalLoadBalancing,
}OperationModeEnumType_t;
int OperationModeEnumType_fromString(const char *string);
const char* OperationModeEnumType_toString(int type);

// 3.76
typedef enum PaymentStatusEnumType
{
	PaymentStatusEnumType_Settled = 1,
	PaymentStatusEnumType_Canceled,
	PaymentStatusEnumType_Rejected,
	PaymentStatusEnumType_Failed,
}PaymentStatusEnumType_t;
int PaymentStatusEnumType_fromString(const char *string);
const char* PaymentStatusEnumType_toString(int type);

// 3.77
typedef enum PhaseEnumType
{
	PhaseEnumType_L1 = 1,
	PhaseEnumType_L2,
	PhaseEnumType_L3,
	PhaseEnumType_N,
	PhaseEnumType_L1_N,
	PhaseEnumType_L2_N,
	PhaseEnumType_L3_N,
	PhaseEnumType_L1_L2,
	PhaseEnumType_L2_L3,
	PhaseEnumType_L3_L1,
}PhaseEnumType_t;
int PhaseEnumType_fromString(const char *string);
const char* PhaseEnumType_toString(int type);

// 3.78
typedef enum PowerDuringCessationEnumType
{
	PowerDuringCessationEnumType_Active = 1,
	PowerDuringCessationEnumType_Reactive,
}PowerDuringCessationEnumType_t;
int PowerDuringCessationEnumType_fromString(const char *string);
const char* PowerDuringCessationEnumType_toString(int type);

// 3.79
typedef enum PreconditioningStatusEnumType
{
	PreconditioningStatusEnumType_Unknown = 1,
	PreconditioningStatusEnumType_Ready,
	PreconditioningStatusEnumType_NotReady,
	PreconditioningStatusEnumType_Preconditioning,
}PreconditioningStatusEnumType_t;
int PreconditioningStatusEnumType_fromString(const char *string);
const char* PreconditioningStatusEnumType_toString(int type);

// 3.80
typedef enum PriorityChargingStatusEnumType
{
	PriorityChargingStatusEnumType_Accepted = 1,
	PriorityChargingStatusEnumType_Rejected,
	PriorityChargingStatusEnumType_NoProfile,
}PriorityChargingStatusEnumType_t;
int PriorityChargingStatusEnumType_fromString(const char *string);
const char* PriorityChargingStatusEnumType_toString(int type);

// 3.81
typedef enum PublishFirmwareStatusEnumType
{
	PublishFirmwareStatusEnumType_Idle = 1,
	PublishFirmwareStatusEnumType_DownloadScheduled,
	PublishFirmwareStatusEnumType_Downloading,
	PublishFirmwareStatusEnumType_Downloaded,
	PublishFirmwareStatusEnumType_Published,
	PublishFirmwareStatusEnumType_DownloadFailed,
	PublishFirmwareStatusEnumType_DownloadPaused,
	PublishFirmwareStatusEnumType_InvalidChecksum,
	PublishFirmwareStatusEnumType_ChecksumVerified,
	PublishFirmwareStatusEnumType_PublishFailed,
}PublishFirmwareStatusEnumType_t;
int PublishFirmwareStatusEnumType_fromString(const char *string);
const char* PublishFirmwareStatusEnumType_toString(int type);

// 3.82
typedef enum ReadingContextEnumType
{
	ReadingContextEnumType_Interruption_Begin = 1,
	ReadingContextEnumType_Interruption_End,
	ReadingContextEnumType_Other,
	ReadingContextEnumType_Sample_Clock,
	ReadingContextEnumType_Sample_Periodic,
	ReadingContextEnumType_Transaction_Begin,
	ReadingContextEnumType_Transaction_End,
	ReadingContextEnumType_Trigger,
}ReadingContextEnumType_t;
int ReadingContextEnumType_fromString(const char *string);
const char* ReadingContextEnumType_toString(int type);

// 3.83
typedef enum ReasonEnumType
{
	ReasonEnumType_DeAuthorized = 1,
	ReasonEnumType_EmergencyStop,
	ReasonEnumType_EnergyLimitReached,
	ReasonEnumType_EVDisconnected,
	ReasonEnumType_GroundFault,
	ReasonEnumType_ImmediateReset,
	ReasonEnumType_MasterPass,
	ReasonEnumType_Local,
	ReasonEnumType_LocalOutOfCredit,
	ReasonEnumType_Other,
	ReasonEnumType_OvercurrentFault,
	ReasonEnumType_PowerLoss,
	ReasonEnumType_PowerQuality,
	ReasonEnumType_Reboot,
	ReasonEnumType_Remote,
	ReasonEnumType_SOCLimitReached ,
	ReasonEnumType_StoppedByEV,
	ReasonEnumType_TimeLimitReached,
	ReasonEnumType_Timeout,
	ReasonEnumType_ReqEnergyTransferRejected,
}ReasonEnumType_t;
int ReasonEnumType_fromString(const char *string);
const char* ReasonEnumType_toString(int type);

// 3.84
typedef enum RecurrencyKindEnumType
{
	RecurrencyKindEnumType_Daily = 1,
	RecurrencyKindEnumType_Weekly,
}RecurrencyKindEnumType_t;
int RecurrencyKindEnumType_fromString(const char *string);
const char* RecurrencyKindEnumType_toString(int type);

// 3.85
typedef enum RegistrationStatusEnumType
{
	RegistrationStatusEnumType_Accepted = 1,
	RegistrationStatusEnumType_Pending,
	RegistrationStatusEnumType_Rejected,
}RegistrationStatusEnumType_t;
int RegistrationStatusEnumType_fromString(const char *string);
const char* RegistrationStatusEnumType_toString(int type);

// 3.86
typedef enum ReportBaseEnumType
{
	ReportBaseEnumType_ConfigurationInventory = 1,
	ReportBaseEnumType_FullInventory,
	ReportBaseEnumType_SummaryInventory,
}ReportBaseEnumType_t;
int ReportBaseEnumType_fromString(const char *string);
const char* ReportBaseEnumType_toString(int type);

// 3.87
typedef enum RequestStartStopStatusEnumType
{
	RequestStartStopStatusEnumType_Accepted = 1,
	RequestStartStopStatusEnumType_Rejected,
}RequestStartStopStatusEnumType_t;
int RequestStartStopStatusEnumType_fromString(const char *string);
const char* RequestStartStopStatusEnumType_toString(int type);

// 3.88
typedef enum ReservationUpdateStatusEnumType
{
	ReservationUpdateStatusEnumType_Expired = 1,
	ReservationUpdateStatusEnumType_Removed,
	ReservationUpdateStatusEnumType_NoTransaction,
}ReservationUpdateStatusEnumType_t;
int ReservationUpdateStatusEnumType_fromString(const char *string);
const char* ReservationUpdateStatusEnumType_toString(int type);

// 3.89
typedef enum ReserveNowStatusEnumType
{
	ReserveNowStatusEnumType_Accepted = 1,
	ReserveNowStatusEnumType_Faulted,
	ReserveNowStatusEnumType_Occupied,
	ReserveNowStatusEnumType_Rejected,
	ReserveNowStatusEnumType_Unavailable,
}ReserveNowStatusEnumType_t;
int ReserveNowStatusEnumType_fromString(const char *string);
const char* ReserveNowStatusEnumType_toString(int type);

// 3.90
typedef enum ResetEnumType
{
	ResetEnumType_Immediate = 1,
	ResetEnumType_OnIdle,
	ResetEnumType_ImmediateAndResume,
}ResetEnumType_t;
int ResetEnumType_fromString(const char *string);
const char* ResetEnumType_toString(int type);

// 3.91
typedef enum ResetStatusEnumType
{
	ResetStatusEnumType_Accepted = 1,
	ResetStatusEnumType_Rejected,
	ResetStatusEnumType_Scheduled,
}ResetStatusEnumType_t;
int ResetStatusEnumType_fromString(const char *string);
const char* ResetStatusEnumType_toString(int type);

// 3.92
typedef enum SendLocalListStatusEnumType
{
	SendLocalListStatusEnumType_Accepted = 1,
	SendLocalListStatusEnumType_Failed,
	SendLocalListStatusEnumType_VersionMismatch,
}SendLocalListStatusEnumType_t;
int SendLocalListStatusEnumType_fromString(const char *string);
const char* SendLocalListStatusEnumType_toString(int type);

// 3.93
typedef enum SetMonitoringStatusEnumType
{
	SetMonitoringStatusEnumType_Accepted = 1,
	SetMonitoringStatusEnumType_UnknownComponent,
	SetMonitoringStatusEnumType_UnknownVariable,
	SetMonitoringStatusEnumType_UnsupportedMonitorType,
	SetMonitoringStatusEnumType_Rejected,
	SetMonitoringStatusEnumType_Duplicate,
}SetMonitoringStatusEnumType_t;
int SetMonitoringStatusEnumType_fromString(const char *string);
const char* SetMonitoringStatusEnumType_toString(int type);

// 3.94
typedef enum SetNetworkProfileStatusEnumType
{
	SetNetworkProfileStatusEnumType_Accepted = 1,
	SetNetworkProfileStatusEnumType_Rejected,
	SetNetworkProfileStatusEnumType_Failed,
}SetNetworkProfileStatusEnumType_t;
int SetNetworkProfileStatusEnumType_fromString(const char *string);
const char* SetNetworkProfileStatusEnumType_toString(int type);

// 3.95
typedef enum SetVariableStatusEnumType
{
	SetVariableStatusEnumType_Accepted = 1,
	SetVariableStatusEnumType_Rejected,
	SetVariableStatusEnumType_UnknownComponent,
	SetVariableStatusEnumType_UnknownVariable,
	SetVariableStatusEnumType_NotSupportedAttributeType,
	SetVariableStatusEnumType_RebootRequired,
}SetVariableStatusEnumType_t;
int SetVariableStatusEnumType_fromString(const char *string);
const char* SetVariableStatusEnumType_toString(int type);

// 3.96
typedef enum TariffChangeStatusEnumType
{
	TariffChangeStatusEnumType_Accepted = 1,
	TariffChangeStatusEnumType_Rejected,
	TariffChangeStatusEnumType_TooManyElements,
	TariffChangeStatusEnumType_ConditionNotSupported,
	TariffChangeStatusEnumType_TxNotFound,
	TariffChangeStatusEnumType_NoCurrencyChange,
}TariffChangeStatusEnumType_t;
int TariffChangeStatusEnumType_fromString(const char *string);
const char* TariffChangeStatusEnumType_toString(int type);

// 3.97
typedef enum TariffClearStatusEnumType
{
	TariffClearStatusEnumType_Accepted = 1,
	TariffClearStatusEnumType_Rejected,
	TariffClearStatusEnumType_NoTariff,
}TariffClearStatusEnumType_t;
int TariffClearStatusEnumType_fromString(const char *string);
const char* TariffClearStatusEnumType_toString(int type);

// 3.98
typedef enum TariffCostEnumType
{
	TariffCostEnumType_NormalCost = 1,
	TariffCostEnumType_MinCost,
	TariffCostEnumType_MaxCost,
}TariffCostEnumType_t;
int TariffCostEnumType_fromString(const char *string);
const char* TariffCostEnumType_toString(int type);

// 3.99
typedef enum TariffGetStatusEnumType
{
	TariffGetStatusEnumType_Accepted = 1,
	TariffGetStatusEnumType_Rejected,
	TariffGetStatusEnumType_NoTariff,
}TariffGetStatusEnumType_t;
int TariffGetStatusEnumType_fromString(const char *string);
const char* TariffGetStatusEnumType_toString(int type);

// 3.100
typedef enum TariffKindEnumType
{
	TariffKindEnumType_DefaultTariff = 1,
	TariffKindEnumType_DriverTariff,
}TariffKindEnumType_t;
int TariffKindEnumType_fromString(const char *string);
const char* TariffKindEnumType_toString(int type);

// 3.101
typedef enum TariffSetStatusEnumType
{
	TariffSetStatusEnumType_Accepted = 1,
	TariffSetStatusEnumType_Rejected,
	TariffSetStatusEnumType_TooManyElements,
	TariffSetStatusEnumType_ConditionNotSupported,
	TariffSetStatusEnumType_DuplicateTariffId,
}TariffSetStatusEnumType_t;
int TariffSetStatusEnumType_fromString(const char *string);
const char* TariffSetStatusEnumType_toString(int type);

// 3.102
typedef enum TransactionEventEnumType
{
	TransactionEventEnumType_Ended = 1,
	TransactionEventEnumType_Started,
	TransactionEventEnumType_Updated,
}TransactionEventEnumType_t;
int TransactionEventEnumType_fromString(const char *string);
const char* TransactionEventEnumType_toString(int type);

// 3.103
typedef enum TriggerMessageStatusEnumType
{
	TriggerMessageStatusEnumType_Accepted = 1,
	TriggerMessageStatusEnumType_Rejected,
	TriggerMessageStatusEnumType_NotImplemented,
}TriggerMessageStatusEnumType_t;
int TriggerMessageStatusEnumType_fromString(const char *string);
const char* TriggerMessageStatusEnumType_toString(int type);

// 3.104
typedef enum TriggerReasonEnumType
{
	TriggerReasonEnumType_AbnormalCondition = 1,
	TriggerReasonEnumType_Authorized,
	TriggerReasonEnumType_CablePluggedIn,
	TriggerReasonEnumType_ChargingRateChanged,
	TriggerReasonEnumType_ChargingStateChanged,
	TriggerReasonEnumType_CostLimitReached,
	TriggerReasonEnumType_Deauthorized,
	TriggerReasonEnumType_EnergyLimitReached,
	TriggerReasonEnumType_EVCommunicationLost,
	TriggerReasonEnumType_EVConnectTimeout,
	TriggerReasonEnumType_EVDeparted,
	TriggerReasonEnumType_EVDetected,
	TriggerReasonEnumType_LimitSet,
	TriggerReasonEnumType_MeterValueClock,
	TriggerReasonEnumType_MeterValuePeriodic,
	TriggerReasonEnumType_OperationModeChanged,
	TriggerReasonEnumType_RemoteStart,
	TriggerReasonEnumType_RemoteStop,
	TriggerReasonEnumType_ResetCommand,
	TriggerReasonEnumType_RunningCost,
	TriggerReasonEnumType_SignedDataReceived,
	TriggerReasonEnumType_SoCLimitReached,
	TriggerReasonEnumType_StopAuthorized,
	TriggerReasonEnumType_TariffChanged,
	TriggerReasonEnumType_TariffNotAccepted,
	TriggerReasonEnumType_TimeLimitReached,
	TriggerReasonEnumType_Trigger,
	TriggerReasonEnumType_TxResumed,
	TriggerReasonEnumType_UnlockCommand,
}TriggerReasonEnumType_t;
int TriggerReasonEnumType_fromString(const char *string);
const char* TriggerReasonEnumType_toString(int type);

// 3.105
typedef enum UnlockStatusEnumType
{
	UnlockStatusEnumType_Unlocked = 1,
	UnlockStatusEnumType_UnlockFailed,
	UnlockStatusEnumType_OngoingAuthorizedTransaction,
	UnlockStatusEnumType_UnknownConnector,
}UnlockStatusEnumType_t;
int UnlockStatusEnumType_fromString(const char *string);
const char* UnlockStatusEnumType_toString(int type);

// 3.106
typedef enum UnpublishFirmwareStatusEnumType
{
	UnpublishFirmwareStatusEnumType_DownloadOngoing = 1,
	UnpublishFirmwareStatusEnumType_NoFirmware,
	UnpublishFirmwareStatusEnumType_Unpublished,
}UnpublishFirmwareStatusEnumType_t;
int UnpublishFirmwareStatusEnumType_fromString(const char *string);
const char* UnpublishFirmwareStatusEnumType_toString(int type);

// 3.107
typedef enum UpdateEnumType
{
	UpdateEnumType_Differential = 1,
	UpdateEnumType_Full,
}UpdateEnumType_t;
int UpdateEnumType_fromString(const char *string);
const char* UpdateEnumType_toString(int type);

// 3.108
typedef enum UpdateFirmwareStatusEnumType
{
	UpdateFirmwareStatusEnumType_Accepted = 1,
	UpdateFirmwareStatusEnumType_Rejected,
	UpdateFirmwareStatusEnumType_AcceptedCanceled,
	UpdateFirmwareStatusEnumType_InvalidCertificate,
	UpdateFirmwareStatusEnumType_RevokedCertificate,
}UpdateFirmwareStatusEnumType_t;
int UpdateFirmwareStatusEnumType_fromString(const char *string);
const char* UpdateFirmwareStatusEnumType_toString(int type);

// 3.109
typedef enum UploadLogStatusEnumType
{
	UploadLogStatusEnumType_BadMessage = 1,
	UploadLogStatusEnumType_Idle,
	UploadLogStatusEnumType_NotSupportedOperation,
	UploadLogStatusEnumType_PermissionDenied,
	UploadLogStatusEnumType_Uploaded,
	UploadLogStatusEnumType_UploadFailure,
	UploadLogStatusEnumType_Uploading,
	UploadLogStatusEnumType_AcceptedCanceled,
}UploadLogStatusEnumType_t;
int UploadLogStatusEnumType_fromString(const char *string);
const char* UploadLogStatusEnumType_toString(int type);

// 3.110
typedef enum VPNEnumType
{
	VPNEnumType_IKEv2 = 1,
	VPNEnumType_IPSec,
	VPNEnumType_L2TP,
	VPNEnumType_PPTP,
}VPNEnumType_t;
int VPNEnumType_fromString(const char *string);
const char* VPNEnumType_toString(int type);

#endif //__OCPP21_ENUM_H__
