2 * Copyright (c) 2012, Intel Corporation
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are
8 * * Redistributions of source code must retain the above copyright notice,
9 * this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above copyright
11 * notice, this list of conditions and the following disclaimer in the
12 * documentation and/or other materials provided with the distribution.
13 * * Neither the name of Intel Corporation nor the names of its contributors
14 * may be used to endorse or promote products derived from this software
15 * without specific prior written permission.
17 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
18 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
19 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
20 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
21 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
22 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
23 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
24 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
25 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
27 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30 #ifndef __SRS_DAEMON_CONTEXT_H__
31 #define __SRS_DAEMON_CONTEXT_H__
33 #include <pulse/mainloop.h>
34 #include <pulse/glib-mainloop.h>
36 #include <murphy/common/list.h>
37 #include <murphy/common/pulse-glue.h>
38 #include <murphy/common/hashtbl.h>
39 #include <murphy/common/glib-glue.h>
41 #include <murphy/plugins/resource-native/libmurphy-resource/resource-api.h>
43 /** SRS daemon context type. */
44 typedef struct srs_context_s srs_context_t;
45 typedef struct srs_pulse_s srs_pulse_t;
47 #include "srs/daemon/config.h"
48 #include "srs/daemon/resctl.h"
54 struct srs_context_s {
55 GMainLoop *gl; /* GMainLoop if enabled and used */
56 void *pl; /* PA (native or glib) mainloop */
57 pa_mainloop_api *pa; /* PA mainloop API */
58 srs_pulse_t *pulse; /* audio stream interface */
59 mrp_mainloop_t *ml; /* associated murphy mainloop */
60 mrp_list_hook_t clients; /* connected clients */
61 mrp_list_hook_t plugins; /* loaded plugins */
62 mrp_timer_t *rtmr; /* resource reconnect timer */
63 srs_resctx_t *rctx; /* resource context */
64 mrp_res_logger_t rlog; /* original resource logger */
65 mrp_list_hook_t recognizers; /* speech recognition backends */
66 void *default_srec; /* default backend */
67 void *cached_srec; /* previously looked up backend */
68 mrp_list_hook_t disambiguators; /* disambiguators */
69 void *default_disamb; /* default disambiguator */
70 void *synthesizer; /* syntehsizer state */
72 /* files and directories */
73 const char *config_file; /* configuration file */
74 const char *plugin_dir; /* plugin directory */
76 /* logging settings */
77 int log_mask; /* what to log */
78 const char *log_target; /* and where to log to */
80 /* miscellaneous runtime settings and status */
81 int foreground : 1; /* whether to stay in foreground */
82 int exit_status; /* mainloop exit status */
84 /* configuration settings */
85 srs_cfg_t *settings; /* configuration variables */
86 int nsetting; /* number of variables */
89 char **requested_plugins;
90 int nrequested_plugin;
94 #endif /* __SRS_DAEMON_CONTEXT_H__ */