#pragma once #include #include #ifdef __cplusplus extern "C" { #endif typedef struct FSKDemod FSKDemod; /** * @brief Allocate a new FSKDemod instance * FSKDemod is a demodulator that can decode FSK encoded data * * @param low_time time between rising edges for the 0 bit * @param low_pulses rising edges count for the 0 bit * @param hi_time time between rising edges for the 1 bit * @param hi_pulses rising edges count for the 1 bit * @return FSKDemod* */ FSKDemod* fsk_demod_alloc(uint32_t low_time, uint32_t low_pulses, uint32_t hi_time, uint32_t hi_pulses); /** * @brief Free a FSKDemod instance * * @param fsk_demod */ void fsk_demod_free(FSKDemod* fsk_demod); /** * @brief Feed sample to demodulator * * @param demod FSKDemod instance * @param polarity sample polarity * @param time sample time * @param value demodulated bit value * @param count demodulated bit count */ void fsk_demod_feed(FSKDemod* demod, bool polarity, uint32_t time, bool* value, uint32_t* count); #ifdef __cplusplus } #endif