kopia lustrzana https://github.com/jamescoxon/dl-fldigi
Simplify XML-RPC error handling
rodzic
5332a87ed5
commit
84b1052300
|
|
@ -90,6 +90,8 @@ cw::cw() : modem()
|
|||
{
|
||||
double lp;
|
||||
|
||||
cap |= CAP_BW;
|
||||
|
||||
mode = MODE_CW;
|
||||
freqlock = false;
|
||||
usedefaultWPM = false;
|
||||
|
|
|
|||
|
|
@ -97,7 +97,9 @@ feld::feld(trx_mode m)
|
|||
double lp;
|
||||
mode = m;
|
||||
samplerate = FeldSampleRate;
|
||||
|
||||
|
||||
cap = CAP_BW;
|
||||
|
||||
switch (mode) {
|
||||
// Amplitude modulation modes
|
||||
case MODE_FELDHELL:
|
||||
|
|
|
|||
|
|
@ -121,7 +121,8 @@ public:
|
|||
void set_stopflag(bool b) { stopflag = b;};
|
||||
|
||||
unsigned get_cap(void) { return cap; }
|
||||
enum { CAP_AFC = 1 << 0, CAP_REV = 1 << 1, CAP_IMG = 1 << 2 };
|
||||
enum { CAP_AFC = 1 << 0, CAP_AFC_SR = 1 << 1, CAP_REV = 1 << 2,
|
||||
CAP_IMG = 1 << 3, CAP_BW = 1 << 4 };
|
||||
|
||||
// for CW modem use only
|
||||
bool get_cwTrack();
|
||||
|
|
|
|||
|
|
@ -344,19 +344,15 @@ public:
|
|||
{
|
||||
const char* cur = mode_info[active_modem->get_mode()].sname;
|
||||
|
||||
bool found = false;
|
||||
string s = params.getString(0);
|
||||
for (size_t i = 0; i < NUM_MODES; i++) {
|
||||
if (s == mode_info[i].sname) {
|
||||
REQ_SYNC(init_modem_sync, i);
|
||||
found = true;
|
||||
break;
|
||||
*retval = xmlrpc_c::value_string(cur);
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (!found)
|
||||
throw xmlrpc_c::fault("No such modem", xmlrpc_c::fault::code_t(0));
|
||||
|
||||
*retval = xmlrpc_c::value_string(cur);
|
||||
throw xmlrpc_c::fault("No such modem");
|
||||
}
|
||||
};
|
||||
|
||||
|
|
@ -442,6 +438,9 @@ public:
|
|||
}
|
||||
void execute(const xmlrpc_c::paramList& params, xmlrpc_c::value* retval)
|
||||
{
|
||||
if (!(active_modem->get_cap() & modem::CAP_AFC_SR))
|
||||
throw xmlrpc_c::fault("Operation not supported by modem");
|
||||
|
||||
*retval = xmlrpc_c::value_int((int)cntSearchRange->value());
|
||||
}
|
||||
};
|
||||
|
|
@ -456,6 +455,9 @@ public:
|
|||
}
|
||||
void execute(const xmlrpc_c::paramList& params, xmlrpc_c::value* retval)
|
||||
{
|
||||
if (!(active_modem->get_cap() & modem::CAP_AFC_SR))
|
||||
throw xmlrpc_c::fault("Operation not supported by modem");
|
||||
|
||||
int v = (int)(cntSearchRange->value());
|
||||
REQ(set_valuator, cntSearchRange, params.getInt(0, (int)cntSearchRange->minimum(), (int)cntSearchRange->maximum()));
|
||||
*retval = xmlrpc_c::value_int(v);
|
||||
|
|
@ -472,6 +474,9 @@ public:
|
|||
}
|
||||
void execute(const xmlrpc_c::paramList& params, xmlrpc_c::value* retval)
|
||||
{
|
||||
if (!(active_modem->get_cap() & modem::CAP_AFC_SR))
|
||||
throw xmlrpc_c::fault("Operation not supported by modem");
|
||||
|
||||
int v = (int)(cntSearchRange->value() + params.getInt(0));
|
||||
REQ(set_valuator, cntSearchRange, v);
|
||||
*retval = xmlrpc_c::value_int(v);
|
||||
|
|
@ -482,6 +487,21 @@ public:
|
|||
|
||||
extern Fl_Value_Slider* sldrHellBW; // FIXME: export in header
|
||||
extern Fl_Value_Slider* sldrCWbandwidth; // FIXME: export in header
|
||||
static Fl_Valuator* get_bw_val(void)
|
||||
{
|
||||
if (!(active_modem->get_cap() & modem::CAP_BW))
|
||||
throw xmlrpc_c::fault("Operation not supported by modem");
|
||||
|
||||
switch (active_modem->get_mode()) {
|
||||
case MODE_FELDHELL: case MODE_SLOWHELL: case MODE_HELLX5:
|
||||
case MODE_HELLX9: case MODE_FSKHELL: case MODE_FSKH105: case MODE_HELL80:
|
||||
return sldrHellBW;
|
||||
case MODE_CW:
|
||||
return sldrCWbandwidth;
|
||||
default:
|
||||
throw xmlrpc_c::fault("Unknown CAP_BW modem");
|
||||
}
|
||||
}
|
||||
|
||||
class Modem_get_bw : public xmlrpc_c::method
|
||||
{
|
||||
|
|
@ -493,19 +513,7 @@ public:
|
|||
}
|
||||
void execute(const xmlrpc_c::paramList& params, xmlrpc_c::value* retval)
|
||||
{
|
||||
Fl_Valuator* val;
|
||||
switch (active_modem->get_mode()) {
|
||||
case MODE_FELDHELL:
|
||||
val = sldrHellBW;
|
||||
break;
|
||||
case MODE_CW:
|
||||
val = sldrCWbandwidth;
|
||||
break;
|
||||
default:
|
||||
throw xmlrpc_c::fault("Operation not supported by modem", xmlrpc_c::fault::code_t(0));
|
||||
}
|
||||
|
||||
*retval = xmlrpc_c::value_int((int)val->value());
|
||||
*retval = xmlrpc_c::value_int((int)get_bw_val()->value());
|
||||
}
|
||||
};
|
||||
|
||||
|
|
@ -519,18 +527,7 @@ public:
|
|||
}
|
||||
void execute(const xmlrpc_c::paramList& params, xmlrpc_c::value* retval)
|
||||
{
|
||||
Fl_Valuator* val;
|
||||
switch (active_modem->get_mode()) {
|
||||
case MODE_FELDHELL:
|
||||
val = sldrHellBW;
|
||||
break;
|
||||
case MODE_CW:
|
||||
val = sldrCWbandwidth;
|
||||
break;
|
||||
default:
|
||||
throw xmlrpc_c::fault("Operation not supported by modem", xmlrpc_c::fault::code_t(0));
|
||||
}
|
||||
|
||||
Fl_Valuator* val = get_bw_val();
|
||||
int v = (int)(val->value());
|
||||
REQ(set_valuator, val, params.getInt(0, (int)val->minimum(), (int)val->maximum()));
|
||||
*retval = xmlrpc_c::value_int(v);
|
||||
|
|
@ -547,18 +544,7 @@ public:
|
|||
}
|
||||
void execute(const xmlrpc_c::paramList& params, xmlrpc_c::value* retval)
|
||||
{
|
||||
Fl_Valuator* val;
|
||||
switch (active_modem->get_mode()) {
|
||||
case MODE_FELDHELL:
|
||||
val = sldrHellBW;
|
||||
break;
|
||||
case MODE_CW:
|
||||
val = sldrCWbandwidth;
|
||||
break;
|
||||
default:
|
||||
throw xmlrpc_c::fault("Operation not supported by modem", xmlrpc_c::fault::code_t(0));
|
||||
}
|
||||
|
||||
Fl_Valuator* val = get_bw_val();
|
||||
int v = (int)(val->value() + params.getInt(0));
|
||||
REQ(set_valuator, val, v);
|
||||
*retval = xmlrpc_c::value_int(v);
|
||||
|
|
@ -667,7 +653,7 @@ public:
|
|||
{
|
||||
string s = params.getString(0);
|
||||
if (s != "LSB" && s != "USB")
|
||||
throw xmlrpc_c::fault("Invalid argument", xmlrpc_c::fault::code_t(0));
|
||||
throw xmlrpc_c::fault("Invalid argument");
|
||||
|
||||
if (progdefaults.chkUSERIGCATis)
|
||||
rigCAT_setmode(s);
|
||||
|
|
|
|||
|
|
@ -122,7 +122,7 @@ psk::~psk()
|
|||
|
||||
psk::psk(trx_mode pskmode) : modem()
|
||||
{
|
||||
cap = CAP_AFC;
|
||||
cap = CAP_AFC | CAP_AFC_SR;
|
||||
|
||||
mode = pskmode;
|
||||
|
||||
|
|
|
|||
Ładowanie…
Reference in New Issue