Changeset 2038

Show
Ignore:
Timestamp:
02/07/12 04:11:19 (9 years ago)
Author:
jwoithe
Message:

rme: various information panes are now active in ffado-mixer: sync check, autosync reference, spdif freqency and system clock. The function of these in the presence of actual external sync sources is yet to be confirmed. The system clock information has been confirmed to update when the clock mode and/or sample rate controls are altered.

Files:

Legend:

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

    r2037 r2038  
    156156        case RME_CTRL_INFO_MODEL: 
    157157        case RME_CTRL_INFO_TCO_PRESENT: 
     158        case RME_CTRL_INFO_SYSCLOCK_FREQ: 
     159        case RME_CTRL_INFO_AUTOSYNC_FREQ: 
     160        case RME_CTRL_INFO_AUTOSYNC_SRC: 
     161        case RME_CTRL_INFO_SYNC_STATUS: 
     162        case RME_CTRL_INFO_SPDIF_FREQ: 
    158163            debugOutput(DEBUG_LEVEL_ERROR, "Attempt to set readonly info control 0x%08x\n", m_type); 
    159164            err = 1; 
     
    173178signed int i; 
    174179signed int val = 0; 
     180FF_state_t ff_state; 
    175181 
    176182    switch (m_type) { 
     
    225231        case RME_CTRL_INFO_TCO_PRESENT: 
    226232            return m_parent.getTcoPresent(); 
     233 
     234        case RME_CTRL_INFO_SYSCLOCK_MODE: 
     235            if (m_parent.get_hardware_state(&ff_state) == 0) 
     236                return ff_state.clock_mode; 
     237            break; 
     238        case RME_CTRL_INFO_SYSCLOCK_FREQ: 
     239            return m_parent.getSamplingFrequency(); 
     240        case RME_CTRL_INFO_AUTOSYNC_FREQ: 
     241            if (m_parent.get_hardware_state(&ff_state) == 0) 
     242                return ff_state.autosync_freq; 
     243            break; 
     244        case RME_CTRL_INFO_AUTOSYNC_SRC: 
     245            if (m_parent.get_hardware_state(&ff_state) == 0) 
     246                return ff_state.autosync_source; 
     247            break; 
     248        case RME_CTRL_INFO_SYNC_STATUS: 
     249            if (m_parent.get_hardware_state(&ff_state) == 0) 
     250                return (ff_state.adat1_sync_status) | 
     251                       (ff_state.adat2_sync_status << 2) | 
     252                       (ff_state.spdif_sync_status << 4) | 
     253                       (ff_state.wclk_sync_status << 6) | 
     254                       (ff_state.tco_sync_status << 8); 
     255            break; 
     256        case RME_CTRL_INFO_SPDIF_FREQ: 
     257            if (m_parent.get_hardware_state(&ff_state) == 0) 
     258                return ff_state.spdif_freq; 
     259            break; 
    227260 
    228261        default: 
  • trunk/libffado/src/rme/fireface_settings_ctrls.h

    r2033 r2038  
    5454#define RME_CTRL_INFO_MODEL            0x0100 
    5555#define RME_CTRL_INFO_TCO_PRESENT      0x0200 
     56#define RME_CTRL_INFO_SYSCLOCK_MODE    0x0300 
     57#define RME_CTRL_INFO_SYSCLOCK_FREQ    0x0301 
     58#define RME_CTRL_INFO_AUTOSYNC_FREQ    0x0310 
     59#define RME_CTRL_INFO_AUTOSYNC_SRC     0x0311 
     60#define RME_CTRL_INFO_SYNC_STATUS      0x0312 
     61#define RME_CTRL_INFO_SPDIF_FREQ       0x0313 
    5662 
    5763/* Control types for an RmeSettingsMatrixCtrl object */ 
  • trunk/libffado/src/rme/rme_avdevice.cpp

    r2037 r2038  
    150150        new RmeSettingsCtrl(*this, RME_CTRL_INFO_TCO_PRESENT, 0, 
    151151            "TCO_present", "TCO is present", "")); 
     152    result &= m_ControlContainer->addElement( 
     153        new RmeSettingsCtrl(*this, RME_CTRL_INFO_SYSCLOCK_MODE, 0, 
     154            "sysclock_mode", "System clock mode", "")); 
     155    result &= m_ControlContainer->addElement( 
     156        new RmeSettingsCtrl(*this, RME_CTRL_INFO_SYSCLOCK_FREQ, 0, 
     157            "sysclock_freq", "System clock frequency", "")); 
     158    result &= m_ControlContainer->addElement( 
     159        new RmeSettingsCtrl(*this, RME_CTRL_INFO_AUTOSYNC_FREQ, 0, 
     160            "autosync_freq", "Autosync frequency", "")); 
     161    result &= m_ControlContainer->addElement( 
     162        new RmeSettingsCtrl(*this, RME_CTRL_INFO_AUTOSYNC_SRC, 0, 
     163            "autosync_src", "Autosync source", "")); 
     164    result &= m_ControlContainer->addElement( 
     165        new RmeSettingsCtrl(*this, RME_CTRL_INFO_SYNC_STATUS, 0, 
     166            "sync_status", "Sync status", "")); 
     167    result &= m_ControlContainer->addElement( 
     168        new RmeSettingsCtrl(*this, RME_CTRL_INFO_SPDIF_FREQ, 0, 
     169            "spdif_freq", "SPDIF frequency", "")); 
    152170 
    153171    result &= m_ControlContainer->addElement( 
  • trunk/libffado/src/rme/rme_avdevice.h

    r2037 r2038  
    190190    signed int get_hardware_status(unsigned int *stat0, unsigned int *stat1); 
    191191    signed int get_hardware_streaming_status(unsigned int *stat, unsigned int n); 
     192public: 
    192193    signed int get_hardware_state(FF_state_t *state); 
     194private: 
    193195    signed int set_hardware_params(FF_software_settings_t *use_settings = NULL); 
    194196 
  • trunk/libffado/support/mixer-qt4/ffado/mixer/rme.py

    r2037 r2038  
    2323from PyQt4 import QtGui 
    2424 
    25 from PyQt4.QtCore import SIGNAL, SLOT, QObject, Qt 
     25from PyQt4.QtCore import SIGNAL, SLOT, QObject, Qt, QTimer 
    2626from PyQt4.QtGui import QWidget, QApplication 
    2727from ffado.config import * 
     
    127127        log.debug("gain %s[%d] set to %d" % (self.Gains[sender][0], self.Gains[sender][1], a0)) 
    128128        self.hw.setMatrixMixerValue(self.Gains[sender][0], 0, self.Gains[sender][1], a0) 
     129 
     130    def status_update(self): 
     131        # log.debug("timer event") 
     132        clk_mode = ['Master', 'Slave'] 
     133        src_str = ['None', 'ADAT 1', 'ADAT 2', 'SPDIF', 'Wordclock', 'TCO'] 
     134        sync_stat = ['No lock', 'Locked', 'Synced'] 
     135        sysclock_mode = self.hw.getDiscrete('/Control/sysclock_mode') 
     136        sysclock_freq = self.hw.getDiscrete('/Control/sysclock_freq') 
     137        autosync_freq = self.hw.getDiscrete('/Control/autosync_freq') 
     138        autosync_src = self.hw.getDiscrete('/Control/autosync_src') 
     139        sync_status = self.hw.getDiscrete('/Control/sync_status') 
     140        spdif_freq = self.hw.getDiscrete('/Control/spdif_freq') 
     141        self.sysclock_freq.setText("%d Hz" % (sysclock_freq)) 
     142        self.sysclock_mode.setText(clk_mode[sysclock_mode]) 
     143        self.autosync_freq.setText("%d Hz" % (autosync_freq)) 
     144        self.autosync_src.setText(src_str[autosync_src]) 
     145        self.sync_check_adat1_status.setText(sync_stat[sync_status & 0x03]) 
     146        self.sync_check_adat2_status.setText(sync_stat[(sync_status >> 2) & 0x03]) 
     147        self.sync_check_spdif_status.setText(sync_stat[(sync_status >> 4) & 0x03]) 
     148        self.sync_check_wclk_status.setText(sync_stat[(sync_status >> 6) & 0x03]) 
     149        self.sync_check_tco_status.setText(sync_stat[(sync_status >> 8) & 0x03]) 
     150        self.spdif_freq.setText("%d Hz" % (spdif_freq)) 
    129151 
    130152    # Hide and disable a control 
     
    193215            self.sync_check_adat2_label.setEnabled(False) 
    194216            self.sync_check_adat2_status.setEnabled(False) 
     217 
     218        if (not(self.tco_present)): 
     219            self.sync_check_tco_label.setEnabled(False) 
     220            self.sync_check_tco_status.setEnabled(False) 
    195221 
    196222        # Only the FF400 has specific channel 3/4 options, input gain 
     
    250276            QObject.connect(ctrl, SIGNAL('valueChanged(int)'), self.updateGain) 
    251277 
     278        self.update_timer = QTimer(self) 
     279        QObject.connect(self.update_timer, SIGNAL('timeout()'), self.status_update) 
     280        self.update_timer.start(1000) 
     281 
    252282# vim: et 
  • trunk/libffado/support/mixer-qt4/ffado/mixer/rme.ui

    r2037 r2038  
    763763             </item> 
    764764             <item row="0" column="1"> 
    765               <widget class="QLabel" name="label_6"> 
     765              <widget class="QLabel" name="sync_check_wclk_status"> 
    766766               <property name="text"> 
    767767                <string>No lock</string> 
     
    777777             </item> 
    778778             <item row="1" column="1"> 
    779               <widget class="QLabel" name="label_8"> 
     779              <widget class="QLabel" name="sync_check_adat1_status"> 
    780780               <property name="text"> 
    781781                <string>No lock</string> 
     
    805805             </item> 
    806806             <item row="3" column="1"> 
    807               <widget class="QLabel" name="label_12"> 
     807              <widget class="QLabel" name="sync_check_spdif_status"> 
    808808               <property name="text"> 
    809809                <string>No lock</string> 
     
    812812             </item> 
    813813             <item row="4" column="0"> 
     814              <widget class="QLabel" name="sync_check_tco_label"> 
     815               <property name="text"> 
     816                <string>TCO</string> 
     817               </property> 
     818              </widget> 
     819             </item> 
     820             <item row="4" column="1"> 
     821              <widget class="QLabel" name="sync_check_tco_status"> 
     822               <property name="text"> 
     823                <string>No lock</string> 
     824               </property> 
     825              </widget> 
     826             </item> 
     827             <item row="5" column="0"> 
    814828              <spacer name="verticalSpacer_16"> 
    815829               <property name="orientation"> 
     
    841855             </item> 
    842856             <item row="0" column="1"> 
    843               <widget class="QLabel" name="label_2"> 
     857              <widget class="QLabel" name="autosync_src"> 
    844858               <property name="text"> 
    845859                <string>[unset]</string> 
     
    855869             </item> 
    856870             <item row="1" column="1"> 
    857               <widget class="QLabel" name="label_4"> 
     871              <widget class="QLabel" name="autosync_freq"> 
    858872               <property name="text"> 
    859873                <string>[unset]</string> 
     
    908922            <layout class="QVBoxLayout" name="verticalLayout_7"> 
    909923             <item> 
    910               <widget class="QLabel" name="label_13"> 
     924              <widget class="QLabel" name="spdif_freq"> 
    911925               <property name="text"> 
    912926                <string>48 kHz</string> 
     
    9911005             </item> 
    9921006             <item row="0" column="1"> 
    993               <widget class="QLabel" name="label_15"> 
     1007              <widget class="QLabel" name="sysclock_mode"> 
    9941008               <property name="text"> 
    9951009                <string>Slave</string> 
     
    10051019             </item> 
    10061020             <item row="1" column="1"> 
    1007               <widget class="QLabel" name="label_17"> 
     1021              <widget class="QLabel" name="sysclock_freq"> 
    10081022               <property name="text"> 
    10091023                <string>44100 kHz</string>