Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix startup if HAMLIB_KEYER selected and rig is off or disabled at start #416

Merged
merged 3 commits into from
Jan 7, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 9 additions & 3 deletions src/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -416,7 +416,7 @@ bool itumult = false; /* to add the ability of ITU zones to be multiplier */
char itustr[3];

bool nopacket = false; /* set if tlf is called with '-n' */
bool no_trx_control = false; /* set if tlf is called with '-r' */
bool trx_control_disabled = false; /* set if tlf is called with '-r' */
bool convert_cabrillo = false; /* set if the arg input is a cabrillo */

int bandweight_points[NBANDS] = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0};
Expand Down Expand Up @@ -468,7 +468,7 @@ static error_t parse_opt(int key, char *arg, struct argp_state *state) {
nopacket = true;
break;
case 'r':
no_trx_control = true; // disable radio control
trx_control_disabled = true; // disable radio control
break;
case 'i':
convert_cabrillo = true;
Expand Down Expand Up @@ -758,7 +758,7 @@ static int databases_load() {

static void hamlib_init() {

if (no_trx_control) {
if (trx_control_disabled) {
trx_control = false;
}

Expand All @@ -780,6 +780,7 @@ static void hamlib_init() {
exit(1);
}
trx_control = false;
trx_control_disabled = true;
showmsg("Disabling rig control!");
sleep(1);
}
Expand Down Expand Up @@ -872,6 +873,11 @@ static void keyer_init() {

if (cwkeyer == HAMLIB_KEYER) {
showmsg("CW-Keyer is Hamlib");
if (trx_control_disabled) {
showmsg("Radio control disabled - no keying!");
sleep(2);
return;
}
if (!trx_control) {
showmsg("Radio control is not activated!!");
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we now reach this message? I.e. trx_control_disabled==false and trx_control==false

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hmm, that state could only happen if you have RIGCONTROL disabled in logcfg.dat. Than having HAMLIB_KEYER activated seems to be an configuration error which is catched in the following if-statement. But I think that problem should be catched in parse_config() before.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Indeed. Then the second if ("Radio control is not activated") has to be kept, even if only this quite specific use case triggers it. I'd not bother adding any other check for it.

On the other hand it may be worth promoting the message of the first if to a warning by adding a sleep. Now this message just flashed for a split second unless using verbose mode. Unless of course if we rely on the previous question (if the rig was off) or assume the user knows what they they are doing (if started with -r option).

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good points. Give me a day or two to think about.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just added a 2 second delay (see commit below). should be enough to see a problem and restart with -v if needed.

sleep(1);
Expand Down