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