Téléverser les fichiers vers "include"
This commit is contained in:
parent
391a3b3a15
commit
956de0cb44
150
include/cibi.h
Normal file
150
include/cibi.h
Normal file
|
|
@ -0,0 +1,150 @@
|
|||
/*
|
||||
* Copyright (c) 2019, Vincent Hervieux vincent.hervieux@gmail.com
|
||||
* All rights reserved.
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* * Neither the name of the author Vincent Hervieux, nor the
|
||||
* names of its contributors may be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY
|
||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY
|
||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
#ifndef CIBI_H
|
||||
#define CIBI_H
|
||||
|
||||
#include "cibidisplay.h"
|
||||
#include "config.h"
|
||||
#include "input.h"
|
||||
#include "dds.h"
|
||||
|
||||
class Cibi
|
||||
{
|
||||
public:
|
||||
/* Cibi application requires:
|
||||
- the config
|
||||
- the inputs
|
||||
- the display
|
||||
- the dds
|
||||
*/
|
||||
Cibi(Config& _config, Input& _input, U8G2& _display, DDS& _dds);
|
||||
Cibi(const Cibi &_cibi);
|
||||
~Cibi();
|
||||
/* main application loop called when the application has the focus */
|
||||
void loop(bool _update_display = false);
|
||||
/* getter on current frequency */
|
||||
const uint32_t& getCurrentFreq();
|
||||
|
||||
protected:
|
||||
friend class CibiDisplay;
|
||||
/* Cibi band enum */
|
||||
enum {
|
||||
CIBI_BAND_UNKNOWN = -1,
|
||||
CIBI_BAND_3_INF = 0x0,
|
||||
CIBI_BAND_2_INF = 0x1,
|
||||
CIBI_BAND_1_INF = 0x2,
|
||||
CIBI_BAND_NORMAL = 0x3,
|
||||
CIBI_BAND_1_SUP = 0x4,
|
||||
CIBI_BAND_2_SUP = 0x5,
|
||||
CIBI_BAND_3_SUP = 0x6,
|
||||
CIBI_BAND_MAX = CIBI_BAND_3_SUP
|
||||
};
|
||||
|
||||
private:
|
||||
/* defining a structure to store names of Cibi channels */
|
||||
typedef struct {
|
||||
int8_t channel;
|
||||
int8_t band;
|
||||
bool bis;
|
||||
} cibi_channel_t;
|
||||
|
||||
|
||||
|
||||
/* make a bis for cibi channels 3,7,11,15,19 */
|
||||
const static int8_t cibi_channels[45];
|
||||
const static bool cibi_channels_bis[45];
|
||||
|
||||
/* RF ranges enum */
|
||||
enum {
|
||||
RANGE_RF_UNKNOWN = -1,
|
||||
RANGE_RF_LF = 0,
|
||||
RANGE_RF_MF,
|
||||
RANGE_RF_HF,
|
||||
RANGE_RF_VHF,
|
||||
RANGE_RF_MAX = RANGE_RF_VHF
|
||||
};
|
||||
|
||||
/* HAM band enum */
|
||||
// enum {
|
||||
// BAND_UNKNOWN = -1,
|
||||
// BAND_2200 = 0,
|
||||
// BAND_1750,
|
||||
// BAND_630,
|
||||
// BAND_160,
|
||||
// BAND_80,
|
||||
// BAND_60,
|
||||
// BAND_40,
|
||||
// BAND_30,
|
||||
// BAND_20,
|
||||
// BAND_17,
|
||||
// BAND_15,
|
||||
// BAND_12,
|
||||
// BAND_11,
|
||||
// BAND_10,
|
||||
// BAND_6,
|
||||
// BAND_2,
|
||||
// BAND_MAX = BAND_2
|
||||
// };
|
||||
|
||||
/*
|
||||
* @brief init Cibi context
|
||||
*/
|
||||
void init();
|
||||
/* @brief get cibi channel
|
||||
* @param: frequency
|
||||
* @return -1 if none matching, 0 if successful */
|
||||
int getCibiChannel(uint32_t _frequency, cibi_channel_t* _channel);
|
||||
/* @brief get band index
|
||||
* @param: frequency
|
||||
* @return RF range index in -1 if none matching */
|
||||
int getBand(uint32_t _frequency);
|
||||
/* Update info on display and in our context */
|
||||
void updateDisplay(uint32_t _frequency, int _position, int _modulation, bool _tx, int _smeter);
|
||||
/* Update DDS values according to modulation and frequency in our context */
|
||||
void updateDDS(uint32_t _frequency, int _modulation, bool _tx);
|
||||
/* Update the frequency step according to the given cursor position */
|
||||
void updateFreqStep(int cursor_pos);
|
||||
/* references */
|
||||
Config &config_;
|
||||
Input &input_;
|
||||
DDS &dds_;
|
||||
/* context */
|
||||
/* current displayed values */
|
||||
cibi_channel_t current_cibi_channel_;
|
||||
uint32_t current_freq_;
|
||||
uint64_t freq_change_time_;
|
||||
int current_clarifier_;
|
||||
uint32_t freq_step_; /* up/down frequency step */
|
||||
int current_cursor_pos_;
|
||||
int current_modulation_;
|
||||
int current_smeter_;
|
||||
bool current_tx_;
|
||||
bool scanning_;
|
||||
CibiDisplay *view_;
|
||||
};
|
||||
|
||||
#endif /* CIBI_H */
|
||||
86
include/cibidisplay.h
Normal file
86
include/cibidisplay.h
Normal file
|
|
@ -0,0 +1,86 @@
|
|||
/*
|
||||
* Copyright (c) 2019, Vincent Hervieux vincent.hervieux@gmail.com
|
||||
* All rights reserved.
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* * Neither the name of the author Vincent Hervieux, nor the
|
||||
* names of its contributors may be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY
|
||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY
|
||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
#ifndef CIBIDISPLAY_H
|
||||
#define CIBIDISPLAY_H
|
||||
|
||||
#include "display.h"
|
||||
|
||||
class CibiDisplay
|
||||
{
|
||||
public:
|
||||
/* Constructor and initiliaze Cibi display */
|
||||
CibiDisplay(U8G2&_display);
|
||||
CibiDisplay(const CibiDisplay &_cibidisplay);
|
||||
/* De-initiliaze and release display */
|
||||
~CibiDisplay();
|
||||
/* Display initialisation */
|
||||
void init();
|
||||
/* clean screen */
|
||||
void clear();
|
||||
/* refresh display */
|
||||
void display();
|
||||
/* Update displayed frequency */
|
||||
void setFreq(uint32_t _frequency, uint16_t _color);
|
||||
/* Update displayed cursor position */
|
||||
void setCursorPos(int _position, uint16_t _color);
|
||||
/* Update displayed RF band */
|
||||
void setBand(uint32_t _freq, uint16_t _color);
|
||||
/* Update displayed modulation */
|
||||
void setModulation(int _modulation, uint16_t _color);
|
||||
/* update cibi channel display */
|
||||
void setCibiChannel(int _channel, uint16_t _color);
|
||||
void setCibiChannelBis(bool _bis, uint16_t _color);
|
||||
void setCibiBand(int _band, uint16_t _color);
|
||||
void setTx(bool _tx);
|
||||
#ifdef SMETER_DISPLAY
|
||||
/* Update s-meter over a 1024 scale (analog input)*/
|
||||
void setSMeter(int _signal);
|
||||
#endif
|
||||
private:
|
||||
/**
|
||||
* CONNEXIONS
|
||||
* GND GND
|
||||
* VDD +5V
|
||||
* SCLK pin A5
|
||||
* SDA pin A4
|
||||
*/
|
||||
|
||||
/* definning a structure to store RF ranges and bands */
|
||||
typedef struct {
|
||||
uint32_t low_bound; /* low boundary frequency range */
|
||||
uint32_t high_bound; /* high boundary frequency range */
|
||||
int index; /* range or band index */
|
||||
} range_t;
|
||||
|
||||
const static int16_t FREQ_DECIMAL_TEXT_POS_X PROGMEM = 2;
|
||||
const static int16_t FREQ_FRACTIONNAL_TEXT_POS_X PROGMEM = 35;
|
||||
const static int16_t FREQ_TEXT_POS_Y PROGMEM = 36;
|
||||
// OLED module
|
||||
U8G2 &display_;
|
||||
};
|
||||
|
||||
#endif /* CIBIDISPLAY_H */
|
||||
116
include/config.h
Normal file
116
include/config.h
Normal file
|
|
@ -0,0 +1,116 @@
|
|||
/*
|
||||
* Copyright (c) 2019, Vincent Hervieux vincent.hervieux@gmail.com
|
||||
* All rights reserved.
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* * Neither the name of the author Vincent Hervieux, nor the
|
||||
* names of its contributors may be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY
|
||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY
|
||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
#ifndef CONFIG_H
|
||||
#define CONFIG_H
|
||||
|
||||
#include "configdisplay.h"
|
||||
#include "input.h"
|
||||
#include "dds.h"
|
||||
|
||||
class Config
|
||||
{
|
||||
public:
|
||||
/* Config application requires:
|
||||
- the inputs
|
||||
- the display
|
||||
- the DDS
|
||||
*/
|
||||
Config(Input& _input, U8G2& _display, DDS& _dds);
|
||||
Config(const Config& _config);
|
||||
~Config();
|
||||
/* main application loop called when the application has the focus */
|
||||
void loop(bool _update_display = false);
|
||||
/* retrieve config from EEPROM */
|
||||
int open();
|
||||
/* save config to EEPROM */
|
||||
int save();
|
||||
/* getters */
|
||||
/* cibi frequency on power on */
|
||||
const uint32_t& getCibiFreq();
|
||||
/* cibi allowed freq min */
|
||||
const uint32_t& getCibiMinFreq();
|
||||
/* cibi allowed freq max */
|
||||
const uint32_t& getCibiMaxFreq();
|
||||
/* freq step increment */
|
||||
const uint32_t& getFreqStepIncrement();
|
||||
/* intermediate frequency mixer AM/FM/CW */
|
||||
const uint32_t& getFiAm();
|
||||
/* intermediate frequency mixer USB */
|
||||
const uint32_t& getFiUsb();
|
||||
/* intermediate frequency mixer LSB */
|
||||
const uint32_t& getFiLsb();
|
||||
/* VFO adjustment (replace trim pot) */
|
||||
const int32_t& getVFOAdj();
|
||||
/* Clarifier adjustment (replace trim pot) */
|
||||
const int32_t& getClarifierAdj();
|
||||
/* S-meter adjustment */
|
||||
const int32_t& getSMeterAdj();
|
||||
/* setters */
|
||||
/* cibi frequency on power on */
|
||||
void setCibiFreq(const uint32_t& _freq);
|
||||
private:
|
||||
enum
|
||||
{
|
||||
CONFIG_CIBI_FREQ = 0,
|
||||
CONFIG_CIBI_MIN_FREQ, // 1
|
||||
CONFIG_CIBI_MAX_FREQ, // 2
|
||||
CONFIG_FREQ_STEP, // 3
|
||||
CONFIG_FI_AM, // 4
|
||||
CONFIG_FI_USB, // 5
|
||||
CONFIG_FI_LSB, // 6
|
||||
CONFIG_VFO_ADJ, // 7
|
||||
CONFIG_CLARIFIER_ADJ, // 8
|
||||
CONFIG_SMETER_ADJ, // 9
|
||||
CONFIG_MAX // 10
|
||||
};
|
||||
/* context stored in EEPROM */
|
||||
struct context_t {
|
||||
uint32_t eeprom_header; /* EEPROM flag to detect if we've already set values */
|
||||
uint32_t cibi_frequency; /* cibi default frequency on startup */
|
||||
uint32_t cibi_min_freq; /* cibi minimum frequency */
|
||||
uint32_t cibi_max_freq; /* cibi maximum frequency */
|
||||
uint32_t freq_step_inc; /* frequency step, in increment mode STEP */
|
||||
uint32_t fi_am; /* FI AM/FM/CW */
|
||||
uint32_t fi_usb; /* FI USB */
|
||||
uint32_t fi_lsb; /* FI LSB */
|
||||
int32_t vfo_adj; /* VFO frequency adjustment */
|
||||
int32_t clarifier_adj; /* Clarifier frequency adjustment */
|
||||
int32_t smeter_adj; /* S-Meter adjustment to fill S-meter */
|
||||
} context_;
|
||||
/* references */
|
||||
Input& input_;
|
||||
DDS& dds_;
|
||||
ConfigDisplay *view_;
|
||||
/* context */
|
||||
int current_cursor_pos_;
|
||||
int current_menu_index_;
|
||||
uint32_t* current_value_;
|
||||
};
|
||||
|
||||
|
||||
|
||||
#endif /* CONFIG_H */
|
||||
66
include/configdisplay.h
Normal file
66
include/configdisplay.h
Normal file
|
|
@ -0,0 +1,66 @@
|
|||
/*
|
||||
* Copyright (c) 2019, Vincent Hervieux vincent.hervieux@gmail.com
|
||||
* All rights reserved.
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* * Neither the name of the author Vincent Hervieux, nor the
|
||||
* names of its contributors may be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY
|
||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY
|
||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
#ifndef CONFIGDISPLAY_H
|
||||
#define CONFIGDISPLAY_H
|
||||
|
||||
#include "display.h"
|
||||
|
||||
class ConfigDisplay
|
||||
{
|
||||
public:
|
||||
ConfigDisplay(U8G2&_display);
|
||||
/* De-initiliaze and release display */
|
||||
~ConfigDisplay();
|
||||
/* Display initialisation */
|
||||
void init();
|
||||
/* clean screen */
|
||||
void clear();
|
||||
/* refresh display */
|
||||
void display();
|
||||
/* erase display */
|
||||
void clearDisplay();
|
||||
/* Update displayed config menu title */
|
||||
void setTitle(int _title_index, uint16_t _color);
|
||||
/* Highlight title */
|
||||
void highlightTitle(uint16_t _color);
|
||||
/* Update displayed config menu value */
|
||||
void setValueUint(uint32_t _value, uint16_t _color);
|
||||
void setValueInt(int32_t _value, uint16_t _color);
|
||||
/* Update displayed cursor position */
|
||||
void setCursorPos(int _position, uint16_t _color);
|
||||
private:
|
||||
// OLED module
|
||||
U8G2 &display_;
|
||||
// Some common constants
|
||||
const static int16_t VALUE_POS_X PROGMEM = 20;
|
||||
const static int16_t VALUE_POS_Y PROGMEM = 55;
|
||||
const static int16_t MAX_STR_LENGTH PROGMEM = 20;
|
||||
};
|
||||
|
||||
|
||||
|
||||
#endif /* CONFIGDISPLAY_H */
|
||||
80
include/dds.h
Normal file
80
include/dds.h
Normal file
|
|
@ -0,0 +1,80 @@
|
|||
/*
|
||||
* Copyright (c) 2019, Vincent Hervieux vincent.hervieux@gmail.com
|
||||
* All rights reserved.
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* * Neither the name of the author Vincent Hervieux, nor the
|
||||
* names of its contributors may be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY
|
||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY
|
||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
#ifndef DDS_H
|
||||
#define DDS_H
|
||||
|
||||
#include <si5351mcu.h>
|
||||
|
||||
class DDS
|
||||
{
|
||||
public:
|
||||
/* valid output list */
|
||||
typedef enum {
|
||||
OUTPUT_FI = 0,
|
||||
OUTPUT_UNUSED, // 1
|
||||
OUTPUT_VFO, // 2
|
||||
OUTPUT_MAX
|
||||
} output_t;
|
||||
|
||||
/* Constructor */
|
||||
DDS();
|
||||
/* De-initiliaze and release DDS */
|
||||
~DDS();
|
||||
/* Update generator output frequency */
|
||||
void setOutputFreq(output_t _output, uint32_t _frequency);
|
||||
/* Set output frequency correction */
|
||||
void setOutputCorrection(int32_t _correction);
|
||||
/* get current generator output frequency */
|
||||
const uint32_t& getOutputFreq(output_t _output);
|
||||
/* enable/disable FI, FI is required while transmitting */
|
||||
void enableOutput(output_t _output, bool _enable);
|
||||
/* initiliaze DDS */
|
||||
void init();
|
||||
|
||||
private:
|
||||
/**
|
||||
* CONNEXIONS
|
||||
* GND GND
|
||||
* VDD +5V
|
||||
* SCLK pin A5
|
||||
* SDA pin A4
|
||||
*/
|
||||
/* xtal on my si5351 is 25Mhz */
|
||||
const static uint32_t XTALFREQ PROGMEM = 25000000L;
|
||||
/* delayed initialisation */
|
||||
boolean initialized_;
|
||||
/* internal storage for frequencies outputs */
|
||||
uint32_t current_freq_[OUTPUT_MAX];
|
||||
/* store output state */
|
||||
bool enabled_[OUTPUT_MAX];
|
||||
/* clock module */
|
||||
Si5351mcu clockgen_;
|
||||
|
||||
|
||||
};
|
||||
|
||||
#endif /* DDS_H */
|
||||
Loading…
Reference in New Issue
Block a user