mirror of
https://git.code.sf.net/p/fldigi/flrig
synced 2026-08-13 17:28:24 -04:00
IC7300 power table
* modify power table conversion method
This commit is contained in:
parent
eaeb72120a
commit
d5c96cb312
5 changed files with 31 additions and 23 deletions
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
|
|
|
|||
|
|
@ -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;};
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue