Changeset 1622

Show
Ignore:
Timestamp:
08/16/09 06:53:12 (12 years ago)
Author:
jwoithe
Message:

RME: input, output and phones mixer/control elements now control respective device parameters

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/libffado/src/rme/fireface_hw.cpp

    r1616 r1622  
    5858    settings.input_level = FF_SWPARAM_ILEVEL_LOGAIN; 
    5959    settings.output_level = FF_SWPARAM_OLEVEL_HIGAIN; 
     60    settings.phones_level = FF_SWPARAM_PHONESLEVEL_HIGAIN; 
    6061 
    6162    // Set amplifier gains 
  • trunk/libffado/src/rme/fireface_settings_ctrls.cpp

    r1616 r1622  
    9191            } 
    9292            break; 
     93        case RME_CTRL_INPUT_LEVEL: 
     94            if (m_parent.setInputLevel(v)) { 
     95                m_value = v; 
     96            } 
     97            break; 
     98        case RME_CTRL_OUTPUT_LEVEL: 
     99            if (m_parent.setOutputLevel(v)) { 
     100                m_value = v; 
     101            } 
     102            break; 
    93103        case RME_CTRL_FF400_PAD_SW: 
    94104            // Object's "m_info" field is the channel 
     
    101111            if (m_parent.setInputInstrOpt(m_info, v)) { 
    102112                m_value = (v != 0); 
     113            } 
     114            break; 
     115        case RME_CTRL_PHONES_LEVEL: 
     116            if (m_parent.setPhonesLevel(v)) { 
     117                m_value = v; 
    103118            } 
    104119            break; 
     
    136151            return val; 
    137152            break; 
     153        case RME_CTRL_INPUT_LEVEL: 
     154            return m_parent.getInputLevel(); 
     155            break; 
     156        case RME_CTRL_OUTPUT_LEVEL: 
     157            return m_parent.getOutputLevel(); 
     158            break; 
    138159        case RME_CTRL_FF400_PAD_SW: 
    139160            return m_parent.getInputPadOpt(m_info); 
     
    141162        case RME_CTRL_FF400_INSTR_SW: 
    142163            return m_parent.getInputInstrOpt(m_info); 
     164            break; 
     165        case RME_CTRL_PHONES_LEVEL: 
     166            return m_parent.getPhonesLevel(); 
    143167            break; 
    144168 
  • trunk/libffado/src/rme/rme_avdevice.cpp

    r1616 r1622  
    130130        new RmeSettingsCtrl(*this, RME_CTRL_PHANTOM_SW, 0, 
    131131            "Phantom", "Phantom switches", "")); 
     132    result &= m_ControlContainer->addElement( 
     133        new RmeSettingsCtrl(*this, RME_CTRL_INPUT_LEVEL, 0, 
     134            "Input_level", "Input level", "")); 
     135    result &= m_ControlContainer->addElement( 
     136        new RmeSettingsCtrl(*this, RME_CTRL_OUTPUT_LEVEL, 0, 
     137            "Output_level", "Output level", "")); 
     138    result &= m_ControlContainer->addElement( 
     139        new RmeSettingsCtrl(*this, RME_CTRL_PHONES_LEVEL, 0, 
     140            "Phones_level", "Phones level", "")); 
     141 
    132142    if (m_rme_model == RME_MODEL_FIREFACE400) { 
    133143        // Instrument input options 
  • trunk/libffado/src/rme/rme_avdevice.h

    r1616 r1622  
    9595    signed int getPhantom(unsigned int channel); 
    9696    signed int setPhantom(unsigned int channel, unsigned int status); 
     97    signed int getInputLevel(void); 
     98    signed int setInputLevel(unsigned int level); 
     99    signed int getOutputLevel(void); 
     100    signed int setOutputLevel(unsigned int level); 
     101    signed int getPhonesLevel(void); 
     102    signed int setPhonesLevel(unsigned int level); 
    97103    signed int getInputPadOpt(unsigned int channel); 
    98104    signed int setInputPadOpt(unsigned int channel, unsigned int status); 
  • trunk/libffado/src/rme/rme_avdevice_settings.cpp

    r1616 r1622  
    4848 
    4949    settings.mic_phantom[channel] = (status != 0); 
     50    set_hardware_params(); 
     51 
     52    return 0; 
     53} 
     54 
     55signed int 
     56Device::getInputLevel(void) { 
     57    return settings.input_level; 
     58} 
     59 
     60signed int 
     61Device::setInputLevel(unsigned int level) { 
     62 
     63    if (level<FF_SWPARAM_ILEVEL_LOGAIN || level>FF_SWPARAM_ILEVEL_m10dBV) { 
     64        debugOutput(DEBUG_LEVEL_WARNING, "Invalid input level ID %d\n", level); 
     65        return -1; 
     66    } 
     67    settings.input_level = level; 
     68    set_hardware_params(); 
     69 
     70    return 0; 
     71} 
     72 
     73signed int 
     74Device::getOutputLevel(void) { 
     75    return settings.output_level; 
     76} 
     77 
     78signed int 
     79Device::setOutputLevel(unsigned int level) { 
     80 
     81    if (level<FF_SWPARAM_OLEVEL_HIGAIN || level>FF_SWPARAM_OLEVEL_m10dBV) { 
     82        debugOutput(DEBUG_LEVEL_WARNING, "Invalid output level ID %d\n", level); 
     83        return -1; 
     84    } 
     85    settings.output_level = level; 
     86    set_hardware_params(); 
     87 
     88    return 0; 
     89} 
     90 
     91signed int 
     92Device::getPhonesLevel(void) { 
     93    return settings.phones_level; 
     94} 
     95 
     96signed int 
     97Device::setPhonesLevel(unsigned int level) { 
     98 
     99    if (level<FF_SWPARAM_PHONESLEVEL_HIGAIN || level>FF_SWPARAM_PHONESLEVEL_m10dBV) { 
     100        debugOutput(DEBUG_LEVEL_WARNING, "Invalid phones level ID %d\n", level); 
     101        return -1; 
     102    } 
     103    settings.phones_level = level; 
    50104    set_hardware_params(); 
    51105 
     
    108162signed int 
    109163Device::setAmpGain(unsigned int index, signed int val) { 
    110     quadlet_t regval = 0; 
    111164 
    112165    if (m_rme_model != RME_MODEL_FIREFACE400) { 
  • trunk/libffado/support/mixer-qt4/mixer_rme.py

    r1616 r1622  
    5656        } 
    5757 
     58        self.Radiobuttons={ 
     59            self.level_in_lo_gain: ['/Control/Input_level', 1], 
     60            self.level_in_p4dBu:   ['/Control/Input_level', 2], 
     61            self.level_in_m10dBV:  ['/Control/Input_level', 3], 
     62 
     63            self.level_out_hi_gain: ['/Control/Output_level', 1], 
     64            self.level_out_p4dBu:   ['/Control/Output_level', 2], 
     65            self.level_out_m10dBV:  ['/Control/Output_level', 3], 
     66 
     67            self.phones_hi_gain: ['/Control/Phones_level', 1], 
     68            self.phones_p4dBu:   ['/Control/Phones_level', 2], 
     69            self.phones_m10dBV:  ['/Control/Phones_level', 3], 
     70        } 
     71 
     72 
    5873        self.Gains={ 
    5974            self.gain_mic1: ['/Control/Gains', 0], 
     
    8398        log.debug("switch %s set to %d" % (self.Switches[sender][0], a0)) 
    8499        self.hw.setDiscrete(self.Switches[sender][0], a0) 
     100 
     101    # Public slot: update generic radiobuttons 
     102    def updateRadiobutton(self, a0): 
     103        sender = self.sender() 
     104        if (a0 != 0): 
     105            # Only change the control state on a button being "checked" 
     106            log.debug("radiobutton group %s set to %d" % (self.Radiobuttons[sender][0], self.Radiobuttons[sender][1])) 
     107            self.hw.setDiscrete(self.Radiobuttons[sender][0], self.Radiobuttons[sender][1]) 
    85108 
    86109    # Public slot: update gains 
     
    160183            QObject.connect(ctrl, SIGNAL('toggled(bool)'), self.updateSwitch) 
    161184 
     185        for ctrl, info in self.Radiobuttons.iteritems(): 
     186            if (not(ctrl.isEnabled())): 
     187                continue; 
     188            # This is a touch wasteful since it means we retrieve the control 
     189            # value once per radio button rather than once per radio button 
     190            # group.  In time we might introduce radiobutton groupings in the 
     191            # self.* datastructures to avoid this, but for the moment this is 
     192            # easy and it works. 
     193            val = self.hw.getDiscrete(info[0]) 
     194            if (val == info[1]): 
     195                val = 1 
     196            else: 
     197                val = 0 
     198            ctrl.setChecked(val) 
     199            log.debug("Radiobutton %s[%d] is %d" % (info[0], info[1], val)) 
     200            QObject.connect(ctrl, SIGNAL('toggled(bool)'), self.updateRadiobutton) 
     201 
    162202        for ctrl, info in self.Gains.iteritems(): 
    163203            if (not(ctrl.isEnabled())): 
  • trunk/libffado/support/mixer-qt4/mixer_rme.ui

    r1616 r1622  
    282282            <layout class="QVBoxLayout" name="verticalLayout_8" > 
    283283             <item> 
    284               <widget class="QRadioButton" name="radioButton_9" > 
     284              <widget class="QRadioButton" name="level_in_lo_gain" > 
    285285               <property name="text" > 
    286286                <string>Lo gain</string> 
     
    289289             </item> 
    290290             <item> 
    291               <widget class="QRadioButton" name="radioButton_10" > 
     291              <widget class="QRadioButton" name="level_in_p4dBu" > 
    292292               <property name="text" > 
    293293                <string>+4 dBu</string> 
     
    296296             </item> 
    297297             <item> 
    298               <widget class="QRadioButton" name="radioButton_11" > 
     298              <widget class="QRadioButton" name="level_in_m10dBV" > 
    299299               <property name="text" > 
    300300                <string>-10 dBV</string> 
     
    565565            <layout class="QVBoxLayout" name="verticalLayout_9" > 
    566566             <item> 
    567               <widget class="QRadioButton" name="radioButton_12" > 
     567              <widget class="QRadioButton" name="level_out_hi_gain" > 
    568568               <property name="text" > 
    569569                <string>Hi gain</string> 
     
    572572             </item> 
    573573             <item> 
    574               <widget class="QRadioButton" name="radioButton_13" > 
     574              <widget class="QRadioButton" name="level_out_p4dBu" > 
    575575               <property name="text" > 
    576576                <string>+4 dBu</string> 
     
    579579             </item> 
    580580             <item> 
    581               <widget class="QRadioButton" name="radioButton_14" > 
     581              <widget class="QRadioButton" name="level_out_m10dBV" > 
    582582               <property name="text" > 
    583583                <string>-10 dBV</string> 
     
    611611            <layout class="QVBoxLayout" name="verticalLayout_10" > 
    612612             <item> 
    613               <widget class="QRadioButton" name="radioButton_15" > 
     613              <widget class="QRadioButton" name="phones_hi_gain" > 
    614614               <property name="text" > 
    615615                <string>Hi gain</string> 
     
    618618             </item> 
    619619             <item> 
    620               <widget class="QRadioButton" name="radioButton_16" > 
     620              <widget class="QRadioButton" name="phones_p4dBu" > 
    621621               <property name="text" > 
    622622                <string>+4 dBU</string> 
     
    625625             </item> 
    626626             <item> 
    627               <widget class="QRadioButton" name="radioButton_17" > 
     627              <widget class="QRadioButton" name="phones_m10dBV" > 
    628628               <property name="text" > 
    629629                <string>-10 dBV</string>