tea5767/
defs.rs

1/// TEA5767 device driver
2#[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, default
29    Up,
30    /// Down
31    Down,
32}
33
34#[derive(Debug, Clone, Copy, PartialEq)]
35pub enum SearchAdcLevel {
36    /// low ADC output = 5
37    Low,
38    /// mid ADC output = 7
39    Mid,
40    /// high ADC output = 10
41    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    /// 13 Mhz
72    Clk13Mhz,
73    /// 32.768 Mhz
74    Clk32_768Khz,
75    /// 6.5 Mhz
76    Clk6_5MHz,
77}
78
79#[derive(Debug, Clone, Copy, PartialEq)]
80pub enum DeemphasisTime {
81    /// 75 μs
82    Dtc75,
83    /// 50 μs
84    Dtc50,
85}
86
87#[derive(Debug, Clone, Copy, PartialEq)]
88pub enum SearchStatus {
89    /// Station has been found
90    Success,
91    /// Station has not been found and band limit has been reached
92    Failure,
93}
94
95/// Europe/US frequency band limit range (87.5, 108.0) MHz
96pub const BAND_LIMITS_EUROPE_US: (f32, f32) = (87.5, 108.0);
97/// Japanese frequency band limit range  (76.0, 91.0) MHz
98pub const BAND_LIMITS_JAPANESE: (f32, f32) = (76.0, 91.0);