basic cli interface
[profile/ivi/pulseaudio.git] / src / main.c
1 #include <stdio.h>
2 #include <signal.h>
3 #include <stddef.h>
4 #include <assert.h>
5 #include <ltdl.h>
6 #include <memblock.h>
7
8 #include "core.h"
9 #include "mainloop.h"
10 #include "module.h"
11
12 int stdin_inuse = 0, stdout_inuse = 0;
13
14 static void signal_callback(struct mainloop_source *m, int sig, void *userdata) {
15     mainloop_quit(mainloop_source_get_mainloop(m), -1);
16     fprintf(stderr, "main: got signal.\n");
17 }
18
19 int main(int argc, char *argv[]) {
20     struct mainloop *m;
21     struct core *c;
22     int r;
23
24     r = lt_dlinit();
25     assert(r == 0);
26     
27     m = mainloop_new();
28     assert(m);
29     c = core_new(m);
30     assert(c);
31
32     mainloop_source_new_signal(m, SIGINT, signal_callback, NULL);
33     signal(SIGPIPE, SIG_IGN);
34
35     module_load(c, "module-oss-mmap", "/dev/dsp1");
36     module_load(c, "module-pipe-sink", NULL);
37     module_load(c, "module-simple-protocol-tcp", NULL);
38     module_load(c, "module-cli", NULL);
39     
40     fprintf(stderr, "main: mainloop entry.\n");
41     while (mainloop_iterate(m, 1) == 0);
42 /*        fprintf(stderr, "main: %u blocks\n", n_blocks);*/
43     fprintf(stderr, "main: mainloop exit.\n");
44
45     mainloop_run(m);
46     
47     core_free(c);
48     mainloop_free(m);
49
50     lt_dlexit();
51     
52     return 0;
53 }