root/branches/libffado-2.0/config.h.in

Revision 1299, 9.2 kB (checked in by ppalmers, 16 years ago)

implement configuration file mechanism to ease device support and packaging. this mechanism replaces the vendormodel text files. it loads two files, one system-wide and a second in the user directory. the user config file takes precedence. this should ease adding
device id's on a per-user base. it also allows for other settings to be carried by the same 'Configuration' object (present in the devicemanager). The idea is that it will also replace the OptionContainer? mechanism on the long run, and allow for easy integration
of system options (e.g. the pre-transmit amount).

Line 
1 /* config.h.in. */
2 #ifndef CONFIG_H
3 #define CONFIG_H
4
5 /* Name of package */
6 #define PACKAGE $PACKAGE
7
8 /* Define to the address where bug reports for this package should be sent. */
9 #define PACKAGE_BUGREPORT "<ffado-devel@lists.sf.net>"
10
11 /* Define to the full name of this package. */
12 #define PACKAGE_NAME "$PACKAGE"
13
14 /* Define to the full name and version of this package. */
15 #define PACKAGE_STRING "$PACKAGE $VERSION-$REVISION"
16
17 /* Define to the one symbol short name of this package. */
18 #define PACKAGE_TARNAME "$PACKAGE"
19
20 /* Define to the version of this package. */
21 #define PACKAGE_VERSION "$VERSION-$REVISION"
22
23 /* Define to the version of the cace. */
24 #define CACHE_VERSION "$VERSION-$REVISION"
25 #define CACHEDIR "$CACHEDIR"
26
27 /* Define to the api version */
28 #define FFADO_API_VERSION $FFADO_API_VERSION
29
30 #define BINDIR "$BINDIR"
31 #define LIBDIR "$LIBDIR"
32 #define SHAREDIR "$SHAREDIR"
33
34 /* configuration file locations */
35 #define USER_CONFIG_FILE    "$USER_CONFIG_FILE"
36 #define SYSTEM_CONFIG_FILE  "$SYSTEM_CONFIG_FILE"
37
38 /* Define indicating availability of lrint() */
39 #define HAVE_LRINT $HAVE_LRINT
40
41 /* Define indicatin availability of lrintf() */
42 #define HAVE_LRINTF $HAVE_LRINTF
43
44 // serialization
45 #define SERIALIZE_USE_EXPAT $SERIALIZE_USE_EXPAT
46
47 // use a RT-safe message buffer for debug output
48 // useful to disable this when the code aborts/segfaults to
49 // not lose debug output. should be enabled though.
50 #define DEBUG_USE_MESSAGE_BUFFER             1
51 // max message length in the debug messagebuffer
52 #define DEBUG_MAX_MESSAGE_LENGTH           512
53 // number of messages in the debug messagebuffer (power of two)
54 #define DEBUG_MB_BUFFERS                  1024
55
56 // use an RT thread for reading out the messagebuffer.
57 // can reduce the number of buffer xruns, but not
58 // recommended
59 #define DEBUG_MESSAGE_BUFFER_REALTIME        0
60 #define DEBUG_MESSAGE_BUFFER_REALTIME_PRIO   1
61
62 // When a write can't get the buffer lock, how many times
63 // should it retry, and wait how long between retries?
64 #define DEBUG_MESSAGE_BUFFER_COLLISION_WAIT_NTRIES      2
65 #define DEBUG_MESSAGE_BUFFER_COLLISION_WAIT_NSEC    50000
66
67
68 // support a debug backlog
69 // note that this does not influence non-debug builds
70 #define DEBUG_BACKLOG_SUPPORT                0
71 // number of messages in the backlog buffer (power of two)
72 #define DEBUG_BACKLOG_MB_BUFFERS            64
73
74 // support backtrace debugging
75 // note that this does not influence non-debug builds
76 #define DEBUG_BACKTRACE_SUPPORT              0
77 // max length of backtrace
78 #define DEBUG_MAX_BACKTRACE_LENGTH           8
79 // max amount of function pointers to keep track of
80 #define DEBUG_MAX_BACKTRACE_FUNCTIONS_SEEN  64
81
82 // lock debugging
83 #define DEBUG_LOCK_COLLISION_TRACING         0
84
85 // make this zero to disable the most extreme
86 // debug logging in the critical sections
87 #define DEBUG_EXTREME_ENABLE                 0
88
89 // discovery
90 #define ENABLE_DISCOVERY_CACHE               1
91
92 // watchdog
93 #define WATCHDOG_DEFAULT_CHECK_INTERVAL_USECS   (1000*1000*4)
94 #define WATCHDOG_DEFAULT_RUN_REALTIME           1
95 #define WATCHDOG_DEFAULT_PRIORITY               98
96
97 // threading
98 #define THREAD_MAX_RTPRIO                   98
99 #define THREAD_MIN_RTPRIO                   1
100
101 // time
102
103 // we should be using absolute clock_nanosleep
104 // but on my system it causes a problem on shutdown.
105 #define USE_ABSOLUTE_NANOSLEEP              1
106
107 // 1394 service constants
108 #define IEEE1394SERVICE_USE_CYCLETIMER_DLL                         1
109 #define IEEE1394SERVICE_CYCLETIMER_DLL_UPDATE_INTERVAL_USEC   200000
110 #define IEEE1394SERVICE_MAX_FIREWIRE_PORTS                         4
111
112 #define IEEE1394SERVICE_CYCLETIMER_HELPER_RUN_REALTIME       1
113 #define IEEE1394SERVICE_CYCLETIMER_HELPER_PRIO_INCREASE    -10
114
115 // config rom read wait interval
116 #define IEEE1394SERVICE_CONFIGROM_READ_WAIT_USECS         1000
117
118
119 // The current version of libiec61883 doesn't seem to calculate
120 // the bandwidth correctly. Defining this to non-zero skips
121 // bandwidth allocation when doing CMP connections.
122 #define IEEE1394SERVICE_SKIP_IEC61883_BANDWIDTH_ALLOCATION   1
123
124 #define MINIMUM_INTERRUPTS_PER_PERIOD                       2U
125
126 // These are the result of a lot of trial and error
127 // due to weirdness in the kernel layer
128 #define MAX_XMIT_PACKET_SIZE                         (2048-16)
129 #define MAX_XMIT_NB_BUFFERS                                200
130
131 #define ISOHANDLER_FLUSH_BEFORE_ITERATE                      0
132
133 #define ISOHANDLER_DEATH_DETECT_TIMEOUT_USECS        1000000LL
134
135 #define ISOHANDLER_CHECK_CTR_RECONSTRUCTION                  0
136
137 #define ISOHANDLERMANAGER_MAX_ISO_HANDLERS_PER_PORT         16
138 #define ISOHANDLERMANAGER_MAX_STREAMS_PER_ISOTHREAD         16
139
140 // The best setup is if the receive handlers have lower priority
141 // than the client thread since that ensures that as soon as we
142 // received sufficient frames, the client thread runs.
143 // The transmit thread should have higher priority to ensure that
144 // all available data is flushed to the ISO kernel buffers as
145 // soon as possible
146 // At this moment, the jack backend uses base+5 to init ffado
147 // prio
148 #define ISOHANDLERMANAGER_ISO_PRIO_INCREASE                  0
149 #define ISOHANDLERMANAGER_ISO_PRIO_INCREASE_RECV            -6
150 #define ISOHANDLERMANAGER_ISO_PRIO_INCREASE_XMIT             1
151
152 // the timeout for ISO activity on any thread
153 // NOTE: don't make this 0
154 #define ISOHANDLERMANAGER_ISO_TASK_WAIT_TIMEOUT_USECS        1000000LL
155
156 // allows to add some processing margin. This shifts the time
157 // at which the buffer is transfer()'ed, making things somewhat
158 // more robust. It should be noted though that shifting the transfer
159 // time to a later time instant also causes the xmit buffer fill to be
160 // lower on average.
161 #define STREAMPROCESSORMANAGER_SIGNAL_DELAY_TICKS           (3072*6)
162
163 // startup control
164 #define STREAMPROCESSORMANAGER_CYCLES_FOR_DRYRUN            40000
165 #define STREAMPROCESSORMANAGER_CYCLES_FOR_STARTUP           200
166 #define STREAMPROCESSORMANAGER_PRESTART_CYCLES_FOR_XMIT     20
167 #define STREAMPROCESSORMANAGER_PRESTART_CYCLES_FOR_RECV     0
168 #define STREAMPROCESSORMANAGER_SYNCSTART_TRIES              10
169 #define STREAMPROCESSORMANAGER_SYNC_WAIT_TIME_MSEC          200
170 #define STREAMPROCESSORMANAGER_ALIGN_AVERAGE_TIME_MSEC      400
171 #define STREAMPROCESSORMANAGER_NB_ALIGN_TRIES               40
172
173 #define STREAMPROCESSORMANAGER_DYNAMIC_SYNC_DELAY           0
174
175 // FIXME: note that it will probably be better to use a DLL bandwidth that is
176 //        dependant on the sample rate
177 #define TIMESTAMPEDBUFFER_DLL_BANDWIDTH                     (0.01)
178
179 // -- AMDTP options -- //
180
181 // in ticks
182 // as per AMDTP2.1:
183 // 354.17us + 125us @ 24.576ticks/usec = 11776.08192 ticks
184 #define AMDTP_TRANSMIT_TRANSFER_DELAY   (11776U)
185
186 // the absolute minimum number of cycles we want to transmit
187 // a packet ahead of the presentation time. The nominal time
188 // the packet is transmitted ahead of the presentation time is
189 // given by AMDTP_TRANSMIT_TRANSFER_DELAY (in ticks), but in case we
190 // are too late for that, this constant defines how late we can
191 // be.
192 #define AMDTP_MIN_CYCLES_BEFORE_PRESENTATION                1
193
194 // the absolute maximum number of cycles we want to transmit
195 // a packet ahead of the ideal transmit time. The nominal time
196 // the packet is transmitted ahead of the presentation time is
197 // given by AMDTP_TRANSMIT_TRANSFER_DELAY (in ticks), but we can send
198 // packets early if we want to. (not completely according to spec)
199 // (for spec compliance you need to specify a value of 0)
200 #define AMDTP_MAX_CYCLES_TO_TRANSMIT_EARLY                  1
201
202 // ensure that the AMDTP SP clips all float values to [-1.0..1.0]
203 #define AMDTP_CLIP_FLOATS                                   1
204
205 // Allow that devices request that the AMDTP transmit SP adds
206 // payload to the NO-DATA packets.
207 #define AMDTP_ALLOW_PAYLOAD_IN_NODATA_XMIT                  1
208
209 // Default setting for the payload setting if
210 // AMDTP_ALLOW_PAYLOAD_IN_NODATA_XMIT is enabled. Devices can
211 // explicity override this
212 #define AMDTP_SEND_PAYLOAD_IN_NODATA_XMIT_BY_DEFAULT     true
213
214 // -- MOTU options -- //
215
216 // the transfer delay is substracted from the ideal presentation
217 // time to obtain a corrected presentation time. This values is
218 // then used to stamp the packet and determine the transmission
219 // time instant.
220 #define MOTU_TRANSMIT_TRANSFER_DELAY    (0U)
221
222 // the absolute minimum number of cycles we want to transmit
223 // a packet ahead of the presentation time. The nominal time
224 // the packet is transmitted ahead of the presentation time is
225 // given by MOTU_TRANSMIT_TRANSFER_DELAY (in ticks), but in case we
226 // are too late for that, this constant defines how late we can
227 // be.
228 #define MOTU_MIN_CYCLES_BEFORE_PRESENTATION                0
229
230 // the absolute maximum number of cycles we want to transmit
231 // a packet ahead of the ideal transmit time. The nominal time
232 // the packet is transmitted ahead of the presentation time is
233 // given by MOTU_TRANSMIT_TRANSFER_DELAY (in ticks), but we can send
234 // packets early if we want to.
235 #define MOTU_MAX_CYCLES_TO_TRANSMIT_EARLY                  2
236
237 // ensure that the MOTU tx SP clips all float values to [-1.0..1.0]
238 #define MOTU_CLIP_FLOATS                                   1
239
240 /// The unavoidable device specific hacks
241
242 // Use the information in the music plug instead of that in the
243 // cluster info block for the stream configuration. Should not
244 // be necessary
245 #define AVC_STREAMCONFIG_USE_MUSICPLUG                     0
246
247 #endif // CONFIG_H
Note: See TracBrowser for help on using the browser.