Changeset 1475

Show
Ignore:
Timestamp:
11/23/08 07:47:32 (12 years ago)
Author:
wagi
Message:

fix streamin vs non-streaming mapping of channels and fader position.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • branches/libffado-2.0/support/mixer-qt4/mixer_edirolfa101.py

    r1446 r1475  
    3232        QWidget.__init__(self, parent) 
    3333        self.setupUi(self) 
    34  
    35         self.VolumeControls = { 
    36             #          feature name, channel, qt slider 
    37             'vol1'  :   ['/Mixer/Feature_Volume_5', 1, self.sldInput1], 
    38             'vol2'  :   ['/Mixer/Feature_Volume_5', 2, self.sldInput2], 
    39             'vol3'  :   ['/Mixer/Feature_Volume_1', 1, self.sldInput3], 
    40             'vol4'  :   ['/Mixer/Feature_Volume_1', 2, self.sldInput4], 
    41             'vol5'  :   ['/Mixer/Feature_Volume_2', 1, self.sldInput5], 
    42             'vol6'  :   ['/Mixer/Feature_Volume_2', 2, self.sldInput6], 
    43             'vol7'  :   ['/Mixer/Feature_Volume_3', 1, self.sldInput7], 
    44             'vol8'  :   ['/Mixer/Feature_Volume_3', 2, self.sldInput8], 
    45             'vol9'  :   ['/Mixer/Feature_Volume_4', 1, self.sldInput9], 
    46             'vol10' :   ['/Mixer/Feature_Volume_4', 2, self.sldInput10], 
    47  
    48             'bal1'  :   ['/Mixer/Feature_LRBalance_5', 1, self.sldBal1], 
    49             'bal2'  :   ['/Mixer/Feature_LRBalance_5', 2, self.sldBal2], 
    50             'bal3'  :   ['/Mixer/Feature_LRBalance_1', 1, self.sldBal3], 
    51             'bal4'  :   ['/Mixer/Feature_LRBalance_1', 2, self.sldBal4], 
    52             'bal5'  :   ['/Mixer/Feature_LRBalance_2', 1, self.sldBal5], 
    53             'bal6'  :   ['/Mixer/Feature_LRBalance_2', 2, self.sldBal6], 
    54             'bal7'  :   ['/Mixer/Feature_LRBalance_3', 1, self.sldBal7], 
    55             'bal8'  :   ['/Mixer/Feature_LRBalance_3', 2, self.sldBal8], 
    56             'bal9'  :   ['/Mixer/Feature_LRBalance_4', 1, self.sldBal9], 
    57             'bal10' :   ['/Mixer/Feature_LRBalance_4', 2, self.sldBal10], 
    58             } 
    5934 
    6035    def setVolumeIn1(self, vol): 
     
    11893        self.setValue('bal10', bal) 
    11994 
     95    def getIndexByName(self, name): 
     96        index = int(name.lstrip('volba')) - 1 
     97        streamingMap    = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ] 
     98        nonStreamingMap = [ 9, 10, 1, 2, 3, 4, 5, 6, 7, 8 ] 
     99 
     100        if self.is_streaming: 
     101            index = streamingMap[index] 
     102        else: 
     103            index = nonStreamingMap[index] 
     104        return index 
     105         
     106    def getWidgetByName(self, name): 
     107        index = self.getIndexByName(name) 
     108        widgetName = '' 
     109        if name[0:3] == 'vol': 
     110            widgetName = 'sldInput%d' % (index) 
     111        else: 
     112            widgetName = 'sldBal%d' % (index) 
     113        return getattr(self, widgetName) 
     114             
     115    def getFeatureByName(self, name): 
     116        index = self.getIndexByName(name) 
     117        featureName = '' 
     118        if name[0:3] == 'vol': 
     119            featureName = '/Mixer/Feature_Volume_%d' % ((index + 1) / 2) 
     120        else: 
     121            featureName = '/Mixer/Feature_LRBalance_%d' % ((index + 1) / 2) 
     122        return featureName 
     123 
     124    def getChannelIndexByName(self, name): 
     125        index = self.getIndexByName(name) 
     126        return ((index - 1) % 2) + 1 
     127 
    120128    def setValue(self, name, val): 
    121         ctrl = self.VolumeControls[name] 
    122129        log.debug("setting %s to %d" % (name, val)) 
    123         self.hw.setContignuous(ctrl[0], val, idx = ctrl[1]) 
     130        self.updateStreamingState() 
     131        feature = self.getFeatureByName(name) 
     132        widget = self.getWidgetByName(name) 
     133        channel = self.getChannelIndexByName(name) 
     134        self.hw.setContignuous(feature, val, idx = channel) 
    124135 
     136    def updateStreamingState(self): 
     137        ss = self.streamingstatus.selected() 
     138        ss_txt = self.streamingstatus.getEnumLabel(ss) 
     139        if ss_txt != 'Idle': 
     140            self.is_streaming = True 
     141        else: 
     142            self.is_streaming = False 
     143         
    125144    def initValues(self): 
    126         for name, ctrl in self.VolumeControls.iteritems(): 
    127             val = self.hw.getContignuous(ctrl[0], idx = ctrl[1]) 
     145        self.updateStreamingState() 
     146         
     147        for i in range(1, 11): 
     148            name = 'vol%d' % i 
     149            feature = self.getFeatureByName(name) 
     150            widget = self.getWidgetByName(name) 
     151            channel = self.getChannelIndexByName(name) 
     152 
     153            val = self.hw.getContignuous(feature, idx = channel) 
    128154            log.debug("%s value is %d" % (name , val)) 
     155            widget.setValue(val) 
     156             
     157        for i in range(1, 11): 
     158            name = 'bal%d' % i 
     159            feature = self.getFeatureByName(name) 
     160            widget = self.getWidgetByName(name) 
     161            channel = self.getChannelIndexByName(name) 
    129162 
     163            val = self.hw.getContignuous(feature, idx = channel) 
    130164            # Workaround: The current value is not properly initialized 
    131165            # on the device and returns after bootup always 0. 
    132166            # Though we happen to know what the correct value should 
    133167            # be therefore we overwrite the 0  
    134             if name[0:3] == 'bal' and val == 0: 
    135                 if ctrl[1] == 1: 
    136                     val = 32512 
    137                 else: 
    138                     val = -32768 
    139  
    140             ctrl[2].setValue(val) 
     168            if channel == 1: 
     169                val = 32512 
     170            else: 
     171                val = -32768 
     172            log.debug("%s value is %d" % (name , val)) 
     173            widget.setValue(val)