2025-06-25 11:18:44 -05:00
|
|
|
#ifndef _FGEN_H
|
|
|
|
|
#define _FGEN_H
|
|
|
|
|
|
|
|
|
|
#include "dds.h"
|
|
|
|
|
|
2025-06-25 14:49:12 -05:00
|
|
|
#define RAMP_300KHZ 300000
|
|
|
|
|
|
|
|
|
|
|
2025-06-25 11:18:44 -05:00
|
|
|
typedef enum
|
|
|
|
|
{
|
|
|
|
|
DDS_SIGNAL = 0,
|
|
|
|
|
DDS_DIRECTION,
|
|
|
|
|
DDS_RAMP,
|
|
|
|
|
NUM_DDS
|
|
|
|
|
} dds_type_t;
|
|
|
|
|
|
|
|
|
|
//Locate direction (LD)
|
|
|
|
|
#define FREQ_LD_MAX_FREQUENCY 10000 //LD runs at or below this frequency
|
|
|
|
|
#define FREQ_LD_SWITCH_POINT 1500 //At or below this freq, f2 is f1 * 2. above this f2 = f1 / 2
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
typedef enum
|
|
|
|
|
{
|
|
|
|
|
FT_ACTIVE, //active
|
|
|
|
|
FT_LD_ACTIVE, //active w/ Locate Direction
|
|
|
|
|
FT_POWER, //RX ONLY individual power
|
|
|
|
|
FT_GROUPED_POWER, //RX ONLY Radio style grouped power
|
|
|
|
|
FT_CATHODIC, //RX ONLY cathodic protection - Identical to individual power except naming in frequency menu
|
|
|
|
|
FT_SONDE, //RX ONLY
|
|
|
|
|
FT_RADIO, //RX ONLY
|
|
|
|
|
FT_FAULT_FIND, //RX ONLY fault finder - Has it's own dedicated frequency set. frequencies are NOT user definable
|
|
|
|
|
} FREQ_TYPE_t;
|
|
|
|
|
|
|
|
|
|
//Data for individual frequencies
|
|
|
|
|
typedef struct
|
|
|
|
|
{
|
|
|
|
|
FREQ_TYPE_t type;
|
|
|
|
|
uint32_t frequency; //frequency in Hz
|
|
|
|
|
uint32_t ldFrequency;
|
|
|
|
|
uint8_t enabled;
|
|
|
|
|
float i_coeff_lo;
|
|
|
|
|
float i_coeff_hi;
|
|
|
|
|
float v_coeff_lo;
|
|
|
|
|
float v_coeff_hi;
|
|
|
|
|
} FREQUENCY_t;
|
|
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
|
{
|
|
|
|
|
// list of frequencies...
|
|
|
|
|
FREQUENCY_t frequencies[FREQ_MAX_NUM];
|
|
|
|
|
uint32_t numFrequencies; //number of frequencies in array
|
|
|
|
|
|
|
|
|
|
dds_t dds[NUM_DDS];
|
|
|
|
|
|
2025-08-26 16:10:47 -05:00
|
|
|
uint8_t amplitude;
|
|
|
|
|
|
2025-06-25 11:18:44 -05:00
|
|
|
} fgen_t;
|
|
|
|
|
|
2025-08-26 16:10:47 -05:00
|
|
|
fgen_t* fgen_init(void);
|
2025-06-25 11:18:44 -05:00
|
|
|
FREQUENCY_t* fgen_findNearest(uint32_t freq);
|
|
|
|
|
FREQUENCY_t *fgen_getByIndex(int index);
|
|
|
|
|
void fgen_getFrequencyName(FREQUENCY_t *freq, uint8_t *string);
|
|
|
|
|
uint32_t fgen_getNumFrequencies(void);
|
|
|
|
|
void fgen_addFrequency(uint32_t frequency, uint8_t enabled, uint8_t inMenu, FREQ_TYPE_t type);
|
|
|
|
|
void fgen_clearFrequencies(void);
|
2025-08-26 16:10:47 -05:00
|
|
|
void fgen_setFrequency(FREQUENCY_t *freq);
|
2025-06-25 11:18:44 -05:00
|
|
|
void fgen_enableDDS(dds_type_t dds, bool enable);
|
|
|
|
|
dds_t* fgen_getDDS(dds_type_t dds);
|
2025-08-26 16:10:47 -05:00
|
|
|
void fgen_setAmplitude(uint8_t amplitude);
|
2025-06-25 11:18:44 -05:00
|
|
|
|
|
|
|
|
#endif
|