root/branches/libffado-2.0/src/bebob/focusrite/focusrite_saffirepro.h

Revision 1410, 15.5 kB (checked in by ppalmers, 15 years ago)

- Fix stupid bug in clock source selection
- (try to) Fix sample rate selection (nodeid was not updated, therefore wrong id could be used)
- Implement 'direct register access' control

Line 
1 /*
2  * Copyright (C) 2005-2008 by Daniel Wagner
3  * Copyright (C) 2005-2008 by Pieter Palmers
4  *
5  * This file is part of FFADO
6  * FFADO = Free Firewire (pro-)audio drivers for linux
7  *
8  * FFADO is based upon FreeBoB.
9  *
10  * This program is free software: you can redistribute it and/or modify
11  * it under the terms of the GNU General Public License as published by
12  * the Free Software Foundation, either version 2 of the License, or
13  * (at your option) version 3 of the License.
14  *
15  * This program is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18  * GNU General Public License for more details.
19  *
20  * You should have received a copy of the GNU General Public License
21  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
22  *
23  */
24
25 #ifndef BEBOB_FOCUSRITE_SAFFIRE_PRO_DEVICE_H
26 #define BEBOB_FOCUSRITE_SAFFIRE_PRO_DEVICE_H
27
28 #include "debugmodule/debugmodule.h"
29 #include "focusrite_generic.h"
30
31 #include "libcontrol/BasicElements.h"
32
33 #include <vector>
34 #include <string>
35
36 // MIXER ID's
37 #define FR_SAFFIREPRO_CMD_ID_AN1_TO_IMIXL        0
38 #define FR_SAFFIREPRO_CMD_ID_AN1_TO_IMIXR        1
39 #define FR_SAFFIREPRO_CMD_ID_AN2_TO_IMIXL        2
40 #define FR_SAFFIREPRO_CMD_ID_AN2_TO_IMIXR        3
41 #define FR_SAFFIREPRO_CMD_ID_AN3_TO_IMIXL        4
42 #define FR_SAFFIREPRO_CMD_ID_AN3_TO_IMIXR        5
43 #define FR_SAFFIREPRO_CMD_ID_AN4_TO_IMIXL        6
44 #define FR_SAFFIREPRO_CMD_ID_AN4_TO_IMIXR        7
45 #define FR_SAFFIREPRO_CMD_ID_AN5_TO_IMIXL        8
46 #define FR_SAFFIREPRO_CMD_ID_AN5_TO_IMIXR        9
47 #define FR_SAFFIREPRO_CMD_ID_AN6_TO_IMIXL       10
48 #define FR_SAFFIREPRO_CMD_ID_AN6_TO_IMIXR       11
49 #define FR_SAFFIREPRO_CMD_ID_AN7_TO_IMIXL       12
50 #define FR_SAFFIREPRO_CMD_ID_AN7_TO_IMIXR       13
51 #define FR_SAFFIREPRO_CMD_ID_AN8_TO_IMIXL       14
52 #define FR_SAFFIREPRO_CMD_ID_AN8_TO_IMIXR       15
53 #define FR_SAFFIREPRO_CMD_ID_SPDIFL_TO_IMIXL    16
54 #define FR_SAFFIREPRO_CMD_ID_SPDIFL_TO_IMIXR    17
55 #define FR_SAFFIREPRO_CMD_ID_SPDIFR_TO_IMIXL    18
56 #define FR_SAFFIREPRO_CMD_ID_SPDIFR_TO_IMIXR    19
57
58 #define FR_SAFFIREPRO_CMD_ID_ADAT11_TO_IMIXL    20
59 #define FR_SAFFIREPRO_CMD_ID_ADAT11_TO_IMIXR    21
60 #define FR_SAFFIREPRO_CMD_ID_ADAT12_TO_IMIXL    22
61 #define FR_SAFFIREPRO_CMD_ID_ADAT12_TO_IMIXR    23
62 #define FR_SAFFIREPRO_CMD_ID_ADAT13_TO_IMIXL    24
63 #define FR_SAFFIREPRO_CMD_ID_ADAT13_TO_IMIXR    25
64 #define FR_SAFFIREPRO_CMD_ID_ADAT14_TO_IMIXL    26
65 #define FR_SAFFIREPRO_CMD_ID_ADAT14_TO_IMIXR    27
66 #define FR_SAFFIREPRO_CMD_ID_ADAT15_TO_IMIXL    28
67 #define FR_SAFFIREPRO_CMD_ID_ADAT15_TO_IMIXR    29
68 #define FR_SAFFIREPRO_CMD_ID_ADAT16_TO_IMIXL    30
69 #define FR_SAFFIREPRO_CMD_ID_ADAT16_TO_IMIXR    31
70 #define FR_SAFFIREPRO_CMD_ID_ADAT17_TO_IMIXL    32
71 #define FR_SAFFIREPRO_CMD_ID_ADAT17_TO_IMIXR    33
72 #define FR_SAFFIREPRO_CMD_ID_ADAT18_TO_IMIXL    34
73 #define FR_SAFFIREPRO_CMD_ID_ADAT18_TO_IMIXR    35
74
75 #define FR_SAFFIREPRO_CMD_ID_ADAT21_TO_IMIXL    36
76 #define FR_SAFFIREPRO_CMD_ID_ADAT21_TO_IMIXR    37
77 #define FR_SAFFIREPRO_CMD_ID_ADAT22_TO_IMIXL    38
78 #define FR_SAFFIREPRO_CMD_ID_ADAT22_TO_IMIXR    39
79 #define FR_SAFFIREPRO_CMD_ID_ADAT23_TO_IMIXL    40
80 #define FR_SAFFIREPRO_CMD_ID_ADAT23_TO_IMIXR    41
81 #define FR_SAFFIREPRO_CMD_ID_ADAT24_TO_IMIXL    42
82 #define FR_SAFFIREPRO_CMD_ID_ADAT24_TO_IMIXR    43
83 #define FR_SAFFIREPRO_CMD_ID_ADAT25_TO_IMIXL    44
84 #define FR_SAFFIREPRO_CMD_ID_ADAT25_TO_IMIXR    45
85 #define FR_SAFFIREPRO_CMD_ID_ADAT26_TO_IMIXL    46
86 #define FR_SAFFIREPRO_CMD_ID_ADAT26_TO_IMIXR    47
87 #define FR_SAFFIREPRO_CMD_ID_ADAT27_TO_IMIXL    48
88 #define FR_SAFFIREPRO_CMD_ID_ADAT27_TO_IMIXR    49
89 #define FR_SAFFIREPRO_CMD_ID_ADAT28_TO_IMIXL    50
90 #define FR_SAFFIREPRO_CMD_ID_ADAT28_TO_IMIXR    51
91
92 #define FR_SAFFIREPRO_CMD_ID_PC1_TO_OUT1    52
93 #define FR_SAFFIREPRO_CMD_ID_PC2_TO_OUT2    54
94 #define FR_SAFFIREPRO_CMD_ID_MIX1_TO_OUT1   53
95 #define FR_SAFFIREPRO_CMD_ID_MIX2_TO_OUT2   55
96
97 #define FR_SAFFIREPRO_CMD_ID_PC1_TO_OUT3    56
98 #define FR_SAFFIREPRO_CMD_ID_PC2_TO_OUT4    59
99 #define FR_SAFFIREPRO_CMD_ID_PC3_TO_OUT3    57
100 #define FR_SAFFIREPRO_CMD_ID_PC4_TO_OUT4    60
101 #define FR_SAFFIREPRO_CMD_ID_MIX1_TO_OUT3   58
102 #define FR_SAFFIREPRO_CMD_ID_MIX2_TO_OUT4   61
103
104 #define FR_SAFFIREPRO_CMD_ID_PC1_TO_OUT5    62
105 #define FR_SAFFIREPRO_CMD_ID_PC2_TO_OUT6    65
106 #define FR_SAFFIREPRO_CMD_ID_PC5_TO_OUT5    63
107 #define FR_SAFFIREPRO_CMD_ID_PC6_TO_OUT6    66
108 #define FR_SAFFIREPRO_CMD_ID_MIX1_TO_OUT5   64
109 #define FR_SAFFIREPRO_CMD_ID_MIX2_TO_OUT6   67
110
111 #define FR_SAFFIREPRO_CMD_ID_PC1_TO_OUT7    68
112 #define FR_SAFFIREPRO_CMD_ID_PC2_TO_OUT8    71
113 #define FR_SAFFIREPRO_CMD_ID_PC7_TO_OUT7    69
114 #define FR_SAFFIREPRO_CMD_ID_PC8_TO_OUT8    72
115 #define FR_SAFFIREPRO_CMD_ID_MIX1_TO_OUT7   70
116 #define FR_SAFFIREPRO_CMD_ID_MIX2_TO_OUT8   73
117
118 #define FR_SAFFIREPRO_CMD_ID_PC1_TO_OUT9    74
119 #define FR_SAFFIREPRO_CMD_ID_PC2_TO_OUT10   77
120 #define FR_SAFFIREPRO_CMD_ID_PC9_TO_OUT9    75
121 #define FR_SAFFIREPRO_CMD_ID_PC10_TO_OUT10  78
122 #define FR_SAFFIREPRO_CMD_ID_MIX1_TO_OUT9   76
123 #define FR_SAFFIREPRO_CMD_ID_MIX2_TO_OUT10  79
124
125 // SAMPLERATE related ID's
126 #define FR_SAFFIREPRO_CMD_ID_SAMPLERATE            84
127 #define FR_SAFFIREPRO_CMD_ID_SAMPLERATE_NOREBOOT  115
128
129 #define FOCUSRITE_CMD_SAMPLERATE_44K1   1
130 #define FOCUSRITE_CMD_SAMPLERATE_48K    2
131 #define FOCUSRITE_CMD_SAMPLERATE_88K2   3
132 #define FOCUSRITE_CMD_SAMPLERATE_96K    4
133 #define FOCUSRITE_CMD_SAMPLERATE_176K4  5
134 #define FOCUSRITE_CMD_SAMPLERATE_192K   6
135
136 // OTHER CONFIG id's
137 #define FR_SAFFIREPRO_CMD_ID_BITFIELD_OUT12         80
138 #define FR_SAFFIREPRO_CMD_ID_BITFIELD_OUT34         81
139 #define FR_SAFFIREPRO_CMD_ID_BITFIELD_OUT56         82
140 #define FR_SAFFIREPRO_CMD_ID_BITFIELD_OUT78         83
141
142 #define FR_SAFFIREPRO_CMD_BITFIELD_BIT_MUTE         24
143 #define FR_SAFFIREPRO_CMD_BITFIELD_BIT_DAC_IGNORE   25
144 #define FR_SAFFIREPRO_CMD_BITFIELD_BIT_HWCTRL       26
145 #define FR_SAFFIREPRO_CMD_BITFIELD_BIT_PAD          27
146 #define FR_SAFFIREPRO_CMD_BITFIELD_BIT_DIM          28
147
148
149 #define FR_SAFFIREPRO_CMD_ID_SWITCH_CONFIG          85
150 #define FR_SAFFIREPRO_CMD_SWITCH_CONFIG_DIM12    (1<<0)
151 #define FR_SAFFIREPRO_CMD_SWITCH_CONFIG_DIM34    (1<<1)
152 #define FR_SAFFIREPRO_CMD_SWITCH_CONFIG_DIM56    (1<<2)
153 #define FR_SAFFIREPRO_CMD_SWITCH_CONFIG_DIM78    (1<<3)
154 #define FR_SAFFIREPRO_CMD_SWITCH_CONFIG_MUTE12   (1<<4)
155 #define FR_SAFFIREPRO_CMD_SWITCH_CONFIG_MUTE34   (1<<5)
156 #define FR_SAFFIREPRO_CMD_SWITCH_CONFIG_MUTE56   (1<<6)
157 #define FR_SAFFIREPRO_CMD_SWITCH_CONFIG_MUTE78   (1<<7)
158 #define FR_SAFFIREPRO_CMD_SWITCH_CONFIG_MUTE910  (1<<8)
159
160 #define FR_SAFFIREPRO_CMD_ID_MONITOR_DIAL           86
161 #define FR_SAFFIREPRO_CMD_ID_DIM_INDICATOR          87
162 #define FR_SAFFIREPRO_CMD_ID_MUTE_INDICATOR         88
163
164 #define FR_SAFFIREPRO_CMD_ID_EXT_CLOCK_LOCK         89
165 #define FR_SAFFIREPRO_CMD_ID_AUDIO_ON               90
166
167 #define FR_SAFFIREPRO_CMD_ID_USE_HIGHVOLTAGE_RAIL   91
168 #define FR_SAFFIREPRO_CMD_ID_USING_HIGHVOLTAGE_RAIL 92
169
170 #define FR_SAFFIREPRO_CMD_ID_SYNC_CONFIG_MASK  0x000000FF
171 #define FR_SAFFIREPRO_CMD_ID_SYNC_LOCK_MASK    0x0000FF00
172 #define FR_SAFFIREPRO_CMD_ID_SYNC_CONFIG            93
173 #define FR_SAFFIREPRO_CMD_SYNC_CONFIG_INTERNAL       0
174 #define FR_SAFFIREPRO_CMD_SYNC_CONFIG_SPDIF          2
175 #define FR_SAFFIREPRO_CMD_SYNC_CONFIG_ADAT1          3
176 #define FR_SAFFIREPRO_CMD_SYNC_CONFIG_ADAT2          4
177 #define FR_SAFFIREPRO_CMD_SYNC_CONFIG_WORDCLOCK      5
178
179 #define FR_SAFFIREPRO_CMD_ID_DEVICE_NAME_1          94
180 #define FR_SAFFIREPRO_CMD_ID_DEVICE_NAME_2          95
181 #define FR_SAFFIREPRO_CMD_ID_DEVICE_NAME_3          96
182 #define FR_SAFFIREPRO_CMD_ID_DEVICE_NAME_4          97
183
184 #define FR_SAFFIREPRO_CMD_ID_PHANTOM14              98
185 #define FR_SAFFIREPRO_CMD_ID_PHANTOM58              99
186 #define FR_SAFFIREPRO_CMD_ID_INSERT1                100
187 #define FR_SAFFIREPRO_CMD_ID_INSERT2                101
188
189 // led flashing
190 #define FR_SAFFIREPRO_CMD_ID_FLASH_LED              102
191 #define FR_SAFFIREPRO_CMD_FLASH_MASK_SECS           0x00FF
192 #define FR_SAFFIREPRO_CMD_FLASH_MASK_FREQ           0xFF00
193 #define FR_SAFFIREPRO_CMD_SET_FLASH_SECS(reg, secs) \
194     (((reg) & ~FR_SAFFIREPRO_CMD_FLASH_MASK_SECS) | \
195     (((secs) & 0xFF)))
196 #define FR_SAFFIREPRO_CMD_GET_FLASH_SECS(reg)       \
197     ((reg) & FR_SAFFIREPRO_CMD_FLASH_MASK_SECS)
198
199 #define FR_SAFFIREPRO_CMD_SET_FLASH_FREQ(reg, freq) \
200     (((reg) & ~FR_SAFFIREPRO_CMD_FLASH_MASK_FREQ) |  \
201     (((freq) & 0xFF) << 8))
202 #define FR_SAFFIREPRO_CMD_GET_FLASH_FREQ(reg)       \
203     ((reg) & FR_SAFFIREPRO_CMD_FLASH_MASK_FREQ)
204
205 #define FR_SAFFIREPRO_CMD_ID_AC3_PASSTHROUGH        103
206 #define FR_SAFFIREPRO_CMD_ID_MIDI_TRU               104
207
208 #define FR_SAFFIREPRO_CMD_ID_ENABLE_SPDIF_INPUT     105
209 #define FR_SAFFIREPRO_CMD_ID_ENABLE_ADAT1_INPUT     106
210 #define FR_SAFFIREPRO_CMD_ID_ENABLE_ADAT2_INPUT     107
211
212 #define FR_SAFFIREPRO_CMD_ID_SAVE_SETTINGS          108
213 #define FR_SAFFIREPRO_CMD_ID_REBOOT                 109
214 #define FR_SAFFIREPRO_CMD_REBOOT_CODE            0xA5A5
215
216 #define FR_SAFFIREPRO_CMD_ID_PLAYBACK_COUNT         110
217 #define FR_SAFFIREPRO_CMD_PLAYBACK_COUNT_REC_OK       0
218 #define FR_SAFFIREPRO_CMD_PLAYBACK_COUNT_PBK_OK       1
219 #define FR_SAFFIREPRO_CMD_PLAYBACK_COUNT_RX_READY     2
220 #define FR_SAFFIREPRO_CMD_PLAYBACK_COUNT_STANDALONE   3
221 #define FR_SAFFIREPRO_CMD_PLAYBACK_COUNT_SPDIFIN_ON   (1<<8)
222 #define FR_SAFFIREPRO_CMD_PLAYBACK_COUNT_SPDIFIN_ERR  (1<<9)
223 #define FR_SAFFIREPRO_CMD_PLAYBACK_COUNT_ADAT1IN_ON   (1<<16)
224 #define FR_SAFFIREPRO_CMD_PLAYBACK_COUNT_ADAT1IN_ERR  (1<<17)
225 #define FR_SAFFIREPRO_CMD_PLAYBACK_COUNT_ADAT2IN_ON   (1<<24)
226 #define FR_SAFFIREPRO_CMD_PLAYBACK_COUNT_ADAT2IN_ERR  (1<<25)
227
228 #define FR_SAFFIREPRO_CMD_ID_STANDALONE_MODE        111
229 #define FR_SAFFIREPRO_CMD_ID_AVC_MODEL              112
230 #define FR_SAFFIREPRO_CMD_AVC_MODEL_LARGE             0
231 #define FR_SAFFIREPRO_CMD_AVC_MODEL_SMALL             1
232
233 #define FR_SAFFIREPRO_CMD_ID_PLL_LOCK_RANGE         113
234
235 #define FR_SAFFIREPRO_CMD_ID_EXIT_STANDALONE        114
236 #define FR_SAFFIREPRO_CMD_EXIT_STANDALONE_CODE   0xA5A5
237
238 #define FR_SAFFIREPRO_CMD_ID_AVC_MODEL_MIDI         116
239 #define FR_SAFFIREPRO_CMD_AVC_MODEL_MIDI_ON           1
240 #define FR_SAFFIREPRO_CMD_AVC_MODEL_MIDI_OFF          0
241
242 #define FR_SAFFIREPRO_CMD_ID_DIM_LEVEL              117
243 #define FR_SAFFIREPRO_CMD_ID_DIRECT_MONITORING_BITFIELD      118
244 #define FR_SAFFIREPRO_CMD_ID_DIRECT_MONITORING_CH1             0
245 #define FR_SAFFIREPRO_CMD_ID_DIRECT_MONITORING_CH2             1
246 #define FR_SAFFIREPRO_CMD_ID_DIRECT_MONITORING_CH3             2
247 #define FR_SAFFIREPRO_CMD_ID_DIRECT_MONITORING_CH4             3
248 #define FR_SAFFIREPRO_CMD_ID_DIRECT_MONITORING_CH5             4
249 #define FR_SAFFIREPRO_CMD_ID_DIRECT_MONITORING_CH6             5
250 #define FR_SAFFIREPRO_CMD_ID_DIRECT_MONITORING_CH7             6
251 #define FR_SAFFIREPRO_CMD_ID_DIRECT_MONITORING_CH8             7
252
253 namespace BeBoB {
254 namespace Focusrite {
255
256 class SaffireProDevice;
257
258 // swiss army knife control class to serve
259 // specific device control commands
260 class SaffireProMultiControl
261     : public Control::Discrete
262 {
263 public:
264     enum eMultiControlType {
265         eTCT_Reboot,
266         eTCT_FlashLed,
267         eTCT_UseHighVoltageRail,
268         eTCT_ExitStandalone,
269         eTCT_PllLockRange,
270         eTCT_SaveSettings,
271         eTCT_EnableADAT1,
272         eTCT_EnableADAT2,
273         eTCT_EnableSPDIF,
274     };
275
276 public:
277     SaffireProMultiControl(SaffireProDevice& parent, enum eMultiControlType);
278     SaffireProMultiControl(SaffireProDevice& parent, enum eMultiControlType,
279                   std::string name, std::string label, std::string descr);
280
281     virtual bool setValue(int v);
282     virtual int getValue();
283     virtual bool setValue(int idx, int v)
284         {return setValue(v);};
285     virtual int getValue(int idx)
286         {return getValue();};
287
288     virtual int getMinimum() {return 0;};
289     virtual int getMaximum() {return 0;};
290 private:
291     SaffireProDevice&          m_Parent;
292     enum eMultiControlType  m_type;
293 };
294
295
296 class SaffireProMatrixMixer : public FocusriteMatrixMixer
297 {
298 public:
299     enum eMatrixMixerType {
300         eMMT_InputMix,
301         eMMT_OutputMix
302     };
303    
304 public:
305     SaffireProMatrixMixer(SaffireProDevice& parent, enum eMatrixMixerType type);
306     SaffireProMatrixMixer(SaffireProDevice& parent, enum eMatrixMixerType type, std::string n);
307     virtual ~SaffireProMatrixMixer() {};
308
309     virtual void show();
310
311 protected:
312     void init();
313     enum eMatrixMixerType m_type;
314 };
315
316 // -- wrapper for the name stored on the device
317 class SaffireProDeviceNameControl
318     : public Control::Text
319 {
320 public:
321     SaffireProDeviceNameControl(SaffireProDevice& parent);
322     SaffireProDeviceNameControl(SaffireProDevice& parent,
323                   std::string name, std::string label, std::string descr);
324
325     virtual bool setValue(std::string);
326     virtual std::string getValue();
327
328 private:
329     SaffireProDevice&          m_Parent;
330 };
331
332 // -- wrapper for the standalone config of the device
333 class SaffireProDeviceStandaloneEnum
334     : public Control::Enum
335 {
336 public:
337     SaffireProDeviceStandaloneEnum(SaffireProDevice& parent);
338     SaffireProDeviceStandaloneEnum(SaffireProDevice& parent,
339                   std::string name, std::string label, std::string descr);
340
341     virtual bool select(int idx);
342     virtual int selected();
343     virtual int count();
344     virtual std::string getEnumLabel(int idx);
345
346 private:
347     SaffireProDevice&          m_Parent;
348 };
349
350 // -- the actual device
351 class SaffireProDevice : public FocusriteDevice
352 {
353
354 // we want all outside control to be done by this class
355 friend class SaffireProMultiControl;
356 friend class SaffireProDeviceNameControl;
357
358 public:
359     SaffireProDevice( DeviceManager& d, std::auto_ptr<ConfigRom>( configRom ));
360     virtual ~SaffireProDevice();
361
362     virtual void showDevice();
363     virtual void setVerboseLevel(int l);
364
365     virtual bool setSamplingFrequency( int );
366     virtual int getSamplingFrequency( );
367     virtual std::vector<int> getSupportedSamplingFrequencies();
368
369     virtual bool buildMixer();
370     virtual bool destroyMixer();
371
372     virtual std::string getNickname();
373     virtual bool setNickname(std::string name);
374     virtual bool canChangeNickname();
375 protected:
376     void rebootDevice();
377     void flashLed();
378     bool isAudioOn();
379     bool isMidiEnabled();
380     bool isExtClockLocked();
381     uint32_t getCount32();
382     void exitStandalone();
383
384     void useHighVoltageRail(bool useIt);
385     bool usingHighVoltageRail();
386     unsigned int getPllLockRange();
387     void setPllLockRange(unsigned int);
388     void saveSettings();
389
390     bool setDeviceName(std::string n);
391     std::string getDeviceName();
392
393     enum eDigitalChannel {
394         eDC_ADAT1,
395         eDC_ADAT2,
396         eDC_SPDIF
397     };
398
399     unsigned int getEnableDigitalChannel(enum eDigitalChannel);
400     void setEnableDigitalChannel(enum eDigitalChannel, unsigned int);
401
402     bool isPro10()
403             {return getConfigRom().getModelId() == 0x00000006;};
404     bool isPro26()
405             {return getConfigRom().getModelId() == 0x00000003;};
406
407 public:
408     // override these since we want to use the focusrite way of setting
409     // the clock
410     virtual ClockSourceVector getSupportedClockSources();
411     virtual bool setActiveClockSource(ClockSource);
412     virtual ClockSource getActiveClockSource();
413
414 protected:
415     virtual uint16_t getConfigurationIdSyncMode();
416     virtual uint64_t getConfigurationId();
417
418 private:
419     virtual bool setSamplingFrequencyDo( uint32_t );
420     virtual bool setSamplingFrequencyDoNoReboot( uint32_t );
421
422 private:
423     void updateClockSources();
424     ClockSource m_internal_clocksource;
425     ClockSource m_spdif_clocksource;
426     ClockSource m_wordclock_clocksource;
427     ClockSource m_adat1_clocksource;
428     ClockSource m_adat2_clocksource;
429     ClockSource *m_active_clocksource;
430
431     Control::Container *m_MixerContainer;
432     Control::Container *m_ControlContainer;
433     SaffireProDeviceNameControl *m_deviceNameControl;
434 };
435
436 } // namespace Focusrite
437 } // namespace BeBoB
438
439 #endif
Note: See TracBrowser for help on using the browser.