architecture.uac user.puml - moduleus/urx GitHub Wiki

@startuml

/' Objects '/

namespace uac { enum DataType { DOUBLE FLOAT INT16 INT32 UNDEFINED }

enum ProbeType {
	CURVILINEAR
	LINEAR
	MATRIX
	RCA
	SPARSE
	UNDEFINED
}

enum SamplingType {
	IQ
	RF
	UNDEFINED
}

enum WaveType {
	CONVERGING_WAVE
	CYLINDRICAL_WAVE
	DIVERGING_WAVE
	PLANE_WAVE
	UNDEFINED
}

class Element {
	+transform : Transform
	+element_geometry : ElementGeometry
	+impulse_response : ImpulseResponse
}

class ElementGeometry {
	+perimeter : Vector3D[]
}

class ImpulseResponse {
	+sampling_frequency : DoubleNan
	+time_offset : DoubleNan
	+units : string
	+data : double[]
}

class Probe {
	+type : ProbeType
	+transform : Transform
	+description : string
	+elements : Element[]
	+element_geometries : ElementGeometry[]
	+impulse_responses : ImpulseResponse[]
}



class Transform {
	+rotation : Vector3D
	+translation : Vector3D
}

class Vector3D  {
	+x : double
	+y : double
	+z : double
}



class Wave {
	+time_zero : DoubleNan
	+time_zero_reference_point : Vector3D
	+type : WaveType
	+parameters : double[]
}

class Acquisition{ +timestamp : DoubleNan +authors : string +country_code : string +description : string +local_time : string +system : string +excitations : Excitation[] +groups : Group[] +probes : Probe[]

+hw_config : HwConfig +trigger_in : optional +trigger_out : optional +super_groups : SuperGroup[] +initial_group : IGroup +time_offset : DoubleNan } class Dataset { +acquisition : Acquisition +version : Version }

}

namespace uac { enum Edge { FALLING HIGH LOW RISING UNDEFINED }

enum Polarity {
	NEGATIVE
	POSITIVE
	UNDEFINED
}



class DestinationLink {
	+trigger : optional<TriggerIn>
	+destination : IGroup
}

class Event {
		+receive_setup : ReceiveSetup
		+transmit_setup : TransmitSetup
	
	+hw_config : HwConfig
	+trigger_in : optional<TriggerIn>
	+trigger_out : optional<TriggerOut>
	+time_offset : DoubleNan
}

class Excitation {
	+sampling_frequency : DoubleNan
	+transmit_frequency : DoubleNan
	+pulse_shape : string
	+waveform : double[]

	+hw_config : HwConfig
}

class Group {
		+data_type : DataType
		+sound_speed : DoubleNan
		+sampling_type : SamplingType
		+description : string
		+sequence : Event[]
	
}

class HwConfig {
	+values : unordered_map<string, VecDataTypeVariant>
}

abstract class IGroup {
	+hw_config : HwConfig
	+trigger_in : optional<TriggerIn>
	+trigger_out : optional<TriggerOut>
	+destinations : DestinationLink[]
	+repetition_count : uint32
	+period : DoubleNan
	+time_offset : DoubleNan
}

class ReceiveSetup {
	+modulation_frequency : DoubleNan
	+sampling_frequency : DoubleNan
	+tgc_sampling_frequency : DoubleNan
	+time_offset : DoubleNan
	+probe_transform : Transform
	+tgc_profile : double[]
	+active_elements : uint32[][]
	+probe : Probe
	+number_samples : uint32

	+hw_config : HwConfig
}

class SuperGroup {
	+description : string
	+initial_group : IGroup
}

class TransmitSetup {
		+time_offset : DoubleNan
		+probe_transform : Transform
		+wave : Wave
		+delays : double[]
		+active_elements : uint32[][]
		+excitations : Excitation[]
		+probe : Probe

	+hw_config : HwConfig
}

class TriggerIn {
	+edge : Edge
	+channel : string
}

class TriggerOut {
	+polarity : Polarity
	+channel : string
	+pulse_duration : DoubleNan
	+time_offset : DoubleNan
}

class Version {
	+major : uint16
	+minor : uint16
	+patch : uint16

}

}

/' Inheritance relationships '/

uac.IGroup <|-- uac.Group

uac.IGroup <|-- uac.SuperGroup

/' Aggregation relationships '/

uac.Acquisition o-- uac.IGroup

uac.Acquisition o-- uac.Excitation

uac.Acquisition o-- uac.Probe

uac.Dataset *-- uac.Acquisition

uac.Dataset *-- uac.Version

uac.DestinationLink o-- uac.IGroup

uac.Event *-- uac.ReceiveSetup

uac.Event *-- uac.TransmitSetup

uac.Group *-- uac.DataType

uac.Group *-- uac.Event

uac.Group *-- uac.SamplingType

uac.IGroup *-- uac.DestinationLink

uac.Probe *-- uac.Element

uac.Probe o-- uac.ElementGeometry

uac.Probe o-- uac.ImpulseResponse

uac.Probe *-- uac.ProbeType

uac.SuperGroup o-- uac.IGroup

uac.TransmitSetup *-- uac.Wave

uac.TriggerIn *-- uac.Edge

uac.TriggerOut *-- uac.Polarity

uac.Wave *-- uac.WaveType

/' Nested objects '/

@enduml

⚠️ **GitHub.com Fallback** ⚠️