// Auto-generated L5X types - network category
// DO NOT EDIT - Generated by build script

use serde::{Serialize, Deserialize};
use super::*;

/// PortCollectionType element
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct PortCollection {
    /// Use attribute
    #[serde(rename = "@Use", default)]
    pub r#use: Option<String>,
    /// CustomProperties element
    #[serde(rename = "CustomProperties", default)]
    pub custom_properties: Option<CustomPropertiesCollection>,
    /// Port element
    #[serde(rename = "Port", default)]
    pub port: Vec<Port>,
}

/// PortType element
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct Port {
    /// Id attribute
    #[serde(rename = "@Id", default)]
    pub id: String,
    /// UId attribute
    #[serde(rename = "@UId", default)]
    pub uid: Option<String>,
    /// Address attribute
    #[serde(rename = "@Address", default)]
    pub address: Option<String>,
    /// AddressB attribute
    #[serde(rename = "@AddressB", default)]
    pub address_b: Option<String>,
    /// RcpGatewayAddress1 attribute
    #[serde(rename = "@RcpGatewayAddress1", default)]
    pub rcp_gateway_address1: Option<String>,
    /// RcpGatewayAddress2 attribute
    #[serde(rename = "@RcpGatewayAddress2", default)]
    pub rcp_gateway_address2: Option<String>,
    /// Type attribute
    #[serde(rename = "@Type", default)]
    pub r#type: Option<String>,
    /// Upstream attribute
    #[serde(rename = "@Upstream", default)]
    pub upstream: Option<String>,
    /// ConnectorOffset attribute
    #[serde(rename = "@ConnectorOffset", default)]
    pub connector_offset: Option<String>,
    /// Width attribute
    #[serde(rename = "@Width", default)]
    pub width: Option<String>,
    /// NATActualAddress attribute
    #[serde(rename = "@NATActualAddress", default)]
    pub natactual_address: Option<String>,
    /// Validation attribute
    #[serde(rename = "@Validation", default)]
    pub validation: Option<String>,
    /// SafetyNetwork attribute
    #[serde(rename = "@SafetyNetwork", default)]
    pub safety_network: Option<String>,
    /// Use attribute
    #[serde(rename = "@Use", default)]
    pub r#use: Option<String>,
    /// CustomProperties element
    #[serde(rename = "CustomProperties", default)]
    pub custom_properties: Option<CustomPropertiesCollection>,
    /// Bus element
    #[serde(rename = "Bus", default)]
    pub bus: Option<ABus>,
}

/// MapConnectionCollectionType element
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct MapConnectionCollection {
    /// UId attribute
    #[serde(rename = "@UId", default)]
    pub uid: Option<String>,
    /// Use attribute
    #[serde(rename = "@Use", default)]
    pub r#use: Option<String>,
    /// CustomProperties element
    #[serde(rename = "CustomProperties", default)]
    pub custom_properties: Option<CustomPropertiesCollection>,
    /// Connection element
    #[serde(rename = "Connection", default)]
    pub connection: Vec<MapConnection>,
    /// RackConnection element
    #[serde(rename = "RackConnection", default)]
    pub rack_connection: Option<RackConnection>,
}

