Class: Syskit::Robot::SlaveDeviceInstance

Inherits:
DeviceInstance show all
Defined in:
lib/syskit/robot/slave_device_instance.rb

Overview

A SlaveDeviceInstance represents slave devices, i.e. data services that are provided by other devices. For instance, a camera image from a stereocamera device.

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods inherited from DeviceInstance

#doc, #instanciate, #to_action

Constructor Details

#initialize(master_device, service) ⇒ SlaveDeviceInstance

Returns a new instance of SlaveDeviceInstance



43
44
45
46
# File 'lib/syskit/robot/slave_device_instance.rb', line 43

def initialize(master_device, service)
    @master_device = master_device
    @service = service
end

Instance Attribute Details

#master_deviceObject (readonly)

The MasterDeviceInstance that we depend on



8
9
10
# File 'lib/syskit/robot/slave_device_instance.rb', line 8

def master_device
  @master_device
end

#serviceObject (readonly)

The actual service on master_device's task model



10
11
12
# File 'lib/syskit/robot/slave_device_instance.rb', line 10

def service
  @service
end

Instance Method Details

#==(other) ⇒ Object



84
85
86
87
88
# File 'lib/syskit/robot/slave_device_instance.rb', line 84

def ==(other)
    other.kind_of?(SlaveDeviceInstance) &&
        other.master_device == master_device &&
        other.name == name
end

#burst(*args) ⇒ Object



64
65
66
67
68
69
70
# File 'lib/syskit/robot/slave_device_instance.rb', line 64

def burst(*args)
    if args.empty?
        super || master_device.burst
    else
        super
    end
end

#device_modelObject



24
25
26
# File 'lib/syskit/robot/slave_device_instance.rb', line 24

def device_model
    service.model
end

#each_fullfilled_model(&block) ⇒ Object



12
13
14
# File 'lib/syskit/robot/slave_device_instance.rb', line 12

def each_fullfilled_model(&block)
    service.model.each_fullfilled_model(&block)
end

#full_nameObject



34
35
36
# File 'lib/syskit/robot/slave_device_instance.rb', line 34

def full_name
    "#{master_device.name}.#{name}"
end

#nameObject

The slave name. It is the same name than the corresponding service on the task model



30
31
32
# File 'lib/syskit/robot/slave_device_instance.rb', line 30

def name
    service.name
end

#period(*args) ⇒ Object



50
51
52
53
54
55
56
# File 'lib/syskit/robot/slave_device_instance.rb', line 50

def period(*args)
    if args.empty?
        super || master_device.period
    else
        super
    end
end

#robotObject



16
17
18
# File 'lib/syskit/robot/slave_device_instance.rb', line 16

def robot
    master_device.robot
end

#sample_size(*args) ⇒ Object



57
58
59
60
61
62
63
# File 'lib/syskit/robot/slave_device_instance.rb', line 57

def sample_size(*args)
    if args.empty?
        super || master_device.sample_size
    else
        super
    end
end

#short_nameObject

Defined to be consistent with task and data service models



39
40
41
# File 'lib/syskit/robot/slave_device_instance.rb', line 39

def short_name
    "#{name}[#{service.model.short_name}]"
end

#taskObject



48
# File 'lib/syskit/robot/slave_device_instance.rb', line 48

def task; master_device.task end

#task_modelObject



20
21
22
# File 'lib/syskit/robot/slave_device_instance.rb', line 20

def task_model
    master_device.task_model
end

#to_instance_requirementsObject

Returns the InstanceRequirements object that can be used to represent this device



74
75
76
77
78
# File 'lib/syskit/robot/slave_device_instance.rb', line 74

def to_instance_requirements
    req = master_device.to_instance_requirements
    req.select_service(service)
    req
end

#to_sObject



80
81
82
# File 'lib/syskit/robot/slave_device_instance.rb', line 80

def to_s
    "device(#{device_model.short_name}, :as => #{full_name}).#{name}_srv"
end