aboutsummaryrefslogtreecommitdiff
path: root/include/drv/ir/ir.h
diff options
context:
space:
mode:
authorJosh Rahm <joshuarahm@gmail.com>2020-12-09 23:15:14 -0700
committerJosh Rahm <joshuarahm@gmail.com>2020-12-09 23:15:14 -0700
commit5f1763ec87503527583cb1a7c6deb73604db0dfc (patch)
tree0892ddf94b614db2d879f7bc993961af5ac25bb2 /include/drv/ir/ir.h
parenta5923b21e48fcfe660c1e7d586fe0c6a5b79e421 (diff)
downloadstm32l4-5f1763ec87503527583cb1a7c6deb73604db0dfc.tar.gz
stm32l4-5f1763ec87503527583cb1a7c6deb73604db0dfc.tar.bz2
stm32l4-5f1763ec87503527583cb1a7c6deb73604db0dfc.zip
Can read from the A/C remote control!test_ir
Diffstat (limited to 'include/drv/ir/ir.h')
-rw-r--r--include/drv/ir/ir.h34
1 files changed, 34 insertions, 0 deletions
diff --git a/include/drv/ir/ir.h b/include/drv/ir/ir.h
new file mode 100644
index 0000000..0a747e8
--- /dev/null
+++ b/include/drv/ir/ir.h
@@ -0,0 +1,34 @@
+#ifndef _DRV_IR_IR_H_
+#define _DRV_IR_IR_H_
+
+#include "kern/common.h"
+
+typedef struct {
+ uint16_t ts[64]; /* Timestamps. Microseconds. */
+ uint8_t n;
+} ir_code_t;
+
+typedef struct {
+ uint32_t c;
+} decoded_ir;
+
+/*
+ * Attempt to decode the provided ir code.
+ *
+ * The generic ir is:
+ *
+ * The frame starts out as really-long, half(ish) as long, short. If
+ * this basic frame header does not exist decoding cannot continue.
+ *
+ * A short code followed by a short code = 0
+ * A long code followed by a short code = 1
+ *
+ * returns non-zero on successful decode.
+ */
+int ir_generic_decode(const ir_code_t* code, uint32_t* out);
+
+void add_ir_callback(void(*callback)(const ir_code_t*));
+
+void ir_begin_listen();
+
+#endif /* _DRV_IR_IR_H_ */