root/trunk/libffado/src/bebob/focusrite/focusrite_saffire.h

Revision 662, 5.4 kB (checked in by ppalmers, 15 years ago)

- introduce mixer control for the original saffire

Line 
1 /*
2  * Copyright (C) 2005-2007 by Daniel Wagner
3  * Copyright (C) 2005-2007 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 library is free software; you can redistribute it and/or
11  * modify it under the terms of the GNU Lesser General Public
12  * License version 2.1, as published by the Free Software Foundation;
13  *
14  * This library is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
17  * Lesser General Public License for more details.
18  *
19  * You should have received a copy of the GNU Lesser General Public
20  * License along with this library; if not, write to the Free Software
21  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
22  * MA 02110-1301 USA
23  */
24
25 #ifndef BEBOB_FOCUSRITE_SAFFIRE_DEVICE_H
26 #define BEBOB_FOCUSRITE_SAFFIRE_DEVICE_H
27
28 #include "debugmodule/debugmodule.h"
29 #include "focusrite_generic.h"
30
31 #include "libcontrol/BasicElements.h"
32 #include "libcontrol/MatrixMixer.h"
33
34 // The ID's for the hardware input matrix mixer
35 #define FR_SAFFIRE_CMD_ID_IN1_TO_OUT1       1
36 #define FR_SAFFIRE_CMD_ID_IN1_TO_OUT3       2
37 #define FR_SAFFIRE_CMD_ID_IN1_TO_OUT5       3
38 #define FR_SAFFIRE_CMD_ID_IN1_TO_OUT7       4
39 #define FR_SAFFIRE_CMD_ID_IN1_TO_OUT9       0
40 #define FR_SAFFIRE_CMD_ID_IN2_TO_OUT2       16
41 #define FR_SAFFIRE_CMD_ID_IN2_TO_OUT4       17
42 #define FR_SAFFIRE_CMD_ID_IN2_TO_OUT6       18
43 #define FR_SAFFIRE_CMD_ID_IN2_TO_OUT8       19
44 #define FR_SAFFIRE_CMD_ID_IN2_TO_OUT10      15
45 #define FR_SAFFIRE_CMD_ID_IN3_TO_OUT1       6
46 #define FR_SAFFIRE_CMD_ID_IN3_TO_OUT3       7
47 #define FR_SAFFIRE_CMD_ID_IN3_TO_OUT5       8
48 #define FR_SAFFIRE_CMD_ID_IN3_TO_OUT7       9
49 #define FR_SAFFIRE_CMD_ID_IN3_TO_OUT9       5
50 #define FR_SAFFIRE_CMD_ID_IN4_TO_OUT2       21
51 #define FR_SAFFIRE_CMD_ID_IN4_TO_OUT4       22
52 #define FR_SAFFIRE_CMD_ID_IN4_TO_OUT6       23
53 #define FR_SAFFIRE_CMD_ID_IN4_TO_OUT8       24
54 #define FR_SAFFIRE_CMD_ID_IN4_TO_OUT10      20
55
56 // reverb return id's (part of hardware input mixer)
57 #define FR_SAFFIRE_CMD_ID_REV1_TO_OUT1       11
58 #define FR_SAFFIRE_CMD_ID_REV2_TO_OUT2       26
59 #define FR_SAFFIRE_CMD_ID_REV1_TO_OUT3       12
60 #define FR_SAFFIRE_CMD_ID_REV2_TO_OUT4       27
61 #define FR_SAFFIRE_CMD_ID_REV1_TO_OUT5       13
62 #define FR_SAFFIRE_CMD_ID_REV2_TO_OUT6       28
63 #define FR_SAFFIRE_CMD_ID_REV1_TO_OUT7       14
64 #define FR_SAFFIRE_CMD_ID_REV2_TO_OUT8       29
65 #define FR_SAFFIRE_CMD_ID_REV1_TO_OUT9       10
66 #define FR_SAFFIRE_CMD_ID_REV2_TO_OUT10      25
67
68 // The ID's for the playback matrix mixer
69 #define FR_SAFFIRE_CMD_ID_PC12_TO_OUT12     36
70 #define FR_SAFFIRE_CMD_ID_PC12_TO_OUT34     37
71 #define FR_SAFFIRE_CMD_ID_PC12_TO_OUT56     38
72 #define FR_SAFFIRE_CMD_ID_PC12_TO_OUT79     39
73 #define FR_SAFFIRE_CMD_ID_PC12_TO_OUT910    35
74 #define FR_SAFFIRE_CMD_ID_PC34_TO_OUT12     41
75 #define FR_SAFFIRE_CMD_ID_PC34_TO_OUT34     42
76 #define FR_SAFFIRE_CMD_ID_PC34_TO_OUT56     43
77 #define FR_SAFFIRE_CMD_ID_PC34_TO_OUT79     44
78 #define FR_SAFFIRE_CMD_ID_PC34_TO_OUT910    40
79 #define FR_SAFFIRE_CMD_ID_PC56_TO_OUT12     46
80 #define FR_SAFFIRE_CMD_ID_PC56_TO_OUT34     47
81 #define FR_SAFFIRE_CMD_ID_PC56_TO_OUT56     48
82 #define FR_SAFFIRE_CMD_ID_PC56_TO_OUT79     49
83 #define FR_SAFFIRE_CMD_ID_PC56_TO_OUT910    45
84 #define FR_SAFFIRE_CMD_ID_PC78_TO_OUT12     51
85 #define FR_SAFFIRE_CMD_ID_PC78_TO_OUT34     52
86 #define FR_SAFFIRE_CMD_ID_PC78_TO_OUT56     53
87 #define FR_SAFFIRE_CMD_ID_PC78_TO_OUT79     54
88 #define FR_SAFFIRE_CMD_ID_PC78_TO_OUT910    50
89 #define FR_SAFFIRE_CMD_ID_PC910_TO_OUT12    31
90 #define FR_SAFFIRE_CMD_ID_PC910_TO_OUT34    32
91 #define FR_SAFFIRE_CMD_ID_PC910_TO_OUT56    33
92 #define FR_SAFFIRE_CMD_ID_PC910_TO_OUT79    34
93 #define FR_SAFFIRE_CMD_ID_PC910_TO_OUT910   30
94
95 // the control ID's
96 #define FR_SAFFIRE_CMD_ID_BITFIELD_OUT12      55
97 #define FR_SAFFIRE_CMD_ID_BITFIELD_OUT34      56
98 #define FR_SAFFIRE_CMD_ID_BITFIELD_OUT56      57
99 #define FR_SAFFIRE_CMD_ID_BITFIELD_OUT78      58
100 #define FR_SAFFIRE_CMD_ID_BITFIELD_OUT910     59
101
102 #define FR_SAFFIRE_CMD_ID_BITFIELD_BIT_DIM       24
103 #define FR_SAFFIRE_CMD_ID_BITFIELD_BIT_MUTE      25
104 #define FR_SAFFIRE_CMD_ID_BITFIELD_BIT_HWCTRL    26
105
106 // other stuff
107 #define FR_SAFFIRE_CMD_ID_MONITOR_DIAL    61
108 #define FR_SAFFIRE_CMD_ID_SPDIF_SWITCH    62
109
110 #define FR_SAFFIRE_CMD_ID_METERING_IN1      64
111 #define FR_SAFFIRE_CMD_ID_METERING_IN2      65
112 #define FR_SAFFIRE_CMD_ID_METERING_IN3      66
113 #define FR_SAFFIRE_CMD_ID_METERING_IN4      67
114
115 #define FR_SAFFIRE_CMD_ID_SPDIF_DETECT    79
116
117 namespace BeBoB {
118 namespace Focusrite {
119
120 class SaffireDevice;
121
122 class SaffireMatrixMixer : public FocusriteMatrixMixer
123 {
124 public:
125     enum eMatrixMixerType {
126         eMMT_InputMix,
127         eMMT_PCMix
128     };
129    
130 public:
131     SaffireMatrixMixer(SaffireDevice& parent, enum eMatrixMixerType type);
132     SaffireMatrixMixer(SaffireDevice& parent, enum eMatrixMixerType type, std::string n);
133     virtual ~SaffireMatrixMixer() {};
134
135     virtual void show();
136
137 protected:
138     void init();
139     enum eMatrixMixerType m_type;
140 };
141
142 class SaffireDevice : public FocusriteDevice {
143 public:
144     SaffireDevice( Ieee1394Service& ieee1394Service,
145               std::auto_ptr<ConfigRom>( configRom ));
146     virtual ~SaffireDevice();
147
148     virtual void showDevice();
149     virtual void setVerboseLevel(int l);
150
151     virtual bool buildMixer();
152     virtual bool destroyMixer();
153
154 private:
155     Control::Container *m_MixerContainer;
156 };
157
158 } // namespace Focusrite
159 } // namespace BeBoB
160
161 #endif
Note: See TracBrowser for help on using the browser.