1#[derive(Debug, Clone, PartialEq, Eq)]
6#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
7pub struct CustomData {
8 #[cfg_attr(feature = "serde", serde(rename = "vendorId"))]
9 pub vendor_id: heapless::String<255usize>,
10}
11#[derive(Debug, Clone, PartialEq, Eq)]
13#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
14pub struct AdditionalInfo {
15 #[cfg_attr(feature = "serde", serde(rename = "additionalIdToken"))]
17 pub additional_id_token: heapless::String<36usize>,
18 #[cfg_attr(feature = "serde", serde(rename = "customData"))]
19 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
20 pub custom_data: Option<CustomData>,
21 pub r#type: heapless::String<50usize>,
23}
24#[derive(Debug, Clone, PartialEq, Eq)]
26#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
27pub enum IdTokenEnum {
28 Central,
29 #[cfg_attr(feature = "serde", serde(rename = "eMAID"))]
30 EMAID,
31 ISO14443,
32 ISO15693,
33 KeyCode,
34 Local,
35 MacAddress,
36 NoAuthorization,
37}
38#[cfg(feature = "alloc")]
39#[derive(Debug, Clone, PartialEq, Eq)]
41#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
42pub struct IdToken {
43 #[cfg_attr(feature = "serde", serde(rename = "additionalInfo"))]
44 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
45 pub additional_info: Option<alloc::vec::Vec<AdditionalInfo>>,
46 #[cfg_attr(feature = "serde", serde(rename = "customData"))]
47 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
48 pub custom_data: Option<CustomData>,
49 #[cfg_attr(feature = "serde", serde(rename = "idToken"))]
51 pub id_token: heapless::String<36usize>,
52 pub r#type: IdTokenEnum,
53}
54#[cfg(not(feature = "alloc"))]
55#[derive(Debug, Clone, PartialEq, Eq)]
57#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
58pub struct IdToken<const ID_TOKEN_ADDITIONAL_INFO_CAP: usize = 16usize> {
59 #[cfg_attr(feature = "serde", serde(rename = "additionalInfo"))]
60 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
61 pub additional_info: Option<
62 heapless::Vec<AdditionalInfo, ID_TOKEN_ADDITIONAL_INFO_CAP>,
63 >,
64 #[cfg_attr(feature = "serde", serde(rename = "customData"))]
65 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
66 pub custom_data: Option<CustomData>,
67 #[cfg_attr(feature = "serde", serde(rename = "idToken"))]
69 pub id_token: heapless::String<36usize>,
70 pub r#type: IdTokenEnum,
71}
72#[derive(Debug, Clone, PartialEq, Eq)]
74#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
75pub enum HashAlgorithmEnum {
76 SHA256,
77 SHA384,
78 SHA512,
79}
80#[derive(Debug, Clone, PartialEq, Eq)]
81#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
82pub struct OCSPRequestData {
83 #[cfg_attr(feature = "serde", serde(rename = "customData"))]
84 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
85 pub custom_data: Option<CustomData>,
86 #[cfg_attr(feature = "serde", serde(rename = "hashAlgorithm"))]
87 pub hash_algorithm: HashAlgorithmEnum,
88 #[cfg_attr(feature = "serde", serde(rename = "issuerKeyHash"))]
90 pub issuer_key_hash: heapless::String<128usize>,
91 #[cfg_attr(feature = "serde", serde(rename = "issuerNameHash"))]
93 pub issuer_name_hash: heapless::String<128usize>,
94 #[cfg_attr(feature = "serde", serde(rename = "responderURL"))]
96 pub responder_u_r_l: heapless::String<512usize>,
97 #[cfg_attr(feature = "serde", serde(rename = "serialNumber"))]
99 pub serial_number: heapless::String<40usize>,
100}
101#[derive(Debug, Clone, PartialEq, Eq)]
105#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
106pub enum AuthorizeCertificateStatusEnum {
107 Accepted,
108 SignatureError,
109 CertificateExpired,
110 CertificateRevoked,
111 NoCertificateAvailable,
112 CertChainError,
113 ContractCancelled,
114}
115#[derive(Debug, Clone, PartialEq, Eq)]
119#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
120pub enum MessageFormatEnum {
121 ASCII,
122 HTML,
123 URI,
124 UTF8,
125}
126#[derive(Debug, Clone, PartialEq, Eq)]
130#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
131pub struct MessageContent {
132 pub content: heapless::String<512usize>,
136 #[cfg_attr(feature = "serde", serde(rename = "customData"))]
137 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
138 pub custom_data: Option<CustomData>,
139 pub format: MessageFormatEnum,
140 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
144 pub language: Option<heapless::String<8usize>>,
145}
146#[derive(Debug, Clone, PartialEq, Eq)]
150#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
151pub enum AuthorizationStatusEnum {
152 Accepted,
153 Blocked,
154 ConcurrentTx,
155 Expired,
156 Invalid,
157 NoCredit,
158 NotAllowedTypeEVSE,
159 NotAtThisLocation,
160 NotAtThisTime,
161 Unknown,
162}
163#[cfg(feature = "alloc")]
164#[derive(Debug, Clone, PartialEq, Eq)]
169#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
170pub struct IdTokenInfo {
171 #[cfg_attr(feature = "serde", serde(rename = "cacheExpiryDateTime"))]
175 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
176 pub cache_expiry_date_time: Option<alloc::string::String>,
177 #[cfg_attr(feature = "serde", serde(rename = "chargingPriority"))]
179 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
180 pub charging_priority: Option<i64>,
181 #[cfg_attr(feature = "serde", serde(rename = "customData"))]
182 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
183 pub custom_data: Option<CustomData>,
184 #[cfg_attr(feature = "serde", serde(rename = "evseId"))]
186 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
187 pub evse_id: Option<alloc::vec::Vec<i64>>,
188 #[cfg_attr(feature = "serde", serde(rename = "groupIdToken"))]
189 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
190 pub group_id_token: Option<IdToken>,
191 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
195 pub language1: Option<heapless::String<8usize>>,
196 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
200 pub language2: Option<heapless::String<8usize>>,
201 #[cfg_attr(feature = "serde", serde(rename = "personalMessage"))]
202 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
203 pub personal_message: Option<MessageContent>,
204 pub status: AuthorizationStatusEnum,
205}
206#[cfg(not(feature = "alloc"))]
207#[derive(Debug, Clone, PartialEq, Eq)]
212#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
213pub struct IdTokenInfo<
214 const ID_TOKEN_INFO_CACHE_EXPIRY_DATE_TIME_CAP: usize = 1024usize,
215 const ID_TOKEN_INFO_EVSE_ID_CAP: usize = 16usize,
216 const ID_TOKEN_ADDITIONAL_INFO_CAP: usize = 16usize,
217> {
218 #[cfg_attr(feature = "serde", serde(rename = "cacheExpiryDateTime"))]
222 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
223 pub cache_expiry_date_time: Option<
224 heapless::String<ID_TOKEN_INFO_CACHE_EXPIRY_DATE_TIME_CAP>,
225 >,
226 #[cfg_attr(feature = "serde", serde(rename = "chargingPriority"))]
228 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
229 pub charging_priority: Option<i64>,
230 #[cfg_attr(feature = "serde", serde(rename = "customData"))]
231 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
232 pub custom_data: Option<CustomData>,
233 #[cfg_attr(feature = "serde", serde(rename = "evseId"))]
235 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
236 pub evse_id: Option<heapless::Vec<i64, ID_TOKEN_INFO_EVSE_ID_CAP>>,
237 #[cfg_attr(feature = "serde", serde(rename = "groupIdToken"))]
238 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
239 pub group_id_token: Option<IdToken<ID_TOKEN_ADDITIONAL_INFO_CAP>>,
240 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
244 pub language1: Option<heapless::String<8usize>>,
245 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
249 pub language2: Option<heapless::String<8usize>>,
250 #[cfg_attr(feature = "serde", serde(rename = "personalMessage"))]
251 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
252 pub personal_message: Option<MessageContent>,
253 pub status: AuthorizationStatusEnum,
254}
255#[derive(Debug, Clone, PartialEq, Eq)]
259#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
260pub struct Modem {
261 #[cfg_attr(feature = "serde", serde(rename = "customData"))]
262 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
263 pub custom_data: Option<CustomData>,
264 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
268 pub iccid: Option<heapless::String<20usize>>,
269 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
273 pub imsi: Option<heapless::String<20usize>>,
274}
275#[derive(Debug, Clone, PartialEq, Eq)]
279#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
280pub struct ChargingStation {
281 #[cfg_attr(feature = "serde", serde(rename = "customData"))]
282 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
283 pub custom_data: Option<CustomData>,
284 #[cfg_attr(feature = "serde", serde(rename = "firmwareVersion"))]
286 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
287 pub firmware_version: Option<heapless::String<50usize>>,
288 pub model: heapless::String<20usize>,
292 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
293 pub modem: Option<Modem>,
294 #[cfg_attr(feature = "serde", serde(rename = "serialNumber"))]
298 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
299 pub serial_number: Option<heapless::String<25usize>>,
300 #[cfg_attr(feature = "serde", serde(rename = "vendorName"))]
302 pub vendor_name: heapless::String<50usize>,
303}
304#[derive(Debug, Clone, PartialEq, Eq)]
306#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
307pub enum BootReasonEnum {
308 ApplicationReset,
309 FirmwareUpdate,
310 LocalReset,
311 PowerUp,
312 RemoteReset,
313 ScheduledReset,
314 Triggered,
315 Unknown,
316 Watchdog,
317}
318#[derive(Debug, Clone, PartialEq, Eq)]
321#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
322pub enum RegistrationStatusEnum {
323 Accepted,
324 Pending,
325 Rejected,
326}
327#[derive(Debug, Clone, PartialEq, Eq)]
329#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
330pub struct StatusInfo {
331 #[cfg_attr(feature = "serde", serde(rename = "additionalInfo"))]
333 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
334 pub additional_info: Option<heapless::String<512usize>>,
335 #[cfg_attr(feature = "serde", serde(rename = "customData"))]
336 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
337 pub custom_data: Option<CustomData>,
338 #[cfg_attr(feature = "serde", serde(rename = "reasonCode"))]
340 pub reason_code: heapless::String<20usize>,
341}
342#[derive(Debug, Clone, PartialEq, Eq)]
344#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
345pub enum CancelReservationStatusEnum {
346 Accepted,
347 Rejected,
348}
349#[derive(Debug, Clone, PartialEq, Eq)]
351#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
352pub enum CertificateSigningUseEnum {
353 ChargingStationCertificate,
354 V2GCertificate,
355}
356#[derive(Debug, Clone, PartialEq, Eq)]
358#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
359pub enum CertificateSignedStatusEnum {
360 Accepted,
361 Rejected,
362}
363#[derive(Debug, Clone, PartialEq, Eq)]
367#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
368pub struct EVSE {
369 #[cfg_attr(feature = "serde", serde(rename = "connectorId"))]
371 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
372 pub connector_id: Option<i64>,
373 #[cfg_attr(feature = "serde", serde(rename = "customData"))]
374 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
375 pub custom_data: Option<CustomData>,
376 pub id: i64,
380}
381#[derive(Debug, Clone, PartialEq, Eq)]
383#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
384pub enum OperationalStatusEnum {
385 Inoperative,
386 Operative,
387}
388#[derive(Debug, Clone, PartialEq, Eq)]
390#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
391pub enum ChangeAvailabilityStatusEnum {
392 Accepted,
393 Rejected,
394 Scheduled,
395}
396#[derive(Debug, Clone, PartialEq, Eq)]
398#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
399pub enum ClearCacheStatusEnum {
400 Accepted,
401 Rejected,
402}
403#[derive(Debug, Clone, PartialEq, Eq)]
407#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
408pub enum ChargingProfilePurposeEnum {
409 ChargingStationExternalConstraints,
410 ChargingStationMaxProfile,
411 TxDefaultProfile,
412 TxProfile,
413}
414#[derive(Debug, Clone, PartialEq, Eq)]
418#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
419pub struct ClearChargingProfile {
420 #[cfg_attr(feature = "serde", serde(rename = "chargingProfilePurpose"))]
421 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
422 pub charging_profile_purpose: Option<ChargingProfilePurposeEnum>,
423 #[cfg_attr(feature = "serde", serde(rename = "customData"))]
424 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
425 pub custom_data: Option<CustomData>,
426 #[cfg_attr(feature = "serde", serde(rename = "evseId"))]
430 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
431 pub evse_id: Option<i64>,
432 #[cfg_attr(feature = "serde", serde(rename = "stackLevel"))]
436 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
437 pub stack_level: Option<i64>,
438}
439#[derive(Debug, Clone, PartialEq, Eq)]
441#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
442pub enum ClearChargingProfileStatusEnum {
443 Accepted,
444 Unknown,
445}
446#[derive(Debug, Clone, PartialEq, Eq)]
448#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
449pub enum ClearMessageStatusEnum {
450 Accepted,
451 Unknown,
452}
453#[derive(Debug, Clone, PartialEq, Eq)]
455#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
456pub enum ClearMonitoringStatusEnum {
457 Accepted,
458 Rejected,
459 NotFound,
460}
461#[derive(Debug, Clone, PartialEq, Eq)]
462#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
463pub struct ClearMonitoringResult {
464 #[cfg_attr(feature = "serde", serde(rename = "customData"))]
465 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
466 pub custom_data: Option<CustomData>,
467 pub id: i64,
469 pub status: ClearMonitoringStatusEnum,
470 #[cfg_attr(feature = "serde", serde(rename = "statusInfo"))]
471 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
472 pub status_info: Option<StatusInfo>,
473}
474#[derive(Debug, Clone, PartialEq, Eq)]
476#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
477pub enum ChargingLimitSourceEnum {
478 EMS,
479 Other,
480 SO,
481 CSO,
482}
483#[derive(Debug, Clone, PartialEq, Eq)]
484#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
485pub struct CertificateHashData {
486 #[cfg_attr(feature = "serde", serde(rename = "customData"))]
487 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
488 pub custom_data: Option<CustomData>,
489 #[cfg_attr(feature = "serde", serde(rename = "hashAlgorithm"))]
490 pub hash_algorithm: HashAlgorithmEnum,
491 #[cfg_attr(feature = "serde", serde(rename = "issuerKeyHash"))]
493 pub issuer_key_hash: heapless::String<128usize>,
494 #[cfg_attr(feature = "serde", serde(rename = "issuerNameHash"))]
496 pub issuer_name_hash: heapless::String<128usize>,
497 #[cfg_attr(feature = "serde", serde(rename = "serialNumber"))]
499 pub serial_number: heapless::String<40usize>,
500}
501#[derive(Debug, Clone, PartialEq, Eq)]
503#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
504pub enum CustomerInformationStatusEnum {
505 Accepted,
506 Rejected,
507 Invalid,
508}
509#[derive(Debug, Clone, PartialEq, Eq)]
511#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
512pub enum DataTransferStatusEnum {
513 Accepted,
514 Rejected,
515 UnknownMessageId,
516 UnknownVendorId,
517}
518#[derive(Debug, Clone, PartialEq, Eq)]
520#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
521pub enum DeleteCertificateStatusEnum {
522 Accepted,
523 Failed,
524 NotFound,
525}
526#[derive(Debug, Clone, PartialEq, Eq)]
528#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
529pub enum FirmwareStatusEnum {
530 Downloaded,
531 DownloadFailed,
532 Downloading,
533 DownloadScheduled,
534 DownloadPaused,
535 Idle,
536 InstallationFailed,
537 Installing,
538 Installed,
539 InstallRebooting,
540 InstallScheduled,
541 InstallVerificationFailed,
542 InvalidSignature,
543 SignatureVerified,
544}
545#[derive(Debug, Clone, PartialEq, Eq)]
547#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
548pub enum CertificateActionEnum {
549 Install,
550 Update,
551}
552#[derive(Debug, Clone, PartialEq, Eq)]
554#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
555pub enum Iso15118EVCertificateStatusEnum {
556 Accepted,
557 Failed,
558}
559#[derive(Debug, Clone, PartialEq, Eq)]
561#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
562pub enum ReportBaseEnum {
563 ConfigurationInventory,
564 FullInventory,
565 SummaryInventory,
566}
567#[derive(Debug, Clone, PartialEq, Eq)]
569#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
570pub enum GenericDeviceModelStatusEnum {
571 Accepted,
572 Rejected,
573 NotSupported,
574 EmptyResultSet,
575}
576#[derive(Debug, Clone, PartialEq, Eq)]
578#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
579pub enum GetCertificateStatusEnum {
580 Accepted,
581 Failed,
582}
583#[cfg(feature = "alloc")]
584#[derive(Debug, Clone, PartialEq, Eq)]
588#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
589pub struct ChargingProfileCriterion {
590 #[cfg_attr(feature = "serde", serde(rename = "chargingLimitSource"))]
592 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
593 pub charging_limit_source: Option<heapless::Vec<ChargingLimitSourceEnum, 4usize>>,
594 #[cfg_attr(feature = "serde", serde(rename = "chargingProfileId"))]
596 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
597 pub charging_profile_id: Option<alloc::vec::Vec<i64>>,
598 #[cfg_attr(feature = "serde", serde(rename = "chargingProfilePurpose"))]
599 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
600 pub charging_profile_purpose: Option<ChargingProfilePurposeEnum>,
601 #[cfg_attr(feature = "serde", serde(rename = "customData"))]
602 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
603 pub custom_data: Option<CustomData>,
604 #[cfg_attr(feature = "serde", serde(rename = "stackLevel"))]
608 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
609 pub stack_level: Option<i64>,
610}
611#[cfg(not(feature = "alloc"))]
612#[derive(Debug, Clone, PartialEq, Eq)]
616#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
617pub struct ChargingProfileCriterion<
618 const CHARGING_PROFILE_CRITERION_CHARGING_PROFILE_ID_CAP: usize = 16usize,
619> {
620 #[cfg_attr(feature = "serde", serde(rename = "chargingLimitSource"))]
622 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
623 pub charging_limit_source: Option<heapless::Vec<ChargingLimitSourceEnum, 4usize>>,
624 #[cfg_attr(feature = "serde", serde(rename = "chargingProfileId"))]
626 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
627 pub charging_profile_id: Option<
628 heapless::Vec<i64, CHARGING_PROFILE_CRITERION_CHARGING_PROFILE_ID_CAP>,
629 >,
630 #[cfg_attr(feature = "serde", serde(rename = "chargingProfilePurpose"))]
631 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
632 pub charging_profile_purpose: Option<ChargingProfilePurposeEnum>,
633 #[cfg_attr(feature = "serde", serde(rename = "customData"))]
634 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
635 pub custom_data: Option<CustomData>,
636 #[cfg_attr(feature = "serde", serde(rename = "stackLevel"))]
640 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
641 pub stack_level: Option<i64>,
642}
643#[derive(Debug, Clone, PartialEq, Eq)]
645#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
646pub enum GetChargingProfileStatusEnum {
647 Accepted,
648 NoProfiles,
649}
650#[derive(Debug, Clone, PartialEq, Eq)]
652#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
653pub enum ChargingRateUnitEnum {
654 W,
655 A,
656}
657#[derive(Debug, Clone, PartialEq)]
661#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
662pub struct ChargingSchedulePeriod {
663 #[cfg_attr(feature = "serde", serde(rename = "customData"))]
664 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
665 pub custom_data: Option<CustomData>,
666 pub limit: f64,
670 #[cfg_attr(feature = "serde", serde(rename = "numberPhases"))]
674 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
675 pub number_phases: Option<i64>,
676 #[cfg_attr(feature = "serde", serde(rename = "phaseToUse"))]
678 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
679 pub phase_to_use: Option<i64>,
680 #[cfg_attr(feature = "serde", serde(rename = "startPeriod"))]
684 pub start_period: i64,
685}
686#[cfg(feature = "alloc")]
687#[derive(Debug, Clone, PartialEq)]
690#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
691pub struct CompositeSchedule {
692 #[cfg_attr(feature = "serde", serde(rename = "chargingRateUnit"))]
693 pub charging_rate_unit: ChargingRateUnitEnum,
694 #[cfg_attr(feature = "serde", serde(rename = "chargingSchedulePeriod"))]
695 pub charging_schedule_period: alloc::vec::Vec<ChargingSchedulePeriod>,
696 #[cfg_attr(feature = "serde", serde(rename = "customData"))]
697 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
698 pub custom_data: Option<CustomData>,
699 pub duration: i64,
701 #[cfg_attr(feature = "serde", serde(rename = "evseId"))]
706 pub evse_id: i64,
707 #[cfg_attr(feature = "serde", serde(rename = "scheduleStart"))]
711 pub schedule_start: alloc::string::String,
712}
713#[cfg(not(feature = "alloc"))]
714#[derive(Debug, Clone, PartialEq)]
717#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
718pub struct CompositeSchedule<
719 const COMPOSITE_SCHEDULE_CHARGING_SCHEDULE_PERIOD_CAP: usize = 16usize,
720 const COMPOSITE_SCHEDULE_SCHEDULE_START_CAP: usize = 1024usize,
721> {
722 #[cfg_attr(feature = "serde", serde(rename = "chargingRateUnit"))]
723 pub charging_rate_unit: ChargingRateUnitEnum,
724 #[cfg_attr(feature = "serde", serde(rename = "chargingSchedulePeriod"))]
725 pub charging_schedule_period: heapless::Vec<
726 ChargingSchedulePeriod,
727 COMPOSITE_SCHEDULE_CHARGING_SCHEDULE_PERIOD_CAP,
728 >,
729 #[cfg_attr(feature = "serde", serde(rename = "customData"))]
730 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
731 pub custom_data: Option<CustomData>,
732 pub duration: i64,
734 #[cfg_attr(feature = "serde", serde(rename = "evseId"))]
739 pub evse_id: i64,
740 #[cfg_attr(feature = "serde", serde(rename = "scheduleStart"))]
744 pub schedule_start: heapless::String<COMPOSITE_SCHEDULE_SCHEDULE_START_CAP>,
745}
746#[derive(Debug, Clone, PartialEq, Eq)]
749#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
750pub enum GenericStatusEnum {
751 Accepted,
752 Rejected,
753}
754#[derive(Debug, Clone, PartialEq, Eq)]
756#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
757pub enum MessagePriorityEnum {
758 AlwaysFront,
759 InFront,
760 NormalCycle,
761}
762#[derive(Debug, Clone, PartialEq, Eq)]
764#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
765pub enum MessageStateEnum {
766 Charging,
767 Faulted,
768 Idle,
769 Unavailable,
770}
771#[derive(Debug, Clone, PartialEq, Eq)]
773#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
774pub enum GetDisplayMessagesStatusEnum {
775 Accepted,
776 Unknown,
777}
778#[derive(Debug, Clone, PartialEq, Eq)]
779#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
780pub enum GetCertificateIdUseEnum {
781 V2GRootCertificate,
782 MORootCertificate,
783 CSMSRootCertificate,
784 V2GCertificateChain,
785 ManufacturerRootCertificate,
786}
787#[derive(Debug, Clone, PartialEq, Eq)]
788#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
789pub struct CertificateHashDataChain {
790 #[cfg_attr(feature = "serde", serde(rename = "certificateHashData"))]
791 pub certificate_hash_data: CertificateHashData,
792 #[cfg_attr(feature = "serde", serde(rename = "certificateType"))]
793 pub certificate_type: GetCertificateIdUseEnum,
794 #[cfg_attr(feature = "serde", serde(rename = "childCertificateHashData"))]
795 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
796 pub child_certificate_hash_data: Option<heapless::Vec<CertificateHashData, 4usize>>,
797 #[cfg_attr(feature = "serde", serde(rename = "customData"))]
798 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
799 pub custom_data: Option<CustomData>,
800}
801#[derive(Debug, Clone, PartialEq, Eq)]
803#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
804pub enum GetInstalledCertificateStatusEnum {
805 Accepted,
806 NotFound,
807}
808#[cfg(feature = "alloc")]
809#[derive(Debug, Clone, PartialEq, Eq)]
813#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
814pub struct LogParameters {
815 #[cfg_attr(feature = "serde", serde(rename = "customData"))]
816 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
817 pub custom_data: Option<CustomData>,
818 #[cfg_attr(feature = "serde", serde(rename = "latestTimestamp"))]
822 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
823 pub latest_timestamp: Option<alloc::string::String>,
824 #[cfg_attr(feature = "serde", serde(rename = "oldestTimestamp"))]
828 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
829 pub oldest_timestamp: Option<alloc::string::String>,
830 #[cfg_attr(feature = "serde", serde(rename = "remoteLocation"))]
834 pub remote_location: heapless::String<512usize>,
835}
836#[cfg(not(feature = "alloc"))]
837#[derive(Debug, Clone, PartialEq, Eq)]
841#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
842pub struct LogParameters<
843 const LOG_PARAMETERS_LATEST_TIMESTAMP_CAP: usize = 1024usize,
844 const LOG_PARAMETERS_OLDEST_TIMESTAMP_CAP: usize = 1024usize,
845> {
846 #[cfg_attr(feature = "serde", serde(rename = "customData"))]
847 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
848 pub custom_data: Option<CustomData>,
849 #[cfg_attr(feature = "serde", serde(rename = "latestTimestamp"))]
853 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
854 pub latest_timestamp: Option<heapless::String<LOG_PARAMETERS_LATEST_TIMESTAMP_CAP>>,
855 #[cfg_attr(feature = "serde", serde(rename = "oldestTimestamp"))]
859 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
860 pub oldest_timestamp: Option<heapless::String<LOG_PARAMETERS_OLDEST_TIMESTAMP_CAP>>,
861 #[cfg_attr(feature = "serde", serde(rename = "remoteLocation"))]
865 pub remote_location: heapless::String<512usize>,
866}
867#[derive(Debug, Clone, PartialEq, Eq)]
870#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
871pub enum LogEnum {
872 DiagnosticsLog,
873 SecurityLog,
874}
875#[derive(Debug, Clone, PartialEq, Eq)]
877#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
878pub enum LogStatusEnum {
879 Accepted,
880 Rejected,
881 AcceptedCanceled,
882}
883#[derive(Debug, Clone, PartialEq, Eq)]
885#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
886pub struct Component {
887 #[cfg_attr(feature = "serde", serde(rename = "customData"))]
888 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
889 pub custom_data: Option<CustomData>,
890 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
891 pub evse: Option<EVSE>,
892 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
894 pub instance: Option<heapless::String<50usize>>,
895 pub name: heapless::String<50usize>,
897}
898#[derive(Debug, Clone, PartialEq, Eq)]
900#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
901pub struct Variable {
902 #[cfg_attr(feature = "serde", serde(rename = "customData"))]
903 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
904 pub custom_data: Option<CustomData>,
905 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
907 pub instance: Option<heapless::String<50usize>>,
908 pub name: heapless::String<50usize>,
910}
911#[derive(Debug, Clone, PartialEq, Eq)]
913#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
914pub struct ComponentVariable {
915 pub component: Component,
916 #[cfg_attr(feature = "serde", serde(rename = "customData"))]
917 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
918 pub custom_data: Option<CustomData>,
919 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
920 pub variable: Option<Variable>,
921}
922#[derive(Debug, Clone, PartialEq, Eq)]
923#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
924pub enum MonitoringCriterionEnum {
925 ThresholdMonitoring,
926 DeltaMonitoring,
927 PeriodicMonitoring,
928}
929#[derive(Debug, Clone, PartialEq, Eq)]
930#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
931pub enum ComponentCriterionEnum {
932 Active,
933 Available,
934 Enabled,
935 Problem,
936}
937#[derive(Debug, Clone, PartialEq, Eq)]
939#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
940pub enum AttributeEnum {
941 Actual,
942 Target,
943 MinSet,
944 MaxSet,
945}
946#[derive(Debug, Clone, PartialEq, Eq)]
948#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
949pub struct GetVariableData {
950 #[cfg_attr(feature = "serde", serde(rename = "attributeType"))]
951 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
952 pub attribute_type: Option<AttributeEnum>,
953 pub component: Component,
954 #[cfg_attr(feature = "serde", serde(rename = "customData"))]
955 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
956 pub custom_data: Option<CustomData>,
957 pub variable: Variable,
958}
959#[derive(Debug, Clone, PartialEq, Eq)]
961#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
962pub enum GetVariableStatusEnum {
963 Accepted,
964 Rejected,
965 UnknownComponent,
966 UnknownVariable,
967 NotSupportedAttributeType,
968}
969#[derive(Debug, Clone, PartialEq, Eq)]
971#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
972pub struct GetVariableResult {
973 #[cfg_attr(feature = "serde", serde(rename = "attributeStatus"))]
974 pub attribute_status: GetVariableStatusEnum,
975 #[cfg_attr(feature = "serde", serde(rename = "attributeStatusInfo"))]
976 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
977 pub attribute_status_info: Option<StatusInfo>,
978 #[cfg_attr(feature = "serde", serde(rename = "attributeType"))]
979 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
980 pub attribute_type: Option<AttributeEnum>,
981 #[cfg_attr(feature = "serde", serde(rename = "attributeValue"))]
985 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
986 pub attribute_value: Option<heapless::String<2500usize>>,
987 pub component: Component,
988 #[cfg_attr(feature = "serde", serde(rename = "customData"))]
989 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
990 pub custom_data: Option<CustomData>,
991 pub variable: Variable,
992}
993#[derive(Debug, Clone, PartialEq, Eq)]
995#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
996pub enum InstallCertificateUseEnum {
997 V2GRootCertificate,
998 MORootCertificate,
999 CSMSRootCertificate,
1000 ManufacturerRootCertificate,
1001}
1002#[derive(Debug, Clone, PartialEq, Eq)]
1004#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1005pub enum InstallCertificateStatusEnum {
1006 Accepted,
1007 Rejected,
1008 Failed,
1009}
1010#[derive(Debug, Clone, PartialEq, Eq)]
1012#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1013pub enum UploadLogStatusEnum {
1014 BadMessage,
1015 Idle,
1016 NotSupportedOperation,
1017 PermissionDenied,
1018 Uploaded,
1019 UploadFailure,
1020 Uploading,
1021 AcceptedCanceled,
1022}
1023#[derive(Debug, Clone, PartialEq, Eq)]
1027#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1028pub enum ReadingContextEnum {
1029 #[cfg_attr(feature = "serde", serde(rename = "Interruption.Begin"))]
1030 InterruptionBegin,
1031 #[cfg_attr(feature = "serde", serde(rename = "Interruption.End"))]
1032 InterruptionEnd,
1033 Other,
1034 #[cfg_attr(feature = "serde", serde(rename = "Sample.Clock"))]
1035 SampleClock,
1036 #[cfg_attr(feature = "serde", serde(rename = "Sample.Periodic"))]
1037 SamplePeriodic,
1038 #[cfg_attr(feature = "serde", serde(rename = "Transaction.Begin"))]
1039 TransactionBegin,
1040 #[cfg_attr(feature = "serde", serde(rename = "Transaction.End"))]
1041 TransactionEnd,
1042 Trigger,
1043}
1044#[derive(Debug, Clone, PartialEq, Eq)]
1048#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1049pub enum LocationEnum {
1050 Body,
1051 Cable,
1052 EV,
1053 Inlet,
1054 Outlet,
1055}
1056#[derive(Debug, Clone, PartialEq, Eq)]
1060#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1061pub enum MeasurandEnum {
1062 #[cfg_attr(feature = "serde", serde(rename = "Current.Export"))]
1063 CurrentExport,
1064 #[cfg_attr(feature = "serde", serde(rename = "Current.Import"))]
1065 CurrentImport,
1066 #[cfg_attr(feature = "serde", serde(rename = "Current.Offered"))]
1067 CurrentOffered,
1068 #[cfg_attr(feature = "serde", serde(rename = "Energy.Active.Export.Register"))]
1069 EnergyActiveExportRegister,
1070 #[cfg_attr(feature = "serde", serde(rename = "Energy.Active.Import.Register"))]
1071 EnergyActiveImportRegister,
1072 #[cfg_attr(feature = "serde", serde(rename = "Energy.Reactive.Export.Register"))]
1073 EnergyReactiveExportRegister,
1074 #[cfg_attr(feature = "serde", serde(rename = "Energy.Reactive.Import.Register"))]
1075 EnergyReactiveImportRegister,
1076 #[cfg_attr(feature = "serde", serde(rename = "Energy.Active.Export.Interval"))]
1077 EnergyActiveExportInterval,
1078 #[cfg_attr(feature = "serde", serde(rename = "Energy.Active.Import.Interval"))]
1079 EnergyActiveImportInterval,
1080 #[cfg_attr(feature = "serde", serde(rename = "Energy.Active.Net"))]
1081 EnergyActiveNet,
1082 #[cfg_attr(feature = "serde", serde(rename = "Energy.Reactive.Export.Interval"))]
1083 EnergyReactiveExportInterval,
1084 #[cfg_attr(feature = "serde", serde(rename = "Energy.Reactive.Import.Interval"))]
1085 EnergyReactiveImportInterval,
1086 #[cfg_attr(feature = "serde", serde(rename = "Energy.Reactive.Net"))]
1087 EnergyReactiveNet,
1088 #[cfg_attr(feature = "serde", serde(rename = "Energy.Apparent.Net"))]
1089 EnergyApparentNet,
1090 #[cfg_attr(feature = "serde", serde(rename = "Energy.Apparent.Import"))]
1091 EnergyApparentImport,
1092 #[cfg_attr(feature = "serde", serde(rename = "Energy.Apparent.Export"))]
1093 EnergyApparentExport,
1094 Frequency,
1095 #[cfg_attr(feature = "serde", serde(rename = "Power.Active.Export"))]
1096 PowerActiveExport,
1097 #[cfg_attr(feature = "serde", serde(rename = "Power.Active.Import"))]
1098 PowerActiveImport,
1099 #[cfg_attr(feature = "serde", serde(rename = "Power.Factor"))]
1100 PowerFactor,
1101 #[cfg_attr(feature = "serde", serde(rename = "Power.Offered"))]
1102 PowerOffered,
1103 #[cfg_attr(feature = "serde", serde(rename = "Power.Reactive.Export"))]
1104 PowerReactiveExport,
1105 #[cfg_attr(feature = "serde", serde(rename = "Power.Reactive.Import"))]
1106 PowerReactiveImport,
1107 SoC,
1108 Voltage,
1109}
1110#[derive(Debug, Clone, PartialEq, Eq)]
1114#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1115pub enum PhaseEnum {
1116 L1,
1117 L2,
1118 L3,
1119 N,
1120 #[cfg_attr(feature = "serde", serde(rename = "L1-N"))]
1121 L1N,
1122 #[cfg_attr(feature = "serde", serde(rename = "L2-N"))]
1123 L2N,
1124 #[cfg_attr(feature = "serde", serde(rename = "L3-N"))]
1125 L3N,
1126 #[cfg_attr(feature = "serde", serde(rename = "L1-L2"))]
1127 L1L2,
1128 #[cfg_attr(feature = "serde", serde(rename = "L2-L3"))]
1129 L2L3,
1130 #[cfg_attr(feature = "serde", serde(rename = "L3-L1"))]
1131 L3L1,
1132}
1133#[derive(Debug, Clone, PartialEq, Eq)]
1135#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1136pub struct SignedMeterValue {
1137 #[cfg_attr(feature = "serde", serde(rename = "customData"))]
1138 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
1139 pub custom_data: Option<CustomData>,
1140 #[cfg_attr(feature = "serde", serde(rename = "encodingMethod"))]
1142 pub encoding_method: heapless::String<50usize>,
1143 #[cfg_attr(feature = "serde", serde(rename = "publicKey"))]
1145 pub public_key: heapless::String<2500usize>,
1146 #[cfg_attr(feature = "serde", serde(rename = "signedMeterData"))]
1148 pub signed_meter_data: heapless::String<2500usize>,
1149 #[cfg_attr(feature = "serde", serde(rename = "signingMethod"))]
1151 pub signing_method: heapless::String<50usize>,
1152}
1153#[derive(Debug, Clone, PartialEq, Eq)]
1155#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1156pub struct UnitOfMeasure {
1157 #[cfg_attr(feature = "serde", serde(rename = "customData"))]
1158 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
1159 pub custom_data: Option<CustomData>,
1160 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
1162 pub multiplier: Option<i64>,
1163 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
1167 pub unit: Option<heapless::String<20usize>>,
1168}
1169#[derive(Debug, Clone, PartialEq)]
1175#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1176pub struct SampledValue {
1177 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
1178 pub context: Option<ReadingContextEnum>,
1179 #[cfg_attr(feature = "serde", serde(rename = "customData"))]
1180 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
1181 pub custom_data: Option<CustomData>,
1182 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
1183 pub location: Option<LocationEnum>,
1184 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
1185 pub measurand: Option<MeasurandEnum>,
1186 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
1187 pub phase: Option<PhaseEnum>,
1188 #[cfg_attr(feature = "serde", serde(rename = "signedMeterValue"))]
1189 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
1190 pub signed_meter_value: Option<SignedMeterValue>,
1191 #[cfg_attr(feature = "serde", serde(rename = "unitOfMeasure"))]
1192 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
1193 pub unit_of_measure: Option<UnitOfMeasure>,
1194 pub value: f64,
1198}
1199#[cfg(feature = "alloc")]
1200#[derive(Debug, Clone, PartialEq)]
1204#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1205pub struct MeterValue {
1206 #[cfg_attr(feature = "serde", serde(rename = "customData"))]
1207 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
1208 pub custom_data: Option<CustomData>,
1209 #[cfg_attr(feature = "serde", serde(rename = "sampledValue"))]
1210 pub sampled_value: alloc::vec::Vec<SampledValue>,
1211 pub timestamp: alloc::string::String,
1215}
1216#[cfg(not(feature = "alloc"))]
1217#[derive(Debug, Clone, PartialEq)]
1221#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1222pub struct MeterValue<
1223 const METER_VALUE_SAMPLED_VALUE_CAP: usize = 16usize,
1224 const METER_VALUE_TIMESTAMP_CAP: usize = 1024usize,
1225> {
1226 #[cfg_attr(feature = "serde", serde(rename = "customData"))]
1227 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
1228 pub custom_data: Option<CustomData>,
1229 #[cfg_attr(feature = "serde", serde(rename = "sampledValue"))]
1230 pub sampled_value: heapless::Vec<SampledValue, METER_VALUE_SAMPLED_VALUE_CAP>,
1231 pub timestamp: heapless::String<METER_VALUE_TIMESTAMP_CAP>,
1235}
1236#[derive(Debug, Clone, PartialEq, Eq)]
1239#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1240pub struct ChargingLimit {
1241 #[cfg_attr(feature = "serde", serde(rename = "chargingLimitSource"))]
1242 pub charging_limit_source: ChargingLimitSourceEnum,
1243 #[cfg_attr(feature = "serde", serde(rename = "customData"))]
1244 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
1245 pub custom_data: Option<CustomData>,
1246 #[cfg_attr(feature = "serde", serde(rename = "isGridCritical"))]
1250 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
1251 pub is_grid_critical: Option<bool>,
1252}
1253#[derive(Debug, Clone, PartialEq, Eq)]
1257#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1258pub enum CostKindEnum {
1259 CarbonDioxideEmission,
1260 RelativePricePercentage,
1261 RenewableGenerationPercentage,
1262}
1263#[derive(Debug, Clone, PartialEq, Eq)]
1266#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1267pub struct Cost {
1268 pub amount: i64,
1272 #[cfg_attr(feature = "serde", serde(rename = "amountMultiplier"))]
1276 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
1277 pub amount_multiplier: Option<i64>,
1278 #[cfg_attr(feature = "serde", serde(rename = "costKind"))]
1279 pub cost_kind: CostKindEnum,
1280 #[cfg_attr(feature = "serde", serde(rename = "customData"))]
1281 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
1282 pub custom_data: Option<CustomData>,
1283}
1284#[derive(Debug, Clone, PartialEq)]
1287#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1288pub struct ConsumptionCost {
1289 pub cost: heapless::Vec<Cost, 3usize>,
1290 #[cfg_attr(feature = "serde", serde(rename = "customData"))]
1291 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
1292 pub custom_data: Option<CustomData>,
1293 #[cfg_attr(feature = "serde", serde(rename = "startValue"))]
1297 pub start_value: f64,
1298}
1299#[derive(Debug, Clone, PartialEq, Eq)]
1302#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1303pub struct RelativeTimeInterval {
1304 #[cfg_attr(feature = "serde", serde(rename = "customData"))]
1305 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
1306 pub custom_data: Option<CustomData>,
1307 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
1311 pub duration: Option<i64>,
1312 pub start: i64,
1316}
1317#[derive(Debug, Clone, PartialEq)]
1320#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1321pub struct SalesTariffEntry {
1322 #[cfg_attr(feature = "serde", serde(rename = "consumptionCost"))]
1323 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
1324 pub consumption_cost: Option<heapless::Vec<ConsumptionCost, 3usize>>,
1325 #[cfg_attr(feature = "serde", serde(rename = "customData"))]
1326 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
1327 pub custom_data: Option<CustomData>,
1328 #[cfg_attr(feature = "serde", serde(rename = "ePriceLevel"))]
1332 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
1333 pub e_price_level: Option<i64>,
1334 #[cfg_attr(feature = "serde", serde(rename = "relativeTimeInterval"))]
1335 pub relative_time_interval: RelativeTimeInterval,
1336}
1337#[cfg(feature = "alloc")]
1338#[derive(Debug, Clone, PartialEq)]
1342#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1343pub struct SalesTariff {
1344 #[cfg_attr(feature = "serde", serde(rename = "customData"))]
1345 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
1346 pub custom_data: Option<CustomData>,
1347 pub id: i64,
1351 #[cfg_attr(feature = "serde", serde(rename = "numEPriceLevels"))]
1355 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
1356 pub num_e_price_levels: Option<i64>,
1357 #[cfg_attr(feature = "serde", serde(rename = "salesTariffDescription"))]
1361 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
1362 pub sales_tariff_description: Option<heapless::String<32usize>>,
1363 #[cfg_attr(feature = "serde", serde(rename = "salesTariffEntry"))]
1364 pub sales_tariff_entry: alloc::vec::Vec<SalesTariffEntry>,
1365}
1366#[cfg(not(feature = "alloc"))]
1367#[derive(Debug, Clone, PartialEq)]
1371#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1372pub struct SalesTariff {
1373 #[cfg_attr(feature = "serde", serde(rename = "customData"))]
1374 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
1375 pub custom_data: Option<CustomData>,
1376 pub id: i64,
1380 #[cfg_attr(feature = "serde", serde(rename = "numEPriceLevels"))]
1384 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
1385 pub num_e_price_levels: Option<i64>,
1386 #[cfg_attr(feature = "serde", serde(rename = "salesTariffDescription"))]
1390 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
1391 pub sales_tariff_description: Option<heapless::String<32usize>>,
1392 #[cfg_attr(feature = "serde", serde(rename = "salesTariffEntry"))]
1393 pub sales_tariff_entry: heapless::Vec<SalesTariffEntry, 1024usize>,
1394}
1395#[cfg(feature = "alloc")]
1396#[derive(Debug, Clone, PartialEq)]
1400#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1401pub struct ChargingSchedule {
1402 #[cfg_attr(feature = "serde", serde(rename = "chargingRateUnit"))]
1403 pub charging_rate_unit: ChargingRateUnitEnum,
1404 #[cfg_attr(feature = "serde", serde(rename = "chargingSchedulePeriod"))]
1405 pub charging_schedule_period: alloc::vec::Vec<ChargingSchedulePeriod>,
1406 #[cfg_attr(feature = "serde", serde(rename = "customData"))]
1407 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
1408 pub custom_data: Option<CustomData>,
1409 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
1413 pub duration: Option<i64>,
1414 pub id: i64,
1416 #[cfg_attr(feature = "serde", serde(rename = "minChargingRate"))]
1420 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
1421 pub min_charging_rate: Option<f64>,
1422 #[cfg_attr(feature = "serde", serde(rename = "salesTariff"))]
1423 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
1424 pub sales_tariff: Option<SalesTariff>,
1425 #[cfg_attr(feature = "serde", serde(rename = "startSchedule"))]
1429 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
1430 pub start_schedule: Option<alloc::string::String>,
1431}
1432#[cfg(not(feature = "alloc"))]
1433#[derive(Debug, Clone, PartialEq)]
1437#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1438pub struct ChargingSchedule<
1439 const CHARGING_SCHEDULE_START_SCHEDULE_CAP: usize = 1024usize,
1440> {
1441 #[cfg_attr(feature = "serde", serde(rename = "chargingRateUnit"))]
1442 pub charging_rate_unit: ChargingRateUnitEnum,
1443 #[cfg_attr(feature = "serde", serde(rename = "chargingSchedulePeriod"))]
1444 pub charging_schedule_period: heapless::Vec<ChargingSchedulePeriod, 1024usize>,
1445 #[cfg_attr(feature = "serde", serde(rename = "customData"))]
1446 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
1447 pub custom_data: Option<CustomData>,
1448 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
1452 pub duration: Option<i64>,
1453 pub id: i64,
1455 #[cfg_attr(feature = "serde", serde(rename = "minChargingRate"))]
1459 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
1460 pub min_charging_rate: Option<f64>,
1461 #[cfg_attr(feature = "serde", serde(rename = "salesTariff"))]
1462 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
1463 pub sales_tariff: Option<SalesTariff>,
1464 #[cfg_attr(feature = "serde", serde(rename = "startSchedule"))]
1468 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
1469 pub start_schedule: Option<heapless::String<CHARGING_SCHEDULE_START_SCHEDULE_CAP>>,
1470}
1471#[cfg(feature = "alloc")]
1472#[derive(Debug, Clone, PartialEq, Eq)]
1476#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1477pub struct MessageInfo {
1478 #[cfg_attr(feature = "serde", serde(rename = "customData"))]
1479 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
1480 pub custom_data: Option<CustomData>,
1481 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
1482 pub display: Option<Component>,
1483 #[cfg_attr(feature = "serde", serde(rename = "endDateTime"))]
1487 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
1488 pub end_date_time: Option<alloc::string::String>,
1489 pub id: i64,
1493 pub message: MessageContent,
1494 pub priority: MessagePriorityEnum,
1495 #[cfg_attr(feature = "serde", serde(rename = "startDateTime"))]
1499 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
1500 pub start_date_time: Option<alloc::string::String>,
1501 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
1502 pub state: Option<MessageStateEnum>,
1503 #[cfg_attr(feature = "serde", serde(rename = "transactionId"))]
1507 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
1508 pub transaction_id: Option<heapless::String<36usize>>,
1509}
1510#[cfg(not(feature = "alloc"))]
1511#[derive(Debug, Clone, PartialEq, Eq)]
1515#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1516pub struct MessageInfo<
1517 const MESSAGE_INFO_END_DATE_TIME_CAP: usize = 1024usize,
1518 const MESSAGE_INFO_START_DATE_TIME_CAP: usize = 1024usize,
1519> {
1520 #[cfg_attr(feature = "serde", serde(rename = "customData"))]
1521 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
1522 pub custom_data: Option<CustomData>,
1523 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
1524 pub display: Option<Component>,
1525 #[cfg_attr(feature = "serde", serde(rename = "endDateTime"))]
1529 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
1530 pub end_date_time: Option<heapless::String<MESSAGE_INFO_END_DATE_TIME_CAP>>,
1531 pub id: i64,
1535 pub message: MessageContent,
1536 pub priority: MessagePriorityEnum,
1537 #[cfg_attr(feature = "serde", serde(rename = "startDateTime"))]
1541 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
1542 pub start_date_time: Option<heapless::String<MESSAGE_INFO_START_DATE_TIME_CAP>>,
1543 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
1544 pub state: Option<MessageStateEnum>,
1545 #[cfg_attr(feature = "serde", serde(rename = "transactionId"))]
1549 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
1550 pub transaction_id: Option<heapless::String<36usize>>,
1551}
1552#[derive(Debug, Clone, PartialEq, Eq)]
1556#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1557pub struct ACChargingParameters {
1558 #[cfg_attr(feature = "serde", serde(rename = "customData"))]
1559 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
1560 pub custom_data: Option<CustomData>,
1561 #[cfg_attr(feature = "serde", serde(rename = "energyAmount"))]
1565 pub energy_amount: i64,
1566 #[cfg_attr(feature = "serde", serde(rename = "evMaxCurrent"))]
1570 pub ev_max_current: i64,
1571 #[cfg_attr(feature = "serde", serde(rename = "evMaxVoltage"))]
1575 pub ev_max_voltage: i64,
1576 #[cfg_attr(feature = "serde", serde(rename = "evMinCurrent"))]
1580 pub ev_min_current: i64,
1581}
1582#[derive(Debug, Clone, PartialEq, Eq)]
1586#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1587pub struct DCChargingParameters {
1588 #[cfg_attr(feature = "serde", serde(rename = "bulkSoC"))]
1592 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
1593 pub bulk_so_c: Option<i64>,
1594 #[cfg_attr(feature = "serde", serde(rename = "customData"))]
1595 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
1596 pub custom_data: Option<CustomData>,
1597 #[cfg_attr(feature = "serde", serde(rename = "energyAmount"))]
1601 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
1602 pub energy_amount: Option<i64>,
1603 #[cfg_attr(feature = "serde", serde(rename = "evEnergyCapacity"))]
1607 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
1608 pub ev_energy_capacity: Option<i64>,
1609 #[cfg_attr(feature = "serde", serde(rename = "evMaxCurrent"))]
1613 pub ev_max_current: i64,
1614 #[cfg_attr(feature = "serde", serde(rename = "evMaxPower"))]
1618 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
1619 pub ev_max_power: Option<i64>,
1620 #[cfg_attr(feature = "serde", serde(rename = "evMaxVoltage"))]
1624 pub ev_max_voltage: i64,
1625 #[cfg_attr(feature = "serde", serde(rename = "fullSoC"))]
1629 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
1630 pub full_so_c: Option<i64>,
1631 #[cfg_attr(feature = "serde", serde(rename = "stateOfCharge"))]
1635 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
1636 pub state_of_charge: Option<i64>,
1637}
1638#[derive(Debug, Clone, PartialEq, Eq)]
1642#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1643pub enum EnergyTransferModeEnum {
1644 DC,
1645 #[cfg_attr(feature = "serde", serde(rename = "AC_single_phase"))]
1646 ACsinglephase,
1647 #[cfg_attr(feature = "serde", serde(rename = "AC_two_phase"))]
1648 ACtwophase,
1649 #[cfg_attr(feature = "serde", serde(rename = "AC_three_phase"))]
1650 ACthreephase,
1651}
1652#[cfg(feature = "alloc")]
1653#[derive(Debug, Clone, PartialEq, Eq)]
1656#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1657pub struct ChargingNeeds {
1658 #[cfg_attr(feature = "serde", serde(rename = "acChargingParameters"))]
1659 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
1660 pub ac_charging_parameters: Option<ACChargingParameters>,
1661 #[cfg_attr(feature = "serde", serde(rename = "customData"))]
1662 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
1663 pub custom_data: Option<CustomData>,
1664 #[cfg_attr(feature = "serde", serde(rename = "dcChargingParameters"))]
1665 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
1666 pub dc_charging_parameters: Option<DCChargingParameters>,
1667 #[cfg_attr(feature = "serde", serde(rename = "departureTime"))]
1671 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
1672 pub departure_time: Option<alloc::string::String>,
1673 #[cfg_attr(feature = "serde", serde(rename = "requestedEnergyTransfer"))]
1674 pub requested_energy_transfer: EnergyTransferModeEnum,
1675}
1676#[cfg(not(feature = "alloc"))]
1677#[derive(Debug, Clone, PartialEq, Eq)]
1680#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1681pub struct ChargingNeeds<const CHARGING_NEEDS_DEPARTURE_TIME_CAP: usize = 1024usize> {
1682 #[cfg_attr(feature = "serde", serde(rename = "acChargingParameters"))]
1683 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
1684 pub ac_charging_parameters: Option<ACChargingParameters>,
1685 #[cfg_attr(feature = "serde", serde(rename = "customData"))]
1686 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
1687 pub custom_data: Option<CustomData>,
1688 #[cfg_attr(feature = "serde", serde(rename = "dcChargingParameters"))]
1689 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
1690 pub dc_charging_parameters: Option<DCChargingParameters>,
1691 #[cfg_attr(feature = "serde", serde(rename = "departureTime"))]
1695 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
1696 pub departure_time: Option<heapless::String<CHARGING_NEEDS_DEPARTURE_TIME_CAP>>,
1697 #[cfg_attr(feature = "serde", serde(rename = "requestedEnergyTransfer"))]
1698 pub requested_energy_transfer: EnergyTransferModeEnum,
1699}
1700#[derive(Debug, Clone, PartialEq, Eq)]
1702#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1703pub enum NotifyEVChargingNeedsStatusEnum {
1704 Accepted,
1705 Rejected,
1706 Processing,
1707}
1708#[derive(Debug, Clone, PartialEq, Eq)]
1710#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1711pub enum EventNotificationEnum {
1712 HardWiredNotification,
1713 HardWiredMonitor,
1714 PreconfiguredMonitor,
1715 CustomMonitor,
1716}
1717#[derive(Debug, Clone, PartialEq, Eq)]
1719#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1720pub enum EventTriggerEnum {
1721 Alerting,
1722 Delta,
1723 Periodic,
1724}
1725#[cfg(feature = "alloc")]
1726#[derive(Debug, Clone, PartialEq, Eq)]
1728#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1729pub struct EventData {
1730 #[cfg_attr(feature = "serde", serde(rename = "actualValue"))]
1734 pub actual_value: heapless::String<2500usize>,
1735 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
1737 pub cause: Option<i64>,
1738 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
1740 pub cleared: Option<bool>,
1741 pub component: Component,
1742 #[cfg_attr(feature = "serde", serde(rename = "customData"))]
1743 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
1744 pub custom_data: Option<CustomData>,
1745 #[cfg_attr(feature = "serde", serde(rename = "eventId"))]
1747 pub event_id: i64,
1748 #[cfg_attr(feature = "serde", serde(rename = "eventNotificationType"))]
1749 pub event_notification_type: EventNotificationEnum,
1750 #[cfg_attr(feature = "serde", serde(rename = "techCode"))]
1752 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
1753 pub tech_code: Option<heapless::String<50usize>>,
1754 #[cfg_attr(feature = "serde", serde(rename = "techInfo"))]
1756 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
1757 pub tech_info: Option<heapless::String<500usize>>,
1758 pub timestamp: alloc::string::String,
1760 #[cfg_attr(feature = "serde", serde(rename = "transactionId"))]
1762 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
1763 pub transaction_id: Option<heapless::String<36usize>>,
1764 pub trigger: EventTriggerEnum,
1765 pub variable: Variable,
1766 #[cfg_attr(feature = "serde", serde(rename = "variableMonitoringId"))]
1768 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
1769 pub variable_monitoring_id: Option<i64>,
1770}
1771#[cfg(not(feature = "alloc"))]
1772#[derive(Debug, Clone, PartialEq, Eq)]
1774#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1775pub struct EventData<const EVENT_DATA_TIMESTAMP_CAP: usize = 1024usize> {
1776 #[cfg_attr(feature = "serde", serde(rename = "actualValue"))]
1780 pub actual_value: heapless::String<2500usize>,
1781 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
1783 pub cause: Option<i64>,
1784 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
1786 pub cleared: Option<bool>,
1787 pub component: Component,
1788 #[cfg_attr(feature = "serde", serde(rename = "customData"))]
1789 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
1790 pub custom_data: Option<CustomData>,
1791 #[cfg_attr(feature = "serde", serde(rename = "eventId"))]
1793 pub event_id: i64,
1794 #[cfg_attr(feature = "serde", serde(rename = "eventNotificationType"))]
1795 pub event_notification_type: EventNotificationEnum,
1796 #[cfg_attr(feature = "serde", serde(rename = "techCode"))]
1798 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
1799 pub tech_code: Option<heapless::String<50usize>>,
1800 #[cfg_attr(feature = "serde", serde(rename = "techInfo"))]
1802 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
1803 pub tech_info: Option<heapless::String<500usize>>,
1804 pub timestamp: heapless::String<EVENT_DATA_TIMESTAMP_CAP>,
1806 #[cfg_attr(feature = "serde", serde(rename = "transactionId"))]
1808 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
1809 pub transaction_id: Option<heapless::String<36usize>>,
1810 pub trigger: EventTriggerEnum,
1811 pub variable: Variable,
1812 #[cfg_attr(feature = "serde", serde(rename = "variableMonitoringId"))]
1814 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
1815 pub variable_monitoring_id: Option<i64>,
1816}
1817#[derive(Debug, Clone, PartialEq, Eq)]
1819#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1820pub enum MonitorEnum {
1821 UpperThreshold,
1822 LowerThreshold,
1823 Delta,
1824 Periodic,
1825 PeriodicClockAligned,
1826}
1827#[derive(Debug, Clone, PartialEq)]
1829#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1830pub struct VariableMonitoring {
1831 #[cfg_attr(feature = "serde", serde(rename = "customData"))]
1832 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
1833 pub custom_data: Option<CustomData>,
1834 pub id: i64,
1836 pub severity: i64,
1860 pub transaction: bool,
1862 pub r#type: MonitorEnum,
1863 pub value: f64,
1866}
1867#[cfg(feature = "alloc")]
1868#[derive(Debug, Clone, PartialEq)]
1870#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1871pub struct MonitoringData {
1872 pub component: Component,
1873 #[cfg_attr(feature = "serde", serde(rename = "customData"))]
1874 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
1875 pub custom_data: Option<CustomData>,
1876 pub variable: Variable,
1877 #[cfg_attr(feature = "serde", serde(rename = "variableMonitoring"))]
1878 pub variable_monitoring: alloc::vec::Vec<VariableMonitoring>,
1879}
1880#[cfg(not(feature = "alloc"))]
1881#[derive(Debug, Clone, PartialEq)]
1883#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1884pub struct MonitoringData<
1885 const MONITORING_DATA_VARIABLE_MONITORING_CAP: usize = 16usize,
1886> {
1887 pub component: Component,
1888 #[cfg_attr(feature = "serde", serde(rename = "customData"))]
1889 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
1890 pub custom_data: Option<CustomData>,
1891 pub variable: Variable,
1892 #[cfg_attr(feature = "serde", serde(rename = "variableMonitoring"))]
1893 pub variable_monitoring: heapless::Vec<
1894 VariableMonitoring,
1895 MONITORING_DATA_VARIABLE_MONITORING_CAP,
1896 >,
1897}
1898#[derive(Debug, Clone, PartialEq, Eq)]
1900#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1901pub enum MutabilityEnum {
1902 ReadOnly,
1903 WriteOnly,
1904 ReadWrite,
1905}
1906#[derive(Debug, Clone, PartialEq, Eq)]
1908#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1909pub struct VariableAttribute {
1910 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
1912 pub constant: Option<bool>,
1913 #[cfg_attr(feature = "serde", serde(rename = "customData"))]
1914 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
1915 pub custom_data: Option<CustomData>,
1916 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
1917 pub mutability: Option<MutabilityEnum>,
1918 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
1920 pub persistent: Option<bool>,
1921 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
1922 pub r#type: Option<AttributeEnum>,
1923 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
1927 pub value: Option<heapless::String<2500usize>>,
1928}
1929#[derive(Debug, Clone, PartialEq, Eq)]
1931#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1932pub enum DataEnum {
1933 #[cfg_attr(feature = "serde", serde(rename = "string"))]
1934 String,
1935 #[cfg_attr(feature = "serde", serde(rename = "decimal"))]
1936 Decimal,
1937 #[cfg_attr(feature = "serde", serde(rename = "integer"))]
1938 Integer,
1939 #[cfg_attr(feature = "serde", serde(rename = "dateTime"))]
1940 DateTime,
1941 #[cfg_attr(feature = "serde", serde(rename = "boolean"))]
1942 Boolean,
1943 OptionList,
1944 SequenceList,
1945 MemberList,
1946}
1947#[derive(Debug, Clone, PartialEq)]
1949#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1950pub struct VariableCharacteristics {
1951 #[cfg_attr(feature = "serde", serde(rename = "customData"))]
1952 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
1953 pub custom_data: Option<CustomData>,
1954 #[cfg_attr(feature = "serde", serde(rename = "dataType"))]
1955 pub data_type: DataEnum,
1956 #[cfg_attr(feature = "serde", serde(rename = "maxLimit"))]
1958 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
1959 pub max_limit: Option<f64>,
1960 #[cfg_attr(feature = "serde", serde(rename = "minLimit"))]
1962 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
1963 pub min_limit: Option<f64>,
1964 #[cfg_attr(feature = "serde", serde(rename = "supportsMonitoring"))]
1966 pub supports_monitoring: bool,
1967 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
1969 pub unit: Option<heapless::String<16usize>>,
1970 #[cfg_attr(feature = "serde", serde(rename = "valuesList"))]
1982 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
1983 pub values_list: Option<heapless::String<1000usize>>,
1984}
1985#[derive(Debug, Clone, PartialEq)]
1987#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
1988pub struct ReportData {
1989 pub component: Component,
1990 #[cfg_attr(feature = "serde", serde(rename = "customData"))]
1991 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
1992 pub custom_data: Option<CustomData>,
1993 pub variable: Variable,
1994 #[cfg_attr(feature = "serde", serde(rename = "variableAttribute"))]
1995 pub variable_attribute: heapless::Vec<VariableAttribute, 4usize>,
1996 #[cfg_attr(feature = "serde", serde(rename = "variableCharacteristics"))]
1997 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
1998 pub variable_characteristics: Option<VariableCharacteristics>,
1999}
2000#[derive(Debug, Clone, PartialEq, Eq)]
2003#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
2004pub enum PublishFirmwareStatusEnum {
2005 Idle,
2006 DownloadScheduled,
2007 Downloading,
2008 Downloaded,
2009 Published,
2010 DownloadFailed,
2011 DownloadPaused,
2012 InvalidChecksum,
2013 ChecksumVerified,
2014 PublishFailed,
2015}
2016#[derive(Debug, Clone, PartialEq, Eq)]
2020#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
2021pub enum ChargingProfileKindEnum {
2022 Absolute,
2023 Recurring,
2024 Relative,
2025}
2026#[derive(Debug, Clone, PartialEq, Eq)]
2030#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
2031pub enum RecurrencyKindEnum {
2032 Daily,
2033 Weekly,
2034}
2035#[cfg(feature = "alloc")]
2036#[derive(Debug, Clone, PartialEq)]
2040#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
2041pub struct ChargingProfile {
2042 #[cfg_attr(feature = "serde", serde(rename = "chargingProfileKind"))]
2043 pub charging_profile_kind: ChargingProfileKindEnum,
2044 #[cfg_attr(feature = "serde", serde(rename = "chargingProfilePurpose"))]
2045 pub charging_profile_purpose: ChargingProfilePurposeEnum,
2046 #[cfg_attr(feature = "serde", serde(rename = "chargingSchedule"))]
2047 pub charging_schedule: heapless::Vec<ChargingSchedule, 3usize>,
2048 #[cfg_attr(feature = "serde", serde(rename = "customData"))]
2049 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
2050 pub custom_data: Option<CustomData>,
2051 pub id: i64,
2055 #[cfg_attr(feature = "serde", serde(rename = "recurrencyKind"))]
2056 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
2057 pub recurrency_kind: Option<RecurrencyKindEnum>,
2058 #[cfg_attr(feature = "serde", serde(rename = "stackLevel"))]
2062 pub stack_level: i64,
2063 #[cfg_attr(feature = "serde", serde(rename = "transactionId"))]
2065 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
2066 pub transaction_id: Option<heapless::String<36usize>>,
2067 #[cfg_attr(feature = "serde", serde(rename = "validFrom"))]
2071 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
2072 pub valid_from: Option<alloc::string::String>,
2073 #[cfg_attr(feature = "serde", serde(rename = "validTo"))]
2077 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
2078 pub valid_to: Option<alloc::string::String>,
2079}
2080#[cfg(not(feature = "alloc"))]
2081#[derive(Debug, Clone, PartialEq)]
2085#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
2086pub struct ChargingProfile<
2087 const CHARGING_SCHEDULE_START_SCHEDULE_CAP: usize = 1024usize,
2088 const CHARGING_PROFILE_VALID_FROM_CAP: usize = 1024usize,
2089 const CHARGING_PROFILE_VALID_TO_CAP: usize = 1024usize,
2090> {
2091 #[cfg_attr(feature = "serde", serde(rename = "chargingProfileKind"))]
2092 pub charging_profile_kind: ChargingProfileKindEnum,
2093 #[cfg_attr(feature = "serde", serde(rename = "chargingProfilePurpose"))]
2094 pub charging_profile_purpose: ChargingProfilePurposeEnum,
2095 #[cfg_attr(feature = "serde", serde(rename = "chargingSchedule"))]
2096 pub charging_schedule: heapless::Vec<
2097 ChargingSchedule<CHARGING_SCHEDULE_START_SCHEDULE_CAP>,
2098 3usize,
2099 >,
2100 #[cfg_attr(feature = "serde", serde(rename = "customData"))]
2101 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
2102 pub custom_data: Option<CustomData>,
2103 pub id: i64,
2107 #[cfg_attr(feature = "serde", serde(rename = "recurrencyKind"))]
2108 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
2109 pub recurrency_kind: Option<RecurrencyKindEnum>,
2110 #[cfg_attr(feature = "serde", serde(rename = "stackLevel"))]
2114 pub stack_level: i64,
2115 #[cfg_attr(feature = "serde", serde(rename = "transactionId"))]
2117 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
2118 pub transaction_id: Option<heapless::String<36usize>>,
2119 #[cfg_attr(feature = "serde", serde(rename = "validFrom"))]
2123 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
2124 pub valid_from: Option<heapless::String<CHARGING_PROFILE_VALID_FROM_CAP>>,
2125 #[cfg_attr(feature = "serde", serde(rename = "validTo"))]
2129 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
2130 pub valid_to: Option<heapless::String<CHARGING_PROFILE_VALID_TO_CAP>>,
2131}
2132#[derive(Debug, Clone, PartialEq, Eq)]
2134#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
2135pub enum RequestStartStopStatusEnum {
2136 Accepted,
2137 Rejected,
2138}
2139#[derive(Debug, Clone, PartialEq, Eq)]
2141#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
2142pub enum ReservationUpdateStatusEnum {
2143 Expired,
2144 Removed,
2145}
2146#[derive(Debug, Clone, PartialEq, Eq)]
2148#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
2149pub enum ConnectorEnum {
2150 #[cfg_attr(feature = "serde", serde(rename = "cCCS1"))]
2151 CCCS1,
2152 #[cfg_attr(feature = "serde", serde(rename = "cCCS2"))]
2153 CCCS2,
2154 #[cfg_attr(feature = "serde", serde(rename = "cG105"))]
2155 CG105,
2156 #[cfg_attr(feature = "serde", serde(rename = "cTesla"))]
2157 CTesla,
2158 #[cfg_attr(feature = "serde", serde(rename = "cType1"))]
2159 CType1,
2160 #[cfg_attr(feature = "serde", serde(rename = "cType2"))]
2161 CType2,
2162 #[cfg_attr(feature = "serde", serde(rename = "s309-1P-16A"))]
2163 S3091P16A,
2164 #[cfg_attr(feature = "serde", serde(rename = "s309-1P-32A"))]
2165 S3091P32A,
2166 #[cfg_attr(feature = "serde", serde(rename = "s309-3P-16A"))]
2167 S3093P16A,
2168 #[cfg_attr(feature = "serde", serde(rename = "s309-3P-32A"))]
2169 S3093P32A,
2170 #[cfg_attr(feature = "serde", serde(rename = "sBS1361"))]
2171 SBS1361,
2172 #[cfg_attr(feature = "serde", serde(rename = "sCEE-7-7"))]
2173 SCEE77,
2174 #[cfg_attr(feature = "serde", serde(rename = "sType2"))]
2175 SType2,
2176 #[cfg_attr(feature = "serde", serde(rename = "sType3"))]
2177 SType3,
2178 Other1PhMax16A,
2179 Other1PhOver16A,
2180 Other3Ph,
2181 Pan,
2182 #[cfg_attr(feature = "serde", serde(rename = "wInductive"))]
2183 WInductive,
2184 #[cfg_attr(feature = "serde", serde(rename = "wResonant"))]
2185 WResonant,
2186 Undetermined,
2187 Unknown,
2188}
2189#[derive(Debug, Clone, PartialEq, Eq)]
2191#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
2192pub enum ReserveNowStatusEnum {
2193 Accepted,
2194 Faulted,
2195 Occupied,
2196 Rejected,
2197 Unavailable,
2198}
2199#[derive(Debug, Clone, PartialEq, Eq)]
2201#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
2202pub enum ResetEnum {
2203 Immediate,
2204 OnIdle,
2205}
2206#[derive(Debug, Clone, PartialEq, Eq)]
2208#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
2209pub enum ResetStatusEnum {
2210 Accepted,
2211 Rejected,
2212 Scheduled,
2213}
2214#[cfg(feature = "alloc")]
2215#[derive(Debug, Clone, PartialEq, Eq)]
2217#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
2218pub struct AuthorizationData {
2219 #[cfg_attr(feature = "serde", serde(rename = "customData"))]
2220 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
2221 pub custom_data: Option<CustomData>,
2222 #[cfg_attr(feature = "serde", serde(rename = "idToken"))]
2223 pub id_token: IdToken,
2224 #[cfg_attr(feature = "serde", serde(rename = "idTokenInfo"))]
2225 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
2226 pub id_token_info: Option<IdTokenInfo>,
2227}
2228#[cfg(not(feature = "alloc"))]
2229#[derive(Debug, Clone, PartialEq, Eq)]
2231#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
2232pub struct AuthorizationData<
2233 const ID_TOKEN_ADDITIONAL_INFO_CAP: usize = 16usize,
2234 const ID_TOKEN_INFO_CACHE_EXPIRY_DATE_TIME_CAP: usize = 1024usize,
2235 const ID_TOKEN_INFO_EVSE_ID_CAP: usize = 16usize,
2236> {
2237 #[cfg_attr(feature = "serde", serde(rename = "customData"))]
2238 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
2239 pub custom_data: Option<CustomData>,
2240 #[cfg_attr(feature = "serde", serde(rename = "idToken"))]
2241 pub id_token: IdToken<ID_TOKEN_ADDITIONAL_INFO_CAP>,
2242 #[cfg_attr(feature = "serde", serde(rename = "idTokenInfo"))]
2243 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
2244 pub id_token_info: Option<
2245 IdTokenInfo<
2246 ID_TOKEN_INFO_CACHE_EXPIRY_DATE_TIME_CAP,
2247 ID_TOKEN_INFO_EVSE_ID_CAP,
2248 ID_TOKEN_ADDITIONAL_INFO_CAP,
2249 >,
2250 >,
2251}
2252#[derive(Debug, Clone, PartialEq, Eq)]
2254#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
2255pub enum UpdateEnum {
2256 Differential,
2257 Full,
2258}
2259#[derive(Debug, Clone, PartialEq, Eq)]
2261#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
2262pub enum SendLocalListStatusEnum {
2263 Accepted,
2264 Failed,
2265 VersionMismatch,
2266}
2267#[derive(Debug, Clone, PartialEq, Eq)]
2269#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
2270pub enum ChargingProfileStatusEnum {
2271 Accepted,
2272 Rejected,
2273}
2274#[derive(Debug, Clone, PartialEq, Eq)]
2276#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
2277pub enum DisplayMessageStatusEnum {
2278 Accepted,
2279 NotSupportedMessageFormat,
2280 Rejected,
2281 NotSupportedPriority,
2282 NotSupportedState,
2283 UnknownTransaction,
2284}
2285#[derive(Debug, Clone, PartialEq, Eq)]
2287#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
2288pub enum MonitoringBaseEnum {
2289 All,
2290 FactoryDefault,
2291 HardWiredOnly,
2292}
2293#[derive(Debug, Clone, PartialEq, Eq)]
2297#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
2298pub enum APNAuthenticationEnum {
2299 CHAP,
2300 NONE,
2301 PAP,
2302 AUTO,
2303}
2304#[derive(Debug, Clone, PartialEq, Eq)]
2310#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
2311pub struct APN {
2312 pub apn: heapless::String<512usize>,
2316 #[cfg_attr(feature = "serde", serde(rename = "apnAuthentication"))]
2317 pub apn_authentication: APNAuthenticationEnum,
2318 #[cfg_attr(feature = "serde", serde(rename = "apnPassword"))]
2322 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
2323 pub apn_password: Option<heapless::String<20usize>>,
2324 #[cfg_attr(feature = "serde", serde(rename = "apnUserName"))]
2328 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
2329 pub apn_user_name: Option<heapless::String<20usize>>,
2330 #[cfg_attr(feature = "serde", serde(rename = "customData"))]
2331 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
2332 pub custom_data: Option<CustomData>,
2333 #[cfg_attr(feature = "serde", serde(rename = "preferredNetwork"))]
2337 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
2338 pub preferred_network: Option<heapless::String<6usize>>,
2339 #[cfg_attr(feature = "serde", serde(rename = "simPin"))]
2343 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
2344 pub sim_pin: Option<i64>,
2345 #[cfg_attr(feature = "serde", serde(rename = "useOnlyPreferredNetwork"))]
2350 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
2351 pub use_only_preferred_network: Option<bool>,
2352}
2353#[derive(Debug, Clone, PartialEq, Eq)]
2355#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
2356pub enum OCPPInterfaceEnum {
2357 Wired0,
2358 Wired1,
2359 Wired2,
2360 Wired3,
2361 Wireless0,
2362 Wireless1,
2363 Wireless2,
2364 Wireless3,
2365}
2366#[derive(Debug, Clone, PartialEq, Eq)]
2370#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
2371pub enum OCPPTransportEnum {
2372 JSON,
2373 SOAP,
2374}
2375#[derive(Debug, Clone, PartialEq, Eq)]
2379#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
2380pub enum OCPPVersionEnum {
2381 OCPP12,
2382 OCPP15,
2383 OCPP16,
2384 OCPP20,
2385}
2386#[derive(Debug, Clone, PartialEq, Eq)]
2390#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
2391pub enum VPNEnum {
2392 IKEv2,
2393 IPSec,
2394 L2TP,
2395 PPTP,
2396}
2397#[derive(Debug, Clone, PartialEq, Eq)]
2401#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
2402pub struct VPN {
2403 #[cfg_attr(feature = "serde", serde(rename = "customData"))]
2404 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
2405 pub custom_data: Option<CustomData>,
2406 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
2410 pub group: Option<heapless::String<20usize>>,
2411 pub key: heapless::String<255usize>,
2415 pub password: heapless::String<20usize>,
2419 pub server: heapless::String<512usize>,
2423 pub r#type: VPNEnum,
2424 pub user: heapless::String<20usize>,
2428}
2429#[derive(Debug, Clone, PartialEq, Eq)]
2433#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
2434pub struct NetworkConnectionProfile {
2435 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
2436 pub apn: Option<APN>,
2437 #[cfg_attr(feature = "serde", serde(rename = "customData"))]
2438 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
2439 pub custom_data: Option<CustomData>,
2440 #[cfg_attr(feature = "serde", serde(rename = "messageTimeout"))]
2444 pub message_timeout: i64,
2445 #[cfg_attr(feature = "serde", serde(rename = "ocppCsmsUrl"))]
2449 pub ocpp_csms_url: heapless::String<512usize>,
2450 #[cfg_attr(feature = "serde", serde(rename = "ocppInterface"))]
2451 pub ocpp_interface: OCPPInterfaceEnum,
2452 #[cfg_attr(feature = "serde", serde(rename = "ocppTransport"))]
2453 pub ocpp_transport: OCPPTransportEnum,
2454 #[cfg_attr(feature = "serde", serde(rename = "ocppVersion"))]
2455 pub ocpp_version: OCPPVersionEnum,
2456 #[cfg_attr(feature = "serde", serde(rename = "securityProfile"))]
2458 pub security_profile: i64,
2459 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
2460 pub vpn: Option<VPN>,
2461}
2462#[derive(Debug, Clone, PartialEq, Eq)]
2464#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
2465pub enum SetNetworkProfileStatusEnum {
2466 Accepted,
2467 Rejected,
2468 Failed,
2469}
2470#[derive(Debug, Clone, PartialEq)]
2472#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
2473pub struct SetMonitoringData {
2474 pub component: Component,
2475 #[cfg_attr(feature = "serde", serde(rename = "customData"))]
2476 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
2477 pub custom_data: Option<CustomData>,
2478 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
2480 pub id: Option<i64>,
2481 pub severity: i64,
2505 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
2507 pub transaction: Option<bool>,
2508 pub r#type: MonitorEnum,
2509 pub value: f64,
2512 pub variable: Variable,
2513}
2514#[derive(Debug, Clone, PartialEq, Eq)]
2516#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
2517pub enum SetMonitoringStatusEnum {
2518 Accepted,
2519 UnknownComponent,
2520 UnknownVariable,
2521 UnsupportedMonitorType,
2522 Rejected,
2523 Duplicate,
2524}
2525#[derive(Debug, Clone, PartialEq, Eq)]
2527#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
2528pub struct SetMonitoringResult {
2529 pub component: Component,
2530 #[cfg_attr(feature = "serde", serde(rename = "customData"))]
2531 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
2532 pub custom_data: Option<CustomData>,
2533 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
2535 pub id: Option<i64>,
2536 pub severity: i64,
2560 pub status: SetMonitoringStatusEnum,
2561 #[cfg_attr(feature = "serde", serde(rename = "statusInfo"))]
2562 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
2563 pub status_info: Option<StatusInfo>,
2564 pub r#type: MonitorEnum,
2565 pub variable: Variable,
2566}
2567#[derive(Debug, Clone, PartialEq, Eq)]
2568#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
2569pub struct SetVariableData {
2570 #[cfg_attr(feature = "serde", serde(rename = "attributeType"))]
2571 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
2572 pub attribute_type: Option<AttributeEnum>,
2573 #[cfg_attr(feature = "serde", serde(rename = "attributeValue"))]
2577 pub attribute_value: heapless::String<1000usize>,
2578 pub component: Component,
2579 #[cfg_attr(feature = "serde", serde(rename = "customData"))]
2580 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
2581 pub custom_data: Option<CustomData>,
2582 pub variable: Variable,
2583}
2584#[derive(Debug, Clone, PartialEq, Eq)]
2586#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
2587pub enum SetVariableStatusEnum {
2588 Accepted,
2589 Rejected,
2590 UnknownComponent,
2591 UnknownVariable,
2592 NotSupportedAttributeType,
2593 RebootRequired,
2594}
2595#[derive(Debug, Clone, PartialEq, Eq)]
2596#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
2597pub struct SetVariableResult {
2598 #[cfg_attr(feature = "serde", serde(rename = "attributeStatus"))]
2599 pub attribute_status: SetVariableStatusEnum,
2600 #[cfg_attr(feature = "serde", serde(rename = "attributeStatusInfo"))]
2601 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
2602 pub attribute_status_info: Option<StatusInfo>,
2603 #[cfg_attr(feature = "serde", serde(rename = "attributeType"))]
2604 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
2605 pub attribute_type: Option<AttributeEnum>,
2606 pub component: Component,
2607 #[cfg_attr(feature = "serde", serde(rename = "customData"))]
2608 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
2609 pub custom_data: Option<CustomData>,
2610 pub variable: Variable,
2611}
2612#[derive(Debug, Clone, PartialEq, Eq)]
2614#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
2615pub enum ConnectorStatusEnum {
2616 Available,
2617 Occupied,
2618 Reserved,
2619 Unavailable,
2620 Faulted,
2621}
2622#[derive(Debug, Clone, PartialEq, Eq)]
2625#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
2626pub enum TransactionEventEnum {
2627 Ended,
2628 Started,
2629 Updated,
2630}
2631#[derive(Debug, Clone, PartialEq, Eq)]
2636#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
2637pub enum ChargingStateEnum {
2638 Charging,
2639 EVConnected,
2640 SuspendedEV,
2641 SuspendedEVSE,
2642 Idle,
2643}
2644#[derive(Debug, Clone, PartialEq, Eq)]
2648#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
2649pub enum ReasonEnum {
2650 DeAuthorized,
2651 EmergencyStop,
2652 EnergyLimitReached,
2653 EVDisconnected,
2654 GroundFault,
2655 ImmediateReset,
2656 Local,
2657 LocalOutOfCredit,
2658 MasterPass,
2659 Other,
2660 OvercurrentFault,
2661 PowerLoss,
2662 PowerQuality,
2663 Reboot,
2664 Remote,
2665 SOCLimitReached,
2666 StoppedByEV,
2667 TimeLimitReached,
2668 Timeout,
2669}
2670#[derive(Debug, Clone, PartialEq, Eq)]
2673#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
2674pub struct Transaction {
2675 #[cfg_attr(feature = "serde", serde(rename = "chargingState"))]
2676 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
2677 pub charging_state: Option<ChargingStateEnum>,
2678 #[cfg_attr(feature = "serde", serde(rename = "customData"))]
2679 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
2680 pub custom_data: Option<CustomData>,
2681 #[cfg_attr(feature = "serde", serde(rename = "remoteStartId"))]
2683 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
2684 pub remote_start_id: Option<i64>,
2685 #[cfg_attr(feature = "serde", serde(rename = "stoppedReason"))]
2686 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
2687 pub stopped_reason: Option<ReasonEnum>,
2688 #[cfg_attr(feature = "serde", serde(rename = "timeSpentCharging"))]
2692 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
2693 pub time_spent_charging: Option<i64>,
2694 #[cfg_attr(feature = "serde", serde(rename = "transactionId"))]
2696 pub transaction_id: heapless::String<36usize>,
2697}
2698#[derive(Debug, Clone, PartialEq, Eq)]
2700#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
2701pub enum TriggerReasonEnum {
2702 Authorized,
2703 CablePluggedIn,
2704 ChargingRateChanged,
2705 ChargingStateChanged,
2706 Deauthorized,
2707 EnergyLimitReached,
2708 EVCommunicationLost,
2709 EVConnectTimeout,
2710 MeterValueClock,
2711 MeterValuePeriodic,
2712 TimeLimitReached,
2713 Trigger,
2714 UnlockCommand,
2715 StopAuthorized,
2716 EVDeparted,
2717 EVDetected,
2718 RemoteStop,
2719 RemoteStart,
2720 AbnormalCondition,
2721 SignedDataReceived,
2722 ResetCommand,
2723}
2724#[derive(Debug, Clone, PartialEq, Eq)]
2726#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
2727pub enum MessageTriggerEnum {
2728 BootNotification,
2729 LogStatusNotification,
2730 FirmwareStatusNotification,
2731 Heartbeat,
2732 MeterValues,
2733 SignChargingStationCertificate,
2734 SignV2GCertificate,
2735 StatusNotification,
2736 TransactionEvent,
2737 SignCombinedCertificate,
2738 PublishFirmwareStatusNotification,
2739}
2740#[derive(Debug, Clone, PartialEq, Eq)]
2742#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
2743pub enum TriggerMessageStatusEnum {
2744 Accepted,
2745 Rejected,
2746 NotImplemented,
2747}
2748#[derive(Debug, Clone, PartialEq, Eq)]
2750#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
2751pub enum UnlockStatusEnum {
2752 Unlocked,
2753 UnlockFailed,
2754 OngoingAuthorizedTransaction,
2755 UnknownConnector,
2756}
2757#[derive(Debug, Clone, PartialEq, Eq)]
2759#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
2760pub enum UnpublishFirmwareStatusEnum {
2761 DownloadOngoing,
2762 NoFirmware,
2763 Unpublished,
2764}
2765#[cfg(feature = "alloc")]
2766#[derive(Debug, Clone, PartialEq, Eq)]
2770#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
2771pub struct Firmware {
2772 #[cfg_attr(feature = "serde", serde(rename = "customData"))]
2773 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
2774 pub custom_data: Option<CustomData>,
2775 #[cfg_attr(feature = "serde", serde(rename = "installDateTime"))]
2779 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
2780 pub install_date_time: Option<alloc::string::String>,
2781 pub location: heapless::String<512usize>,
2785 #[cfg_attr(feature = "serde", serde(rename = "retrieveDateTime"))]
2789 pub retrieve_date_time: alloc::string::String,
2790 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
2794 pub signature: Option<heapless::String<800usize>>,
2795 #[cfg_attr(feature = "serde", serde(rename = "signingCertificate"))]
2798 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
2799 pub signing_certificate: Option<heapless::String<5500usize>>,
2800}
2801#[cfg(not(feature = "alloc"))]
2802#[derive(Debug, Clone, PartialEq, Eq)]
2806#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
2807pub struct Firmware<
2808 const FIRMWARE_INSTALL_DATE_TIME_CAP: usize = 1024usize,
2809 const FIRMWARE_RETRIEVE_DATE_TIME_CAP: usize = 1024usize,
2810> {
2811 #[cfg_attr(feature = "serde", serde(rename = "customData"))]
2812 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
2813 pub custom_data: Option<CustomData>,
2814 #[cfg_attr(feature = "serde", serde(rename = "installDateTime"))]
2818 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
2819 pub install_date_time: Option<heapless::String<FIRMWARE_INSTALL_DATE_TIME_CAP>>,
2820 pub location: heapless::String<512usize>,
2824 #[cfg_attr(feature = "serde", serde(rename = "retrieveDateTime"))]
2828 pub retrieve_date_time: heapless::String<FIRMWARE_RETRIEVE_DATE_TIME_CAP>,
2829 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
2833 pub signature: Option<heapless::String<800usize>>,
2834 #[cfg_attr(feature = "serde", serde(rename = "signingCertificate"))]
2837 #[cfg_attr(feature = "serde", serde(skip_serializing_if = "Option::is_none"))]
2838 pub signing_certificate: Option<heapless::String<5500usize>>,
2839}
2840#[derive(Debug, Clone, PartialEq, Eq)]
2842#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
2843pub enum UpdateFirmwareStatusEnum {
2844 Accepted,
2845 Rejected,
2846 AcceptedCanceled,
2847 InvalidCertificate,
2848 RevokedCertificate,
2849}