IC7300 power table

* modify power table conversion method
This commit is contained in:
David Freese 2020-12-17 19:26:43 -06:00
parent eaeb72120a
commit d5c96cb312
5 changed files with 31 additions and 23 deletions

View file

@ -642,6 +642,8 @@ int vfo_;
string bcd255(int val);
int num100(string bcd);
int hexval(int hex);
int hex2val(string hexval);
// Yaesu force ID response before sending command
std::string IDstr;

View file

@ -1292,24 +1292,24 @@ int RIG_IC7100::get_power_out(void)
cmd = pre_to;
cmd.append(cstr);
cmd.append( post );
int mtr= 0;
int mtr = 0;
int val = 0;
if (waitFOR(9, "get power out")) {
size_t p = replystr.rfind(resp);
if (p != string::npos) {
mtr = fm_bcd(replystr.substr(p+6), 3);
mtr = hex2val(replystr.substr(p+6, 2));
mtr = max(0, min(mtr, 255));
size_t i = 0;
for (i = 0; i < sizeof(pwrtbl) / sizeof(meterpair) - 1; i++)
if (mtr >= pwrtbl[i].mtr && mtr < pwrtbl[i+1].mtr)
break;
if (mtr < 0) mtr = 0;
if (mtr > 255) mtr = 255;
mtr = (int)ceil(pwrtbl[i].val +
val = (int)ceil(pwrtbl[i].val +
(pwrtbl[i+1].val - pwrtbl[i].val)*(mtr - pwrtbl[i].mtr)/(pwrtbl[i+1].mtr - pwrtbl[i].mtr));
if (mtr > 100) mtr = 100;
if (val > 100) val = 100;
}
}
get_trace(2, "get_power_out()", hexstr(replystr).c_str());
return mtr;
return val;
}
int RIG_IC7100::get_swr()

View file

@ -1297,23 +1297,22 @@ int RIG_IC7300::get_power_out(void)
cmd.append(cstr);
cmd.append( post );
int mtr= 0;
int val = 0;
if (waitFOR(9, "get power out")) {
size_t p = replystr.rfind(resp);
if (p != string::npos) {
mtr = fm_bcd(replystr.substr(p+6), 3);
mtr = hex2val(replystr.substr(p+6, 2));
mtr = max(0, min(mtr, 255));
size_t i = 0;
for (i = 0; i < sizeof(pwrtbl) / sizeof(pwrpair) - 1; i++)
for (i = 0; i < sizeof(pwrtbl) / sizeof(*pwrtbl) - 1; i++)
if (mtr >= pwrtbl[i].mtr && mtr < pwrtbl[i+1].mtr)
break;
if (mtr < 0) mtr = 0;
if (mtr > 255) mtr = 255;
mtr = (int)ceil(pwrtbl[i].pwr +
val = (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 > 100) mtr = 100;
if (val > 100) val = 100;
}
}
return mtr;
return val;
}
struct swrpair {int mtr; float swr;};

View file

@ -598,14 +598,6 @@ void RIG_Xiegu_G90::set_cw_wpm()
waitFB("SET cw wpm");
}
static int hexval(int hex)
{
int val = 0;
val += 10 * ((hex >> 4) & 0x0F);
val += hex & 0x0F;
return val;
}
static char hexchr(int val)
{
static char c;

View file

@ -349,6 +349,21 @@ int rigbase::num100(string bcd)
}
return 0;
}
int rigbase::hexval(int hex)
{
int val = 0;
val += 10 * ((hex >> 4) & 0x0F);
val += hex & 0x0F;
return val;
}
int rigbase::hex2val(string hexstr)
{
return 100 * hexval(hexstr[0]) + hexval(hexstr[1]);
}
//======================================================================
int rigbase::waitN(size_t n, int timeout, const char *sz, int pr)