Ejemplo n.º 1
0
    def test_alarm_propagation(self):
        device_name = '%s/sub1/1' % self.DOMAIN_NAME
        members_template = ['%s/capability/sub1cap1', '%s/capability/sub1cap2']
        members = [member % self.DOMAIN_NAME for member in members_template]

        self.add_members(device_name, 'tiles', members)
        dp = DeviceProxy(device_name)
        self.assertNotEqual(dp.state(), AttrQuality.ATTR_ALARM)
        member_dp = DeviceProxy(members[0])
        alarm_data = json.dumps({
            'name': 'an_attr',
            'min_alarm': '20',
            'max_alarm': '50'
        })
        member_dp.command_inout('set_attribute_alarm', alarm_data)
        member_dp.an_attr = 10
        attr = AttributeProxy(members[0] + '/an_attr')
        self.assertEqual(attr.read().quality, AttrQuality.ATTR_ALARM)
        self.assertEqual(member_dp.state(), PyTango._PyTango.DevState.ALARM)
        i = 0
        while (dp.state() != PyTango._PyTango.DevState.ALARM) and i < 3:
            sleep(1)
            i += 1

        self.assertEqual(dp.state(), PyTango._PyTango.DevState.ALARM)
 def power_on(self):
     motors = []
     motors = motors + self.get_pool_motors('hfm_y')
     motors = motors + self.get_pool_motors('vfm_x1')
     motors = motors + self.get_pool_motors('vfm_x2')
     attrs = []
     all_on = True
     for mot in motors:
         try:
             power_attr = AttributeProxy(mot.name + '/PowerOn')
             attrs.append(power_attr)
             if power_attr.read().value == False:
                 power_attr.write(True)
                 all_on = False
         except PyTango.DevFailed as e:
             self._log.warning(
                 "Motor {} doesn't have a PowerOn attribute".format(
                     mot.name))
     starttime = time.time()
     while all_on == False:
         if time.time() - starttime > 2:
             raise PyTango.DevFailed(
                 "Timeout while waiting for motors to power on")
         all_on = True
         time.sleep(0.1)
         for attr in attrs:
             if attr.read().value == False:
                 all_on = False
Ejemplo n.º 3
0
class EventsTest(Device):
    """
    Switches beetwen valid and invalid attribute`s values.
    """
    __metaclass__ = DeviceMeta
    # PROTECTED REGION ID(EventsTest.class_variable) ENABLED START #
    # PROTECTED REGION END #    //  EventsTest.class_variable

    # -----------------
    # Device Properties
    # -----------------

    DeviceName = device_property(dtype='str', )

    # ----------
    # Attributes
    # ----------

    Max = attribute(dtype='double', )

    # ---------------
    # General methods
    # ---------------

    def init_device(self):
        Device.init_device(self)
        # PROTECTED REGION ID(EventsTest.init_device) ENABLED START #
        self.set_state(DevState.ON)
        self.proxy = AttributeProxy(self.DeviceName)
        # PROTECTED REGION END #    //  EventsTest.init_device

    def always_executed_hook(self):
        # PROTECTED REGION ID(EventsTest.always_executed_hook) ENABLED START #
        pass
        # PROTECTED REGION END #    //  EventsTest.always_executed_hook

    def delete_device(self):
        # PROTECTED REGION ID(EventsTest.delete_device) ENABLED START #
        pass
        # PROTECTED REGION END #    //  EventsTest.delete_device

    # ------------------
    # Attributes methods
    # ------------------

    def read_Max(self):
        # PROTECTED REGION ID(EventsTest.Attribute1_read) ENABLED START #
        value = self.proxy.read().value
        maximums = []
        for row in value:
            maximums.append(max(row))
        value = max(maximums)
        attr_quality = AttrQuality.ATTR_ALARM
        self.push_change_event("Max", float(value), time(), attr_quality)
        self.push_archive_event("Max", float(value), time(), attr_quality)
        return float(value), time(), attr_quality