Somehow this compiled...
This commit is contained in:
@@ -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
|
||||
|
||||
//======================================================================
|
||||
|
||||
Reference in New Issue
Block a user