예제 #1
0
    def __init__(self, address: int = None, measurement_period: float = 1):
        """
    @param address:block address
    @param mesurement_period: sampling frequency in sec
    """
        super().__init__(BlockTypes.power, address)
        self.is_usb_connected = ActiveVariable(False, measurement_period,
                                               self._get_usb_state)
        self.is_charging = ActiveVariable(False, measurement_period,
                                          self._get_charging_state)
        self.battery_voltage_V = ActiveVariable(0, measurement_period,
                                                self._get_voltage)
        self.battery_current_mA = ActiveVariable(0, measurement_period,
                                                 self._get_current_ma)

        self._ina_init()
예제 #2
0
 def __init__(self,
              count: int,
              _type: SmoothingType,
              active_variable: ActiveVariable = None):
     super().__init__(active_variable.get(False))
     self._active_variable = active_variable
     self._active_variable.updated(True, self._original_variable_updated)
     self._count = count
     self._type = _type
     self._values = [active_variable._value
                     ] if active_variable._value is not None else []
예제 #3
0
    def __init__(self, address: int = None, measurement_period: float = 1):
        """
    @param address:block address
    @param measurement_period: sampling frequency in sec
    """
        super().__init__(BlockTypes.distance, address)
        #self.is_usb_connected = ActiveVariable(False, measurement_period, self._get_usb_state)
        self.value = ActiveVariable(0, measurement_period, self._get_distance)

        #doesn't make sense to initialize extension when the block is not inserted
        self._vl53l1 = VL53L1X(
            self.i2c, self.ext_address) if self.is_available() else None
예제 #4
0
 def setUp(self):
     self.next_value = 10
     self.var = ActiveVariable(renew_func=self._get_value)
     self.called_func = MagicMock()
예제 #5
0
class TestActiveVariable(TestCase):
    def setUp(self):
        self.next_value = 10
        self.var = ActiveVariable(renew_func=self._get_value)
        self.called_func = MagicMock()

    def _get_value(self):
        return self.next_value

    def _test_called_once(self):
        self.var.get(True)
        self.called_func.assert_called_once()

    def _test_not_called(self):
        self.var.get(True)
        self.called_func.assert_not_called()

    def test_equal_to__int_true(self):
        self.var.equal_to(self.next_value, False, self.called_func)
        self._test_called_once()

    def test_equal_to__int_false(self):
        self.var.equal_to(self.next_value + 1, False, self.called_func)
        self._test_not_called()

    def test_equal_to__float_true(self):
        self.var.equal_to(float(self.next_value), False, self.called_func)
        self._test_called_once()

    def test_equal_to__float_false(self):
        self.var.equal_to(
            float(self.next_value) + 0.1, False, self.called_func)
        self._test_not_called()

    def test_not_equal_to__float_true(self):
        self.var.not_equal_to(
            float(self.next_value) + 0.1, False, self.called_func)
        self._test_called_once()

    def test_not_equal_to__float_false(self):
        self.var.not_equal_to(float(self.next_value), False, self.called_func)
        self._test_not_called()

    def test_less_than__true(self):
        self.var.less_than(self.next_value + 1, False, self.called_func)
        self._test_called_once()

    def test_less_than__false(self):
        self.var.less_than(self.next_value, False, self.called_func)
        self._test_not_called()

    def test_more_than__true(self):
        self.var.more_than(self.next_value - 1, False, self.called_func)
        self._test_called_once()

    def test_more_than__false(self):
        self.var.more_than(self.next_value, False, self.called_func)
        self._test_not_called()

    def test_in_range__true(self):
        self.var.in_range(self.next_value, self.next_value + 1, False,
                          self.called_func)
        self._test_called_once()

    def test_in_range__false(self):
        self.var.in_range(self.next_value + 1, self.next_value + 2, False,
                          self.called_func)
        self._test_not_called()

        self.var.in_range(self.next_value - 1, self.next_value, False,
                          self.called_func)
        self._test_not_called()

    def test_out_of_range__true(self):
        self.var.out_of_range(self.next_value + 1, self.next_value + 2, False,
                              self.called_func)
        self._test_called_once()

        self.var.out_of_range(self.next_value - 1, self.next_value, False,
                              self.called_func)
        self._test_called_once()

    def test_out_of_range__false(self):
        self.var.out_of_range(self.next_value, self.next_value + 1, False,
                              self.called_func)
        self._test_not_called()

    def test_value_changed__true(self):
        self.var.changed(False, self.called_func)
        self._test_called_once()

        #call set with the same value should not be added another call
        self.var.changed(False, self.called_func)
        self._test_called_once()

    def test_value_updated(self):
        self.var.updated(False, self.called_func)
        self._test_called_once()

    def test_set_get_value(self):
        self.var.set(self.next_value)
        self.assertEqual(self.var.get(), self.next_value)

    def test__get_value__force(self):
        self.assertEqual(self.var.get(force=True), self.next_value)

    def test_remove_trigger(self):
        handler = self.var.equal_to(self.next_value, False, self.called_func)
        self.var.remove_trigger(handler)
        self._test_not_called()
예제 #6
0
 def __init__(self, address=None, measurement_period: float=0.1):
   BlockBase.__init__(self, BlockTypes.ir, address)
   self.value = ActiveVariable(RemoteKey.get_default(), measurement_period, self._get_value)
   self._remotes = list()
예제 #7
0
 def __init__(self, address=None, get_counter_period=1):
     super().__init__(BlockTypes.motor_driver, address)
     self.motor1_sensor_counter = ActiveVariable(
         0, get_counter_period, self._get_sensor_counter_m1)
     self.motor2_sensor_counter = ActiveVariable(
         0, get_counter_period, self._get_sensor_counter_m2)
예제 #8
0
 def __init__(self, address=None, measurement_period: float = 0.1):
     super().__init__(BlockTypes.buttom, address)
     self.value = ActiveVariable(False, measurement_period,
                                 self._is_pressed)