]> mj.ucw.cz Git - ursary.git/blob - ursaryd.h
Moving clients to different sinks
[ursary.git] / ursaryd.h
1 /*
2  *      The Ursary Audio Controls
3  *
4  *      (c) 2014 Martin Mares <mj@ucw.cz>
5  */
6
7 #include <pulse/pulseaudio.h>
8
9 /* ursary.c */
10
11 void schedule_update(void);
12
13 void notify_rotary(int rotary, int delta);
14 void notify_touch(int rotary, int on);
15 void notify_button(int button, int on);
16
17 /* nocturn.c */
18
19 void noct_init(void);
20 bool noct_is_ready(void);
21 void noct_set_ring(int ring, int mode, int val);
22 void noct_set_button(int button, int val);
23
24 extern char noct_rotary_touched[10];    // 8=center, 9=slider
25 extern char noct_button_pressed[16];
26
27 enum ring_mode {
28   RING_MODE_LEFT,
29   RING_MODE_RIGHT,
30   RING_MODE_MID_RIGHT,
31   RING_MODE_MID_SYM,
32   RING_MODE_SINGLE_ON,
33   RING_MODE_SINGLE_OFF,
34 };
35
36 /* pulse.c */
37
38 enum pulse_state {
39   PS_OFFLINE,
40   PS_SUBSCRIBE,
41   PS_GET_CLIENTS,
42   PS_GET_SINKS,
43   PS_GET_SINK_INPUTS,
44   PS_GET_SERVER,
45   PS_ONLINE,
46 };
47
48 extern enum pulse_state pulse_state;
49 extern char *pulse_default_sink_name;
50
51 struct pulse_client {
52   cnode n;
53   int idx;
54   char *name;
55   char *host;
56 };
57
58 struct pulse_sink {
59   cnode n;
60   int idx;
61   char *name;
62   uns channels;
63   uns volume;
64   uns base_volume;
65   int mute;
66 };
67
68 struct pulse_sink_input {
69   cnode n;
70   int idx;
71   char *name;
72   int client_idx;
73   int sink_idx;
74   uns channels;
75   uns volume;
76   uns mute;
77   int noct_client_idx;          // Used by the high-level logic below
78 };
79
80 extern clist pulse_client_list, pulse_sink_list, pulse_sink_input_list;
81
82 void pulse_init(void);
83 void pulse_dump(void);
84 struct pulse_sink *pulse_sink_by_name(const char *name);
85 struct pulse_sink *pulse_sink_by_idx(int idx);
86 void pulse_sink_set_volume(int idx, pa_cvolume *cvol);
87 void pulse_sink_set_mute(int idx, bool mute);
88 void pulse_sink_input_set_volume(int idx, pa_cvolume *cvol);
89 void pulse_sink_input_set_mute(int idx, bool mute);
90 void pulse_sink_input_move(int input_idx, int sink_idx);
91 struct pulse_client *pulse_client_by_idx(int idx);
92 void pulse_server_set_default_sink(const char *name);
93
94 /* pulse-ucw.c */
95
96 extern struct pa_mainloop_api pmain_api;
97
98 void pmain_init(void);