예제 #1
0
    def __init__(
        self,
        addr_conn: "ModuleConnection",
        num_tries: int = 3,
        timeout_msec: int = 1500,
    ):
        """Initialize class instance."""
        self.addr_conn = addr_conn

        self.trh = TimeoutRetryHandler(num_tries, timeout_msec)
        self.trh.set_timeout_callback(self.timeout)

        # callback
        addr_conn.register_for_inputs(self.process_input)
예제 #2
0
    def __init__(
        self,
        addr_conn: "ModuleConnection",
        num_tries: int = 3,
        timeout_msec: int = 1500,
    ):
        """Initialize class instance."""
        self._oem_text: List[Optional[str]] = [None] * 4
        self.oem_text_known = asyncio.Event()

        super().__init__(addr_conn, num_tries, timeout_msec)

        self.trhs = []
        for block_id in range(4):
            trh = TimeoutRetryHandler(self.task_registry, num_tries,
                                      timeout_msec)
            trh.set_timeout_callback(self.timeout, block_id=block_id)
            self.trhs.append(trh)
예제 #3
0
    def __init__(self, addr_conn: "ModuleConnection"):
        """Construct StatusRequestHandler instance."""
        self.addr_conn = addr_conn
        self.settings = addr_conn.conn.settings

        self.last_requested_var_without_type_in_response = lcn_defs.Var.UNKNOWN
        self.last_var_lock = asyncio.Lock()

        # Output-port request status (0..3)
        self.request_status_outputs = []
        for output_port in range(4):
            trh = TimeoutRetryHandler(
                -1, self.settings["MAX_STATUS_EVENTBASED_VALUEAGE_MSEC"])
            trh.set_timeout_callback(self.request_status_outputs_timeout,
                                     output_port)
            self.request_status_outputs.append(trh)

        # Relay request status (all 8)
        self.request_status_relays = TimeoutRetryHandler(
            -1, self.settings["MAX_STATUS_EVENTBASED_VALUEAGE_MSEC"])
        self.request_status_relays.set_timeout_callback(
            self.request_status_relays_timeout)

        # Binary-sensors request status (all 8)
        self.request_status_bin_sensors = TimeoutRetryHandler(
            -1, self.settings["MAX_STATUS_EVENTBASED_VALUEAGE_MSEC"])
        self.request_status_bin_sensors.set_timeout_callback(
            self.request_status_bin_sensors_timeout)

        # Variables request status.
        # Lazy initialization: Will be filled once the firmware version is
        # known.
        self.request_status_vars = {}
        for var in lcn_defs.Var:
            if var != lcn_defs.Var.UNKNOWN:
                self.request_status_vars[var] = TimeoutRetryHandler(
                    -1, self.settings["MAX_STATUS_EVENTBASED_VALUEAGE_MSEC"])
                self.request_status_vars[var].set_timeout_callback(
                    self.request_status_var_timeout, var=var)

        # LEDs and logic-operations request status (all 12+4).
        self.request_status_leds_and_logic_ops = TimeoutRetryHandler(
            -1, self.settings["MAX_STATUS_POLLED_VALUEAGE_MSEC"])
        self.request_status_leds_and_logic_ops.set_timeout_callback(
            self.request_status_leds_and_logic_ops_timeout)

        # Key lock-states request status (all tables, A-D).
        self.request_status_locked_keys = TimeoutRetryHandler(
            -1, self.settings["MAX_STATUS_POLLED_VALUEAGE_MSEC"])
        self.request_status_locked_keys.set_timeout_callback(
            self.request_status_locked_keys_timeout)