Class: Syskit::InstanceRequirements::Dynamics

Inherits:
Struct
  • Object
show all
Defined in:
lib/syskit/instance_requirements.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#portsObject

Returns the value of attribute ports

Returns:

  • (Object)

    the current value of ports



65
66
67
# File 'lib/syskit/instance_requirements.rb', line 65

def ports
  @ports
end

#taskObject

Returns the value of attribute task

Returns:

  • (Object)

    the current value of task



65
66
67
# File 'lib/syskit/instance_requirements.rb', line 65

def task
  @task
end

Instance Method Details

#add_period_info(period, sample_size = 1) ⇒ Object



70
71
72
# File 'lib/syskit/instance_requirements.rb', line 70

def add_period_info(period, sample_size = 1)
    task.add_trigger('period', Float(period), sample_size)
end

#add_port_info(port_name, info) ⇒ Object



74
75
76
77
# File 'lib/syskit/instance_requirements.rb', line 74

def add_port_info(port_name, info)
    (ports[port_name.to_str] ||= NetworkGeneration::PortDynamics.new(port_name.to_str)).
        merge(info)
end

#add_port_period(port_name, period, sample_count = 1) ⇒ self

Declare the period of a port

When computing dataflow, this overrides propagated values

Parameters:

  • port_name (String)
  • period (Float)

    the period in seconds

  • sample_count (Integer) (defaults to: 1)

    how many samples are written each time

Returns:

  • (self)


80
81
82
83
# File 'lib/syskit/instance_requirements.rb', line 80

def add_port_period(port_name, period, sample_count = 1)
    (ports[port_name.to_str] ||= NetworkGeneration::PortDynamics.new(port_name.to_str)).
        add_trigger('period', period, sample_count)
end

#find_port_dynamics(port_name) ⇒ NetworkGeneration::PortDynamics?

Returns the port dynamics defined for a given port, or nil

Parameters:

  • port_name (String)

Returns:

See Also:



86
87
88
# File 'lib/syskit/instance_requirements.rb', line 86

def find_port_dynamics(port_name)
    ports[port_name.to_str]
end

#merge(other) ⇒ Object



90
91
92
93
94
95
96
# File 'lib/syskit/instance_requirements.rb', line 90

def merge(other)
    task.merge(other.task)
    other.ports.each_key { |port_name| ports[port_name] ||= NetworkGeneration::PortDynamics.new(port_name) }
    @ports = ports.merge(other.ports) do |port_name, old, new|
        old.merge(new)
    end
end