45 lines
1.0 KiB
C
45 lines
1.0 KiB
C
|
#pragma once
|
||
|
#include <stdint.h>
|
||
|
#include <stdbool.h>
|
||
|
|
||
|
#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
|