source: roaraudio/roard/include/roard.h @ 5192:4237437ca526

Last change on this file since 5192:4237437ca526 was 5192:4237437ca526, checked in by phi, 13 years ago

declare some stuff 'extern', this saves like 5.3KB of diskspace in plugin files and make them more resistant against changes in roard

File size: 5.3 KB
Line 
1//roard.h:
2
3/*
4 *      Copyright (C) Philipp 'ph3-der-loewe' Schafft - 2008-2011
5 *
6 *  This file is part of roard a part of RoarAudio,
7 *  a cross-platform sound system for both, home and professional use.
8 *  See README for details.
9 *
10 *  This file is free software; you can redistribute it and/or modify
11 *  it under the terms of the GNU General Public License version 3
12 *  as published by the Free Software Foundation.
13 *
14 *  RoarAudio 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
17 *  GNU General Public License for more details.
18 *
19 *  You should have received a copy of the GNU General Public License
20 *  along with this software; see the file COPYING.  If not, write to
21 *  the Free Software Foundation, 51 Franklin Street, Fifth Floor,
22 *  Boston, MA 02110-1301, USA.
23 *
24 */
25
26#ifndef _ROARD_H_
27#define _ROARD_H_
28
29// configure ROAR_INFO()
30int g_verbose;
31#define ROAR_DBG_INFOVAR g_verbose
32
33// configure ROAR_*()
34#define ROAR_DBG_PREFIX "roard"
35
36// need to include this first as we need the config
37#include <roaraudio.h>
38#include <roaraudio/units.h>
39#include <libroarlight/libroarlight.h>
40#include <libroareio/libroareio.h>
41
42#include <ctype.h>
43
44#ifdef ROAR_HAVE_H_SIGNAL
45#include <signal.h>
46#endif
47
48#if defined(ROAR_HAVE_SELECT) && defined(ROAR_HAVE_H_SYS_SELECT)
49#include <sys/select.h>
50#endif
51
52#ifdef ROAR_HAVE_WAIT
53#include <sys/wait.h>
54#endif
55
56#if !defined(ROAR_TARGET_WIN32) && !defined(ROAR_TARGET_MICROCONTROLLER)
57#include <pwd.h>
58#endif
59
60#ifdef ROAR_HAVE_H_SYS_TIME
61#include <sys/time.h>
62#endif
63#ifdef ROAR_HAVE_H_TIME
64#include <time.h>
65#endif
66
67#ifdef ROAR_HAVE_LIBSLP
68#include <slp.h>
69#endif
70
71/*
72#ifdef __linux__
73#include <linux/unistd.h>
74#include <linux/ioprio.h>
75#endif
76*/
77
78#define ROAR_SUBSYS_NONE          0x00
79#define ROAR_SUBSYS_WAVEFORM      0x01
80#define ROAR_SUBSYS_MIDI          0x02
81#define ROAR_SUBSYS_CB            0x04
82#define ROAR_SUBSYS_LIGHT         0x08
83#define ROAR_SUBSYS_RAW           0x10
84#define ROAR_SUBSYS_COMPLEX       0x20
85#define ROAR_SUBSYS_RDTCS         0x40
86
87// listeing code:
88#define ROAR_MAX_LISTEN_SOCKETS   16
89
90union uniinst {
91 void * vp;
92 int    si;
93};
94
95enum output_format {
96 FORMAT_NATIVE = 1,
97 FORMAT_WIKI,
98 FORMAT_CSV,
99
100 FORMAT_DEFAULT = FORMAT_NATIVE
101};
102
103
104// MFOI = Marked For Optional Include
105
106//#include "buffer.h"
107#include "caps.h"
108#include "memlock.h"
109#include "codecfilter.h" /* MFOI */
110#include "container_framework.h" /* MFOI */
111#include "rolestack.h"
112#include "client.h"
113#include "auth.h"
114#include "driver.h" /* MFOI */
115#include "output.h"
116#include "mixer.h"
117//#include "convert.h"
118#include "streams.h"
119#include "network.h"
120#include "commands.h"
121#include "req.h"
122#include "emul_esd.h" /* MFOI */
123#include "emul_simple.h" /* MFOI */
124#include "emul_rsound.h" /* MFOI */
125#include "emul_rplay.h" /* MFOI */
126#include "emul_gopher.h" /* MFOI */
127#include "sources.h"
128#include "sample.h"
129#include "hwmixer.h"
130#include "meta.h"
131#include "midi.h"
132#include "ssynth.h"
133#include "light.h"
134#include "raw.h"
135#include "rdtcs.h"
136#include "waveform.h"
137#include "beep.h"
138#include "lib.h"
139#include "plugins.h"
140
141
142extern int alive;
143#ifdef ROAR_SUPPORT_LISTEN
144extern int g_no_listen;
145#endif
146
147extern uint32_t g_pos; // current possition in output stream
148
149extern int g_standby;
150extern int g_autostandby;
151
152#ifdef ROAR_SUPPORT_LISTEN
153struct roard_listen;
154#endif
155
156int main_loop (struct roar_audio_info * sa, int sysclocksync);
157void cleanup_listen_socket (int terminate);
158void clean_quit (void);
159void clean_quit_prep (void);
160
161void on_sig_int  (int signum);
162void on_sig_term (int signum);
163void on_sig_chld (int signum);
164void on_sig_usr1 (int signum);
165
166#ifdef ROAR_SUPPORT_LISTEN
167int get_listen(struct roard_listen ** sock, char *** sockname);
168int add_listen (char * addr, int port, int sock_type, char * user, char * group, int proto, int dir, struct roar_audio_info * info);
169#endif
170
171#ifdef ROAR_SUPPORT_LISTEN
172extern struct roard_listen {
173 int used;
174 struct roar_vio_calls sock;
175 int proto;
176 union {
177  void * vp;
178  int    si;
179  struct {
180   int                    dir;
181   struct roar_audio_info info;
182  } stpl;
183 } inst;
184} g_listen[ROAR_MAX_LISTEN_SOCKETS];
185#endif
186
187extern int g_self_client;
188
189extern int g_terminate;
190
191extern struct roar_audio_info * g_sa, * g_max_sa;
192
193#define CONF_DEF_STRING "***default***"
194
195struct roard_config {
196 uint32_t flags;
197 struct {
198  uint32_t flags;
199  struct roar_mixer_settings mixer;
200  int                        mixer_channels;
201 } streams[ROAR_DIR_DIRIDS];
202 char * location;
203 char * description;
204 size_t jumbo_mtu;
205 int memlock_level;
206#ifdef ROAR_HAVE_SYSTEM
207 struct {
208  const char * post_shutdown;
209 } scripts;
210#endif
211} * g_config;
212
213struct _counters {
214 size_t clients, streams,
215        samples,
216        sources, outputs,
217        mixers, bridges,
218        listens;
219};
220
221struct {
222 struct _counters cur, sum;
223} g_counters;
224
225
226#define counters_init() memset(&g_counters, 0, sizeof(g_counters))
227//#define counters_inc(c,i) do { signed long int __i = (i); if ( __i < 0 && __i > (g_counters.cur.c) ) { ROAR_WARN("counters_inc(c=%s, i=%li): Decrement request bigger than current counter value. Counter out of syn!", )  } while (0)
228#define counters_inc(c,i) do { signed long int __i = (i); g_counters.cur.c += __i; if ( __i > 0 ) g_counters.sum.c += __i; } while (0)
229
230#define counters_get(g,c) ((g_counters.g.c))
231
232void counters_print(int type, int force);
233
234#endif
235
236//ll
Note: See TracBrowser for help on using the repository browser.