]> mj.ucw.cz Git - misc.git/blob - ursaryd/ursaryd.h
4781f3940212b6234e70fb8c6a342cd61bb8b58a
[misc.git] / ursaryd / 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_button(int button, int on);
15
16 /* nocturn.c */
17
18 void noct_init(void);
19 bool noct_is_ready(void);
20 void noct_set_ring(int ring, int mode, int val);
21 void noct_set_button(int button, int val);
22
23 enum ring_mode {
24   RING_MODE_LEFT,
25   RING_MODE_RIGHT,
26   RING_MODE_MID_RIGHT,
27   RING_MODE_MID_SYM,
28   RING_MODE_SINGLE_ON,
29   RING_MODE_SINGLE_OFF,
30 };
31
32 /* pulse.c */
33
34 enum pulse_state {
35   PS_OFFLINE,
36   PS_SUBSCRIBE,
37   PS_GET_CLIENTS,
38   PS_GET_SINKS,
39   PS_GET_SINK_INPUTS,
40   PS_GET_SERVER,
41   PS_ONLINE,
42 };
43
44 extern enum pulse_state pulse_state;
45 extern char *pulse_default_sink_name;
46
47 struct pulse_client {
48   cnode n;
49   int idx;
50   char *name;
51   char *host;
52 };
53
54 struct pulse_sink {
55   cnode n;
56   int idx;
57   char *name;
58   uns channels;
59   uns volume;
60   uns base_volume;
61   int mute;
62 };
63
64 struct pulse_sink_input {
65   cnode n;
66   int idx;
67   char *name;
68   int client_idx;
69   int sink_idx;
70   uns channels;
71   uns volume;
72   uns mute;
73   int noct_client_idx;          // Used by the high-level logic below
74 };
75
76 extern clist pulse_client_list, pulse_sink_list, pulse_sink_input_list;
77
78 void pulse_init(void);
79 void pulse_dump(void);
80 struct pulse_sink *pulse_sink_by_name(const char *name);
81 void pulse_sink_set_volume(int idx, pa_cvolume *cvol);
82 void pulse_sink_set_mute(int idx, bool mute);
83 void pulse_sink_input_set_volume(int idx, pa_cvolume *cvol);
84 void pulse_sink_input_set_mute(int idx, bool mute);
85 struct pulse_client *pulse_client_by_idx(int idx);
86 void pulse_server_set_default_sink(const char *name);
87
88 /* pulse-ucw.c */
89
90 extern struct pa_mainloop_api pmain_api;
91
92 void pmain_init(void);