59 lines
1.4 KiB
C
59 lines
1.4 KiB
C
/*
|
|
* cw_decoder.h
|
|
*
|
|
* Created on: 07.09.2017
|
|
* Author: danilo
|
|
*/
|
|
|
|
#ifndef AUDIO_CW_CW_DECODER_H_
|
|
#define AUDIO_CW_CW_DECODER_H_
|
|
|
|
#define CW_DECODER_BLOCKSIZE_MIN 8
|
|
#define CW_DECODER_BLOCKSIZE_MAX 128
|
|
#define CW_DECODER_BLOCKSIZE_DEFAULT 88
|
|
|
|
#define CW_DECODER_THRESH_MIN 1000
|
|
#define CW_DECODER_THRESH_MAX 50000
|
|
#define CW_DECODER_THRESH_DEFAULT 32000
|
|
|
|
#define CW_DECODER_FLAGS_DEFAULT (0b110001) // NOISECANCEL_ENABLE, SNAP_ENABLE, SHOW_CW_LED
|
|
|
|
typedef struct
|
|
{
|
|
float32_t sampling_freq;
|
|
float32_t target_freq;
|
|
// float32_t speed;
|
|
uint8_t speed;
|
|
// uint8_t average;
|
|
uint32_t thresh;
|
|
uint8_t blocksize;
|
|
|
|
// uint8_t AGC_enable;
|
|
union
|
|
{
|
|
struct
|
|
{
|
|
uint16_t noisecancel_enable:1;
|
|
uint16_t spikecancel:2;
|
|
#define CW_SPIKECANCEL_MODE_OFF 0
|
|
#define CW_SPIKECANCEL_MODE_SPIKE 1
|
|
#define CW_SPIKECANCEL_MODE_SHORT 2
|
|
uint16_t use_3_goertzels:1;
|
|
uint16_t snap_enable:1;
|
|
uint16_t show_CW_LED:1; // menu choice whether the user wants the CW LED indicator to be working or not
|
|
};
|
|
uint16_t flags;
|
|
};
|
|
} cw_config_t;
|
|
|
|
extern cw_config_t cw_decoder_config;
|
|
|
|
|
|
void CwDecode_RxProcessor(float32_t * const src, int16_t blockSize);
|
|
void CwDecode_Filter_Set(void);
|
|
//void CW_Decoder_WPM_display_erase(void);
|
|
void CwDecoder_WpmDisplayUpdate(bool force_update);
|
|
void CwDecoder_WpmDisplayClearOrPrepare(bool prepare);
|
|
|
|
#endif /* AUDIO_CW_CW_DECODER_H_ */
|