From 3a50e59d32ce8e454b7e6a852680f7d1cc3cef4a Mon Sep 17 00:00:00 2001 From: mrlt8 <67088095+mrlt8@users.noreply.github.com> Date: Sat, 6 Jul 2024 06:49:40 -0700 Subject: [PATCH] Use k10056 if supported and not fps #1194 --- app/wyzecam/iotc.py | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/app/wyzecam/iotc.py b/app/wyzecam/iotc.py index f1bc1a20..4eda28ea 100644 --- a/app/wyzecam/iotc.py +++ b/app/wyzecam/iotc.py @@ -529,11 +529,19 @@ def valid_frame_size(self) -> set[int]: return {self.preferred_frame_size, int(os.getenv("IGNORE_RES", alt))} def sync_camera_time(self, wait: bool = False): - with self.iotctrl_mux(False) as mux: - with contextlib.suppress(tutk_ioctl_mux.Empty, tutk.TutkError): + with contextlib.suppress(tutk_ioctl_mux.Empty, tutk.TutkError): + with self.iotctrl_mux(False) as mux: mux.send_ioctl(tutk_protocol.K10092SetCameraTime()).result(wait) self.frame_ts = time.time() + def set_resolving_bit(self, fps: int = 0): + if fps or self.camera.model_name in {"WYZEDB3", "WVOD1", "HL_WCO2", "WYZEC1"}: + return K10052DBSetResolvingBit( + self.preferred_frame_size, self.preferred_bitrate, fps + ) + + return K10056SetResolvingBit(self.preferred_frame_size, self.preferred_bitrate) + def update_frame_size_rate(self, bitrate: Optional[int] = None, fps: int = 0): """Send a message to the camera to update the frame_size and bitrate.""" if bitrate: @@ -543,11 +551,12 @@ def update_frame_size_rate(self, bitrate: Optional[int] = None, fps: int = 0): self.preferred_frame_rate = fps self.sync_camera_time() - ioctl_params = self.preferred_frame_size, self.preferred_bitrate, fps - logger.warning("Requesting frame_size=%d, bitrate=%d, fps=%d" % ioctl_params) + params = self.preferred_frame_size, self.preferred_bitrate, fps + logger.warning("Requesting frame_size=%d, bitrate=%d, fps=%d" % params) + with self.iotctrl_mux() as mux: with contextlib.suppress(tutk_ioctl_mux.Empty): - mux.send_ioctl(K10052DBSetResolvingBit(*ioctl_params)).result(False) + mux.send_ioctl(self.set_resolving_bit(fps)).result(False) def clear_buffer(self) -> None: """Clear local buffer.""" @@ -1031,17 +1040,8 @@ def _auth(self): warnings.warn(f"AUTH FAILED: {auth_response}") raise ValueError("AUTH_FAILED") self.camera.set_camera_info(auth_response["cameraInfo"]) - frame_bit = self.preferred_frame_size, self.preferred_bitrate - if self.camera.product_model in ( - "WYZEDB3", - "WVOD1", - "HL_WCO2", - "WYZEC1", - ): - ioctl_msg = K10052DBSetResolvingBit(*frame_bit) - else: - ioctl_msg = K10056SetResolvingBit(*frame_bit) - mux.waitfor(mux.send_ioctl(ioctl_msg)) + + mux.send_ioctl(self.set_resolving_bit()).result() self.state = WyzeIOTCSessionState.AUTHENTICATION_SUCCEEDED except tutk.TutkError: self._disconnect()