def _record_timestamp(self):
     """Helper for updating current timestamp in parameters"""
     now = datetime.datetime.now()
     ParametersStore.set('record_date', now.strftime('%Y-%m-%d'),
                         notify=False)
     ParametersStore.set('record_time', now.strftime('%H:%M:%S'),
                         notify=False)
Example #2
0
 def _camera_parameter_changed(self, key, val):
     self.logger.debug('camera parameter changed: %s: %s', key, val)
     if key not in CAMERA_PARAMETERS:
         self.logger.debug('parameter %s is not a camera parameter', key)
         return
     try:
         ParametersStore.set(key, val)
     except KeyError:
         self.logger.exception('parameter %s = %s not supported', key, val)
Example #3
0
 def _record_timestamp(self):
     """Helper for updating current timestamp in parameters"""
     now = datetime.datetime.now()
     ParametersStore.set('record_date',
                         now.strftime('%Y-%m-%d'),
                         notify=False)
     ParametersStore.set('record_time',
                         now.strftime('%H:%M:%S'),
                         notify=False)
Example #4
0
    def apply_other_parameter(self, param):
        """Apply parameter directly in parameter store, i.e. skipping any
        interaction with external devices.

        :param param Parameter:
        :rtype: bool
        :return: True"""
        value = param.value
        name = param.name
        ParametersStore.set(name, value)
        return True
    def apply_other_parameter(self, param):
        """Apply parameter directly in parameter store, i.e. skipping any
        interaction with external devices.

        :param param Parameter:
        :rtype: bool
        :return: True"""
        value = param.value
        name = param.name
        ParametersStore.set(name, value)
        return True
Example #6
0
 def _update_camera_parameters(self, cam):
     """Update camera related parameters"""
     self.logger.debug('updating camera parameters')
     for param in CAMERA_PARAMETERS:
         try:
             val = self._get_param(cam, param)
             self.logger.debug('current value: %s -> %s', param, val)
             ParametersStore.set(param, val)
         except dbus.DBusException:
             self.logger.exception('failed to obtain parameter %s from camera %s',
                                   param, cam.object_path)
Example #7
0
    def _update_servo_parameters(self):
        """Update servo parameters after connecting"""
        if not self.servo:
            return

        for param in SERVO_PARAMETERS:
            try:
                val = self.servo.getValue(param)
                ParametersStore.set(param, val)
            except dbus.DBusException:
                self.logger.exception('failed to update parameter %s from servo',
                                      param)
Example #8
0
    def test_set_value(self):

        self.assertNotEqual(ParametersStore.DEPENDENCIES, {})
        pdesc_bar = ParametersStore.get('bar')

        ParametersStore.set('foo', 3)
        bar_val = ParametersStore.get_value('bar')
        # bar = foo + 1
        self.assertEqual(bar_val, 4)
        baz_val = ParametersStore.get_value('baz')
        # baz = foo * bar + 1
        self.assertEqual(baz_val, 13)
        # cafe = baz ** 2 + bar
        cafe_val = ParametersStore.get_value('cafe')
        self.assertEqual(cafe_val, 173)
Example #9
0
    def _camera_state_changed(self, state):
        self.logger.debug('camera status changed: %d -> %d',
                          self.camera_state, state)

        if state == self.CAMERA_STATE_ACTIVE_RECORDING:
            record_state = 1
        else:
            record_state = 0
        ParametersStore.set('record_state', record_state)

        if (state, self.camera_state) in self.SNAPSHOT_STATES:
            # take snapshot
            self.service.controller.take_snapshot()

        # update current camera state
        self.camera_state = state
Example #10
0
    def test_set(self):
        # test that a parameter can be set
        test_param = 'focus_distance_m'
        test_val = 10.0

        self.assertTrue(ParametersStore.set(test_param, test_val))
        focus_set = ParametersStore.get(test_param)

        self.assertEqual(focus_set.value, test_val)
Example #11
0
    def test_called(self):
        # verify that a callback was called only once for each set
        tmock = mock.Mock()

        test_param = 'focus_distance_m'
        test_value = 10.0

        # register mock callback a couple of times, only one
        # registration is used
        ParametersStore.change_listeners.add(tmock)
        ParametersStore.change_listeners.add(tmock)
        ParametersStore.change_listeners.add(tmock)

        # set a parameter
        ParametersStore.set(test_param, test_value)

        # has to be called
        self.assertTrue(tmock.called)
        # called only once
        self.assertEquals(tmock.call_count, 1)
        self.assertEquals(len(tmock.call_args), 2)
        # grab the first list parameter
        pdesc = tmock.call_args[0][0]
        self.assertIsInstance(pdesc, Parameter)
        self.assertEquals(pdesc.name, test_param)
        self.assertEquals(pdesc.value, test_value)

        # set once again
        ParametersStore.set(test_param, test_value + 1)
        self.assertEquals(tmock.call_count, 2)
        # grab the first list parameter
        pdesc = tmock.call_args[0][0]
        self.assertEquals(pdesc.value, test_value + 1)

        # remove callback
        ParametersStore.change_listeners.remove(tmock)
        # and again, should not fail
        ParametersStore.change_listeners.remove(tmock)
        # now something different
        ParametersStore.change_listeners.remove(None)
