osmocom-analog/src/libsquelch/squelch.h

27 lines
1.1 KiB
C

typedef struct squelch {
int chan; /* channel number */
double threshold_db; /* threshold level to mute or loss of signal */
double init_count; /* duration counter for starting squelch process */
int auto_state; /* set if auto threshold calibration is performed */
double auto_count; /* duration counter for calibration process */
double auto_level_sum; /* sum of rf level while calibrating */
int auto_level_count; /* counter for rf levels that are summed */
double mute_time; /* time to indicate mute after being below threshold */
int mute_state; /* set, if we are currently at mute condition */
double mute_count; /* duration counter for mute condition */
double loss_time; /* time to indicate loss after being below threshold */
int loss_state; /* set, if we are currently at 'signal loss' condition */
double loss_count; /* duration counter for 'signal loss' condition */
} squelch_t;
enum squelch_result {
SQUELCH_OPEN,
SQUELCH_MUTE,
SQUELCH_LOSS,
};
void squelch_init(squelch_t *squelch, int chan, double threshold_db, double mute_time, double loss_time);
enum squelch_result squelch(squelch_t *squelch, double rf_level_db, double duration);