Somehow this compiled...

This commit is contained in:
Rob French
2020-06-13 09:59:11 -05:00
parent 28cbb0363f
commit 2da162f7c2
8 changed files with 213 additions and 278 deletions

View File

@@ -97,42 +97,46 @@ enum MessageID {
* (e.g. USB, LSB, etc.)
*/
enum RigMode {
RIG_MODE_LSB = 0,
RIG_MODE_USB,
RIG_MODE_CWL,
RIG_MODE_CWU,
RIG_MODE_DGL,
RIG_MODE_DGU,
RIG_MODE_TTL,
RIG_MODE_TTU,
enum rig_mode {
lsb = 0,
usb,
cw,
cwr,
dig,
// add new items here
NUM_RIG_MODES
num_rig_modes
};
/* Keyer modes.
*/
enum KeyerMode {
KEYER_MODE_STRAIGHT = 0,
KEYER_MODE_IAMBIC_A,
KEYER_MODE_IAMBIC_B,
//KEYER_ULTIMATIC,
//KEYER_BUG,
// add any new elements here
NUM_KEYER_MODES
enum keyer_mode {
straight = 0,
iambic_a,
iambic_b,
//ultimatic,
//bug,
// add any new items here
num_keyer_modes
};
enum RxFilter {
RX_FILTER_WIDE = 0,
RX_FILTER_MEDIUM,
RX_FILTER_NARROW,
NUM_RX_FILTERS
enum rx_filter {
wide = 0,
medium,
narrow,
num_rx_filters
};
const unsigned char RIG_MODE_LETTER[NUM_RIG_MODES] = {'s', 'S', 'c', 'C', 'd', 'D', 't', 'T'};
const unsigned char KEYER_MODE_LETTER[NUM_KEYER_MODES] = {'S', 'A', 'B'};
const unsigned char RX_FILTER_LETTER[NUM_RX_FILTERS] = {'W', 'M', 'N'};
enum digi_mode {
rtty = 0,
psk31,
user_defined,
num_digi_modes
};
//const unsigned char RIG_MODE_LETTER[num_rig_modes] = {'s', 'S', 'c', 'C', 'd', 'D', 't', 'T'};
//const unsigned char KEYER_MODE_LETTER[num_keyer_modes] = {'S', 'A', 'B'};
//const unsigned char RX_FILTER_LETTER[num_rx_filters] = {'W', 'M', 'N'};
const uint8_t NO_FLAGS = 0;
const uint8_t REVERSED = 1;
@@ -150,67 +154,86 @@ struct IOPMessage {
// Interface to a configuration object.
//======================================================================
class IConfig {
public:
virtual ~IConfig() {}
struct filter_config {
float lo;
float hi;
float gain;
};
struct mode_config {
mode_config(bool usb, rx_filter f, const filter_config *fc) : is_usb(usb), filter(f) {
for (int i = 0; i < num_rx_filters; i++) {
filtercfg[i] = fc[i];
}
}
bool is_usb;
rx_filter filter;
filter_config filtercfg[num_rx_filters];
};
//======================================================================
// SSB CONFIGURATION
//======================================================================
class SSBConfig : public IConfig {
public:
SSBConfig(RxFilter f): filter(f) {}
// parameters
RxFilter filter = RX_FILTER_MEDIUM;
// bool comp_enable = false;
// float comp_threshold = 0.1;
// float comp_ratio = 20.0;
// float comp_gain = 2.0;
const filter_config ssb_filter_config[num_rx_filters] =
{filter_config{ 300.0, 3100.0, 1.0},
filter_config{ 500.0, 2900.0, 1.0},
filter_config{ 700.0, 2500.0, 1.0}};
struct ssb_config : public mode_config {
ssb_config() : mode_config(true, wide, ssb_filter_config) {}
// speech compressor parameters
bool comp_enable = false;
float comp_threshold = 0.1;
float comp_ratio = 20.0;
float comp_gain = 2.0;
};
//======================================================================
// DGT CONFIGURATION
// DIG CONFIGURATION
//======================================================================
class DGTConfig : public IConfig {
public:
DGTConfig(RxFilter f): filter(f) {}
// parameters
RxFilter filter = RX_FILTER_MEDIUM;
const filter_config dig_filter_config[num_rx_filters] =
{filter_config{ 300.0, 3100.0, 1.0},
filter_config{ 500.0, 2900.0, 1.0},
filter_config{1250.0, 1750.0, 1.0}};
struct dig_config : public mode_config {
dig_config() : mode_config(true, wide, dig_filter_config) {}
digi_mode submode = user_defined;
};
//======================================================================
// CW CONFIGURATION
//======================================================================
class CWConfig : public IConfig {
public:
CWConfig(KeyerMode m, bool rev, uint8_t w, float wt, uint16_t st, RxFilter f):
mode(m), reversed(rev), wpm(w), weight(wt), sidetone(st), filter(f) {}
// mode
KeyerMode mode = KEYER_MODE_IAMBIC_A;
const filter_config cw_filter_config[num_rx_filters] =
{filter_config{ 300.0, 1300.0, 1.0},
filter_config{ 450.0, 950.0, 1.0},
filter_config{ 575.0, 825.0, 1.0}};
struct cw_config : public mode_config {
cw_config() : mode_config(true, wide, cw_filter_config) {}
keyer_mode mode = iambic_a;
// flags
bool reversed = false;
// parameters
uint8_t wpm = 15;
float weight = 3.0;
uint16_t sidetone = 700;
RxFilter filter = RX_FILTER_MEDIUM;
};
//======================================================================
// TT CONFIGURATION
//======================================================================
class TTConfig : public IConfig {
/*
struct TTConfig : public IConfig {
public:
TTConfig(RxFilter f): filter(f) {}
// parameters
RxFilter filter = RX_FILTER_MEDIUM;
};
*/
//======================================================================
// FUNCTION PROTOTYPES
//======================================================================
@@ -219,58 +242,19 @@ void sendCATMessage(const uint8_t*);
void sendIOPMessage(IOPMessage const&);
void recvIOPMessage(IOPMessage&, const uint8_t*, int);
void sendIOPModeCommand(RigMode);
void sendIOPModeCommand(rig_mode);
void sendIOPStartTxCommand();
void sendIOPStopTxCommand();
void sendIOPDebugMessage(const char*);
void sendIOPModeRequest();
void sendIOPSSBStatus(SSBConfig const&);
void sendIOPDGTStatus(DGTConfig const&);
void sendIOPCWStatus(CWConfig const&);
void sendIOPTestStatus();
//void sendIOPSSBStatus(SSBConfig const&);
//void sendIOPDGTStatus(DGTConfig const&);
//void sendIOPCWStatus(CWConfig const&);
//void sendIOPTestStatus();
void sendIOPMenuDisplay(const char*);
void sendIOPMenuInactive();
//======================================================================
// TRANSLATOR
//======================================================================
/*
class Translator
{
public:
Translator(RigMode&, CWConfig&, Stream&);
void registerPrefixCb(PrefixID id, void (*func)(void*));
void registerMessageCb(MessageID id, void (*func)(void*));
void sendACK();
void sendIOPMessage(IOPMessage const&);
void receive();
void pack_ModeCommand(IOPMessage&, RigMode);
void pack_CWConfig(IOPMessage&, CWConfig const&);
void pack_ModeRequest(IOPMessage&);
void unpack(IOPMessage const&);
protected:
void unpack_ModeCommand(IOPMessage const&);
void unpack_CWConfig(IOPMessage const&);
void unpack_ModeRequest(IOPMessage const&);
private:
RigMode& mode;
CWConfig& cwConfig;
Stream& serial;
void (*prefixCb[NUM_PREFIX_IDS])(void*);
void (*messageCb[NUM_MESSAGE_IDS])(void*);
};
*/
#endif
//======================================================================