Send_morse rigctld works wrong

Hi OM.
Thank you for fine program.
I’m enjoying remote QSO.

But I have a problem.
Please help me.

Brief summary of problem (put in title as well):

send_morse rigctld works wrong.

Sending from logger program “VVV”,tone from a rig “??”. (“..–.. ..–..”)
Sending from logger program “CQ TEST”,tone from a rig “TEST”. (“- . … -”)

Radio Model:
IC-705

Connectivity (USB/Ethernet/Wifi/Other):
Wifi,Ethernet

Operating System:
Debian trixie

wfview version (press “About”):
2.11

Checked the wfview manual (Y/N):
Y

Checked the wfview FAQ (Y/N):
Y

Log upload:
https://termbin.com/mpgc

First of all, thank you for such a thorough bug report.

The issue seems to be that we are receiving invalid characters. It may be a bug in our system or it could be the logger program formatting the data incorrectly.

I’ll let @phil take a look.

—E
de W6EL

Hi Elliott
Thank you for reply.

I think logger sending format is correct.

A rigctld command “bVVV” was received

“bCQ TEST” was received. But to rig was “TEST”.

And I think older version worked fine…
(What version? forgotton.)

I wonder if this is some Unicode issue in our code.

Quite possibly, @Koji can you let me know what logging program you are using?

Hi Phil

I’m using NOT1MM.(v25.6.21)

de JG3LLB Koji

Thanks Koji, I will download it and do some testing.

Phil

Hi OM

I made patches for this issue and others.
I sent pull request #36 gitlab.

#36 also includes stop_morse(rigctld) issue,
and add sidetone (when operating on rigctld).

I’m very happy if you pull this request.

Thank you.

de JG3LLB Koji

Hi Koji.

Thanks for the MR. I have commented there as well, but in case you missed it. As we have made significant changes in our development branch, it is quite difficult for us to accept MRs on master right now, and they are unlikely to cleanly merge.

If you could resubmit your MR against the v2.20-dev branch, that is where all current work is taking place. As you have made changes to the xxxCommander classes, you will notice that there is now a yaesuCommander class that will also need the same modification.

73 Phil

Hi Phil.

Thank you for your response.

I rewrote MR(#38) and posted it.
I modified yaesucommander and kenwoodcommander but not tested.
(I’m happy if they work well.)
IC-705 in my room is working well.

73
de JG3LLB Koji

1 Like

Hello @phil @eliggett

Can you review rigctld: Fix sending cw and packet handlings (!42) · Merge requests · Elliott Liggett / wfview · GitLab ?

Kogji OM’s old patch made a bug with long command form.

after the short command patch, some hamlib application (such as QLog; GitHub - foldynl/QLog: Amateur radio logbook software · GitHub ) was broken to send CW message.

they request \\send_morse cq blah
but wfview uses end_morse cq blah for sending message

PS. actual short-cmd bug was related with not1mm not wfview.

This has been completely rewritten in the upcoming v3 release

1 Like

imho, v3 rigctld.cpp still can have similar issue or side effect.

I suggest to partially revert of short command handling fix:rigctld send_morse (9939a415) · Commits · Elliott Liggett / wfview · GitLab

actually, cutting first char cannot be a shot.
for example, when i send broken command like abcdefg\n, radio tx cw cdefg

imho, hamlib’s rigctld uses cmd [param…]\n format, we just need to check the first param not a first char.

and also I’m not sure commands[0].toLatin1() == commands_list[i].sstr) is correct.

and also, in my local testing, wfview cannot detect some short commands and that is why I change it to (uchar)commands[0].cell() == commands_list[i].sstr

I hope to see v3 (or v2 hotfix) soon :slight_smile:

imho, v3 rigctld.cpp still can have similar issue or side effect.

Can you show us where in v3 this problem is?

This is something that will be addressed before v3 is released, we have a compatibility table comparing ‘actual’ Hamlib rigctld with the wfview implementation, I will add the send_morse commands and do some more testing. The goal is to achieve feature parity (where possible) with the original implementation wfview/docs/RIGCTL_PROTOCOL_TESTS.md at v3-initial · wf-group/wfview · GitHub

1 Like

Can you show us where in v3 this problem is?

@eliggett

                if ((commands_list[i].flags & ARG_IN_LINE ) == ARG_IN_LINE && !longCommand)
                {
                    command[0].remove(0,1);
                    command.removeAll({});
                }
                else
                {
                    command.removeFirst(); // Remove the actual command so it only contains params
                }

imho, !longCommmand is not required.
if command should be \w+(\s\w)*\\n format, app just need removeFirst.

so, this full comparing is not required.
an original code was just use removeFirst for all cases, I think, it was correct.

it’s introduced to support not1mm’s buggy case. not1mm was resolved their bug at couple month ago.

samely,

        if (!longCommand && !commands.isEmpty() ){
            commands.remove(0,1);
            goto restart; // Need to restart loop without going to next command incase of compound command
        }

also i think, it’s also not need. when a received commands are correct, it’s already split with \n.

IDK, I’m correct or not, when an app receive wrong message which d defga\n.

an app detect this message is short command, and it’s not empty.
so return to removing first char case (when we revert first comparing)
imho, app would do e command in this case, or app spend meanless computing power to remove all char..
(it might not be actual bug, it might be related with my middle of works..)

            // Stop sending CW if a blank command is received.
            // If 2nd letter of fullcmd is space , send space.
            if ( fullcmd.mid(1,1) == ' ' )
            {
                queue->add(priorityImmediate, queueItem(func, QString(" "),false,0));
            }
            else
            {
                queue->add(priorityImmediate, queueItem(func, QString(),false,0));
            }
            break;

stop_morse was work well.
in my case, sometimes, it makes stucking between stop and next send commands.
it might be related queue handling.

also, idk, why it send space, so I just use second one for all cases.


we have a compatibility table comparing ‘actual’ Hamlib rigctld with the wfview implementation, I will add the send_morse commands and do some more testing. The goal is to achieve feature parity (where possible) with the original implementation

@phil that’s sounds great! I hope see v3 soon!

imho, you need additional testing which non-ascii command comparing such as 0xbb.
0xbb is short command version of \\stop_morse,
when I check the issue, app cannot detect this command correctly.

oh I just see github commit now.

I was referenced old code. sorry..

please ignore stop_morse was work well. block. it was fixed on this commit.