This commit is contained in:
2026-03-11 15:52:46 +01:00
parent 006e41130b
commit 06f9fdf83c
2 changed files with 11 additions and 6 deletions
+5
View File
@@ -17,6 +17,7 @@ def _command_wrapper(func: Callable[Concatenate[TEF6686, P], tuple[bytes, int |
@wraps(func) @wraps(func)
def inner(self: TEF6686, *args: P.args, **kwargs: P.kwargs) -> bytes | T: def inner(self: TEF6686, *args: P.args, **kwargs: P.kwargs) -> bytes | T:
data, read_bytes, out_parser = func(self, *args, **kwargs) data, read_bytes, out_parser = func(self, *args, **kwargs)
data, read_bytes, out_parser = self._pre_command_(func, data, read_bytes, out_parser)
if read_bytes: data = self.p.write_read_i2c(self.address, data, read_bytes) if read_bytes: data = self.p.write_read_i2c(self.address, data, read_bytes)
else: data = self.p.write_i2c(self.address, data) else: data = self.p.write_i2c(self.address, data)
@@ -33,6 +34,8 @@ def pack(*values: int | SignedInt):
return struct.pack(struct_string, *values) return struct.pack(struct_string, *values)
class TEF6686(BaseTEF668X): class TEF6686(BaseTEF668X):
def _pre_command_(self, wrap: Callable, data: bytes, read_bytes: int | None, out_parser: Callable | None): return data, read_bytes, out_parser
class TuneTo_Mode(Enum): class TuneTo_Mode(Enum):
Preset = 1 Preset = 1
Search = 2 Search = 2
@@ -333,6 +336,7 @@ def _7_command_wrapper(func: Callable[Concatenate[TEF6687, P], tuple[bytes, int
@wraps(func) @wraps(func)
def inner(self: TEF6687, *args: P.args, **kwargs: P.kwargs) -> bytes | T: def inner(self: TEF6687, *args: P.args, **kwargs: P.kwargs) -> bytes | T:
data, read_bytes, out_parser = func(self, *args, **kwargs) data, read_bytes, out_parser = func(self, *args, **kwargs)
data, read_bytes, out_parser = self._pre_command_(func, data, read_bytes, out_parser)
if read_bytes: data = self.p.write_read_i2c(self.address, data, read_bytes) if read_bytes: data = self.p.write_read_i2c(self.address, data, read_bytes)
else: data = self.p.write_i2c(self.address, data) else: data = self.p.write_i2c(self.address, data)
@@ -364,6 +368,7 @@ def _8_command_wrapper(func: Callable[Concatenate[TEF6688, P], tuple[bytes, int
@wraps(func) @wraps(func)
def inner(self: TEF6688, *args: P.args, **kwargs: P.kwargs) -> bytes | T: def inner(self: TEF6688, *args: P.args, **kwargs: P.kwargs) -> bytes | T:
data, read_bytes, out_parser = func(self, *args, **kwargs) data, read_bytes, out_parser = func(self, *args, **kwargs)
data, read_bytes, out_parser = self._pre_command_(func, data, read_bytes, out_parser)
if read_bytes: data = self.p.write_read_i2c(self.address, data, read_bytes) if read_bytes: data = self.p.write_read_i2c(self.address, data, read_bytes)
else: data = self.p.write_i2c(self.address, data) else: data = self.p.write_i2c(self.address, data)
+6 -6
View File
@@ -46,7 +46,7 @@ def init_tef():
tef = TEF6686(p) tef = TEF6686(p)
tef.init(clock=CLOCK) tef.init(clock=CLOCK)
tef.AUDIO_Set_Mute(False) tef.AUDIO_Set_Mute(False)
tef.AUDIO_Set_Volume(30) tef.AUDIO_Set_Volume(20)
tef.FM_Tune_To(TEF6686.TuneTo_Mode.Preset, INITIAL_FREQ) tef.FM_Tune_To(TEF6686.TuneTo_Mode.Preset, INITIAL_FREQ)
tef.FM_Set_RDS(1) tef.FM_Set_RDS(1)
tef.FM_Set_ChannelEqualizer(INITIAL_EQ) tef.FM_Set_ChannelEqualizer(INITIAL_EQ)
@@ -202,19 +202,19 @@ def send_rds_data(tef: TEF6686, conn: socket.socket, state: dict):
data = b"" data = b""
if (status & (1 << 13) == 0): if (status & (1 << 13) == 0):
err = 0 err = 0
err |= ((dec_error >> 8) & 0x30) >> 4 err |= (dec_error & 0x30) >> 4
err |= ((dec_error >> 8) & 0xC) err |= (dec_error & 0xC)
err |= ((dec_error >> 8) & 3) << 4 err |= (dec_error & 3) << 4
data = b"R" data = b"R"
data += f"{B:04X}{C:04X}{D:04X}{err:02X}\n".encode() data += f"{B:04X}{C:04X}{D:04X}{err:02X}\n".encode()
pi_error = (dec_error >> 14) & 0b11 pi_error = (dec_error >> 8) & 0b11
if pi_error < 3: if pi_error < 3:
data += b"P" + f"{A:04X}".encode() data += b"P" + f"{A:04X}".encode()
data += b"?" * pi_error + b"\n" data += b"?" * pi_error + b"\n"
elif status & (1 << 12): elif status & (1 << 12):
pi_error = (dec_error >> 10) & 0b11 pi_error = (dec_error >> 2) & 0b11
if pi_error < 3: if pi_error < 3:
data += b"P" + f"{C:04X}".encode() data += b"P" + f"{C:04X}".encode()
data += b"?" * pi_error + b"\n" data += b"?" * pi_error + b"\n"