RS41ng/src/codecs/fsk/fsk.h

59 wiersze
1.4 KiB
C

#ifndef __FSK_H
#define __FSK_H
#define FSK_TONE_COUNT_MAX 20
typedef struct _fsk_tone {
int8_t index;
uint32_t frequency_hz_100;
} fsk_tone;
typedef struct _fsk_encoder {
void *priv;
} fsk_encoder;
typedef struct _fsk_encoder_api {
/**
* @param encoder
* @param tone_count Set to number of tones in returned array or 0 if not used
* @param tones Set to point to array of FSK tones or NULL if not used
*/
void (*get_tones)(fsk_encoder *encoder, int8_t *tone_count, fsk_tone **tones);
/**
* @param encoder
* @return Tone spacing in 1/100th of Hz or 0 if not used
*/
uint32_t (*get_tone_spacing)(fsk_encoder *encoder);
/**
* @param encoder
* @return Symbol rate in symbols per second or 0 if not used
*/
uint32_t (*get_symbol_rate)(fsk_encoder *encoder);
/**
* @param encoder
* @return Symbol delay in 1/100th of millisecond or 0 if not used
*/
uint32_t (*get_symbol_delay)(fsk_encoder *encoder);
/**
* @param encoder
* @return Pointer to packet data
*/
uint8_t *(*get_data)(fsk_encoder *encoder);
/**
* @param encoder
* @return Length of packet data
*/
uint16_t (*get_data_len)(fsk_encoder *encoder);
void (*set_data)(fsk_encoder *encoder, uint16_t data_length, uint8_t *data);
int8_t (*next_tone)(fsk_encoder *encoder);
} fsk_encoder_api;
#endif