mirror of
https://git.code.sf.net/p/fldigi/flrig
synced 2026-08-13 17:28:24 -04:00
Break-in
* Add break-in selection for transceivers which support
set / get CAT commands for break-in
- Icom, Yaesu
- Change enable_break_in to set_break_in
- Add get_break_in
. method
. polling
This commit is contained in:
parent
26451e33bd
commit
290c27e622
41 changed files with 465 additions and 53 deletions
|
|
@ -748,7 +748,7 @@ static void cb_btnBreakIn(Fl_Check_Button* o, void*) {
|
|||
else {
|
||||
progStatus.break_in = ! progStatus.break_in;
|
||||
}
|
||||
cb_enable_break_in();
|
||||
cb_set_break_in();
|
||||
}
|
||||
|
||||
static void cb_spnr_vox_gain(Hspinner* o, void*) {
|
||||
|
|
|
|||
|
|
@ -105,6 +105,7 @@ Fl_Group *tabPOLLING = (Fl_Group *)0;
|
|||
Fl_Value_Input *poll_compression = (Fl_Value_Input *)0;
|
||||
Fl_Value_Input *poll_tuner = (Fl_Value_Input *)0;
|
||||
Fl_Value_Input *poll_ptt = (Fl_Value_Input *)0;
|
||||
Fl_Value_Input *poll_break_in = (Fl_Value_Input *)0;
|
||||
Fl_Button *btnClearAddControls = (Fl_Button *)0;
|
||||
|
||||
Fl_Value_Input *poll_meters = (Fl_Value_Input *)0;
|
||||
|
|
@ -626,6 +627,10 @@ static void cb_poll_ptt(Fl_Value_Input* o, void*) {
|
|||
progStatus.poll_ptt = o->value();
|
||||
}
|
||||
|
||||
static void cb_poll_break_in(Fl_Value_Input* o, void*) {
|
||||
progStatus.poll_break_in = o->value();
|
||||
}
|
||||
|
||||
static void cb_btnSetMeters(Fl_Button*, void*) {
|
||||
poll_smeter->value(progStatus.poll_meters);
|
||||
poll_pout->value(progStatus.poll_meters);
|
||||
|
|
@ -1719,6 +1724,14 @@ Fl_Group *createPOLLING(int X, int Y, int W, int H, const char *label)
|
|||
poll_compression->align(Fl_Align(FL_ALIGN_RIGHT));
|
||||
poll_compression->value(progStatus.poll_compression);
|
||||
|
||||
poll_break_in = new Fl_Value_Input(X + 280, Y + 165, 30, 20, _("QSK"));
|
||||
poll_break_in->tooltip(_("Break In"));
|
||||
poll_break_in->maximum(10);
|
||||
poll_break_in->step(1);
|
||||
poll_break_in->callback((Fl_Callback*)cb_poll_break_in);
|
||||
poll_break_in->align(Fl_Align(FL_ALIGN_RIGHT));
|
||||
poll_break_in->value(progStatus.poll_break_in);
|
||||
|
||||
btnSetAdd = new Fl_Button(X + 370, Y + 190, 60, 20, _("Set all"));
|
||||
btnSetAdd->callback((Fl_Callback*)cb_btnSetAdd);
|
||||
|
||||
|
|
|
|||
|
|
@ -83,6 +83,9 @@ public:
|
|||
int adjust_bandwidth(int);
|
||||
int def_bandwidth(int);
|
||||
|
||||
void set_break_in();
|
||||
int get_break_in();
|
||||
|
||||
bool sendFTcommand(string, int, bool);
|
||||
const char **bwtable(int);
|
||||
|
||||
|
|
|
|||
|
|
@ -117,11 +117,11 @@ public:
|
|||
void set_cw_weight();
|
||||
void set_cw_wpm();
|
||||
void enable_keyer();
|
||||
void enable_break_in();
|
||||
void set_break_in();
|
||||
int get_break_in();
|
||||
|
||||
void get_cw_weight();
|
||||
void get_cw_wpm();
|
||||
void get_break_in();
|
||||
void get_qsk();
|
||||
void get_qsk_delay();
|
||||
void get_cw_spot_tone();
|
||||
|
|
|
|||
|
|
@ -132,6 +132,8 @@ public:
|
|||
// void set_cw_vol();
|
||||
bool set_cw_spot();
|
||||
// void set_cw_spot_tone();
|
||||
void set_break_in();
|
||||
int get_break_in();
|
||||
|
||||
void get_band_selection(int v);
|
||||
};
|
||||
|
|
|
|||
|
|
@ -130,6 +130,9 @@ public:
|
|||
void set_cw_qsk();
|
||||
bool set_cw_spot();
|
||||
void set_cw_spot_tone();
|
||||
void set_break_in();
|
||||
int get_break_in();
|
||||
|
||||
// void set_band_selection(int v);
|
||||
void get_nr_min_max_step(int &min, int &max, int &step) {
|
||||
min = 1; max = 15; step = 1; }
|
||||
|
|
|
|||
|
|
@ -132,6 +132,9 @@ public:
|
|||
void set_cw_qsk();
|
||||
bool set_cw_spot();
|
||||
void set_cw_spot_tone();
|
||||
void set_break_in();
|
||||
int get_break_in();
|
||||
|
||||
// void set_band_selection(int v);
|
||||
void get_band_selection(int v);
|
||||
void get_nr_min_max_step(int &min, int &max, int &step) {
|
||||
|
|
|
|||
|
|
@ -133,6 +133,8 @@ public:
|
|||
// virtual void set_cw_vol();
|
||||
virtual bool set_cw_spot();
|
||||
// virtual void set_cw_spot_tone();
|
||||
void set_break_in();
|
||||
int get_break_in();
|
||||
|
||||
virtual void get_band_selection(int v);
|
||||
|
||||
|
|
|
|||
|
|
@ -130,6 +130,9 @@ public:
|
|||
void set_cw_qsk();
|
||||
bool set_cw_spot();
|
||||
void set_cw_spot_tone();
|
||||
void set_break_in();
|
||||
int get_break_in();
|
||||
|
||||
void get_band_selection(int v);
|
||||
void get_nr_min_max_step(int &min, int &max, int &step) {
|
||||
min = 1; max = 15; step = 1; }
|
||||
|
|
|
|||
|
|
@ -130,6 +130,8 @@ public:
|
|||
// void set_cw_vol();
|
||||
bool set_cw_spot();
|
||||
// void set_cw_spot_tone();
|
||||
void set_break_in();
|
||||
int get_break_in();
|
||||
|
||||
void get_band_selection(int v);
|
||||
};
|
||||
|
|
|
|||
|
|
@ -129,6 +129,8 @@ public:
|
|||
// void set_cw_vol();
|
||||
bool set_cw_spot();
|
||||
// void set_cw_spot_tone();
|
||||
void set_break_in();
|
||||
int get_break_in();
|
||||
|
||||
void get_band_selection(int v);
|
||||
|
||||
|
|
|
|||
|
|
@ -112,7 +112,8 @@ public:
|
|||
void set_cw_wpm();
|
||||
void get_cw_wpm_min_max(int &min, int &max);
|
||||
|
||||
void enable_break_in();
|
||||
void set_break_in();
|
||||
int get_break_in();
|
||||
void set_cw_qsk();
|
||||
void get_cw_qsk_min_max_step(double &min, double &max, double &step);
|
||||
|
||||
|
|
|
|||
|
|
@ -103,6 +103,8 @@ public:
|
|||
void set_cw_qsk();
|
||||
void set_cw_spot_tone();
|
||||
void set_cw_vol();
|
||||
void set_break_in();
|
||||
int get_break_in();
|
||||
|
||||
const char **bwtable(int m);
|
||||
|
||||
|
|
|
|||
|
|
@ -150,7 +150,7 @@ public:
|
|||
void set_cw_wpm();
|
||||
void get_cw_wpm_min_max(int &min, int &max);
|
||||
|
||||
void enable_break_in();
|
||||
void set_break_in();
|
||||
void set_cw_qsk();
|
||||
void get_cw_qsk_min_max_step(double &min, double &max, double &step);
|
||||
|
||||
|
|
|
|||
|
|
@ -112,7 +112,8 @@ public:
|
|||
void set_cw_wpm();
|
||||
void get_cw_wpm_min_max(int &min, int &max);
|
||||
|
||||
void enable_break_in();
|
||||
void set_break_in();
|
||||
int get_break_in();
|
||||
void set_cw_qsk();
|
||||
void get_cw_qsk_min_max_step(double &min, double &max, double &step);
|
||||
|
||||
|
|
|
|||
|
|
@ -144,7 +144,9 @@ public:
|
|||
void set_cw_wpm();
|
||||
void get_cw_wpm_min_max(int &min, int &max);
|
||||
|
||||
void enable_break_in();
|
||||
void set_break_in();
|
||||
int get_break_in();
|
||||
|
||||
void set_cw_qsk();
|
||||
void get_cw_qsk_min_max_step(double &min, double &max, double &step);
|
||||
|
||||
|
|
|
|||
|
|
@ -110,7 +110,9 @@ public:
|
|||
void set_cw_wpm();
|
||||
void get_cw_wpm_min_max(int &min, int &max);
|
||||
|
||||
void enable_break_in();
|
||||
void set_break_in();
|
||||
int get_break_in();
|
||||
|
||||
void set_cw_qsk();
|
||||
void get_cw_qsk_min_max_step(double &min, double &max, double &step);
|
||||
|
||||
|
|
|
|||
|
|
@ -163,7 +163,7 @@ public:
|
|||
// void set_cw_wpm();
|
||||
// void get_cw_wpm_min_max(int &min, int &max);
|
||||
|
||||
// void enable_break_in();
|
||||
// void set_break_in();
|
||||
// void set_cw_qsk();
|
||||
// void get_cw_qsk_min_max_step(double &min, double &max, double &step);
|
||||
|
||||
|
|
|
|||
|
|
@ -62,6 +62,9 @@ public:
|
|||
|
||||
virtual void tune_rig(int how);
|
||||
virtual int get_tune();
|
||||
|
||||
virtual std::string hexstr(std::string s);
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -540,7 +540,8 @@ int vfo_;
|
|||
virtual void get_cw_wpm_min_max(int &min, int &max) {
|
||||
min = 5; max = 50; } // default for FT950/FT450D
|
||||
virtual void enable_keyer() {}
|
||||
virtual void enable_break_in() {}
|
||||
virtual void set_break_in() {}
|
||||
virtual int get_break_in() {return 0;}
|
||||
|
||||
virtual void set_cw_qsk() {}
|
||||
virtual void get_cw_qsk_min_max_step(double &min, double &max, double &step) {
|
||||
|
|
|
|||
|
|
@ -534,6 +534,7 @@ extern Fl_Value_Input *poll_noise;
|
|||
extern Fl_Value_Input *poll_nr;
|
||||
extern Fl_Value_Input *poll_compression;
|
||||
extern Fl_Value_Input *poll_ptt;
|
||||
extern Fl_Value_Input *poll_break_in;
|
||||
extern Fl_Button *btnClearAddControls;
|
||||
extern Fl_Value_Input *poll_all;
|
||||
extern Fl_Button *btnSetAllAdd;
|
||||
|
|
|
|||
|
|
@ -107,6 +107,7 @@ struct status {
|
|||
int poll_compression;
|
||||
int poll_tuner;
|
||||
int poll_ptt;
|
||||
int poll_break_in;
|
||||
int poll_all;
|
||||
|
||||
int iBW_A;
|
||||
|
|
|
|||
|
|
@ -137,7 +137,7 @@ extern void cb_cw_qsk();
|
|||
extern void cb_cw_delay();
|
||||
extern void cb_cw_weight();
|
||||
extern void cb_enable_keyer();
|
||||
extern void cb_enable_break_in();
|
||||
extern void cb_set_break_in();
|
||||
|
||||
extern void cb_vox_gain();
|
||||
extern void cb_vox_anti();
|
||||
|
|
|
|||
|
|
@ -136,6 +136,7 @@ RIG_FT2000::RIG_FT2000() {
|
|||
has_ifshift_control =
|
||||
has_ptt_control =
|
||||
has_tune_control =
|
||||
has_cw_break_in =
|
||||
has_swr_control = true;
|
||||
|
||||
// derived specific
|
||||
|
|
@ -942,3 +943,32 @@ void RIG_FT2000::get_mic_min_max_step(int &min, int &max, int &step)
|
|||
max = 100;
|
||||
step = 1;
|
||||
}
|
||||
|
||||
void RIG_FT2000::set_break_in()
|
||||
{
|
||||
if (progStatus.break_in) {
|
||||
cmd = "BI1;";
|
||||
break_in_label("BK-IN");
|
||||
} else {
|
||||
cmd = "BI0;";
|
||||
break_in_label("QSK ?");
|
||||
}
|
||||
sendCommand(cmd);
|
||||
showresp(WARN, ASC, "SET break in on/off", cmd, replystr);
|
||||
sett("set_break_in");
|
||||
}
|
||||
|
||||
int RIG_FT2000::get_break_in()
|
||||
{
|
||||
cmd = "BI;";
|
||||
wait_char(';', 4, 100, "get break in", ASC);
|
||||
progStatus.break_in = (replystr[2] == '1');
|
||||
if (progStatus.break_in) {
|
||||
break_in_label("BK-IN");
|
||||
progStatus.cw_delay = 0;
|
||||
} else {
|
||||
break_in_label("QSK ?");
|
||||
// get_qsk_delay();
|
||||
}
|
||||
return progStatus.break_in;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1135,7 +1135,7 @@ void RIG_FT450D::set_cw_weight()
|
|||
sett("set_cw_weight");
|
||||
}
|
||||
|
||||
void RIG_FT450D::enable_break_in()
|
||||
void RIG_FT450D::set_break_in()
|
||||
{
|
||||
if (progStatus.break_in) {
|
||||
cmd = "BI1;";
|
||||
|
|
@ -1146,7 +1146,22 @@ void RIG_FT450D::enable_break_in()
|
|||
}
|
||||
sendCommand(cmd);
|
||||
showresp(WARN, ASC, "SET break in on/off", cmd, replystr);
|
||||
sett("enable_break_in");
|
||||
sett("set_break_in");
|
||||
}
|
||||
|
||||
int RIG_FT450D::get_break_in()
|
||||
{
|
||||
cmd = "BI;";
|
||||
wait_char(';', 4, FL450D_WAIT_TIME, "get break in", ASC);
|
||||
progStatus.break_in = (replystr[2] == '1');
|
||||
if (progStatus.break_in) {
|
||||
break_in_label("FULL");
|
||||
progStatus.cw_delay = 0;
|
||||
} else {
|
||||
break_in_label("QSK");
|
||||
get_qsk_delay();
|
||||
}
|
||||
return progStatus.break_in;
|
||||
}
|
||||
|
||||
void RIG_FT450D::set_cw_delay()
|
||||
|
|
@ -1315,24 +1330,6 @@ void RIG_FT450D::get_cw_wpm()
|
|||
progStatus.cw_wpm = val;
|
||||
}
|
||||
|
||||
void RIG_FT450D::get_break_in()
|
||||
{
|
||||
cmd = "BI;";
|
||||
wait_char(';', 4, FL450D_WAIT_TIME, "get Break In", ASC);
|
||||
gett("get_break_in");
|
||||
|
||||
size_t p = replystr.rfind("BI");
|
||||
if (p != string::npos)
|
||||
progStatus.break_in = (replystr[2] == '1');
|
||||
if (progStatus.break_in) {
|
||||
break_in_label("FULL");
|
||||
progStatus.cw_delay = 0;
|
||||
} else {
|
||||
break_in_label("QSK");
|
||||
get_qsk_delay();
|
||||
}
|
||||
}
|
||||
|
||||
void RIG_FT450D::get_qsk()
|
||||
{
|
||||
cmd = "EX018;";
|
||||
|
|
|
|||
|
|
@ -179,6 +179,7 @@ RIG_FT5000::RIG_FT5000() {
|
|||
// has_cw_spot_tone = // does not exist???
|
||||
has_cw_qsk =
|
||||
has_cw_weight =
|
||||
has_cw_break_in =
|
||||
|
||||
has_split_AB =
|
||||
can_change_alt_vfo =
|
||||
|
|
@ -1346,6 +1347,35 @@ void RIG_FT5000::set_cw_qsk()
|
|||
sett("set cw weight");
|
||||
}
|
||||
|
||||
void RIG_FT5000::set_break_in()
|
||||
{
|
||||
if (progStatus.break_in) {
|
||||
cmd = "BI1;";
|
||||
break_in_label("BK-IN");
|
||||
} else {
|
||||
cmd = "BI0;";
|
||||
break_in_label("QSK ?");
|
||||
}
|
||||
sendCommand(cmd);
|
||||
showresp(WARN, ASC, "SET break in on/off", cmd, replystr);
|
||||
sett("set_break_in");
|
||||
}
|
||||
|
||||
int RIG_FT5000::get_break_in()
|
||||
{
|
||||
cmd = "BI;";
|
||||
wait_char(';', 4, 100, "get break in", ASC);
|
||||
progStatus.break_in = (replystr[2] == '1');
|
||||
if (progStatus.break_in) {
|
||||
break_in_label("BK-IN");
|
||||
progStatus.cw_delay = 0;
|
||||
} else {
|
||||
break_in_label("QSK ?");
|
||||
// get_qsk_delay();
|
||||
}
|
||||
return progStatus.break_in;
|
||||
}
|
||||
|
||||
/*
|
||||
void RIG_FT5000::set_cw_spot_tone()
|
||||
{
|
||||
|
|
|
|||
|
|
@ -157,6 +157,7 @@ RIG_FT991::RIG_FT991() {
|
|||
has_cw_spot_tone =
|
||||
has_cw_qsk =
|
||||
has_cw_weight =
|
||||
has_cw_break_in =
|
||||
|
||||
can_change_alt_vfo =
|
||||
has_smeter =
|
||||
|
|
@ -1383,3 +1384,32 @@ void RIG_FT991::get_vfoadj_min_max_step(int &min, int &max, int &step)
|
|||
step = 1;
|
||||
}
|
||||
|
||||
void RIG_FT991::set_break_in()
|
||||
{
|
||||
if (progStatus.break_in) {
|
||||
cmd = "BI1;";
|
||||
break_in_label("BK-IN");
|
||||
} else {
|
||||
cmd = "BI0;";
|
||||
break_in_label("QSK ?");
|
||||
}
|
||||
sendCommand(cmd);
|
||||
showresp(WARN, ASC, "SET break in on/off", cmd, replystr);
|
||||
sett("set_break_in");
|
||||
}
|
||||
|
||||
int RIG_FT991::get_break_in()
|
||||
{
|
||||
cmd = "BI;";
|
||||
wait_char(';', 4, FL991_WAIT_TIME, "get break in", ASC);
|
||||
progStatus.break_in = (replystr[2] == '1');
|
||||
if (progStatus.break_in) {
|
||||
break_in_label("BK-IN");
|
||||
progStatus.cw_delay = 0;
|
||||
} else {
|
||||
break_in_label("QSK ?");
|
||||
// get_qsk_delay();
|
||||
}
|
||||
return progStatus.break_in;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -158,6 +158,7 @@ RIG_FT991A::RIG_FT991A() {
|
|||
has_cw_spot_tone =
|
||||
has_cw_qsk =
|
||||
has_cw_weight =
|
||||
has_cw_break_in =
|
||||
|
||||
can_change_alt_vfo =
|
||||
has_smeter =
|
||||
|
|
@ -1459,3 +1460,33 @@ void RIG_FT991A::get_band_selection(int v)
|
|||
sendCommand(cmd);
|
||||
sett("get band");
|
||||
}
|
||||
|
||||
void RIG_FT991A::set_break_in()
|
||||
{
|
||||
if (progStatus.break_in) {
|
||||
cmd = "BI1;";
|
||||
break_in_label("BK-IN");
|
||||
} else {
|
||||
cmd = "BI0;";
|
||||
break_in_label("QSK ?");
|
||||
}
|
||||
sendCommand(cmd);
|
||||
showresp(WARN, ASC, "SET break in on/off", cmd, replystr);
|
||||
sett("set_break_in");
|
||||
}
|
||||
|
||||
int RIG_FT991A::get_break_in()
|
||||
{
|
||||
cmd = "BI;";
|
||||
wait_char(';', 4, FL991A_WAIT_TIME, "get break in", ASC);
|
||||
progStatus.break_in = (replystr[2] == '1');
|
||||
if (progStatus.break_in) {
|
||||
break_in_label("BK-IN");
|
||||
progStatus.cw_delay = 0;
|
||||
} else {
|
||||
break_in_label("QSK ?");
|
||||
// get_qsk_delay();
|
||||
}
|
||||
return progStatus.break_in;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -188,6 +188,8 @@ RIG_FTdx101D::RIG_FTdx101D() {
|
|||
// has_cw_spot_tone = // does not exist???
|
||||
has_cw_qsk =
|
||||
has_cw_weight =
|
||||
has_cw_break_in =
|
||||
|
||||
has_split_AB =
|
||||
|
||||
can_change_alt_vfo =
|
||||
|
|
@ -1379,6 +1381,35 @@ void RIG_FTdx101D::set_cw_qsk()
|
|||
showresp(WARN, ASC, "SET cw qsk", cmd, replystr);
|
||||
}
|
||||
|
||||
void RIG_FTdx101D::set_break_in()
|
||||
{
|
||||
if (progStatus.break_in) {
|
||||
cmd = "BI1;";
|
||||
break_in_label("BK-IN");
|
||||
} else {
|
||||
cmd = "BI0;";
|
||||
break_in_label("QSK ?");
|
||||
}
|
||||
sendCommand(cmd);
|
||||
showresp(WARN, ASC, "SET break in on/off", cmd, replystr);
|
||||
sett("set_break_in");
|
||||
}
|
||||
|
||||
int RIG_FTdx101D::get_break_in()
|
||||
{
|
||||
cmd = "BI;";
|
||||
wait_char(';', 4, 100, "get break in", ASC);
|
||||
progStatus.break_in = (replystr[2] == '1');
|
||||
if (progStatus.break_in) {
|
||||
break_in_label("BK-IN");
|
||||
progStatus.cw_delay = 0;
|
||||
} else {
|
||||
break_in_label("QSK ?");
|
||||
// get_qsk_delay();
|
||||
}
|
||||
return progStatus.break_in;
|
||||
}
|
||||
|
||||
//======================================================================
|
||||
// FTdx101MP
|
||||
//======================================================================
|
||||
|
|
|
|||
|
|
@ -159,6 +159,7 @@ RIG_FTdx1200::RIG_FTdx1200() {
|
|||
has_cw_spot_tone =
|
||||
has_cw_qsk =
|
||||
has_cw_weight =
|
||||
has_cw_break_in =
|
||||
|
||||
can_change_alt_vfo =
|
||||
has_smeter =
|
||||
|
|
@ -1589,6 +1590,35 @@ void RIG_FTdx1200::set_compression(int on, int val)
|
|||
}
|
||||
}
|
||||
|
||||
void RIG_FTdx1200::set_break_in()
|
||||
{
|
||||
if (progStatus.break_in) {
|
||||
cmd = "BI1;";
|
||||
break_in_label("BK-IN");
|
||||
} else {
|
||||
cmd = "BI0;";
|
||||
break_in_label("QSK ?");
|
||||
}
|
||||
sendCommand(cmd);
|
||||
showresp(WARN, ASC, "SET break in on/off", cmd, replystr);
|
||||
sett("set_break_in");
|
||||
}
|
||||
|
||||
int RIG_FTdx1200::get_break_in()
|
||||
{
|
||||
cmd = "BI;";
|
||||
wait_char(';', 4, 100, "get break in", ASC);
|
||||
progStatus.break_in = (replystr[2] == '1');
|
||||
if (progStatus.break_in) {
|
||||
break_in_label("BK-IN");
|
||||
progStatus.cw_delay = 0;
|
||||
} else {
|
||||
break_in_label("QSK ?");
|
||||
// get_qsk_delay();
|
||||
}
|
||||
return progStatus.break_in;
|
||||
}
|
||||
|
||||
/*
|
||||
// Audio Peak Filter, like set_cw_spot
|
||||
bool RIG_FTdx1200::set_cw_APF()
|
||||
|
|
|
|||
|
|
@ -182,6 +182,8 @@ RIG_FTdx3000::RIG_FTdx3000() {
|
|||
// has_cw_spot_tone = // does not exist???
|
||||
has_cw_qsk =
|
||||
has_cw_weight =
|
||||
has_cw_break_in =
|
||||
|
||||
has_split_AB =
|
||||
|
||||
can_change_alt_vfo =
|
||||
|
|
@ -1283,6 +1285,35 @@ void RIG_FTdx3000::set_cw_qsk()
|
|||
showresp(WARN, ASC, "SET cw qsk", cmd, replystr);
|
||||
}
|
||||
|
||||
void RIG_FTdx3000::set_break_in()
|
||||
{
|
||||
if (progStatus.break_in) {
|
||||
cmd = "BI1;";
|
||||
break_in_label("BK-IN");
|
||||
} else {
|
||||
cmd = "BI0;";
|
||||
break_in_label("QSK ?");
|
||||
}
|
||||
sendCommand(cmd);
|
||||
showresp(WARN, ASC, "SET break in on/off", cmd, replystr);
|
||||
sett("set_break_in");
|
||||
}
|
||||
|
||||
int RIG_FTdx3000::get_break_in()
|
||||
{
|
||||
cmd = "BI;";
|
||||
wait_char(';', 4, 100, "get break in", ASC);
|
||||
progStatus.break_in = (replystr[2] == '1');
|
||||
if (progStatus.break_in) {
|
||||
break_in_label("BK-IN");
|
||||
progStatus.cw_delay = 0;
|
||||
} else {
|
||||
break_in_label("QSK ?");
|
||||
// get_qsk_delay();
|
||||
}
|
||||
return progStatus.break_in;
|
||||
}
|
||||
|
||||
/*
|
||||
void RIG_FTdx3000::set_cw_spot_tone()
|
||||
{
|
||||
|
|
|
|||
|
|
@ -183,6 +183,8 @@ RIG_FTdx9000::RIG_FTdx9000() {
|
|||
// has_cw_spot_tone = // does not exist???
|
||||
has_cw_qsk =
|
||||
has_cw_weight =
|
||||
has_cw_break_in =
|
||||
|
||||
has_split_AB =
|
||||
|
||||
can_change_alt_vfo =
|
||||
|
|
@ -1292,6 +1294,35 @@ void RIG_FTdx9000::set_cw_qsk()
|
|||
showresp(WARN, ASC, "SET cw qsk", cmd, replystr);
|
||||
}
|
||||
|
||||
void RIG_FTdx9000::set_break_in()
|
||||
{
|
||||
if (progStatus.break_in) {
|
||||
cmd = "BI1;";
|
||||
break_in_label("BK-IN");
|
||||
} else {
|
||||
cmd = "BI0;";
|
||||
break_in_label("QSK ?");
|
||||
}
|
||||
sendCommand(cmd);
|
||||
showresp(WARN, ASC, "SET break in on/off", cmd, replystr);
|
||||
sett("set_break_in");
|
||||
}
|
||||
|
||||
int RIG_FTdx9000::get_break_in()
|
||||
{
|
||||
cmd = "BI;";
|
||||
wait_char(';', 4, 100, "get break in", ASC);
|
||||
progStatus.break_in = (replystr[2] == '1');
|
||||
if (progStatus.break_in) {
|
||||
break_in_label("BK-IN");
|
||||
progStatus.cw_delay = 0;
|
||||
} else {
|
||||
break_in_label("QSK ?");
|
||||
// get_qsk_delay();
|
||||
}
|
||||
return progStatus.break_in;
|
||||
}
|
||||
|
||||
/*
|
||||
void RIG_FTdx9000::set_cw_spot_tone()
|
||||
{
|
||||
|
|
|
|||
|
|
@ -29,6 +29,7 @@
|
|||
#include "IC705.h"
|
||||
#include "support.h"
|
||||
#include "trace.h"
|
||||
#include "tod_clock.h"
|
||||
|
||||
//=============================================================================
|
||||
// IC-705
|
||||
|
|
@ -1095,7 +1096,7 @@ void RIG_IC705::set_cw_wpm()
|
|||
waitFB("SET cw wpm");
|
||||
}
|
||||
|
||||
void RIG_IC705::enable_break_in()
|
||||
void RIG_IC705::set_break_in()
|
||||
{
|
||||
// 16 47 00 break-in off
|
||||
// 16 47 01 break-in semi
|
||||
|
|
@ -1113,6 +1114,23 @@ void RIG_IC705::enable_break_in()
|
|||
waitFB("SET break-in");
|
||||
}
|
||||
|
||||
int RIG_IC705::get_break_in()
|
||||
{
|
||||
cmd.assign(pre_to).append("\x16\x47").append(post);
|
||||
std::string resp;
|
||||
resp.assign(pre_fm);
|
||||
if (waitFOR(8, "get break in")) {
|
||||
size_t p = replystr.rfind(resp);
|
||||
if (p != string::npos) {
|
||||
progStatus.break_in = replystr[p+6];
|
||||
if (progStatus.break_in == 0) break_in_label("qsk");
|
||||
else if (progStatus.break_in == 1) break_in_label("SEMI");
|
||||
else break_in_label("FULL");
|
||||
}
|
||||
}
|
||||
return progStatus.break_in;
|
||||
}
|
||||
|
||||
void RIG_IC705::get_cw_qsk_min_max_step(double &min, double &max, double &step)
|
||||
{
|
||||
min = 2.0; max = 13.0; step = 0.1;
|
||||
|
|
|
|||
|
|
@ -32,10 +32,6 @@
|
|||
|
||||
*/
|
||||
|
||||
std::string hexstr(std::string s)
|
||||
{
|
||||
return str2hex(s.c_str(), s.length());
|
||||
}
|
||||
|
||||
const char IC7100name_[] = "IC-7100";
|
||||
|
||||
|
|
@ -238,6 +234,7 @@ RIG_IC7100::RIG_IC7100() {
|
|||
has_cw_wpm = true;
|
||||
has_cw_spot_tone = true;
|
||||
has_cw_qsk = true;
|
||||
has_cw_break_in = true;
|
||||
has_cw_vol = true;
|
||||
|
||||
has_vox_onoff = true;
|
||||
|
|
@ -1097,6 +1094,39 @@ void RIG_IC7100::set_cw_vol()
|
|||
waitFB("SET cw sidetone volume");
|
||||
}
|
||||
|
||||
void RIG_IC7100::set_break_in()
|
||||
{
|
||||
// 16 47 00 break-in off
|
||||
// 16 47 01 break-in on
|
||||
|
||||
cmd.assign(pre_to).append("\x16\x47");
|
||||
|
||||
switch (progStatus.break_in) {
|
||||
case 1: cmd += '\x01'; break_in_label("QSK ON"); break;
|
||||
case 0:
|
||||
default: cmd += '\x00'; break_in_label("qsk");
|
||||
}
|
||||
cmd.append(post);
|
||||
waitFB("SET break-in");
|
||||
}
|
||||
|
||||
int RIG_IC7100::get_break_in()
|
||||
{
|
||||
cmd.assign(pre_to).append("\x16\x47").append(post);
|
||||
std::string resp;
|
||||
resp.assign(pre_fm);
|
||||
if (waitFOR(8, "get break in")) {
|
||||
size_t p = replystr.rfind(resp);
|
||||
if (p != string::npos) {
|
||||
progStatus.break_in = replystr[p+6];
|
||||
if (progStatus.break_in == 0) break_in_label("qsk");
|
||||
else break_in_label("QSK ON");
|
||||
}
|
||||
}
|
||||
get_trace(2, "get_break_in()", hexstr(replystr).c_str());
|
||||
return progStatus.break_in;
|
||||
}
|
||||
|
||||
void RIG_IC7100::set_power_control(double val)
|
||||
{
|
||||
cmd = pre_to;
|
||||
|
|
|
|||
|
|
@ -1680,7 +1680,7 @@ void RIG_IC7200::set_cw_wpm()
|
|||
set_trace(2, "set_cw_wpm()", str2hex(cmd.c_str(), cmd.length()));
|
||||
}
|
||||
|
||||
void RIG_IC7200::enable_break_in()
|
||||
void RIG_IC7200::set_break_in()
|
||||
{
|
||||
// 16 47 00 break-in off
|
||||
// 16 47 01 break-in semi
|
||||
|
|
|
|||
|
|
@ -1093,7 +1093,7 @@ void RIG_IC7300::set_cw_wpm()
|
|||
waitFB("SET cw wpm");
|
||||
}
|
||||
|
||||
void RIG_IC7300::enable_break_in()
|
||||
void RIG_IC7300::set_break_in()
|
||||
{
|
||||
// 16 47 00 break-in off
|
||||
// 16 47 01 break-in semi
|
||||
|
|
@ -1111,6 +1111,24 @@ void RIG_IC7300::enable_break_in()
|
|||
waitFB("SET break-in");
|
||||
}
|
||||
|
||||
int RIG_IC7300::get_break_in()
|
||||
{
|
||||
cmd.assign(pre_to).append("\x16\x47").append(post);
|
||||
std::string resp;
|
||||
resp.assign(pre_fm);
|
||||
if (waitFOR(8, "get break in")) {
|
||||
size_t p = replystr.rfind(resp);
|
||||
if (p != string::npos) {
|
||||
progStatus.break_in = replystr[p+6];
|
||||
if (progStatus.break_in == 0) break_in_label("qsk");
|
||||
else if (progStatus.break_in == 1) break_in_label("SEMI");
|
||||
else break_in_label("FULL");
|
||||
}
|
||||
}
|
||||
get_trace(2, "get_break_in()", hexstr(replystr).c_str());
|
||||
return progStatus.break_in;
|
||||
}
|
||||
|
||||
void RIG_IC7300::get_cw_qsk_min_max_step(double &min, double &max, double &step)
|
||||
{
|
||||
min = 2.0; max = 13.0; step = 0.1;
|
||||
|
|
|
|||
|
|
@ -1285,7 +1285,7 @@ void RIG_IC756PRO::set_cw_wpm()
|
|||
waitFB("SET cw wpm");
|
||||
}
|
||||
|
||||
void RIG_IC756PRO::enable_break_in()
|
||||
void RIG_IC756PRO::set_break_in()
|
||||
{
|
||||
cmd.assign(pre_to).append("\x16\x47");
|
||||
|
||||
|
|
@ -1298,6 +1298,23 @@ void RIG_IC756PRO::enable_break_in()
|
|||
waitFB("SET break-in");
|
||||
}
|
||||
|
||||
int RIG_IC756PRO::get_break_in()
|
||||
{
|
||||
cmd.assign(pre_to).append("\x16\x47").append(post);
|
||||
std::string resp;
|
||||
resp.assign(pre_fm);
|
||||
if (waitFOR(8, "get break in")) {
|
||||
size_t p = replystr.rfind(resp);
|
||||
if (p != string::npos) {
|
||||
progStatus.break_in = replystr[p+6];
|
||||
if (progStatus.break_in == 0) break_in_label("qsk");
|
||||
else break_in_label("QSK ON");
|
||||
}
|
||||
}
|
||||
get_trace(2, "get_break_in()", hexstr(replystr).c_str());
|
||||
return progStatus.break_in;
|
||||
}
|
||||
|
||||
void RIG_IC756PRO::get_cw_qsk_min_max_step(double &min, double &max, double &step)
|
||||
{
|
||||
min = 2.0; max = 13.0; step = 0.1;
|
||||
|
|
|
|||
|
|
@ -1116,7 +1116,7 @@ void RIG_IC7610::set_cw_wpm()
|
|||
set_trace(2, "set_cw_wpm() ", str2hex(replystr.c_str(), replystr.length()));
|
||||
}
|
||||
|
||||
void RIG_IC7610::enable_break_in()
|
||||
void RIG_IC7610::set_break_in()
|
||||
{
|
||||
// 16 47 00 break-in off
|
||||
// 16 47 01 break-in semi
|
||||
|
|
@ -1135,6 +1135,24 @@ void RIG_IC7610::enable_break_in()
|
|||
set_trace(2, "set_break_in() ", str2hex(replystr.c_str(), replystr.length()));
|
||||
}
|
||||
|
||||
int RIG_IC7610::get_break_in()
|
||||
{
|
||||
cmd.assign(pre_to).append("\x16\x47").append(post);
|
||||
std::string resp;
|
||||
resp.assign(pre_fm);
|
||||
if (waitFOR(8, "get break in")) {
|
||||
size_t p = replystr.rfind(resp);
|
||||
if (p != string::npos) {
|
||||
progStatus.break_in = replystr[p+6];
|
||||
if (progStatus.break_in == 0) break_in_label("qsk");
|
||||
else if (progStatus.break_in == 1) break_in_label("SEMI");
|
||||
else break_in_label("FULL");
|
||||
}
|
||||
}
|
||||
return progStatus.break_in;
|
||||
}
|
||||
|
||||
|
||||
void RIG_IC7610::get_cw_qsk_min_max_step(double &min, double &max, double &step)
|
||||
{
|
||||
min = 2.0; max = 13.0; step = 0.1;
|
||||
|
|
|
|||
|
|
@ -296,3 +296,8 @@ int RIG_ICOM::get_tune()
|
|||
return (tune_ = val);
|
||||
}
|
||||
|
||||
std::string RIG_ICOM::hexstr(std::string s)
|
||||
{
|
||||
return str2hex(s.c_str(), s.length());
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -120,6 +120,7 @@ status progStatus = {
|
|||
1, // poll_compression;
|
||||
1, // poll_tuner;
|
||||
1, // poll_ptt;
|
||||
4, // poll_break_in;
|
||||
4, // int poll_all;
|
||||
|
||||
-1, // int iBW_A;
|
||||
|
|
@ -162,7 +163,7 @@ status progStatus = {
|
|||
false, // bool spot_onoff;
|
||||
700, // int cw_spot_tone;
|
||||
false, // bool enable_keyer;
|
||||
0, // bool break_in;
|
||||
0, // int break_in;
|
||||
15, // double cw_qsk;
|
||||
200, // double cw_delay;
|
||||
|
||||
|
|
@ -577,6 +578,7 @@ void status::saveLastState()
|
|||
spref.set("poll_compression", poll_compression);
|
||||
spref.set("poll_tuner", poll_tuner);
|
||||
spref.set("poll_ptt", poll_ptt);
|
||||
spref.set("poll_break_in", poll_break_in);
|
||||
spref.set("poll_all", poll_all);
|
||||
|
||||
spref.set("bw_A", iBW_A);
|
||||
|
|
@ -1123,6 +1125,7 @@ bool status::loadXcvrState(string xcvr)
|
|||
spref.get("poll_compression", poll_compression, poll_compression);
|
||||
spref.get("poll_tuner", poll_tuner, poll_tuner);
|
||||
spref.get("poll_ptt", poll_ptt, poll_ptt);
|
||||
spref.get("poll_break_in", poll_break_in, poll_break_in);
|
||||
spref.get("poll_all", poll_all, poll_all);
|
||||
|
||||
spref.get("bw_A", iBW_A, iBW_A);
|
||||
|
|
@ -1264,7 +1267,7 @@ bool status::loadXcvrState(string xcvr)
|
|||
spref.get("cw_qsk", cw_qsk, cw_qsk);
|
||||
spref.get("(cw_delay", cw_delay, cw_delay);
|
||||
if (spref.get("enable_keyer", i, i)) enable_keyer = i;
|
||||
if (spref.get("break_in", i, i)) break_in = i;
|
||||
if (spref.get("break_in", break_in, break_in));
|
||||
if (spref.get("vox_onoff", i, i)) vox_onoff = i;
|
||||
spref.get("vox_gain", vox_gain, vox_gain);
|
||||
spref.get("vox_anti", vox_anti, vox_anti);
|
||||
|
|
@ -1867,6 +1870,7 @@ string status::info()
|
|||
info << "poll_noise : " << poll_noise << "\n";
|
||||
info << "poll_nr : " << poll_nr << "\n";
|
||||
info << "poll_ptt : " << poll_ptt << "\n";
|
||||
info << "poll_break_in : " << poll_break_in << "\n";
|
||||
info << "poll_all : " << poll_all << "\n";
|
||||
info << "\n";
|
||||
info << "freq_A : " << freq_A << "\n";
|
||||
|
|
|
|||
|
|
@ -1068,6 +1068,12 @@ void check_ptt()
|
|||
}
|
||||
}
|
||||
|
||||
void check_break_in()
|
||||
{
|
||||
if (selrig->has_cw_break_in)
|
||||
selrig->get_break_in();
|
||||
}
|
||||
|
||||
struct POLL_PAIR {
|
||||
int *poll;
|
||||
void (*pollfunc)();
|
||||
|
|
@ -1094,6 +1100,7 @@ POLL_PAIR RX_poll_pairs[] = {
|
|||
{&progStatus.poll_noise, read_noise},
|
||||
{&progStatus.poll_compression, read_compression},
|
||||
{&progStatus.poll_ptt, check_ptt},
|
||||
{&progStatus.poll_break_in, check_break_in},
|
||||
{NULL, NULL}
|
||||
};
|
||||
|
||||
|
|
@ -5545,6 +5552,12 @@ void set_init_compression_control()
|
|||
}
|
||||
}
|
||||
|
||||
void set_init_break_in()
|
||||
{
|
||||
if (!selrig->has_cw_break_in) return;
|
||||
selrig->get_break_in();
|
||||
}
|
||||
|
||||
void init_special_controls()
|
||||
{
|
||||
if (selrig->has_special)
|
||||
|
|
@ -5691,13 +5704,13 @@ void init_VFOs()
|
|||
selrig->set_split(0); // initialization set split call
|
||||
}
|
||||
|
||||
void init_IC7300_special()
|
||||
{
|
||||
if (selrig->name_ == rig_IC7300.name_) {
|
||||
selrig->enable_break_in();
|
||||
redrawAGC();
|
||||
}
|
||||
}
|
||||
//void init_IC7300_special()
|
||||
//{
|
||||
// if (selrig->name_ == rig_IC7300.name_) {
|
||||
// selrig->set_break_in();
|
||||
// redrawAGC();
|
||||
// }
|
||||
//}
|
||||
|
||||
void init_TS990_special()
|
||||
{
|
||||
|
|
@ -5832,6 +5845,7 @@ void initRig()
|
|||
set_init_auto_notch();
|
||||
set_init_notch_control();
|
||||
set_init_compression_control();
|
||||
set_init_break_in();
|
||||
|
||||
initTabs();
|
||||
buildlist();
|
||||
|
|
@ -5842,7 +5856,7 @@ void initRig()
|
|||
|
||||
selrig->post_initialize();
|
||||
|
||||
init_IC7300_special();
|
||||
// init_IC7300_special();
|
||||
init_TS990_special();
|
||||
init_K3_KX3_special();
|
||||
|
||||
|
|
@ -6426,11 +6440,11 @@ void cb_enable_keyer()
|
|||
selrig->enable_keyer();
|
||||
}
|
||||
|
||||
void cb_enable_break_in()
|
||||
void cb_set_break_in()
|
||||
{
|
||||
guard_lock serial_lock(&mutex_serial);
|
||||
trace(1, "cb_enable_break_in()");
|
||||
selrig->enable_break_in();
|
||||
trace(1, "cb_set_break_in()");
|
||||
selrig->set_break_in();
|
||||
}
|
||||
|
||||
void cb_cw_weight()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue