desc.idVendor == 0x1235 &&
desc.idProduct == 0x000a)
{
- msg(L_DEBUG, "Found device: bus %d, addr %d", libusb_get_bus_number(dev), libusb_get_device_address(dev));
+ msg(L_INFO, "Nocturn found at bus %d, addr %d", libusb_get_bus_number(dev), libusb_get_device_address(dev));
if (found_dev)
{
msg(L_ERROR, "Multiple Nocturn devices found. Using the first one.");
return;
}
- msg(L_DEBUG, "Initializing Nocturn");
+ DBG("Initializing Nocturn");
if ((err = libusb_open(found_dev, &usb_dev)) < 0)
return noct_error(err, "libusb_open failed");
* (c) 2014 Martin Mares <mj@ucw.cz>
*/
-#define LOCAL_DEBUG
+#undef LOCAL_DEBUG
#include <ucw/lib.h>
#include <ucw/clists.h>
#include <string.h>
#include <stdlib.h>
-#include <pulse/pulseaudio.h>
-
#include "ursaryd.h"
enum pulse_state pulse_state;
if (op->is_init)
{
PULSE_STATE(PS_ONLINE);
+ msg(L_INFO, "PulseAudio is ready");
schedule_update();
}
pulse_op_done(op);
{
if (pulse_state != PS_OFFLINE)
{
+ msg(L_INFO, "Lost connection to PulseAudio");
PULSE_STATE(PS_OFFLINE);
pulse_op_cancel_all();
pulse_shutdown();
static void pulse_connect(struct main_timer *t)
{
- DBG("Pulse: Connecting");
+ msg(L_DEBUG, "Connecting to PulseAudio");
timer_del(t);
clist_init(&pulse_op_list);
#include <string.h>
#include <stdlib.h>
-#include <pulse/pulseaudio.h>
-
#include "ursaryd.h"
-/*** High-level logic ***/
-
-static struct main_timer update_timer;
+/*** Sink controls ***/
static double volume_from_pa(pa_volume_t vol)
{
pulse_sink_set_volume(s->idx, &cvol);
}
+static void update_sink_mute_from_button(int on, const char *sink_name)
+{
+ if (!on)
+ return;
+
+ struct pulse_sink *s = pulse_sink_by_name(sink_name);
+ if (!s)
+ return;
+
+ DBG("## Setting mute of sink %s to %d", s->name, !s->mute);
+ pulse_sink_set_mute(s->idx, !s->mute);
+}
+
+/*** Client controls ***/
+
struct client_map {
int rotary;
const char *client;
}
}
+static void update_client_from_button(int button, int on)
+{
+ if (button >= 8 || !on)
+ return;
+
+ int i = find_client_by_rotary(button);
+ if (i < 0)
+ return;
+ struct client_state *cs = &client_state[i];
+
+ calc_clients();
+ if (!cs->have_muted[0] && !cs->have_muted[1])
+ return;
+ uns mute = !cs->have_muted[1];
+
+ CLIST_FOR_EACH(struct pulse_sink_input *, s, pulse_sink_input_list)
+ {
+ if (s->noct_client_idx == i)
+ {
+ DBG("@@ Client #%d, sink input #%d: setting mute=%u", s->client_idx, s->idx, mute);
+ pulse_sink_input_set_mute(s->idx, mute);
+ }
+ }
+}
+
+/*** Main update routines ***/
+
+static struct main_timer update_timer;
+
static void do_update(struct main_timer *t)
{
timer_del(t);
}
}
-static void update_sink_mute_from_button(int on, const char *sink_name)
-{
- if (!on)
- return;
-
- struct pulse_sink *s = pulse_sink_by_name(sink_name);
- if (!s)
- return;
-
- DBG("## Setting mute of sink %s to %d", s->name, !s->mute);
- pulse_sink_set_mute(s->idx, !s->mute);
-}
-
-static void update_client_from_button(int button, int on)
-{
- if (button >= 8 || !on)
- return;
-
- int i = find_client_by_rotary(button);
- if (i < 0)
- return;
- struct client_state *cs = &client_state[i];
-
- calc_clients();
- if (!cs->have_muted[0] && !cs->have_muted[1])
- return;
- uns mute = !cs->have_muted[1];
-
- CLIST_FOR_EACH(struct pulse_sink_input *, s, pulse_sink_input_list)
- {
- if (s->noct_client_idx == i)
- {
- DBG("@@ Client #%d, sink input #%d: setting mute=%u", s->client_idx, s->idx, mute);
- pulse_sink_input_set_mute(s->idx, mute);
- }
- }
-}
-
void notify_button(int button, int on)
{
if (pulse_state != PS_ONLINE)
}
}
+/*** Main entry point ***/
+
int main(int argc UNUSED, char **argv)
{
log_init(argv[0]);
update_timer.handler = do_update;
noct_init();
-
- msg(L_INFO, "Initializing PulseAudio");
pulse_init();
- msg(L_INFO, "Entering main loop");
+ msg(L_DEBUG, "Entering main loop");
main_loop();
return 0;