]> mj.ucw.cz Git - ursary.git/blobdiff - ursaryd.h
Better IR control of lights
[ursary.git] / ursaryd.h
index 805e2b89fe06c8ea7c14f59aa81b9f4440fde90a..6250ff8930e6b567bbc1a387223074025cc7b5ac 100644 (file)
--- a/ursaryd.h
+++ b/ursaryd.h
@@ -1,7 +1,7 @@
 /*
- *     The Ursary Audio Controls
+ *     The Ursary Control Panel
  *
- *     (c) 2014 Martin Mares <mj@ucw.cz>
+ *     (c) 2014--2022 Martin Mares <mj@ucw.cz>
  */
 
 #include <pulse/pulseaudio.h>
@@ -15,6 +15,7 @@ void schedule_update(void);
 void notify_rotary(int rotary, int delta);
 void notify_touch(int rotary, int on);
 void notify_button(int button, int on);
+void notify_mqtt(const char *topic, const char *val);
 
 /* nocturn.c */
 
@@ -36,6 +37,12 @@ enum ring_mode {
   RING_MODE_SINGLE_OFF,
 };
 
+/* dmx.c */
+
+void dmx_init(void);
+void dmx_set_pwm(uint index, uint val);
+bool dmx_is_ready(void);
+
 /* pulse.c */
 
 extern char *pulse_default_sink_name;
@@ -47,6 +54,18 @@ struct pulse_client {
   char *host;
 };
 
+struct pulse_source {
+  cnode n;
+  int idx;
+  char *name;
+  uint channels;
+  uint volume;
+  uint base_volume;
+  bool mute;
+  bool suspended;
+  char *active_port;
+};
+
 struct pulse_sink {
   cnode n;
   int idx;
@@ -56,6 +75,7 @@ struct pulse_sink {
   uint base_volume;
   bool mute;
   bool suspended;
+  char *active_port;
 };
 
 struct pulse_sink_input {
@@ -70,15 +90,21 @@ struct pulse_sink_input {
   int noct_group_idx;          // Used by the high-level logic below
 };
 
-extern clist pulse_client_list, pulse_sink_list, pulse_sink_input_list;
+extern clist pulse_client_list, pulse_source_list, pulse_sink_list, pulse_sink_input_list;
 
 void pulse_init(void);
 void pulse_dump(void);
 bool pulse_is_ready(void);
+struct pulse_source *pulse_source_by_name(const char *name);
+struct pulse_source *pulse_source_by_idx(int idx);
+void pulse_source_set_volume(int idx, pa_cvolume *cvol);
+void pulse_source_set_mute(int idx, bool mute);
+void pulse_source_set_port(int idx, const char *port);
 struct pulse_sink *pulse_sink_by_name(const char *name);
 struct pulse_sink *pulse_sink_by_idx(int idx);
 void pulse_sink_set_volume(int idx, pa_cvolume *cvol);
 void pulse_sink_set_mute(int idx, bool mute);
+void pulse_sink_set_port(int idx, const char *port);
 void pulse_sink_input_set_volume(int idx, pa_cvolume *cvol);
 void pulse_sink_input_set_mute(int idx, bool mute);
 void pulse_sink_input_move(int input_idx, int sink_idx);
@@ -109,3 +135,8 @@ void mpd_stop(void);
 void mpd_pause(int arg);
 void mpd_next(void);
 void mpd_prev(void);
+
+/* mqtt.c */
+
+void mqtt_init(void);
+void mqtt_publish(const char *topic, const char *fmt, ...);