Reset switch session on trigger changes and add DP2 force helper
This commit is contained in:
+25
-14
@@ -80,6 +80,7 @@ class KvmSwitcherService:
|
||||
self._samsung_session_attempted = False
|
||||
self._samsung_session_successful = False
|
||||
self._samsung_session_attempt_count = 0
|
||||
self._last_trigger_input_code: int | None = None
|
||||
self._state_lock = Lock()
|
||||
self._stop_event = Event()
|
||||
self._thread: Thread | None = None
|
||||
@@ -115,7 +116,6 @@ class KvmSwitcherService:
|
||||
def poll_once(self) -> dict[str, Any]:
|
||||
config = self.config_store.get()
|
||||
scan = self.monitor_backend.scan()
|
||||
self._update_samsung_session(scan.samsung_present)
|
||||
|
||||
errors = list(scan.errors)
|
||||
errors.extend(config.validate())
|
||||
@@ -124,6 +124,7 @@ class KvmSwitcherService:
|
||||
scan=scan,
|
||||
errors=errors,
|
||||
)
|
||||
self._update_samsung_session(scan.samsung_present, trigger_input_code)
|
||||
|
||||
ddm_slot = self.ddm_backend.resolve_alienware_slot(force=False)
|
||||
supports_monitor_targeting = bool(
|
||||
@@ -242,18 +243,28 @@ class KvmSwitcherService:
|
||||
return port_name
|
||||
return None
|
||||
|
||||
def _update_samsung_session(self, samsung_present: bool) -> None:
|
||||
if samsung_present:
|
||||
if not self._samsung_session_active:
|
||||
self._samsung_session_active = True
|
||||
self._samsung_session_attempted = False
|
||||
self._samsung_session_successful = False
|
||||
self._samsung_session_attempt_count = 0
|
||||
else:
|
||||
def _update_samsung_session(self, samsung_present: bool, trigger_input_code: int | None) -> None:
|
||||
if not samsung_present:
|
||||
self._samsung_session_active = False
|
||||
self._samsung_session_attempted = False
|
||||
self._samsung_session_successful = False
|
||||
self._samsung_session_attempt_count = 0
|
||||
self._last_trigger_input_code = None
|
||||
return
|
||||
|
||||
if not self._samsung_session_active:
|
||||
self._samsung_session_active = True
|
||||
self._samsung_session_attempted = False
|
||||
self._samsung_session_successful = False
|
||||
self._samsung_session_attempt_count = 0
|
||||
self._last_trigger_input_code = trigger_input_code
|
||||
return
|
||||
|
||||
if trigger_input_code != self._last_trigger_input_code:
|
||||
self._samsung_session_attempted = False
|
||||
self._samsung_session_successful = False
|
||||
self._samsung_session_attempt_count = 0
|
||||
self._last_trigger_input_code = trigger_input_code
|
||||
|
||||
def _attempt_switch_sequence(
|
||||
self,
|
||||
@@ -284,16 +295,16 @@ class KvmSwitcherService:
|
||||
verify_scan = self.monitor_backend.scan()
|
||||
scan = verify_scan
|
||||
errors.extend(verify_scan.errors)
|
||||
self._update_samsung_session(verify_scan.samsung_present)
|
||||
|
||||
if not verify_scan.samsung_present:
|
||||
return "waiting_for_reconnect", last_switch_at, scan, errors
|
||||
|
||||
verify_trigger_input, _, _ = self._resolve_trigger_state(
|
||||
config=config,
|
||||
scan=verify_scan,
|
||||
errors=errors,
|
||||
)
|
||||
self._update_samsung_session(verify_scan.samsung_present, verify_trigger_input)
|
||||
|
||||
if not verify_scan.samsung_present:
|
||||
return "waiting_for_reconnect", last_switch_at, scan, errors
|
||||
|
||||
desired_codes = self._port_input_codes(desired_port)
|
||||
if verify_trigger_input not in desired_codes:
|
||||
return "waiting_for_trigger_match", last_switch_at, scan, errors
|
||||
|
||||
Reference in New Issue
Block a user