packaging: bumped version, updated changelog.
[profile/ivi/speech-recognition.git] / src / daemon / context.h
1 /*
2  * Copyright (c) 2012, Intel Corporation
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions are
6  * met:
7  *
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.
16  *
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.
28  */
29
30 #ifndef __SRS_DAEMON_CONTEXT_H__
31 #define __SRS_DAEMON_CONTEXT_H__
32
33 #include <pulse/mainloop.h>
34 #include <pulse/glib-mainloop.h>
35
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>
40
41 #include <murphy/plugins/resource-native/libmurphy-resource/resource-api.h>
42
43 /** SRS daemon context type. */
44 typedef struct srs_context_s srs_context_t;
45 typedef struct srs_pulse_s   srs_pulse_t;
46
47 #include "srs/daemon/config.h"
48 #include "srs/daemon/resctl.h"
49
50 /*
51  * daemon context
52  */
53
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 */
71
72     /* files and directories */
73     const char      *config_file;        /* configuration file */
74     const char      *plugin_dir;         /* plugin directory */
75
76     /* logging settings */
77     int              log_mask;           /* what to log */
78     const char      *log_target;         /* and where to log to */
79
80     /* miscellaneous runtime settings and status */
81     int              foreground : 1;     /* whether to stay in foreground */
82     int              exit_status;        /* mainloop exit status */
83
84     /* configuration settings */
85     srs_cfg_t       *settings;           /* configuration variables */
86     int              nsetting;           /* number of variables */
87
88     /* plugins to load */
89     char           **requested_plugins;
90     int              nrequested_plugin;
91 };
92
93
94 #endif /* __SRS_DAEMON_CONTEXT_H__ */