This library controls a ST TDA7419 audio control IC. This is part of a project to implement an mbed controlled car stereo. The TDA7419 will take in stereo and output four channels of audio plus a subwoofer channel.
PreampTDA7419.cpp@2:34a58356394c, 2014-10-26 (annotated)
- Committer:
- danielashercohen
- Date:
- Sun Oct 26 22:49:34 2014 +0000
- Revision:
- 2:34a58356394c
- Parent:
- 1:69c37f1ab7df
Basic tone control features all implemented, working with FRDM-KL25Z
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
danielashercohen | 0:86ea14016b10 | 1 | /** PreampTDA7419 Library |
danielashercohen | 0:86ea14016b10 | 2 | * |
danielashercohen | 0:86ea14016b10 | 3 | * @Author: Dan Cohen |
danielashercohen | 2:34a58356394c | 4 | * |
danielashercohen | 0:86ea14016b10 | 5 | */ |
danielashercohen | 2:34a58356394c | 6 | |
danielashercohen | 0:86ea14016b10 | 7 | #include "mbed.h" |
danielashercohen | 0:86ea14016b10 | 8 | #include "PreampTDA7419.h" |
danielashercohen | 0:86ea14016b10 | 9 | #include <stdio.h> |
danielashercohen | 0:86ea14016b10 | 10 | #include <string.h> |
danielashercohen | 0:86ea14016b10 | 11 | |
danielashercohen | 0:86ea14016b10 | 12 | PreampTDA7419::PreampTDA7419(PinName sda, PinName scl): |
danielashercohen | 0:86ea14016b10 | 13 | _device(sda, scl) |
danielashercohen | 0:86ea14016b10 | 14 | { |
danielashercohen | 1:69c37f1ab7df | 15 | _volume = 6; |
danielashercohen | 1:69c37f1ab7df | 16 | _input = 1; |
danielashercohen | 1:69c37f1ab7df | 17 | |
danielashercohen | 1:69c37f1ab7df | 18 | _mute = 0; |
danielashercohen | 1:69c37f1ab7df | 19 | _mix = 0; |
danielashercohen | 1:69c37f1ab7df | 20 | |
danielashercohen | 1:69c37f1ab7df | 21 | // for register 4 Treble Filter |
danielashercohen | 1:69c37f1ab7df | 22 | _referenceInE = 0; |
danielashercohen | 1:69c37f1ab7df | 23 | _trebleCenterFreq = 0; |
danielashercohen | 1:69c37f1ab7df | 24 | _treble = 0; |
danielashercohen | 1:69c37f1ab7df | 25 | |
danielashercohen | 1:69c37f1ab7df | 26 | // for middle frequecy filter |
danielashercohen | 1:69c37f1ab7df | 27 | _middleSoftStep = 0; |
danielashercohen | 1:69c37f1ab7df | 28 | _middleQ = 0; |
danielashercohen | 1:69c37f1ab7df | 29 | _middle = 0; |
danielashercohen | 2:34a58356394c | 30 | |
danielashercohen | 2:34a58356394c | 31 | _atten_lf = 9; |
danielashercohen | 2:34a58356394c | 32 | _atten_rf = 9; |
danielashercohen | 2:34a58356394c | 33 | _atten_lr = 9; |
danielashercohen | 2:34a58356394c | 34 | _atten_rr = 9; |
danielashercohen | 2:34a58356394c | 35 | _atten_mix = 9; |
danielashercohen | 2:34a58356394c | 36 | _atten_sub = 9; |
danielashercohen | 2:34a58356394c | 37 | |
danielashercohen | 0:86ea14016b10 | 38 | } |
danielashercohen | 0:86ea14016b10 | 39 | |
danielashercohen | 2:34a58356394c | 40 | void PreampTDA7419::writeToTDA7419 (int command, int value) |
danielashercohen | 2:34a58356394c | 41 | { |
danielashercohen | 2:34a58356394c | 42 | int transmissionSuccessful; |
danielashercohen | 2:34a58356394c | 43 | _device.start(); |
danielashercohen | 2:34a58356394c | 44 | transmissionSuccessful = _device.write(TDA7419_ADDRESS<<1); |
danielashercohen | 2:34a58356394c | 45 | transmissionSuccessful |= _device.write(command); |
danielashercohen | 2:34a58356394c | 46 | transmissionSuccessful |= _device.write(value); |
danielashercohen | 2:34a58356394c | 47 | _device.stop(); |
danielashercohen | 2:34a58356394c | 48 | // return (transmissionSuccessful); |
danielashercohen | 2:34a58356394c | 49 | } |
danielashercohen | 1:69c37f1ab7df | 50 | |
danielashercohen | 1:69c37f1ab7df | 51 | ///////////////////////////////// |
danielashercohen | 1:69c37f1ab7df | 52 | // set the speaker attenuators // |
danielashercohen | 1:69c37f1ab7df | 53 | ///////////////////////////////// |
danielashercohen | 2:34a58356394c | 54 | // attenuation can be set from 0 to 11 and this is mapped to the |
danielashercohen | 1:69c37f1ab7df | 55 | // values that the TDA7419 uses for it's attenuation (0->h60) |
danielashercohen | 1:69c37f1ab7df | 56 | |
danielashercohen | 1:69c37f1ab7df | 57 | // |
danielashercohen | 1:69c37f1ab7df | 58 | // (FL/FR/RL/RR/SWL/SWR) (13-18) |
danielashercohen | 2:34a58356394c | 59 | void PreampTDA7419::setAttenuationReg(int regAddr, int attenuation) |
danielashercohen | 2:34a58356394c | 60 | { |
danielashercohen | 2:34a58356394c | 61 | int regAtten; |
danielashercohen | 2:34a58356394c | 62 | if (attenuation == 11) { |
danielashercohen | 2:34a58356394c | 63 | regAtten = 13; |
danielashercohen | 2:34a58356394c | 64 | } else if (attenuation == 10) { |
danielashercohen | 2:34a58356394c | 65 | regAtten = 6; |
danielashercohen | 2:34a58356394c | 66 | } else { |
danielashercohen | 2:34a58356394c | 67 | regAtten = (99-(attenuation*9)); |
danielashercohen | 2:34a58356394c | 68 | } |
danielashercohen | 2:34a58356394c | 69 | writeToTDA7419(regAddr, regAtten); |
danielashercohen | 1:69c37f1ab7df | 70 | } |
danielashercohen | 1:69c37f1ab7df | 71 | |
danielashercohen | 2:34a58356394c | 72 | int PreampTDA7419::calcToneAttenuationReg(int attenuation) |
danielashercohen | 2:34a58356394c | 73 | { |
danielashercohen | 2:34a58356394c | 74 | int regAtten; |
danielashercohen | 2:34a58356394c | 75 | if (attenuation > 0) { |
danielashercohen | 2:34a58356394c | 76 | regAtten = 16 + (attenuation * 3); |
danielashercohen | 2:34a58356394c | 77 | } else if (attenuation == 0) { |
danielashercohen | 2:34a58356394c | 78 | regAtten = 0; |
danielashercohen | 2:34a58356394c | 79 | } else if (attenuation < 0) { |
danielashercohen | 2:34a58356394c | 80 | regAtten = 0 - (attenuation * 3); |
danielashercohen | 2:34a58356394c | 81 | } |
danielashercohen | 2:34a58356394c | 82 | return (regAtten); |
danielashercohen | 1:69c37f1ab7df | 83 | } |
danielashercohen | 1:69c37f1ab7df | 84 | |
danielashercohen | 1:69c37f1ab7df | 85 | // update all of the registers in the TDA7419 |
danielashercohen | 2:34a58356394c | 86 | void PreampTDA7419::updateTDA7419Reg() |
danielashercohen | 2:34a58356394c | 87 | { |
danielashercohen | 2:34a58356394c | 88 | |
danielashercohen | 1:69c37f1ab7df | 89 | int s_main_source = 0; |
danielashercohen | 1:69c37f1ab7df | 90 | int s_main_loud = 1 | 0x40; |
danielashercohen | 1:69c37f1ab7df | 91 | int s_softmute = 2 | 0x40; |
danielashercohen | 1:69c37f1ab7df | 92 | int s_volume = 3 | 0x40; |
danielashercohen | 1:69c37f1ab7df | 93 | int s_treble = 4 | 0x40; |
danielashercohen | 1:69c37f1ab7df | 94 | int s_middle = 5 | 0x40; |
danielashercohen | 1:69c37f1ab7df | 95 | int s_bass = 6 | 0x40; |
danielashercohen | 1:69c37f1ab7df | 96 | int s_second_source = 7 | 0x40; |
danielashercohen | 1:69c37f1ab7df | 97 | int s_sub_mid_bass = 8 | 0x40; |
danielashercohen | 1:69c37f1ab7df | 98 | int s_mix_gain = 9 | 0x40; |
danielashercohen | 1:69c37f1ab7df | 99 | int s_atten_lf = 10 | 0x40; |
danielashercohen | 1:69c37f1ab7df | 100 | int s_atten_rf = 11 | 0x40; |
danielashercohen | 1:69c37f1ab7df | 101 | int s_atten_lr = 12 | 0x40; |
danielashercohen | 1:69c37f1ab7df | 102 | int s_atten_rr = 13 | 0x40; |
danielashercohen | 1:69c37f1ab7df | 103 | int s_atten_mix = 14 | 0x40; |
danielashercohen | 1:69c37f1ab7df | 104 | int s_atten_sub = 15 | 0x40; |
danielashercohen | 1:69c37f1ab7df | 105 | int s_spectrum = 16 | 0x40; |
danielashercohen | 2:34a58356394c | 106 | // int s_test = 17 | 0x40; |
danielashercohen | 2:34a58356394c | 107 | |
danielashercohen | 2:34a58356394c | 108 | ////////////////////////////////////////////////////////////////// |
danielashercohen | 2:34a58356394c | 109 | // Calculate actual register values from the variables that the // |
danielashercohen | 2:34a58356394c | 110 | // buttons control // |
danielashercohen | 2:34a58356394c | 111 | ////////////////////////////////////////////////////////////////// |
danielashercohen | 1:69c37f1ab7df | 112 | |
danielashercohen | 2:34a58356394c | 113 | ////////////////////////// |
danielashercohen | 2:34a58356394c | 114 | // update the registers // |
danielashercohen | 2:34a58356394c | 115 | ////////////////////////// |
danielashercohen | 2:34a58356394c | 116 | writeToTDA7419(s_main_source, ( (0x78) | (_input & 0x3) ) ); |
danielashercohen | 2:34a58356394c | 117 | writeToTDA7419(s_main_loud, (0xc0)); |
danielashercohen | 2:34a58356394c | 118 | writeToTDA7419(s_softmute, (0xa7)); |
danielashercohen | 2:34a58356394c | 119 | setAttenuationReg(s_volume, _volume); |
danielashercohen | 1:69c37f1ab7df | 120 | |
danielashercohen | 1:69c37f1ab7df | 121 | |
danielashercohen | 2:34a58356394c | 122 | // tone register attenuation isn't simple so moving that |
danielashercohen | 2:34a58356394c | 123 | // calculation to a separate function |
danielashercohen | 2:34a58356394c | 124 | // locking softwtep as '0' because that is on and I think we |
danielashercohen | 2:34a58356394c | 125 | // want soft step! |
danielashercohen | 2:34a58356394c | 126 | writeToTDA7419(s_treble, |
danielashercohen | 2:34a58356394c | 127 | ( (0 & 0x1 ) << 7 ) | |
danielashercohen | 2:34a58356394c | 128 | ( (1 & 0x3 ) << 5 ) | |
danielashercohen | 2:34a58356394c | 129 | ( (calcToneAttenuationReg(_treble) & 0x1f ) ) ); |
danielashercohen | 1:69c37f1ab7df | 130 | |
danielashercohen | 2:34a58356394c | 131 | writeToTDA7419(s_middle, |
danielashercohen | 2:34a58356394c | 132 | ( (0 & 0x1 ) << 7 ) | |
danielashercohen | 2:34a58356394c | 133 | ( (1 & 0x3 ) << 5 ) | |
danielashercohen | 2:34a58356394c | 134 | ( (calcToneAttenuationReg(_middle) & 0x1f ) ) ); |
danielashercohen | 1:69c37f1ab7df | 135 | |
danielashercohen | 2:34a58356394c | 136 | writeToTDA7419(s_bass, |
danielashercohen | 2:34a58356394c | 137 | ( (0 & 0x1 ) << 7 ) | |
danielashercohen | 2:34a58356394c | 138 | ( (1 & 0x3 ) << 5 ) | |
danielashercohen | 2:34a58356394c | 139 | ( (calcToneAttenuationReg(_bass) & 0x1f ) ) ); |
danielashercohen | 2:34a58356394c | 140 | |
danielashercohen | 1:69c37f1ab7df | 141 | |
danielashercohen | 2:34a58356394c | 142 | // this register allows the second source to be routed to the rear speakers |
danielashercohen | 2:34a58356394c | 143 | // not useful in the context of this project |
danielashercohen | 2:34a58356394c | 144 | writeToTDA7419(s_second_source, (0x07)); |
danielashercohen | 1:69c37f1ab7df | 145 | |
danielashercohen | 2:34a58356394c | 146 | // this is the subwoofer cut-off frequency |
danielashercohen | 2:34a58356394c | 147 | // 11 which is 160Khz) |
danielashercohen | 2:34a58356394c | 148 | writeToTDA7419(s_sub_mid_bass, (0x63)); |
danielashercohen | 1:69c37f1ab7df | 149 | |
danielashercohen | 2:34a58356394c | 150 | // mix to the front speakers, enable the sub, no gain |
danielashercohen | 2:34a58356394c | 151 | if (_mix == 1) { |
danielashercohen | 2:34a58356394c | 152 | writeToTDA7419(s_mix_gain, (0xf7)); |
danielashercohen | 2:34a58356394c | 153 | } else { |
danielashercohen | 2:34a58356394c | 154 | writeToTDA7419(s_mix_gain, (0xf0)); |
danielashercohen | 2:34a58356394c | 155 | } |
danielashercohen | 1:69c37f1ab7df | 156 | |
danielashercohen | 2:34a58356394c | 157 | setAttenuationReg(s_atten_lf , _atten_lf ); |
danielashercohen | 2:34a58356394c | 158 | setAttenuationReg(s_atten_rf , _atten_rf ); |
danielashercohen | 2:34a58356394c | 159 | setAttenuationReg(s_atten_lr , _atten_lr ); |
danielashercohen | 2:34a58356394c | 160 | setAttenuationReg(s_atten_rr , _atten_rr ); |
danielashercohen | 1:69c37f1ab7df | 161 | |
danielashercohen | 2:34a58356394c | 162 | setAttenuationReg(s_atten_mix , _atten_mix ); |
danielashercohen | 2:34a58356394c | 163 | setAttenuationReg(s_atten_sub , _atten_sub ); |
danielashercohen | 1:69c37f1ab7df | 164 | |
danielashercohen | 2:34a58356394c | 165 | writeToTDA7419 (s_spectrum, (0x09)); |
danielashercohen | 1:69c37f1ab7df | 166 | |
danielashercohen | 1:69c37f1ab7df | 167 | } |
danielashercohen | 1:69c37f1ab7df | 168 | |
danielashercohen | 2:34a58356394c | 169 | /* setVolume: This sets the volume within the valid range of 0->11 |
danielashercohen | 1:69c37f1ab7df | 170 | return indicates it was successfully set */ |
danielashercohen | 2:34a58356394c | 171 | void PreampTDA7419::setVolume(int volume) |
danielashercohen | 2:34a58356394c | 172 | { |
danielashercohen | 2:34a58356394c | 173 | if (volume > 11) { |
danielashercohen | 2:34a58356394c | 174 | _volume = 11; |
danielashercohen | 2:34a58356394c | 175 | } else if (volume < 0) { |
danielashercohen | 2:34a58356394c | 176 | volume = 0; |
danielashercohen | 2:34a58356394c | 177 | } else { |
danielashercohen | 2:34a58356394c | 178 | _volume = volume; |
danielashercohen | 2:34a58356394c | 179 | } |
danielashercohen | 2:34a58356394c | 180 | updateTDA7419Reg(); |
danielashercohen | 1:69c37f1ab7df | 181 | } |
danielashercohen | 1:69c37f1ab7df | 182 | |
danielashercohen | 1:69c37f1ab7df | 183 | /* readVolume: return the volume level that is currently set */ |
danielashercohen | 2:34a58356394c | 184 | int PreampTDA7419::readVolume() |
danielashercohen | 2:34a58356394c | 185 | { |
danielashercohen | 2:34a58356394c | 186 | return (_volume); |
danielashercohen | 2:34a58356394c | 187 | } |
danielashercohen | 2:34a58356394c | 188 | /* readVolume: return the volume level that is currently set */ |
danielashercohen | 2:34a58356394c | 189 | int PreampTDA7419::increaseVolume() |
danielashercohen | 2:34a58356394c | 190 | { |
danielashercohen | 2:34a58356394c | 191 | _volume++; |
danielashercohen | 2:34a58356394c | 192 | setVolume(_volume); |
danielashercohen | 2:34a58356394c | 193 | return (_volume); |
danielashercohen | 1:69c37f1ab7df | 194 | } |
danielashercohen | 1:69c37f1ab7df | 195 | /* readVolume: return the volume level that is currently set */ |
danielashercohen | 2:34a58356394c | 196 | int PreampTDA7419::decreaseVolume() |
danielashercohen | 2:34a58356394c | 197 | { |
danielashercohen | 2:34a58356394c | 198 | _volume--; |
danielashercohen | 2:34a58356394c | 199 | setVolume(_volume); |
danielashercohen | 2:34a58356394c | 200 | return (_volume); |
danielashercohen | 2:34a58356394c | 201 | } |
danielashercohen | 2:34a58356394c | 202 | |
danielashercohen | 2:34a58356394c | 203 | void PreampTDA7419::setInput(int input) |
danielashercohen | 2:34a58356394c | 204 | { |
danielashercohen | 2:34a58356394c | 205 | if (input > 3) { |
danielashercohen | 2:34a58356394c | 206 | _input = 3; |
danielashercohen | 2:34a58356394c | 207 | } else if (input < 0) { |
danielashercohen | 2:34a58356394c | 208 | input = 0; |
danielashercohen | 2:34a58356394c | 209 | } else { |
danielashercohen | 2:34a58356394c | 210 | _input = input; |
danielashercohen | 2:34a58356394c | 211 | } |
danielashercohen | 2:34a58356394c | 212 | updateTDA7419Reg(); |
danielashercohen | 2:34a58356394c | 213 | } |
danielashercohen | 2:34a58356394c | 214 | |
danielashercohen | 2:34a58356394c | 215 | int PreampTDA7419::readInput() |
danielashercohen | 2:34a58356394c | 216 | { |
danielashercohen | 2:34a58356394c | 217 | return (_input); |
danielashercohen | 1:69c37f1ab7df | 218 | } |
danielashercohen | 2:34a58356394c | 219 | |
danielashercohen | 2:34a58356394c | 220 | int PreampTDA7419::increaseTreble() |
danielashercohen | 2:34a58356394c | 221 | { |
danielashercohen | 2:34a58356394c | 222 | if (_treble < 5) { |
danielashercohen | 2:34a58356394c | 223 | _treble++; |
danielashercohen | 2:34a58356394c | 224 | } |
danielashercohen | 2:34a58356394c | 225 | updateTDA7419Reg(); |
danielashercohen | 2:34a58356394c | 226 | return(_treble); |
danielashercohen | 2:34a58356394c | 227 | } |
danielashercohen | 2:34a58356394c | 228 | |
danielashercohen | 2:34a58356394c | 229 | int PreampTDA7419::decreaseTreble() |
danielashercohen | 2:34a58356394c | 230 | { |
danielashercohen | 2:34a58356394c | 231 | if (_treble > -5) { |
danielashercohen | 2:34a58356394c | 232 | _treble--; |
danielashercohen | 2:34a58356394c | 233 | } |
danielashercohen | 2:34a58356394c | 234 | updateTDA7419Reg(); |
danielashercohen | 2:34a58356394c | 235 | return(_treble); |
danielashercohen | 2:34a58356394c | 236 | } |
danielashercohen | 2:34a58356394c | 237 | |
danielashercohen | 2:34a58356394c | 238 | int PreampTDA7419::readTreble() |
danielashercohen | 2:34a58356394c | 239 | { |
danielashercohen | 2:34a58356394c | 240 | return (_treble); |
danielashercohen | 2:34a58356394c | 241 | } |
danielashercohen | 2:34a58356394c | 242 | |
danielashercohen | 2:34a58356394c | 243 | int PreampTDA7419::increaseMiddle() |
danielashercohen | 2:34a58356394c | 244 | { |
danielashercohen | 2:34a58356394c | 245 | if (_middle < 5) { |
danielashercohen | 2:34a58356394c | 246 | _middle++; |
danielashercohen | 2:34a58356394c | 247 | } |
danielashercohen | 2:34a58356394c | 248 | updateTDA7419Reg(); |
danielashercohen | 2:34a58356394c | 249 | return(_middle); |
danielashercohen | 1:69c37f1ab7df | 250 | } |
danielashercohen | 1:69c37f1ab7df | 251 | |
danielashercohen | 2:34a58356394c | 252 | int PreampTDA7419::decreaseMiddle() |
danielashercohen | 2:34a58356394c | 253 | { |
danielashercohen | 2:34a58356394c | 254 | if (_middle > -5) { |
danielashercohen | 2:34a58356394c | 255 | _middle--; |
danielashercohen | 2:34a58356394c | 256 | } |
danielashercohen | 2:34a58356394c | 257 | updateTDA7419Reg(); |
danielashercohen | 2:34a58356394c | 258 | return(_middle); |
danielashercohen | 2:34a58356394c | 259 | } |
danielashercohen | 2:34a58356394c | 260 | |
danielashercohen | 2:34a58356394c | 261 | int PreampTDA7419::readMiddle() |
danielashercohen | 2:34a58356394c | 262 | { |
danielashercohen | 2:34a58356394c | 263 | return (_middle); |
danielashercohen | 1:69c37f1ab7df | 264 | } |
danielashercohen | 1:69c37f1ab7df | 265 | |
danielashercohen | 2:34a58356394c | 266 | int PreampTDA7419::increaseBass() |
danielashercohen | 2:34a58356394c | 267 | { |
danielashercohen | 2:34a58356394c | 268 | if (_bass < 5) { |
danielashercohen | 2:34a58356394c | 269 | _bass++; |
danielashercohen | 2:34a58356394c | 270 | } |
danielashercohen | 2:34a58356394c | 271 | updateTDA7419Reg(); |
danielashercohen | 2:34a58356394c | 272 | return(_bass); |
danielashercohen | 2:34a58356394c | 273 | } |
danielashercohen | 2:34a58356394c | 274 | |
danielashercohen | 2:34a58356394c | 275 | int PreampTDA7419::decreaseBass() |
danielashercohen | 2:34a58356394c | 276 | { |
danielashercohen | 2:34a58356394c | 277 | if (_bass > -5) { |
danielashercohen | 2:34a58356394c | 278 | _bass--; |
danielashercohen | 2:34a58356394c | 279 | } |
danielashercohen | 2:34a58356394c | 280 | updateTDA7419Reg(); |
danielashercohen | 2:34a58356394c | 281 | return(_bass); |
danielashercohen | 2:34a58356394c | 282 | } |
danielashercohen | 2:34a58356394c | 283 | |
danielashercohen | 2:34a58356394c | 284 | int PreampTDA7419::readBass() |
danielashercohen | 2:34a58356394c | 285 | { |
danielashercohen | 2:34a58356394c | 286 | return (_bass); |
danielashercohen | 1:69c37f1ab7df | 287 | } |
danielashercohen | 1:69c37f1ab7df | 288 | |
danielashercohen | 2:34a58356394c | 289 | int PreampTDA7419::increaseSpeaker (int speakerNumber) { |
danielashercohen | 2:34a58356394c | 290 | switch (speakerNumber) { |
danielashercohen | 2:34a58356394c | 291 | case (1): if (_atten_lf < 11) { _atten_lf++; }; updateTDA7419Reg(); return( _atten_lf ); |
danielashercohen | 2:34a58356394c | 292 | case (2): if (_atten_rf < 11) { _atten_rf++; }; updateTDA7419Reg(); return( _atten_rf ); |
danielashercohen | 2:34a58356394c | 293 | case (3): if (_atten_lr < 11) { _atten_lr++; }; updateTDA7419Reg(); return( _atten_lr ); |
danielashercohen | 2:34a58356394c | 294 | case (4): if (_atten_rr < 11) { _atten_rr++; }; updateTDA7419Reg(); return( _atten_rr ); |
danielashercohen | 2:34a58356394c | 295 | case (5): if (_atten_sub < 11) { _atten_sub++; }; updateTDA7419Reg(); return( _atten_sub ); |
danielashercohen | 2:34a58356394c | 296 | case (6): if (_atten_mix < 11) { _atten_mix++; }; updateTDA7419Reg(); return( _atten_mix ); |
danielashercohen | 1:69c37f1ab7df | 297 | } |
danielashercohen | 2:34a58356394c | 298 | return (_atten_lf ); |
danielashercohen | 1:69c37f1ab7df | 299 | } |
danielashercohen | 1:69c37f1ab7df | 300 | |
danielashercohen | 2:34a58356394c | 301 | int PreampTDA7419::decreaseSpeaker (int speakerNumber) { |
danielashercohen | 2:34a58356394c | 302 | switch (speakerNumber) { |
danielashercohen | 2:34a58356394c | 303 | case (1): if (_atten_lf > 0) { _atten_lf--; }; updateTDA7419Reg(); return( _atten_lf ); |
danielashercohen | 2:34a58356394c | 304 | case (2): if (_atten_rf > 0) { _atten_rf--; }; updateTDA7419Reg(); return( _atten_rf ); |
danielashercohen | 2:34a58356394c | 305 | case (3): if (_atten_lr > 0) { _atten_lr--; }; updateTDA7419Reg(); return( _atten_lr ); |
danielashercohen | 2:34a58356394c | 306 | case (4): if (_atten_rr > 0) { _atten_rr--; }; updateTDA7419Reg(); return( _atten_rr ); |
danielashercohen | 2:34a58356394c | 307 | case (5): if (_atten_sub > 0) { _atten_sub--; }; updateTDA7419Reg(); return( _atten_sub ); |
danielashercohen | 2:34a58356394c | 308 | case (6): if (_atten_mix > 0) { _atten_mix--; }; updateTDA7419Reg(); return( _atten_mix ); |
danielashercohen | 2:34a58356394c | 309 | } |
danielashercohen | 2:34a58356394c | 310 | return (_atten_lf ); |
danielashercohen | 2:34a58356394c | 311 | } |
danielashercohen | 1:69c37f1ab7df | 312 | |
danielashercohen | 2:34a58356394c | 313 | int PreampTDA7419::readSpeaker (int speakerNumber) { |
danielashercohen | 2:34a58356394c | 314 | switch (speakerNumber) { |
danielashercohen | 2:34a58356394c | 315 | case (1): return( _atten_lf ); |
danielashercohen | 2:34a58356394c | 316 | case (2): return( _atten_rf ); |
danielashercohen | 2:34a58356394c | 317 | case (3): return( _atten_lr ); |
danielashercohen | 2:34a58356394c | 318 | case (4): return( _atten_rr ); |
danielashercohen | 2:34a58356394c | 319 | case (5): return( _atten_sub ); |
danielashercohen | 2:34a58356394c | 320 | case (6): return( _atten_mix ); |
danielashercohen | 2:34a58356394c | 321 | } |
danielashercohen | 2:34a58356394c | 322 | return (_atten_lf ); |
danielashercohen | 2:34a58356394c | 323 | } |
danielashercohen | 2:34a58356394c | 324 | |
danielashercohen | 2:34a58356394c | 325 | int PreampTDA7419::toggleMix() { |
danielashercohen | 2:34a58356394c | 326 | _mix = !_mix; |
danielashercohen | 2:34a58356394c | 327 | updateTDA7419Reg(); |
danielashercohen | 2:34a58356394c | 328 | return (_mix); |
danielashercohen | 2:34a58356394c | 329 | } |
danielashercohen | 2:34a58356394c | 330 | |
danielashercohen | 2:34a58356394c | 331 | int PreampTDA7419::readMix() { |
danielashercohen | 2:34a58356394c | 332 | return (_mix); |
danielashercohen | 2:34a58356394c | 333 | } |