/// MapConnectionType element
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct MapConnection {
    /// Name attribute
    #[serde(rename = "@Name", default)]
    pub name: String,
    /// UId attribute
    #[serde(rename = "@UId", default)]
    pub uid: Option<String>,
    /// RPI attribute
    #[serde(rename = "@RPI", default)]
    pub rpi: String,
    /// Type attribute
    #[serde(rename = "@Type", default)]
    pub r#type: Option<String>,
    /// InputTagUId attribute
    #[serde(rename = "@InputTagUId", default)]
    pub input_tag_uid: Option<String>,
    /// OutputTagUId attribute
    #[serde(rename = "@OutputTagUId", default)]
    pub output_tag_uid: Option<String>,
    /// InputCxnPoint attribute
    #[serde(rename = "@InputCxnPoint", default)]
    pub input_cxn_point: Option<String>,
    /// OutputCxnPoint attribute
    #[serde(rename = "@OutputCxnPoint", default)]
    pub output_cxn_point: Option<String>,
    /// InputSize attribute
    #[serde(rename = "@InputSize", default)]
    pub input_size: Option<String>,
    /// OutputSize attribute
    #[serde(rename = "@OutputSize", default)]
    pub output_size: Option<String>,
    /// EventID attribute
    #[serde(rename = "@EventID", default)]
    pub event_id: Option<String>,
    /// ProgrammaticallySendEventTrigger attribute
    #[serde(rename = "@ProgrammaticallySendEventTrigger", default)]
    pub programmatically_send_event_trigger: Option<String>,
    /// TimeoutMultiplier attribute
    #[serde(rename = "@TimeoutMultiplier", default)]
    pub timeout_multiplier: Option<String>,
    /// NetworkDelayMultiplier attribute
    #[serde(rename = "@NetworkDelayMultiplier", default)]
    pub network_delay_multiplier: Option<String>,
    /// ReactionTimeLimit attribute
    #[serde(rename = "@ReactionTimeLimit", default)]
    pub reaction_time_limit: Option<String>,
    /// MaxObservedNetworkDelay attribute
    #[serde(rename = "@MaxObservedNetworkDelay", default)]
    pub max_observed_network_delay: Option<String>,
    /// ControlNetScheduled attribute
    #[serde(rename = "@ControlNetScheduled", default)]
    pub control_net_scheduled: Option<String>,
    /// Unicast attribute
    #[serde(rename = "@Unicast", default)]
    pub unicast: Option<String>,
    /// OpenOrder attribute
    #[serde(rename = "@OpenOrder", default)]
    pub open_order: Option<String>,
    /// InputRealTimeFormat attribute
    #[serde(rename = "@InputRealTimeFormat", default)]
    pub input_real_time_format: Option<String>,
    /// OutputRealTimeFormat attribute
    #[serde(rename = "@OutputRealTimeFormat", default)]
    pub output_real_time_format: Option<String>,
    /// ConnMultiplier attribute
    #[serde(rename = "@ConnMultiplier", default)]
    pub conn_multiplier: Option<String>,
    /// OutputSizeVariable attribute
    #[serde(rename = "@OutputSizeVariable", default)]
    pub output_size_variable: Option<String>,
    /// InputSizeVariable attribute
    #[serde(rename = "@InputSizeVariable", default)]
    pub input_size_variable: Option<String>,
    /// OutputPriority attribute
    #[serde(rename = "@OutputPriority", default)]
    pub output_priority: Option<String>,
    /// Priority attribute
    #[serde(rename = "@Priority", default)]
    pub priority: Option<String>,
    /// OutputConnectionType attribute
    #[serde(rename = "@OutputConnectionType", default)]
    pub output_connection_type: Option<String>,
    /// InputConnectionType attribute
    #[serde(rename = "@InputConnectionType", default)]
    pub input_connection_type: Option<String>,
    /// OutputRedundantOwner attribute
    #[serde(rename = "@OutputRedundantOwner", default)]
    pub output_redundant_owner: Option<String>,
    /// OutputRPI attribute
    #[serde(rename = "@OutputRPI", default)]
    pub output_rpi: Option<String>,
    /// TransportClass attribute
    #[serde(rename = "@TransportClass", default)]
    pub transport_class: Option<String>,
    /// InputProductionTrigger attribute
    #[serde(rename = "@InputProductionTrigger", default)]
    pub input_production_trigger: Option<String>,
    /// Direction attribute
    #[serde(rename = "@Direction", default)]
    pub direction: Option<String>,
    /// ConnectionPath attribute
    #[serde(rename = "@ConnectionPath", default)]
    pub connection_path: Option<String>,
    /// IncludeDataSegment attribute
    #[serde(rename = "@IncludeDataSegment", default)]
    pub include_data_segment: Option<String>,
    /// GenerateFaultMember attribute
    #[serde(rename = "@GenerateFaultMember", default)]
    pub generate_fault_member: Option<String>,
    /// InputTagSuffix attribute
    #[serde(rename = "@InputTagSuffix", default)]
    pub input_tag_suffix: Option<String>,
    /// OutputTagSuffix attribute
    #[serde(rename = "@OutputTagSuffix", default)]
    pub output_tag_suffix: Option<String>,
    /// DisplayName attribute
    #[serde(rename = "@DisplayName", default)]
    pub display_name: Option<String>,
    /// MaxConsumerNumber attribute
    #[serde(rename = "@MaxConsumerNumber", default)]
    pub max_consumer_number: Option<String>,
    /// ExcludeFromAggregation attribute
    #[serde(rename = "@ExcludeFromAggregation", default)]
    pub exclude_from_aggregation: Option<String>,
    /// IsConcurrent attribute
    #[serde(rename = "@IsConcurrent", default)]
    pub is_concurrent: Option<String>,
    /// Use attribute
    #[serde(rename = "@Use", default)]
    pub r#use: Option<String>,
    /// CustomProperties element
    #[serde(rename = "CustomProperties", default)]
    pub custom_properties: Option<CustomPropertiesCollection>,
    /// InputTag element
    #[serde(rename = "InputTag", default)]
    pub input_tag: Option<InputTag>,
    /// InputData element
    #[serde(rename = "InputData", default)]
    pub input_data: Option<InputData>,
    /// OutputTag element
    #[serde(rename = "OutputTag", default)]
    pub output_tag: Option<OutputTag>,
    /// OutputData element
    #[serde(rename = "OutputData", default)]
    pub output_data: Option<OutputData>,
    /// InputImageInit element
    #[serde(rename = "InputImageInit", default)]
    pub input_image_init: Option<InputImageInit>,
}

/// RackConnectionType element
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct RackConnection {
    /// Use attribute
    #[serde(rename = "@Use", default)]
    pub r#use: Option<String>,
    /// CustomProperties element
    #[serde(rename = "CustomProperties", default)]
    pub custom_properties: Option<CustomPropertiesCollection>,
    /// InAliasTag element
    #[serde(rename = "InAliasTag", default)]
    pub in_alias_tag: Option<InAliasTag>,
    /// OutAliasTag element
    #[serde(rename = "OutAliasTag", default)]
    pub out_alias_tag: Option<OutAliasTag>,
}

/// ParameterConnectionCollectionType element
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct ParameterConnectionCollection {
    /// Use attribute
    #[serde(rename = "@Use", default)]
    pub r#use: Option<String>,
    /// CustomProperties element
    #[serde(rename = "CustomProperties", default)]
    pub custom_properties: Option<CustomPropertiesCollection>,
    /// ParameterConnection element
    #[serde(rename = "ParameterConnection", default)]
    pub parameter_connection: Vec<ParameterConnection>,
}

/// ParameterConnectionType element
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct ParameterConnection {
    /// EndPoint1 attribute
    #[serde(rename = "@EndPoint1", default)]
    pub end_point1: String,
    /// EndPoint2 attribute
    #[serde(rename = "@EndPoint2", default)]
    pub end_point2: String,
    /// UId attribute
    #[serde(rename = "@UId", default)]
    pub uid: Option<String>,
    /// Use attribute
    #[serde(rename = "@Use", default)]
    pub r#use: Option<String>,
    /// CustomProperties element
    #[serde(rename = "CustomProperties", default)]
    pub custom_properties: Option<CustomPropertiesCollection>,
}

