aboutsummaryrefslogtreecommitdiff
path: root/include/disambiguator.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/disambiguator.h')
-rw-r--r--include/disambiguator.h35
1 files changed, 35 insertions, 0 deletions
diff --git a/include/disambiguator.h b/include/disambiguator.h
new file mode 100644
index 0000000..58bce48
--- /dev/null
+++ b/include/disambiguator.h
@@ -0,0 +1,35 @@
+#ifndef DISAMBIGUATOR_H
+#define DISAMBIGUATOR_H
+
+#define DIS_NUM_VALUES 8
+
+typedef enum {
+ D_STATE_INVALID = 0,
+ D_STATE_LOCKED = 1,
+ D_STATE_UNLOCKED = -1,
+} dis_state;
+
+typedef enum {
+ P_UNKNOWN = 0,
+ P_SYNC = 1,
+ P_SWEEP = 2,
+} pulse_type;
+
+typedef struct disambiguator_ {
+ long times[DIS_NUM_VALUES];
+ int scores[DIS_NUM_VALUES];
+ dis_state state;
+ long last;
+ int max_confidence;
+ char code;
+} disambiguator;
+
+typedef struct classified_pulse_ {
+ pulse_type t;
+ int length;
+} classified_pulse;
+
+void disambiguator_init(disambiguator * d);
+pulse_type disambiguator_step(disambiguator * d, long time, int length);
+
+#endif /* DISAMBIGUATOR_H */ \ No newline at end of file