aboutsummaryrefslogtreecommitdiffstats
path: root/src/lirc.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lirc.c')
-rw-r--r--src/lirc.c41
1 files changed, 41 insertions, 0 deletions
diff --git a/src/lirc.c b/src/lirc.c
new file mode 100644
index 000000000..0ad34ca2f
--- /dev/null
+++ b/src/lirc.c
@@ -0,0 +1,41 @@
+#include <lirc/lirc_client.h>
+#include "lirc.h"
+
+static struct lirc_config *lc = NULL;
+static int lirc_socket = 0;
+
+int ncmpc_lirc_open()
+{
+ if ((lirc_socket = lirc_init("ncmpc", 0)) == -1)
+ return -1;
+
+ if (lirc_readconfig(NULL, &lc, NULL)) {
+ lirc_deinit();
+ return -1;
+ }
+
+ return lirc_socket;
+}
+
+void ncmpc_lirc_close()
+{
+ if (lc)
+ lirc_freeconfig(lc);
+ lirc_deinit();
+}
+
+command_t ncmpc_lirc_get_command()
+{
+ char *code = NULL, *cmd = NULL;
+
+ if (lirc_nextcode(&code) != 0)
+ return CMD_NONE;
+
+ if (lirc_code2char(lc, code, &cmd) != 0)
+ return CMD_NONE;
+
+ if (!cmd)
+ return CMD_NONE;
+
+ return get_key_command_from_name(cmd);
+}