]> mj.ucw.cz Git - misc.git/blob - ursaryd/ursaryd.h
8fa213a6f2311ca408cd066afcb6b3ddc68d6762
[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_ONLINE,
41 };
42
43 extern enum pulse_state pulse_state;
44
45 struct pulse_client {
46   cnode n;
47   int idx;
48   char *name;
49   char *host;
50 };
51
52 struct pulse_sink {
53   cnode n;
54   int idx;
55   char *name;
56   uns channels;
57   uns volume;
58   uns base_volume;
59   int mute;
60 };
61
62 struct pulse_sink_input {
63   cnode n;
64   int idx;
65   char *name;
66   int client_idx;
67   int sink_idx;
68   uns channels;
69   uns volume;
70   uns mute;
71   int noct_client_idx;          // Used by the high-level logic below
72 };
73
74 extern clist pulse_client_list, pulse_sink_list, pulse_sink_input_list;
75
76 void pulse_init(void);
77 void pulse_dump(void);
78 struct pulse_sink *pulse_sink_by_name(const char *name);
79 void pulse_sink_set_volume(int idx, pa_cvolume *cvol);
80 void pulse_sink_set_mute(int idx, bool mute);
81 void pulse_sink_input_set_volume(int idx, pa_cvolume *cvol);
82 void pulse_sink_input_set_mute(int idx, bool mute);
83 struct pulse_client *pulse_client_by_idx(int idx);
84
85 /* pulse-ucw.c */
86
87 extern struct pa_mainloop_api pmain_api;
88
89 void pmain_init(void);