#[derive(Debug, Clone, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum IdTagInfoStatus {
Accepted,
Blocked,
Expired,
Invalid,
ConcurrentTx,
}
#[cfg(feature = "alloc")]
#[derive(Debug, Clone, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct IdTagInfo {
#[cfg_attr(feature = "serde", serde(rename = "expiryDate"))]
#[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
pub expiry_date: Option<alloc::string::String>,
#[cfg_attr(feature = "serde", serde(rename = "parentIdTag"))]
#[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
pub parent_id_tag: Option<heapless::String<20usize>>,
pub status: IdTagInfoStatus,
}
#[cfg(not(feature = "alloc"))]
#[derive(Debug, Clone, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct IdTagInfo<const ID_TAG_INFO_EXPIRY_DATE_CAP: usize = 1024usize> {
#[cfg_attr(feature = "serde", serde(rename = "expiryDate"))]
#[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
pub expiry_date: Option<heapless::String<ID_TAG_INFO_EXPIRY_DATE_CAP>>,
#[cfg_attr(feature = "serde", serde(rename = "parentIdTag"))]
#[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
pub parent_id_tag: Option<heapless::String<20usize>>,
pub status: IdTagInfoStatus,
}
#[derive(Debug, Clone, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum BootNotificationResponseStatus {
Accepted,
Pending,
Rejected,
}
#[derive(Debug, Clone, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum CancelReservationResponseStatus {
Accepted,
Rejected,
}
#[derive(Debug, Clone, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum ChangeAvailabilityRequestType {
Inoperative,
Operative,
}
#[derive(Debug, Clone, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum ChangeAvailabilityResponseStatus {
Accepted,
Rejected,
Scheduled,
}
#[derive(Debug, Clone, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum ChangeConfigurationResponseStatus {
Accepted,
Rejected,
RebootRequired,
NotSupported,
}
#[derive(Debug, Clone, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum ClearCacheResponseStatus {
Accepted,
Rejected,
}
#[derive(Debug, Clone, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum ChargingProfilePurpose {
ChargePointMaxProfile,
TxDefaultProfile,
TxProfile,
}
#[derive(Debug, Clone, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum ClearChargingProfileResponseStatus {
Accepted,
Unknown,
}
#[derive(Debug, Clone, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum DataTransferResponseStatus {
Accepted,
Rejected,
UnknownMessageId,
UnknownVendorId,
}
#[derive(Debug, Clone, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum DiagnosticsStatusNotificationRequestStatus {
Idle,
Uploaded,
UploadFailed,
Uploading,
}
#[derive(Debug, Clone, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum FirmwareStatusNotificationRequestStatus {
Downloaded,
DownloadFailed,
Downloading,
Idle,
InstallationFailed,
Installing,
Installed,
}
#[derive(Debug, Clone, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum ChargingRateUnit {
A,
W,
}
#[derive(Debug, Clone, PartialEq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct ChargingSchedulePeriodItem {
pub limit: f64,
#[cfg_attr(feature = "serde", serde(rename = "numberPhases"))]
#[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
pub number_phases: Option<i64>,
#[cfg_attr(feature = "serde", serde(rename = "startPeriod"))]
pub start_period: i64,
}
#[cfg(feature = "alloc")]
#[derive(Debug, Clone, PartialEq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct ChargingSchedule {
#[cfg_attr(feature = "serde", serde(rename = "chargingRateUnit"))]
pub charging_rate_unit: ChargingRateUnit,
#[cfg_attr(feature = "serde", serde(rename = "chargingSchedulePeriod"))]
pub charging_schedule_period: alloc::vec::Vec<ChargingSchedulePeriodItem>,
#[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
pub duration: Option<i64>,
#[cfg_attr(feature = "serde", serde(rename = "minChargingRate"))]
#[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
pub min_charging_rate: Option<f64>,
#[cfg_attr(feature = "serde", serde(rename = "startSchedule"))]
#[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
pub start_schedule: Option<alloc::string::String>,
}
#[cfg(not(feature = "alloc"))]
#[derive(Debug, Clone, PartialEq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct ChargingSchedule<
const CHARGING_SCHEDULE_CHARGING_SCHEDULE_PERIOD_CAP: usize = 16usize,
const CHARGING_SCHEDULE_START_SCHEDULE_CAP: usize = 1024usize,
> {
#[cfg_attr(feature = "serde", serde(rename = "chargingRateUnit"))]
pub charging_rate_unit: ChargingRateUnit,
#[cfg_attr(feature = "serde", serde(rename = "chargingSchedulePeriod"))]
pub charging_schedule_period: heapless::Vec<
ChargingSchedulePeriodItem,
CHARGING_SCHEDULE_CHARGING_SCHEDULE_PERIOD_CAP,
>,
#[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
pub duration: Option<i64>,
#[cfg_attr(feature = "serde", serde(rename = "minChargingRate"))]
#[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
pub min_charging_rate: Option<f64>,
#[cfg_attr(feature = "serde", serde(rename = "startSchedule"))]
#[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
pub start_schedule: Option<heapless::String<CHARGING_SCHEDULE_START_SCHEDULE_CAP>>,
}
#[derive(Debug, Clone, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum GetCompositeScheduleResponseStatus {
Accepted,
Rejected,
}
#[derive(Debug, Clone, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct ConfigurationKeyItem {
pub key: heapless::String<50usize>,
pub readonly: bool,
#[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
pub value: Option<heapless::String<500usize>>,
}
#[derive(Debug, Clone, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum Context {
#[cfg_attr(feature = "serde", serde(rename = "Interruption.Begin"))]
InterruptionBegin,
#[cfg_attr(feature = "serde", serde(rename = "Interruption.End"))]
InterruptionEnd,
#[cfg_attr(feature = "serde", serde(rename = "Sample.Clock"))]
SampleClock,
#[cfg_attr(feature = "serde", serde(rename = "Sample.Periodic"))]
SamplePeriodic,
#[cfg_attr(feature = "serde", serde(rename = "Transaction.Begin"))]
TransactionBegin,
#[cfg_attr(feature = "serde", serde(rename = "Transaction.End"))]
TransactionEnd,
Trigger,
Other,
}
#[derive(Debug, Clone, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum Format {
Raw,
SignedData,
}
#[derive(Debug, Clone, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum Location {
Cable,
EV,
Inlet,
Outlet,
Body,
}
#[derive(Debug, Clone, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum Measurand {
#[cfg_attr(feature = "serde", serde(rename = "Energy.Active.Export.Register"))]
EnergyActiveExportRegister,
#[cfg_attr(feature = "serde", serde(rename = "Energy.Active.Import.Register"))]
EnergyActiveImportRegister,
#[cfg_attr(feature = "serde", serde(rename = "Energy.Reactive.Export.Register"))]
EnergyReactiveExportRegister,
#[cfg_attr(feature = "serde", serde(rename = "Energy.Reactive.Import.Register"))]
EnergyReactiveImportRegister,
#[cfg_attr(feature = "serde", serde(rename = "Energy.Active.Export.Interval"))]
EnergyActiveExportInterval,
#[cfg_attr(feature = "serde", serde(rename = "Energy.Active.Import.Interval"))]
EnergyActiveImportInterval,
#[cfg_attr(feature = "serde", serde(rename = "Energy.Reactive.Export.Interval"))]
EnergyReactiveExportInterval,
#[cfg_attr(feature = "serde", serde(rename = "Energy.Reactive.Import.Interval"))]
EnergyReactiveImportInterval,
#[cfg_attr(feature = "serde", serde(rename = "Power.Active.Export"))]
PowerActiveExport,
#[cfg_attr(feature = "serde", serde(rename = "Power.Active.Import"))]
PowerActiveImport,
#[cfg_attr(feature = "serde", serde(rename = "Power.Offered"))]
PowerOffered,
#[cfg_attr(feature = "serde", serde(rename = "Power.Reactive.Export"))]
PowerReactiveExport,
#[cfg_attr(feature = "serde", serde(rename = "Power.Reactive.Import"))]
PowerReactiveImport,
#[cfg_attr(feature = "serde", serde(rename = "Power.Factor"))]
PowerFactor,
#[cfg_attr(feature = "serde", serde(rename = "Current.Import"))]
CurrentImport,
#[cfg_attr(feature = "serde", serde(rename = "Current.Export"))]
CurrentExport,
#[cfg_attr(feature = "serde", serde(rename = "Current.Offered"))]
CurrentOffered,
Voltage,
Frequency,
Temperature,
SoC,
RPM,
}
#[derive(Debug, Clone, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum Phase {
L1,
L2,
L3,
N,
#[cfg_attr(feature = "serde", serde(rename = "L1-N"))]
L1N,
#[cfg_attr(feature = "serde", serde(rename = "L2-N"))]
L2N,
#[cfg_attr(feature = "serde", serde(rename = "L3-N"))]
L3N,
#[cfg_attr(feature = "serde", serde(rename = "L1-L2"))]
L1L2,
#[cfg_attr(feature = "serde", serde(rename = "L2-L3"))]
L2L3,
#[cfg_attr(feature = "serde", serde(rename = "L3-L1"))]
L3L1,
}
#[derive(Debug, Clone, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum SampledValueItemUnit {
Wh,
#[cfg_attr(feature = "serde", serde(rename = "kWh"))]
KWh,
#[cfg_attr(feature = "serde", serde(rename = "varh"))]
Varh,
#[cfg_attr(feature = "serde", serde(rename = "kvarh"))]
Kvarh,
W,
#[cfg_attr(feature = "serde", serde(rename = "kW"))]
KW,
VA,
#[cfg_attr(feature = "serde", serde(rename = "kVA"))]
KVA,
#[cfg_attr(feature = "serde", serde(rename = "var"))]
Var,
#[cfg_attr(feature = "serde", serde(rename = "kvar"))]
Kvar,
A,
V,
K,
Celcius,
Celsius,
Fahrenheit,
Percent,
}
#[cfg(feature = "alloc")]
#[derive(Debug, Clone, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct SampledValueItem {
#[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
pub context: Option<Context>,
#[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
pub format: Option<Format>,
#[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
pub location: Option<Location>,
#[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
pub measurand: Option<Measurand>,
#[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
pub phase: Option<Phase>,
#[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
pub unit: Option<SampledValueItemUnit>,
pub value: alloc::string::String,
}
#[cfg(not(feature = "alloc"))]
#[derive(Debug, Clone, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct SampledValueItem<const SAMPLED_VALUE_ITEM_VALUE_CAP: usize = 1024usize> {
#[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
pub context: Option<Context>,
#[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
pub format: Option<Format>,
#[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
pub location: Option<Location>,
#[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
pub measurand: Option<Measurand>,
#[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
pub phase: Option<Phase>,
#[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
pub unit: Option<SampledValueItemUnit>,
pub value: heapless::String<SAMPLED_VALUE_ITEM_VALUE_CAP>,
}
#[cfg(feature = "alloc")]
#[derive(Debug, Clone, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct MeterValueItem {
#[cfg_attr(feature = "serde", serde(rename = "sampledValue"))]
pub sampled_value: alloc::vec::Vec<SampledValueItem>,
pub timestamp: alloc::string::String,
}
#[cfg(not(feature = "alloc"))]
#[derive(Debug, Clone, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct MeterValueItem<
const METER_VALUE_ITEM_SAMPLED_VALUE_CAP: usize = 16usize,
const SAMPLED_VALUE_ITEM_VALUE_CAP: usize = 1024usize,
const METER_VALUE_ITEM_TIMESTAMP_CAP: usize = 1024usize,
> {
#[cfg_attr(feature = "serde", serde(rename = "sampledValue"))]
pub sampled_value: heapless::Vec<
SampledValueItem<SAMPLED_VALUE_ITEM_VALUE_CAP>,
METER_VALUE_ITEM_SAMPLED_VALUE_CAP,
>,
pub timestamp: heapless::String<METER_VALUE_ITEM_TIMESTAMP_CAP>,
}
#[derive(Debug, Clone, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum ChargingProfileKind {
Absolute,
Recurring,
Relative,
}
#[derive(Debug, Clone, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum RecurrencyKind {
Daily,
Weekly,
}
#[cfg(feature = "alloc")]
#[derive(Debug, Clone, PartialEq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct ChargingProfile {
#[cfg_attr(feature = "serde", serde(rename = "chargingProfileId"))]
pub charging_profile_id: i64,
#[cfg_attr(feature = "serde", serde(rename = "chargingProfileKind"))]
pub charging_profile_kind: ChargingProfileKind,
#[cfg_attr(feature = "serde", serde(rename = "chargingProfilePurpose"))]
pub charging_profile_purpose: ChargingProfilePurpose,
#[cfg_attr(feature = "serde", serde(rename = "chargingSchedule"))]
pub charging_schedule: ChargingSchedule,
#[cfg_attr(feature = "serde", serde(rename = "recurrencyKind"))]
#[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
pub recurrency_kind: Option<RecurrencyKind>,
#[cfg_attr(feature = "serde", serde(rename = "stackLevel"))]
pub stack_level: i64,
#[cfg_attr(feature = "serde", serde(rename = "transactionId"))]
#[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
pub transaction_id: Option<i64>,
#[cfg_attr(feature = "serde", serde(rename = "validFrom"))]
#[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
pub valid_from: Option<alloc::string::String>,
#[cfg_attr(feature = "serde", serde(rename = "validTo"))]
#[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
pub valid_to: Option<alloc::string::String>,
}
#[cfg(not(feature = "alloc"))]
#[derive(Debug, Clone, PartialEq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct ChargingProfile<
const CHARGING_SCHEDULE_CHARGING_SCHEDULE_PERIOD_CAP: usize = 16usize,
const CHARGING_SCHEDULE_START_SCHEDULE_CAP: usize = 1024usize,
const CHARGING_PROFILE_VALID_FROM_CAP: usize = 1024usize,
const CHARGING_PROFILE_VALID_TO_CAP: usize = 1024usize,
> {
#[cfg_attr(feature = "serde", serde(rename = "chargingProfileId"))]
pub charging_profile_id: i64,
#[cfg_attr(feature = "serde", serde(rename = "chargingProfileKind"))]
pub charging_profile_kind: ChargingProfileKind,
#[cfg_attr(feature = "serde", serde(rename = "chargingProfilePurpose"))]
pub charging_profile_purpose: ChargingProfilePurpose,
#[cfg_attr(feature = "serde", serde(rename = "chargingSchedule"))]
pub charging_schedule: ChargingSchedule<
CHARGING_SCHEDULE_CHARGING_SCHEDULE_PERIOD_CAP,
CHARGING_SCHEDULE_START_SCHEDULE_CAP,
>,
#[cfg_attr(feature = "serde", serde(rename = "recurrencyKind"))]
#[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
pub recurrency_kind: Option<RecurrencyKind>,
#[cfg_attr(feature = "serde", serde(rename = "stackLevel"))]
pub stack_level: i64,
#[cfg_attr(feature = "serde", serde(rename = "transactionId"))]
#[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
pub transaction_id: Option<i64>,
#[cfg_attr(feature = "serde", serde(rename = "validFrom"))]
#[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
pub valid_from: Option<heapless::String<CHARGING_PROFILE_VALID_FROM_CAP>>,
#[cfg_attr(feature = "serde", serde(rename = "validTo"))]
#[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
pub valid_to: Option<heapless::String<CHARGING_PROFILE_VALID_TO_CAP>>,
}
#[derive(Debug, Clone, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum RemoteStartTransactionResponseStatus {
Accepted,
Rejected,
}
#[derive(Debug, Clone, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum RemoteStopTransactionResponseStatus {
Accepted,
Rejected,
}
#[derive(Debug, Clone, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum ReserveNowResponseStatus {
Accepted,
Faulted,
Occupied,
Rejected,
Unavailable,
}
#[derive(Debug, Clone, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum ResetRequestType {
Hard,
Soft,
}
#[derive(Debug, Clone, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum ResetResponseStatus {
Accepted,
Rejected,
}
#[cfg(feature = "alloc")]
#[derive(Debug, Clone, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct LocalAuthorizationListItem {
#[cfg_attr(feature = "serde", serde(rename = "idTag"))]
pub id_tag: super::IdTag,
#[cfg_attr(feature = "serde", serde(rename = "idTagInfo"))]
#[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
pub id_tag_info: Option<IdTagInfo>,
}
#[cfg(not(feature = "alloc"))]
#[derive(Debug, Clone, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct LocalAuthorizationListItem<
const ID_TAG_INFO_EXPIRY_DATE_CAP: usize = 1024usize,
> {
#[cfg_attr(feature = "serde", serde(rename = "idTag"))]
pub id_tag: super::IdTag,
#[cfg_attr(feature = "serde", serde(rename = "idTagInfo"))]
#[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
pub id_tag_info: Option<IdTagInfo<ID_TAG_INFO_EXPIRY_DATE_CAP>>,
}
#[derive(Debug, Clone, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum UpdateType {
Differential,
Full,
}
#[derive(Debug, Clone, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum SendLocalListResponseStatus {
Accepted,
Failed,
NotSupported,
VersionMismatch,
}
#[cfg(feature = "alloc")]
#[derive(Debug, Clone, PartialEq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct CsChargingProfiles {
#[cfg_attr(feature = "serde", serde(rename = "chargingProfileId"))]
pub charging_profile_id: i64,
#[cfg_attr(feature = "serde", serde(rename = "chargingProfileKind"))]
pub charging_profile_kind: ChargingProfileKind,
#[cfg_attr(feature = "serde", serde(rename = "chargingProfilePurpose"))]
pub charging_profile_purpose: ChargingProfilePurpose,
#[cfg_attr(feature = "serde", serde(rename = "chargingSchedule"))]
pub charging_schedule: ChargingSchedule,
#[cfg_attr(feature = "serde", serde(rename = "recurrencyKind"))]
#[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
pub recurrency_kind: Option<RecurrencyKind>,
#[cfg_attr(feature = "serde", serde(rename = "stackLevel"))]
pub stack_level: i64,
#[cfg_attr(feature = "serde", serde(rename = "transactionId"))]
#[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
pub transaction_id: Option<i64>,
#[cfg_attr(feature = "serde", serde(rename = "validFrom"))]
#[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
pub valid_from: Option<alloc::string::String>,
#[cfg_attr(feature = "serde", serde(rename = "validTo"))]
#[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
pub valid_to: Option<alloc::string::String>,
}
#[cfg(not(feature = "alloc"))]
#[derive(Debug, Clone, PartialEq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct CsChargingProfiles<
const CHARGING_SCHEDULE_CHARGING_SCHEDULE_PERIOD_CAP: usize = 16usize,
const CHARGING_SCHEDULE_START_SCHEDULE_CAP: usize = 1024usize,
const CS_CHARGING_PROFILES_VALID_FROM_CAP: usize = 1024usize,
const CS_CHARGING_PROFILES_VALID_TO_CAP: usize = 1024usize,
> {
#[cfg_attr(feature = "serde", serde(rename = "chargingProfileId"))]
pub charging_profile_id: i64,
#[cfg_attr(feature = "serde", serde(rename = "chargingProfileKind"))]
pub charging_profile_kind: ChargingProfileKind,
#[cfg_attr(feature = "serde", serde(rename = "chargingProfilePurpose"))]
pub charging_profile_purpose: ChargingProfilePurpose,
#[cfg_attr(feature = "serde", serde(rename = "chargingSchedule"))]
pub charging_schedule: ChargingSchedule<
CHARGING_SCHEDULE_CHARGING_SCHEDULE_PERIOD_CAP,
CHARGING_SCHEDULE_START_SCHEDULE_CAP,
>,
#[cfg_attr(feature = "serde", serde(rename = "recurrencyKind"))]
#[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
pub recurrency_kind: Option<RecurrencyKind>,
#[cfg_attr(feature = "serde", serde(rename = "stackLevel"))]
pub stack_level: i64,
#[cfg_attr(feature = "serde", serde(rename = "transactionId"))]
#[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
pub transaction_id: Option<i64>,
#[cfg_attr(feature = "serde", serde(rename = "validFrom"))]
#[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
pub valid_from: Option<heapless::String<CS_CHARGING_PROFILES_VALID_FROM_CAP>>,
#[cfg_attr(feature = "serde", serde(rename = "validTo"))]
#[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
pub valid_to: Option<heapless::String<CS_CHARGING_PROFILES_VALID_TO_CAP>>,
}
#[derive(Debug, Clone, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum SetChargingProfileResponseStatus {
Accepted,
Rejected,
NotSupported,
}
#[derive(Debug, Clone, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum ErrorCode {
ConnectorLockFailure,
EVCommunicationError,
GroundFailure,
HighTemperature,
InternalError,
LocalListConflict,
NoError,
OtherError,
OverCurrentFailure,
PowerMeterFailure,
PowerSwitchFailure,
ReaderFailure,
ResetFailure,
UnderVoltage,
OverVoltage,
WeakSignal,
}
#[derive(Debug, Clone, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum StatusNotificationRequestStatus {
Available,
Preparing,
Charging,
SuspendedEVSE,
SuspendedEV,
Finishing,
Reserved,
Unavailable,
Faulted,
}
#[derive(Debug, Clone, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum Reason {
EmergencyStop,
EVDisconnected,
HardReset,
Local,
Other,
PowerLoss,
Reboot,
Remote,
SoftReset,
UnlockCommand,
DeAuthorized,
}
#[cfg(feature = "alloc")]
#[derive(Debug, Clone, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct TransactionDataItem {
#[cfg_attr(feature = "serde", serde(rename = "sampledValue"))]
pub sampled_value: alloc::vec::Vec<SampledValueItem>,
pub timestamp: alloc::string::String,
}
#[cfg(not(feature = "alloc"))]
#[derive(Debug, Clone, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct TransactionDataItem<
const TRANSACTION_DATA_ITEM_SAMPLED_VALUE_CAP: usize = 16usize,
const SAMPLED_VALUE_ITEM_VALUE_CAP: usize = 1024usize,
const TRANSACTION_DATA_ITEM_TIMESTAMP_CAP: usize = 1024usize,
> {
#[cfg_attr(feature = "serde", serde(rename = "sampledValue"))]
pub sampled_value: heapless::Vec<
SampledValueItem<SAMPLED_VALUE_ITEM_VALUE_CAP>,
TRANSACTION_DATA_ITEM_SAMPLED_VALUE_CAP,
>,
pub timestamp: heapless::String<TRANSACTION_DATA_ITEM_TIMESTAMP_CAP>,
}
#[derive(Debug, Clone, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum RequestedMessage {
BootNotification,
DiagnosticsStatusNotification,
FirmwareStatusNotification,
Heartbeat,
MeterValues,
StatusNotification,
}
#[derive(Debug, Clone, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum TriggerMessageResponseStatus {
Accepted,
Rejected,
NotImplemented,
}
#[derive(Debug, Clone, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum UnlockConnectorResponseStatus {
Unlocked,
UnlockFailed,
NotSupported,
}