Example #12
0
    def test_set_convert(self):
        # test that parameter can be set, and the value is
        # automatically converted to proper type
        test_param = 'focus_distance_m'
        test_val = 10
        expecting_type = float

        # test value is an int
        self.assertIsInstance(test_val, int)

        # first read it
        param = ParametersStore.get(test_param)
        self.assertEqual(param.value_type, expecting_type)
        self.assertIsInstance(param.value, expecting_type)

        # set
        ParametersStore.set(test_param, test_val)
        as_set = ParametersStore.get(test_param)
        # the type should have been converted according to parameter
        # description
        self.assertIsInstance(as_set.value, expecting_type)
        self.assertEqual(as_set.value, expecting_type(test_val))
    def test_baseline_changed(self):

        #Set initial values
        ParametersStore.set('frame_width_px', 1920, evaluate=False)
        ParametersStore.set('focal_length_mm', 25, evaluate=False)
        ParametersStore.set('baseline_mm', 50.0, evaluate=False)
        ParametersStore.set('frame_width_mm', 15.84, evaluate=False)
        ParametersStore.set('distance_screen_m', 5.2, evaluate=False)
        ParametersStore.set('distance_object1_m', 4.4, evaluate=False)
        ParametersStore.set('distance_object2_m', 9.5, evaluate=False)

        #Change baseline to different value so convergence evaluation starts
        ParametersStore.set('baseline_mm', 20, evaluate=True)

        #Check new values
        convergence_px = ParametersStore.get_value('convergence_px')
        self.assertEquals(round(convergence_px, 2), 12.03)

        convergence_deg = ParametersStore.get_value('convergence_deg')
        self.assertEquals(round(convergence_deg, 2), 0.22)
    def test_focal_length_changed(self):

        #Set initial values
        ParametersStore.set('focal_length_mm', 25, evaluate=False)
        ParametersStore.set('baseline_mm', 50.0, evaluate=False)
        ParametersStore.set('frame_width_mm', 15.84, evaluate=False)
        ParametersStore.set('frame_height_mm', 8.91, evaluate=False)
        ParametersStore.set('distance_screen_m', 3.15, evaluate=False)
        ParametersStore.set('distance_near_m', 1.04, evaluate=False)

        #Change focal_length to check evaluation
        ParametersStore.set('focal_length_mm', 20, evaluate=True)

        #Check new values
        parallax_near_percent = ParametersStore.get_value(
            'parallax_near_percent')
        self.assertEquals(round(parallax_near_percent, 2), -4.07)

        real_width_near_m = ParametersStore.get_value('real_width_near_m')
        self.assertEquals(round(real_width_near_m, 2), 0.82)

        real_height_near_m = ParametersStore.get_value('real_height_near_m')
        self.assertEquals(round(real_height_near_m, 2), 0.46)
    def test_baseline_changed(self):

        #Set initial values
        ParametersStore.set('frame_width_px', 1920, evaluate=False)
        ParametersStore.set('focal_length_mm', 25, evaluate=False)
        ParametersStore.set('baseline_mm', 50.0, evaluate=False)
        ParametersStore.set('frame_width_mm', 15.84, evaluate=False)
        ParametersStore.set('distance_screen_m', 5.2, evaluate=False)
        ParametersStore.set('distance_object1_m', 4.4, evaluate=False)
        ParametersStore.set('distance_object2_m', 9.5, evaluate=False)

        #Change baseline to different value so convergence evaluation starts
        ParametersStore.set('baseline_mm', 20, evaluate=True)

        #Check new values
        convergence_px = ParametersStore.get_value('convergence_px')
        self.assertEquals(round(convergence_px, 2), 12.03)

        convergence_deg = ParametersStore.get_value('convergence_deg')
        self.assertEquals(round(convergence_deg, 2), 0.22)
    def test_focal_length_changed(self):

        #Set initial values
        ParametersStore.set('focal_length_mm', 25, evaluate=False)
        ParametersStore.set('baseline_mm', 50.0, evaluate=False)
        ParametersStore.set('frame_width_mm', 15.84, evaluate=False)
        ParametersStore.set('frame_height_mm', 8.91, evaluate=False )
        ParametersStore.set('distance_screen_m', 3.15, evaluate=False)
        ParametersStore.set('distance_near_m', 1.04, evaluate=False)

        #Change focal_length to check evaluation
        ParametersStore.set('focal_length_mm', 20, evaluate=True)

        #Check new values
        parallax_near_percent = ParametersStore.get_value('parallax_near_percent')
        self.assertEquals(round(parallax_near_percent, 2), -4.07)

        real_width_near_m = ParametersStore.get_value('real_width_near_m')
        self.assertEquals(round(real_width_near_m, 2), 0.82)

        real_height_near_m = ParametersStore.get_value('real_height_near_m')
        self.assertEquals(round(real_height_near_m, 2), 0.46)
Example #17
0
 def _servo_value_changed(self, parameter, motor, limit, in_progress, value):
     """pl.ros3d.servo.valueChanged signal handler"""
     self.logger.debug('got signal for parameter %s, value: %d', parameter, value)
     value = Infinity.convert_from(value)
     ParametersStore.set(parameter, value)
     self.logger.debug('parameter value updated')