UHSDR/UHSDR-active-devel/mchf-eclipse/drivers/audio/psk.h

66 lines
1.9 KiB
C
Raw Normal View History

2022-11-08 16:13:55 +01:00
/* -*- mode: c; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4; coding: utf-8 -*- */
/************************************************************************************
** **
** UHSDR FIRMWARE **
** **
**---------------------------------------------------------------------------------**
** Licence: GNU GPLv3, see LICENSE.md **
************************************************************************************/
/* Define to prevent recursive inclusion -------------------------------------*/
#ifndef __PSK_H
#define __PSK_H
#include "uhsdr_types.h"
// externally defined for UiSpectrum markers
#define PSK_OFFSET 500
#define PSK_SNAP_RANGE 100 // defines the range within which the SNAP algorithm in spectrum.c searches for the PSK carrier
typedef enum {
PSK_SPEED_31,
PSK_SPEED_63,
PSK_SPEED_125,
PSK_SPEED_NUM
} psk_speed_t;
typedef struct
{
psk_speed_t id;
float32_t value;
const float32_t* bpf_b;
const float32_t* bpf_a;
uint16_t rate;
char* label;
} psk_speed_item_t;
extern const psk_speed_item_t psk_speeds[PSK_SPEED_NUM];
typedef struct
{
psk_speed_t speed_idx;
} psk_ctrl_t;
extern psk_ctrl_t psk_ctrl_config;
typedef enum {
PSK_MOD_OFF,
PSK_MOD_PREAMBLE,
PSK_MOD_ACTIVE,
PSK_MOD_POSTAMBLE,
PSK_MOD_INACTIVE
} psk_modulator_t;
psk_modulator_t Psk_Modulator_GetState(void);
psk_modulator_t Psk_Modulator_SetState(psk_modulator_t newState);
void Psk_Modem_Init(uint32_t output_sample_rate);
void Psk_Modulator_PrepareTx(void);
void Psk_Demodulator_ProcessSample(float32_t sample);
int16_t Psk_Modulator_GenSample(void);
#endif