Skip to content
This repository has been archived by the owner on Oct 3, 2024. It is now read-only.

Commit

Permalink
Add some more enums
Browse files Browse the repository at this point in the history
  • Loading branch information
rnijveld committed May 27, 2024
1 parent 5713579 commit 624d343
Show file tree
Hide file tree
Showing 3 changed files with 145 additions and 1 deletion.
24 changes: 24 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -11,3 +11,4 @@ description = "An OpenADR 3.0 VTN/VEN implementation"

[dependencies]
serde = { version = "1.0.203", features = ["derive"] }
serde_json = "1.0.117"
121 changes: 120 additions & 1 deletion src/lib.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
use serde::{Deserialize, Serialize};

#[derive(Serialize, Deserialize)]
#[derive(Serialize, Deserialize, PartialEq, Eq, Debug)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
pub enum Event {
Simple,
Expand All @@ -10,8 +10,10 @@ pub enum Event {
DispatchSetpointRelative,
ControlSetpoint,
ExportPrice,
#[serde(rename = "GHG")]
GHG,
Curve,
#[serde(rename = "OLS")]
OLS,
ImportCapacitySubscription,
ImportCapacityReservation,
Expand All @@ -35,6 +37,123 @@ pub enum Event {
AlertTsunami,
AlertAirQuality,
AlertOther,
#[serde(rename = "CTA2045_REBOOT")]
CTA2045Reboot,
#[serde(rename = "CTA2045_SET_OVERRIDE_STATUS")]
CTA2045SetOverrideStatus,
#[serde(untagged)]
Private(String),
}

#[derive(Serialize, Deserialize, PartialEq, Eq, Debug)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
pub enum ReportType {
Reading,
Usage,
Demand,
Setpoint,
DeltaUsage,
Baseline,
OperatingState,
UpRegulationAvailable,
DownRegulationAvailable,
RegulationSetpoint,
StorageUsableCapacity,
StorageChargeLevel,
StorageMaxDischargePower,
StorageMaxChargePower,
SimpleLevel,
UsageForecast,
StorageDispatchForecast,
LoadShedDeltaAvailable,
GenerationDeltaAvailable,
DataQuality,
ImportReservationCapacity,
ImportReservationFee,
ExportReservationCapacity,
ExportReservationFee,
#[serde(untagged)]
Private(String),
}

#[derive(Serialize, Deserialize, PartialEq, Eq, Debug)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
pub enum ReadingType {
DirectRead,
Estimated,
Summed,
Mean,
Peak,
Forecast,
Average,
#[serde(untagged)]
Private(String),
}

#[derive(Serialize, Deserialize, PartialEq, Eq, Debug)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
pub enum OperatingState {
Normal,
Error,
IdleNormal,
RunningNormal,
RunningCurtailed,
RunningHeightened,
IdleCurtailed,
#[serde(rename = "SGD_ERROR_CONDITION")]
SGDErrorCondition,
IdleHeightened,
IdleOptedOut,
RunningOptedOut,
#[serde(untagged)]
Private(String),
}

#[derive(Serialize, Deserialize, PartialEq, Eq, Debug)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
pub enum ResourceName {
AggregatedReport,
#[serde(untagged)]
Private(String),
}

#[derive(Serialize, Deserialize, PartialEq, Eq, Debug)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
pub enum DataQuality {
#[serde(untagged)]
Private(String),
}

#[derive(Serialize, Deserialize, PartialEq, Eq, Debug)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
pub enum Target {
#[serde(untagged)]
Private(String),
}

#[derive(Serialize, Deserialize, PartialEq, Eq, Debug)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
pub enum Attribute {
#[serde(untagged)]
Private(String),
}

#[derive(Serialize, Deserialize, PartialEq, Eq, Debug)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
pub enum Unit {
#[serde(untagged)]
Private(String),
}

#[cfg(test)]
mod tests {
use super::Event;

#[test]
fn test_event_serialization() {
assert_eq!(serde_json::to_string(&Event::Simple).unwrap(), r#""SIMPLE""#);
assert_eq!(serde_json::to_string(&Event::CTA2045Reboot).unwrap(), r#""CTA2045_REBOOT""#);
assert_eq!(serde_json::from_str::<Event>(r#""GHG""#).unwrap(), Event::GHG);
assert_eq!(serde_json::from_str::<Event>(r#""something else""#).unwrap(), Event::Private(String::from("something else")));
}
}

0 comments on commit 624d343

Please sign in to comment.