Index: flrig-1.3.52/src/rigs/FT450D.cxx
===================================================================
--- flrig-1.3.52.orig/src/rigs/FT450D.cxx
+++ flrig-1.3.52/src/rigs/FT450D.cxx
@@ -370,8 +370,7 @@ int RIG_FT450D::get_smeter()
{
cmd = rsp = "SM0";
cmd += ';';
- wait_char(';',7, FL450D_WAIT_TIME, "get smeter", ASC);
-
+ wait_char(';',7, FL450D_WAIT_TIME, "get smeter", ASC); // sets replystr via rigbase
gett("get_smeter");
size_t p = replystr.rfind(rsp);
@@ -379,12 +378,10 @@ int RIG_FT450D::get_smeter()
if (p + 6 >= replystr.length()) return 0;
int val = atoi(&replystr[p+3]);
- size_t i = 0;
+ size_t i = 0;
if (val < 0) val = 0;
- if (val > 255) val = 255;
- for (i = 0; i < sizeof(sm_tbl) / sizeof(mtrpair) - 1; i++)
- if (val >= sm_tbl[i].val && val < sm_tbl[i+1].val)
- break;
+ else if (val > 255) val = 255;
+ else while(val > sm_tbl[i].val) i++;
int mtr = (int)ceil(sm_tbl[i].mtr +
(sm_tbl[i+1].mtr - sm_tbl[i].mtr) *
(val - sm_tbl[i].val)/(sm_tbl[i+1].val - sm_tbl[i].val));
@@ -1228,7 +1225,7 @@ void RIG_FT450D::set_rf_gain(int val)
int RIG_FT450D::get_rf_gain()
{
- int rfval = 0;
+ //int rfval = 0;
cmd = rsp = "RG0";
cmd += ';';
wait_char(';', 7, FL450D_WAIT_TIME, "get rfgain", ASC);
@@ -1237,13 +1234,22 @@ int RIG_FT450D::get_rf_gain()
size_t p = replystr.rfind(rsp);
if (p == string::npos) return progStatus.rfgain;
- for (int i = 3; i < 6; i++) {
- rfval *= 10;
- rfval += replystr[p+i] - '0';
- }
- rfval = 100 - (int)(rfval / 2.55);
+ //for (int i = 3; i < 6; i++) {
+ // rfval *= 10; // Shift out one decimal place so we can add the next character
+ // rfval += replystr[p+i] - '0'; // Subtract ASCII 0 so we get a number
+ //}
+
+ // Parse the RF value from the position returned by rfind for the response.
+ // Valid values are 0-255.
+ int rfval =
+ (replystr[p+3] - '0') * 100 +
+ (replystr[p+4] - '0') * 10 +
+ (replystr[p+5] - '0');
+
+ // Convert 0-255 to 0-100 for the slider widget.
+ rfval = (int)(rfval / 2.55);
if (rfval > 100) rfval = 100;
- return ceil(rfval);
+ return rfval;
}
void RIG_FT450D::get_rf_min_max_step(int &min, int &max, int &step)
Index: flrig-1.3.52/src/rigs/FT5000.cxx
===================================================================
--- flrig-1.3.52.orig/src/rigs/FT5000.cxx
+++ flrig-1.3.52/src/rigs/FT5000.cxx
@@ -433,10 +433,8 @@ int RIG_FT5000::get_swr()
if (p + 6 >= replystr.length()) return 0;
int rcvd = atoi(&replystr[p+3]);
- size_t i;
- for (i = 0; i < sizeof(swrtbl) / sizeof(*swrtbl) - 1; i++)
- if (rcvd >= swrtbl[i].mtr && rcvd < swrtbl[i+1].mtr)
- break;
+ size_t i = 0;
+ while (rcvd > swrtbl[i].mtr) i++;
double mtr = (swrtbl[i+1].val - swrtbl[i].val ) / (swrtbl[i+1].mtr - swrtbl[i].mtr);
mtr *= (rcvd - swrtbl[i].mtr);
@@ -492,9 +490,7 @@ int RIG_FT5000::get_power_out()
int mtr = atoi(&replystr[p+3]);
size_t i = 0;
- for (i = 0; i < sizeof(pwrtbl) / sizeof(*pwrtbl) - 1; i++)
- if (mtr >= pwrtbl[i].mtr && mtr < pwrtbl[i+1].mtr)
- break;
+ while (mtr > pwrtbl[i].mtr) i++;
double val = (pwrtbl[i+1].val - pwrtbl[i].val) / (pwrtbl[i+1].mtr - pwrtbl[i].mtr);
val *= (mtr - pwrtbl[i].mtr);
Index: flrig-1.3.52/src/rigs/FT991.cxx
===================================================================
--- flrig-1.3.52.orig/src/rigs/FT991.cxx
+++ flrig-1.3.52/src/rigs/FT991.cxx
@@ -390,7 +390,7 @@ int RIG_FT991::get_split()
// tx vfo
cmd = rsp = "FT";
cmd.append(";");
- wait_char(';',4, FL991_WAIT_TIME, "get split tx vfo", ASC);
+ wait_char(';', 4, FL991_WAIT_TIME, "get split tx vfo", ASC);
p = replystr.rfind(rsp);
if (p == string::npos) return false;
tx = replystr[p+2] - '0';
@@ -398,7 +398,7 @@ int RIG_FT991::get_split()
// rx vfo
cmd = rsp = "FR";
cmd.append(";");
- wait_char(';',4, FL991_WAIT_TIME, "get split rx vfo", ASC);
+ wait_char(';', 4, FL991_WAIT_TIME, "get split rx vfo", ASC);
p = replystr.rfind(rsp);
if (p == string::npos) return false;
@@ -555,6 +555,7 @@ void RIG_FT991::tune_rig(int how)
int RIG_FT991::get_tune()
{
cmd = "AC;";
+ // Why override FL991_WAIT_TIME to be the same as FL991A_...?
wait_char(';',6, 100, "Tuner Enabled?", ASC);
size_t p = replystr.rfind("AC");
if (p == string::npos) return 0;
@@ -1310,7 +1311,7 @@ void RIG_FT991::set_xcvr_auto_on()
cmd = rsp = "PS";
cmd.append(";");
- wait_char(';',4, FL991_WAIT_TIME, "Test: Is Rig ON", ASC);
+ wait_char(';', 4, FL991_WAIT_TIME, "Test: Is Rig ON", ASC);
size_t p = replystr.rfind(rsp);
if (p == string::npos) { // rig is off, power on
cmd = "PS1;";
Index: flrig-1.3.52/src/rigs/FT991A.cxx
===================================================================
--- flrig-1.3.52.orig/src/rigs/FT991A.cxx
+++ flrig-1.3.52/src/rigs/FT991A.cxx
@@ -23,7 +23,7 @@
#include "debug.h"
#include "support.h"
-#define FL991A_WAIT_TIME 100
+#define FL991A_WAIT_TIME 200
enum mFT991 {
mLSB, mUSB, mCW, mFM, mAM, mRTTY_L, mCW_R, mPKT_L, mRTTY_U, mPKT_FM, mFM_N, mPKT_U, mAM_N, mC4FM };
@@ -399,28 +399,29 @@ int RIG_FT991A::get_split()
int split = 0;
char rx, tx;
// tx vfo
- cmd = rsp = "FT";
+ cmd = rsp = "RI6";
cmd.append(";");
- wait_char(';',4, FL991A_WAIT_TIME, "get split tx vfo", ASC);
+ wait_char(';', 5, FL991A_WAIT_TIME, "get split tx vfo", ASC);
gett("get split tx");
p = replystr.rfind(rsp);
if (p == string::npos) return false;
- tx = replystr[p+2] - '0';
+ tx = replystr[p+3] - '0';
// rx vfo
- cmd = rsp = "FR";
+ cmd = rsp = "RI7";
cmd.append(";");
- wait_char(';',4, FL991A_WAIT_TIME, "get split rx vfo", ASC);
+ wait_char(';', 5, FL991A_WAIT_TIME, "get split rx vfo", ASC);
gett("get split rx");
p = replystr.rfind(rsp);
if (p == string::npos) return false;
- rx = replystr[p+2] - '0';
+ rx = replystr[p+3] - '0';
split = (tx == 1 ? 2 : 0) + (rx >= 4 ? 1 : 0);
- return split;
+ if (tx == rx) return true;
+ return split;
}
@@ -547,6 +548,7 @@ void RIG_FT991A::set_PTT_control(int val
{
cmd = val ? "TX1;" : "TX0;";
sendCommand(cmd);
+ MilliSleep(50);
showresp(WARN, ASC, "SET PTT", cmd, replystr);
ptt_ = val;
sett("set_ptt_control");
@@ -1108,7 +1110,6 @@ int RIG_FT991A::get_noise()
void RIG_FT991A::set_mic_gain(int val)
{
cmd = "MG000;";
- val = (int)(val * 2.50);
for (int i = 3; i > 0; i--) {
cmd[1+i] += val % 10;
val /= 10;
@@ -1128,9 +1129,8 @@ int RIG_FT991A::get_mic_gain()
size_t p = replystr.rfind(rsp);
if (p == string::npos) return progStatus.mic_gain;
int val = atoi(&replystr[p+2]);
- val = (int)(val / 2.50);
if (val > 100) val = 100;
- return ceil(val);
+ return val;
}
void RIG_FT991A::get_mic_min_max_step(int &min, int &max, int &step)
Index: flrig-1.3.52/src/rigs/TS480SAT.cxx
===================================================================
--- flrig-1.3.52.orig/src/rigs/TS480SAT.cxx
+++ flrig-1.3.52/src/rigs/TS480SAT.cxx
@@ -297,13 +297,11 @@ int RIG_TS480SAT::get_power_out()
size_t p = replystr.rfind("SM");
if (p != string::npos) {
mtr = atoi(&replystr[p + 3]);
-
- size_t i = 0;
- for (i = 0; i < sizeof(pwrtbl) / sizeof(pwrpair) - 1; i++)
- if (mtr >= pwrtbl[i].mtr && mtr < pwrtbl[i+1].mtr)
- break;
+ size_t i = 0; // outside of the if/else for scope reasons
if (mtr < 0) mtr = 0;
- if (mtr > 20) mtr = 20;
+ else if (mtr > 20) mtr = 20;
+ else while(mtr > pwrtbl[i].mtr) i++;
+
mtr = (int)ceil(pwrtbl[i].pwr +
(pwrtbl[i+1].pwr - pwrtbl[i].pwr)*(mtr - pwrtbl[i].mtr)/(pwrtbl[i+1].mtr - pwrtbl[i].mtr));
if (mtr > 200) mtr = 200;
@@ -327,7 +325,7 @@ int RIG_TS480SAT::get_swr()
size_t p = replystr.rfind("RM1");
if (p != string::npos)
- mtr = 66 * atoi(&replystr[p + 3]) / 10;
+ mtr = 66 * atoi(&replystr[p+3]) / 10;
p = replystr.rfind("RM3");
if (p != string::npos)
alc = 66 * atoi(&replystr[p+3]) / 10;
Index: flrig-1.3.52/src/server/xml_server.cxx
===================================================================
--- flrig-1.3.52.orig/src/server/xml_server.cxx
+++ flrig-1.3.52/src/server/xml_server.cxx
@@ -817,14 +817,14 @@ public :
void execute(XmlRpcValue& params, XmlRpcValue& result) {
+ XmlRpcValue bws;
+
if (!xcvr_initialized || !selrig->bandwidths_) {
- XmlRpcValue bws;
bws[0][0] = "Bandwidth";
bws[0][1] = "NONE";
result = bws;
return;
}
- XmlRpcValue bws;
wait();
guard_lock service_lock(&mutex_srvc_reqs, "xml rig_get_bws");
@@ -843,30 +843,29 @@ public :
bwt++;
i++;
}
+ result = bws;
}
// double table either lo/hi or center/width
if (selrig->has_dsp_controls && dsplo && dsphi) {
- int i = 0;
- int n = 1;
std::string control_label = selrig->SL_label;
control_label.append("|").append(selrig->SL_tooltip);
bws[0][0] = control_label.c_str();
+ int i = 0; int n = 1;
while (dsplo[i]) {
bws[0][n] = dsplo[i];
n++; i++;
}
- i = 0;
control_label.assign(selrig->SH_label);
control_label.append("|").append(selrig->SH_tooltip);
bws[1][0] = control_label.c_str();
- n = 1;
+ i = 0; n = 1;
while (dsphi[i]) {
bws[1][n] = dsphi[i];
n++; i++;
}
+ result = bws;
}
- result = bws;
}
std::string help() { return std::string("returns array of bandwidths"); }