102 lines
3.4 KiB
C
102 lines
3.4 KiB
C
/* -*- mode: c; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4; coding: utf-8 -*- */
|
|
/************************************************************************************
|
|
** **
|
|
** mcHF QRP Transceiver **
|
|
** K Atanassov - M0NKA 2014 **
|
|
** **
|
|
**---------------------------------------------------------------------------------**
|
|
** **
|
|
** File name: **
|
|
** Description: **
|
|
** Last Modified: **
|
|
** Licence: GNU GPLv3 **
|
|
************************************************************************************/
|
|
|
|
#ifndef DRIVERS_AUDIO_AUDIO_MANAGEMENT_H_
|
|
#define DRIVERS_AUDIO_AUDIO_MANAGEMENT_H_
|
|
|
|
#include "uhsdr_types.h"
|
|
|
|
void AudioManagement_CalcIqPhaseGainAdjust(float32_t freq);
|
|
|
|
void AudioManagement_CalcTxCompLevel(void);
|
|
void AudioManagement_CalcNB_AGC(void);
|
|
void AudioManagement_CalcAGCVals(void);
|
|
void AudioManagement_CalcRFGain(void);
|
|
void AudioManagement_CalcALCDecay(void);
|
|
void AudioManagement_CalcAGCDecay(void);
|
|
void AudioManagement_SetSidetoneForDemodMode(uint8_t dmod_mode, bool tune_mode);
|
|
|
|
void AudioManagement_LoadToneBurstMode(void);
|
|
void AudioManagement_CalcSubaudibleGenFreq(float32_t freq); // load/set current FM subaudible tone settings for generation
|
|
void AudioManagement_CalcSubaudibleDetFreq(float32_t freq);
|
|
|
|
void AudioManagement_KeyBeep(void);
|
|
void AudioManagement_KeyBeepPrepare(void);
|
|
|
|
#define IQ_BALANCE_OFF -128 // Minimum setting for IQ balance
|
|
#define IQ_BALANCE_MAX 127 // Maximum setting for IQ balance
|
|
|
|
#define MIN_IQ_GAIN_BALANCE IQ_BALANCE_OFF // Minimum setting for IQ gain balance
|
|
#define MAX_IQ_GAIN_BALANCE IQ_BALANCE_MAX // Maximum setting for IQ gain balance
|
|
|
|
#define MIN_IQ_PHASE_BALANCE IQ_BALANCE_OFF // Minimum setting for IQ phase balance
|
|
#define MAX_IQ_PHASE_BALANCE IQ_BALANCE_MAX // Maximum setting for IQ phase balance
|
|
|
|
typedef struct
|
|
{
|
|
int32_t phase;
|
|
int32_t gain;
|
|
} iq_adjust_balance_t;
|
|
|
|
typedef enum
|
|
{
|
|
IQ_RX_GAIN,
|
|
IQ_RX_PHASE,
|
|
IQ_TX_TRANS_ON_GAIN,
|
|
IQ_TX_TRANS_OFF_GAIN,
|
|
IQ_TX_TRANS_ON_PHASE,
|
|
IQ_TX_TRANS_OFF_PHASE,
|
|
|
|
} iq_adjust_params_t;
|
|
|
|
|
|
|
|
typedef struct {
|
|
iq_adjust_balance_t rx;
|
|
iq_adjust_balance_t tx[2];
|
|
} iq_adjust_vals_t;
|
|
|
|
typedef struct
|
|
{
|
|
int32_t freq;
|
|
iq_adjust_vals_t adj;
|
|
} freq_adjust_point_t;
|
|
|
|
|
|
// this data structure(s) must have at least 2 elements (including the stop element)
|
|
// corresponding frequencies are stored in const array iq_adjust_freq
|
|
typedef enum {
|
|
IQ_80M = 0,
|
|
IQ_20M,
|
|
IQ_15M,
|
|
IQ_10M,
|
|
IQ_10M_UP,
|
|
IQ_6M,
|
|
IQ_160M,
|
|
IQ_40M,
|
|
IQ_30M,
|
|
IQ_17M,
|
|
IQ_12M,
|
|
IQ_FREQ_NUM
|
|
} iq_freq_enum_t;
|
|
|
|
// the order here must match the order in the structure below!
|
|
|
|
extern freq_adjust_point_t iq_adjust[];
|
|
|
|
// For advance I/Q jusify
|
|
//const uint8_t iq_adv_adj_order[] = {6, 0, 7, 8, 1, 9, 2, 10, 3, 4, 5};
|
|
|
|
#endif /* DRIVERS_AUDIO_AUDIO_MANAGEMENT_H_ */
|