From 8688f251051fd0e12453f513b248f1c3e4f4dc7b Mon Sep 17 00:00:00 2001 From: Julian Picht Date: Mon, 26 Dec 2016 23:47:12 +0100 Subject: try to document disambiguator --- src/disambiguator.h | 49 +++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 39 insertions(+), 10 deletions(-) (limited to 'src/disambiguator.h') diff --git a/src/disambiguator.h b/src/disambiguator.h index 0db19de..dbd4921 100644 --- a/src/disambiguator.h +++ b/src/disambiguator.h @@ -4,35 +4,64 @@ #ifndef DISAMBIGUATOR_H #define DISAMBIGUATOR_H -#define DIS_NUM_VALUES 8 +// Determines the number of samples stored in the disambiguator struct. +// Has to be higher than the maximum number of pulses expected between sync pulses. +#define DIS_NUM_VALUES 48 +#define DIS_NUM_PULSES_BEFORE_LOCK 30 +#include +/** + * internal disambiguator state + */ typedef enum { D_STATE_INVALID = 0, D_STATE_LOCKED = 1, D_STATE_UNLOCKED = -1, } dis_state; +/** + * classification result + */ typedef enum { P_UNKNOWN = 0, P_SYNC = 1, P_SWEEP = 2, } pulse_type; +/** + * internal state of the disambiguator + */ struct disambiguator { - long times[DIS_NUM_VALUES]; - int scores[DIS_NUM_VALUES]; + // the timestamps of the recorded pulses + uint32_t times[DIS_NUM_VALUES]; + // countes how many sync pulses we have seen, that match the time offset at the same offset + uint16_t scores[DIS_NUM_VALUES]; + // current state dis_state state; - long last; + // last sync pulse time + uint32_t last; + // the absolute maximum counter value int max_confidence; + // the last code type seen char code; }; -struct classified_pulse_ { - pulse_type t; - int length; -}; +/** + * Initialize a new disambiguator. calloc or memset with 0x00 will work just as well. + * + * @param d Pointer to the struct + */ void disambiguator_init( struct disambiguator * d); -pulse_type disambiguator_step( struct disambiguator * d, long time, int length); -#endif /* DISAMBIGUATOR_H */ +/** + * Feed in one pulse to have if classified. + * + * @param d Pointer to disambiguator state + * @param time Rising edge of the pulse + * @param length Length of the pulse + * @return Classification result + */ +pulse_type disambiguator_step( struct disambiguator * d, uint32_t time, int length); + +#endif /* DISAMBIGUATOR_H */ \ No newline at end of file -- cgit v1.2.3