1#[derive(Debug)]
3pub struct TEA5767<I2C> {
4 pub(crate) i2c: I2C,
5 pub(crate) address: u8,
6 pub(crate) frequency: f32,
7 pub(crate) band_limits: BandLimits,
8 pub(crate) standby: bool,
9 pub(crate) mute: MuteChannel,
10 pub(crate) soft_mute: bool,
11 pub(crate) search_mode: bool,
12 pub(crate) search_mode_dir: SearchModeDirection,
13 pub(crate) search_adc_level: SearchAdcLevel,
14 pub(crate) injection_side: InjectionSide,
15 pub(crate) sound_mode: SoundMode,
16 pub(crate) high_cut_control: bool,
17 pub(crate) stereo_noise_canceling: bool,
18 pub(crate) crystal_frequency: CrystalFrequency,
19 pub(crate) software_programmable_port1: bool,
20 pub(crate) software_programmable_port2: bool,
21 pub(crate) search_indicator: bool,
22 pub(crate) deemphasis_time: DeemphasisTime,
23}
24
25
26#[derive(Debug, Clone, Copy, PartialEq)]
27pub enum SearchModeDirection {
28 Up,
30 Down,
32}
33
34#[derive(Debug, Clone, Copy, PartialEq)]
35pub enum SearchAdcLevel {
36 Low,
38 Mid,
40 High,
42}
43
44#[derive(Debug, Clone, Copy, PartialEq)]
45pub enum InjectionSide {
46 LowSide,
47 HighSide,
48}
49
50#[derive(Debug, Clone, Copy, PartialEq)]
51pub enum SoundMode {
52 Stereo,
53 Mono,
54}
55
56#[derive(Debug, Clone, Copy, PartialEq)]
57pub enum MuteChannel {
58 Right,
59 Left,
60 Both,
61 None,
62}
63
64#[derive(Debug, Clone, Copy, PartialEq)]
65pub enum BandLimits {
66 Japanese,
67 EuropeUS,
68}
69#[derive(Debug, Clone, Copy, PartialEq)]
70pub enum CrystalFrequency {
71 Clk13Mhz,
73 Clk32_768Khz,
75 Clk6_5MHz,
77}
78
79#[derive(Debug, Clone, Copy, PartialEq)]
80pub enum DeemphasisTime {
81 Dtc75,
83 Dtc50,
85}
86
87#[derive(Debug, Clone, Copy, PartialEq)]
88pub enum SearchStatus {
89 Success,
91 Failure,
93}
94
95pub const BAND_LIMITS_EUROPE_US: (f32, f32) = (87.5, 108.0);
97pub const BAND_LIMITS_JAPANESE: (f32, f32) = (76.0, 91.0);