Your patch does allow my to connect to HRD now..

But I think I found a new problem.  It looks like HRD cannot handle two
clients on port 7809 simultaneously.

I captured the network traffic and saw a "get frequencies" in the middle of
the setup going on and it came from HRD Logbook.  WSJT-X them times out
right after it.

This may explain why WSJTX 1.3 started failing on me too.  I recently
started keeping HRD Logbook running for DM780 (though I use Log4OM as my
primary -- DM780 won't talk directly to Log4OM)

So I shut down HRD logbook and all appears well now.  At least I've been
running for several minutes without losing rig control.

So this is another bug I'll have to report to HRD.  It should be able to
handle numerous clients at once.

It looks kind of like the "get frequencies" stomped on the return packet for
WSJT-X's "get radio"

 

 

This trace log

Sun Aug 31 11:07:20 2014
GMT(D:\JTSDK-QT\src\wsjtx\HRDTransceiver.cpp:779)Debug:
HRDTransceiver::send_command( "get id" ): -> "Ham Radio Deluxe"

Sun Aug 31 11:07:20 2014
GMT(D:\JTSDK-QT\src\wsjtx\HRDTransceiver.cpp:155)Debug: "Ham Radio Deluxe"

Sun Aug 31 11:07:20 2014
GMT(D:\JTSDK-QT\src\wsjtx\HRDTransceiver.cpp:722)Debug:
HRDTransceiver::string( "get version" )

Sun Aug 31 11:07:20 2014
GMT(D:\JTSDK-QT\src\wsjtx\HRDTransceiver.cpp:752)Debug:
HRDTransceiver::send_command: reply byte count: 54

Sun Aug 31 11:07:20 2014
GMT(D:\JTSDK-QT\src\wsjtx\HRDTransceiver.cpp:779)Debug:
HRDTransceiver::send_command( "get version" ): -> "v6.2.71.286 b286"

Sun Aug 31 11:07:20 2014
GMT(D:\JTSDK-QT\src\wsjtx\HRDTransceiver.cpp:156)Debug: "v6.2.71.286 b286"

Sun Aug 31 11:07:20 2014
GMT(D:\JTSDK-QT\src\wsjtx\HRDTransceiver.cpp:722)Debug:
HRDTransceiver::string( "get radios" )

Sun Aug 31 11:07:21 2014
GMT(D:\JTSDK-QT\src\wsjtx\HRDTransceiver.cpp:752)Debug:
HRDTransceiver::send_command: reply byte count: 68

Sun Aug 31 11:07:21 2014
GMT(D:\JTSDK-QT\src\wsjtx\HRDTransceiver.cpp:779)Debug:
HRDTransceiver::send_command( "get radios" ): -> "721:TT-OMNI VII (Radio)"

Sun Aug 31 11:07:21 2014
GMT(D:\JTSDK-QT\src\wsjtx\HRDTransceiver.cpp:176)Debug: radios:

Sun Aug 31 11:07:21 2014
GMT(D:\JTSDK-QT\src\wsjtx\HRDTransceiver.cpp:179)Debug: [ 721 ]  "TT-OMNI
VII (Radio)"

Sun Aug 31 11:07:21 2014
GMT(D:\JTSDK-QT\src\wsjtx\HRDTransceiver.cpp:722)Debug:
HRDTransceiver::string( "get radio" )

Sun Aug 31 11:07:21 2014
GMT(D:\JTSDK-QT\src\wsjtx\HRDTransceiver.cpp:752)Debug:
HRDTransceiver::send_command: reply byte count: 60

Sun Aug 31 11:07:21 2014
GMT(D:\JTSDK-QT\src\wsjtx\HRDTransceiver.cpp:779)Debug:
HRDTransceiver::send_command( "get radio" ): -> "TT-OMNI VII (Radio)"

Sun Aug 31 11:07:21 2014
GMT(D:\JTSDK-QT\src\wsjtx\HRDTransceiver.cpp:722)Debug:
HRDTransceiver::string( "get radio" )

Sun Aug 31 11:07:26 2014
GMT(D:\JTSDK-QT\src\wsjtx\HRDTransceiver.cpp:742)Debug:
HRDTransceiver::send_command( "get radio" )

Sun Aug 31 11:07:26 2014
GMT(D:\JTSDK-QT\src\wsjtx\HRDTransceiver.cpp:743)Debug:
HRDTransceiver::send_command failed to reply "Network operation timed out"

Sun Aug 31 11:07:26 2014
GMT(D:\JTSDK-QT\src\wsjtx\Configuration.cpp:1971)Debug:
Configuration::handle_transceiver_failure: reason: "Ham Radio Deluxe failed
to reply to command

Network operation timed out

 

01:07:21.948881 IP 127.0.0.1.7809 > 127.0.0.1.57817: P 137:205(68) ack 149
win 127

                0x0000:  4500 006c 2c46 4000 8006 0000 7f00 0001
E..l,F@.........

                0x0010:  7f00 0001 1e81 e1d9 9ee2 d780 30b8 39ef
............0.9.

                0x0020:  5018 007f 441f 0000 4400 0000 cdab 3412
P...D...D.....4.

                0x0030:  3412 cdab 0000 0000 3700 3200 3100 3a00
4.......7.2.1.:.

                0x0040:  5400 5400 2d00 4f00 4d00 4e00 4900 2000
T.T.-.O.M.N.I...

                0x0050:  5600 4900 4900 2000 2800 5200 6100 6400
V.I.I...(.R.a.d.

                0x0060:  6900 6f00 2900 0000 0000 0000
i.o.).......

01:07:21.948881 IP 127.0.0.1.57817 > 127.0.0.1.7809: . ack 205 win 31

                0x0000:  4500 0028 2c47 4000 8006 0000 7f00 0001
E..(,G@.........

                0x0010:  7f00 0001 e1d9 1e81 30b8 39ef 9ee2 d7c4
........0.9.....

                0x0020:  5010 001f d009 0000                      P.......

01:07:21.949881 IP 127.0.0.1.57817 > 127.0.0.1.7809: P 149:185(36) ack 205
win 31

                0x0000:  4500 004c 2c48 4000 8006 0000 7f00 0001
E..L,H@.........

                0x0010:  7f00 0001 e1d9 1e81 30b8 39ef 9ee2 d7c4
........0.9.....

                0x0020:  5018 001f 395e 0000 2400 0000 cdab 3412
P...9^..$.....4.

                0x0030:  3412 cdab 0000 0000 6700 6500 7400 2000
4.......g.e.t...

                0x0040:  7200 6100 6400 6900 6f00 0000
r.a.d.i.o...

01:07:21.949881 IP 127.0.0.1.7809 > 127.0.0.1.57817: . ack 185 win 127

                0x0000:  4500 0028 2c49 4000 8006 0000 7f00 0001
E..(,I@.........

                0x0010:  7f00 0001 1e81 e1d9 9ee2 d7c4 30b8 3a13
............0.:.

                0x0020:  5010 007f cf85 0000                      P.......

01:07:21.949881 IP 127.0.0.1.52564 > 127.0.0.1.7809: P 1025:1089(64) ack 918
win 124

                0x0000:  4500 0068 2c4a 4000 8006 0000 7f00 0001
E..h,J@.........

                0x0010:  7f00 0001 cd54 1e81 5bd7 7e74 1498 26dc
.....T..[.~t..&.

                0x0020:  5018 007c fff4 0000 4000 0000 cdab 3412
P..|[email protected].

                0x0030:  3412 cdab 0000 0000 5b00 3700 3200 3100
4.......[.7.2.1.

                0x0040:  5d00 2000 6700 6500 7400 2000 6600 7200
]...g.e.t...f.r.

                0x0050:  6500 7100 7500 6500 6e00 6300 6900 6500
e.q.u.e.n.c.i.e.

                0x0060:  7300 0000 0000 0000                      s.......

01:07:21.949881 IP 127.0.0.1.7809 > 127.0.0.1.52564: . ack 1089 win 122

                0x0000:  4500 0028 2c4b 4000 8006 0000 7f00 0001
E..(,K@.........

                0x0010:  7f00 0001 1e81 cd54 1498 26dc 5bd7 7eb4
.......T..&.[.~.

                0x0020:  5010 007a af82 0000                      P..z....

01:07:21.949881 IP 127.0.0.1.7809 > 127.0.0.1.57817: P 205:265(60) ack 185
win 127

                0x0000:  4500 0064 2c4c 4000 8006 0000 7f00 0001
E..d,L@.........

                0x0010:  7f00 0001 1e81 e1d9 9ee2 d7c4 30b8 3a13
............0.:.

                0x0020:  5018 007f 1fc0 0000 3c00 0000 cdab 3412
P.......<.....4.

                0x0030:  3412 cdab 0000 0000 5400 5400 2d00 4f00
4.......T.T.-.O.

                0x0040:  4d00 4e00 4900 2000 5600 4900 4900 2000
M.N.I...V.I.I...

                0x0050:  2800 5200 6100 6400 6900 6f00 2900 0000
(.R.a.d.i.o.)...

                0x0060:  0000 0000                                ....

01:07:21.949881 IP 127.0.0.1.57817 > 127.0.0.1.7809: . ack 265 win 30

                0x0000:  4500 0028 2c4d 4000 8006 0000 7f00 0001
E..(,M@.........

                0x0010:  7f00 0001 e1d9 1e81 30b8 3a13 9ee2 d800
........0.:.....

                0x0020:  5010 001e cfaa 0000                      P.......

01:07:21.950882 IP 127.0.0.1.57817 > 127.0.0.1.7809: P 185:221(36) ack 265
win 30

                0x0000:  4500 004c 2c4e 4000 8006 0000 7f00 0001
E..L,N@.........

                0x0010:  7f00 0001 e1d9 1e81 30b8 3a13 9ee2 d800
........0.:.....

                0x0020:  5018 001e 38ff 0000 2400 0000 cdab 3412
P...8...$.....4.

                0x0030:  3412 cdab 0000 0000 6700 6500 7400 2000
4.......g.e.t...

                0x0040:  7200 6100 6400 6900 6f00 0000
r.a.d.i.o...

01:07:21.950882 IP 127.0.0.1.7809 > 127.0.0.1.57817: . ack 221 win 127

                0x0000:  4500 0028 2c4f 4000 8006 0000 7f00 0001
E..(,O@.........

                0x0010:  7f00 0001 1e81 e1d9 9ee2 d800 30b8 3a37
............0.:7

                0x0020:  5010 007f cf25 0000                      P....%..

01:07:24.098096 IP 127.0.0.1.7809 > 127.0.0.1.52564: P 918:972(54) ack 1089
win 122

                0x0000:  4500 005e 2c50 4000 8006 0000 7f00 0001
E..^,P@.........

                0x0010:  7f00 0001 1e81 cd54 1498 26dc 5bd7 7eb4
.......T..&.[.~.

                0x0020:  5018 007a 50c5 0000 3600 0000 cdab 3412
P..zP...6.....4.

                0x0030:  3412 cdab 0000 0000 3700 3000 3700 3600
4.......7.0.7.6.

                0x0040:  3000 3000 3000 2d00 3100 3800 3100 3400
0.0.0.-.1.8.1.4.

                0x0050:  3600 3000 3000 3000 0000 0000 0000
6.0.0.0.......

 

From: Bill Somerville [mailto:[email protected]] 
Sent: Saturday, August 30, 2014 3:11 PM
To: [email protected]
Subject: Re: [wsjt-devel] TenTec Omni HRD TCP fix

 

On 29/08/2014 19:04, Michael Black wrote:
Hi Mike,

Yeah.just wanted to let you know what I did.

HRD is going to fix this for the TenTec Omni VII.  I had to go a few rounds
with them as they thought it was WSJT-X's fault.


You didn't say why you needed to set a default mode of USB. As far as I can
see the HRD interface for the Omni VII includes mode setting and this
shouldn't be necessary. If mode setting doesn't work correctly; you should
be able to set the WSJT-X configure setting for "Mode" to "None" and it will
assume you have set the mode manually on your transceiver.

I have committed a change (revision 4235) that will not fail on any missing
HRD feature that we require. This shoudl allow you to control your Omni VII
via HRD at least for single frequency non split operation with some other
method than CAT for PTT (i.e. VOX or via a separate COM port control line.)

Please be aware that this will allow you to set split mode operating in
WSJT-X but it will not work as expected because WSJT-X will adjust TX tones
as if the TX frequency were different from the RX frequency. This would mean
you would not be netted with any QSO partner. Until HRD provides a way of
setting split mode and the frequency of the TX VFO this is the best we can
do and split mode working cannot be used with the Omni VII via HRD.

If you can build this version and test on your setup, it would be very much
appreciated.



 

Mike W9MDB

73
Bill
G4WJS.



 

 

From: Bill Somerville [mailto:[email protected]] 
Sent: Friday, August 29, 2014 12:24 PM
To: [email protected]
Subject: Re: [wsjt-devel] TenTec Omni HRD TCP fix

 

On 23/08/2014 16:06, Michael Black wrote:
Hi Mike,

sorry for the delay in replying, I am now back on line.

I got the TCP working for the TenTec Omni VII on HRD basically just by
ignoring the pull-down menu error.

Diff is attached and in-line here too.

OK, but i have a problem with this approach since the original failure is
designed to flag that the code needs changes to talk to HRD for a new rig
that has unrecognised controls in HRD. The Omni HRD simply doesn't meet the
minimum requirements for WSJT-X as currently implemented. I had not realised
that there were HRD rig integrations that were so primitive :( I need to
address this by reducing the minimum requirements to that level. This will
mean that some WSJT-X configuration settings cannot work such as split
operation, BTW this is already the case for mode setting although I'm not
sure it is correctly implemented just yet.




 

HRD has a bug report from me which, hopefully, they will eventually fix to
give those parameters.  HRD doesn't even show buttons for mode, split, or
PTT for the Omni VII which is their problem.

OK, it will be interesting to see how responsive they are.




 

I also made a small improvement to the error messages since what was there
was lacking specificity on where the failure was occurring.

This is a good improvement although, if you don't mind, I will implement
with more user friendly text since referring to internal implementation
details about drop downs and buttons may not be helpful to users.




 

What I did was default the mode to USB if there is no dropdown available for
mode select.

I'm not sure why you needed to do this, mode control appears to be available
for the TenTec Omni using HRD.




 

Hopefully that's the right thing to do here.

I need to revisit mode setting in HRD, the intent was to allow control of
rigs with no CAT mode control. I see that I have broken that by blindly
setting mode in the initialization. I will fix that in a more generic way.

Thanks for looking at this Mike, it has revealed several issues which I am
working  on now.




 

Mike W9MDB

73
Bill
G4WJS.




 

Index: HRDTransceiver.cpp

===================================================================

--- HRDTransceiver.cpp (revision 4231)

+++ HRDTransceiver.cpp              (working copy)

@@ -214,7 +214,7 @@

   vfo_A_button_ = find_button (QRegExp ("^(VFO~A|Main)$"));

   vfo_B_button_ = find_button (QRegExp ("^(VFO~B|Sub)$"));

   vfo_toggle_button_ = find_button (QRegExp ("^(A~/~B)$"));

-  Q_ASSERT (vfo_toggle_button_ >= 0 || (vfo_A_button_ >= 0 && vfo_B_button_
>=0));

+  //Q_ASSERT (vfo_toggle_button_ >= 0 || (vfo_A_button_ >= 0 &&
vfo_B_button_ >=0));

  

   split_mode_button_ = find_button (QRegExp ("^(Spl~On|Spl_On|Split)$"));

   split_off_button_ = find_button (QRegExp ("^(Spl~Off|Spl_Off)$"));

@@ -266,11 +266,25 @@

     {

       // put the rig into a known state

       auto f = send_command ("get frequency").toUInt ();

-      auto m = lookup_mode (get_dropdown (mode_A_dropdown_), mode_A_map_);

+      auto m = USB; // default to USB if no mode select available

+      try 

+      {

+        m = lookup_mode (get_dropdown (mode_A_dropdown_), mode_A_map_);

+      }

+      catch (error const&)

+      { // defaults to m=USB

+      }

       set_button (vfo_B_button_ >= 0 ? vfo_B_button_ : vfo_toggle_button_);

       auto fo = send_command ("get frequency").toUInt ();

       update_other_frequency (fo);

-      auto mo = lookup_mode (get_dropdown (mode_A_dropdown_), mode_A_map_);

+      auto mo = USB;

+      try

+      {

+        mo = lookup_mode (get_dropdown (mode_A_dropdown_), mode_A_map_);

+      }

+      catch (error const&)

+      { // defaults to mo=USB

+      }

       set_button (vfo_A_button_ >= 0 ? vfo_A_button_ : vfo_toggle_button_);

       if (f != fo || m != mo)

         {

@@ -281,7 +295,14 @@

       else

         {

           update_rx_frequency (send_command ("get frequency").toUInt ());

-          update_mode (lookup_mode (get_dropdown (mode_A_dropdown_),
mode_A_map_));

+          try 

+          {

+            update_mode (lookup_mode (get_dropdown (mode_A_dropdown_),
mode_A_map_));

+          }

+          catch (error const&)

+          {

+            // nothing to do if there is no mode select

+          }

         }

     }

@@ -386,7 +407,7 @@

      qDebug () << "HRDTransceiver::get_dropdown bad response";

#endif

-      throw error {tr ("Ham Radio Deluxe didn't respond as expected")};

+      throw error {tr ("Ham Radio Deluxe didn't respond as expected.
get_dropdown failed")};

     }

   Q_ASSERT (reply.left (colon_index).trimmed () == dd_name);

@@ -571,7 +592,7 @@

       qDebug () << "HRDTransceiver::is_button_checked bad response";

#endif

-      throw error {tr ("Ham Radio Deluxe didn't respond as expected")};

+      throw error {tr ("Ham Radio Deluxe didn't respond as expected.
is_button_checked failed")};

     }

   return "1" == reply;

}

@@ -627,8 +648,15 @@

     {

       update_rx_frequency (send_command ("get frequency", quiet).toUInt
());

     }

-

-  update_mode (lookup_mode (get_dropdown (mode_A_dropdown_, quiet),
mode_A_map_));

+  try {

+             update_mode (lookup_mode (get_dropdown (mode_A_dropdown_,
quiet), mode_A_map_));

+  }

+  catch (error const&)

+  {

+#if WSJT_TRACE_CAT

+      qDebug () << "HRDTransceiver::poll failed:" << hrd_->errorString ();

+#endif

+  }

}

 QString HRDTransceiver::send_command (QString const& cmd, bool no_debug,
bool prepend_context, bool recurse)

@@ -765,6 +793,6 @@

       qDebug () << "HRDTransceiver::send_simple_command unexpected
response";

#endif

-      throw error {tr ("Ham Radio Deluxe didn't respond as expected")};

+      throw error {tr ("Ham Radio Deluxe didn't respond as expected.
send_simple_command failed")};

     }

}

 







----------------------------------------------------------------------------
--
Slashdot TV.  
Video for Nerds.  Stuff that matters.
http://tv.slashdot.org/







_______________________________________________
wsjt-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/wsjt-devel

 






----------------------------------------------------------------------------
--
Slashdot TV.  
Video for Nerds.  Stuff that matters.
http://tv.slashdot.org/






_______________________________________________
wsjt-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/wsjt-devel

 

------------------------------------------------------------------------------
Slashdot TV.  
Video for Nerds.  Stuff that matters.
http://tv.slashdot.org/
_______________________________________________
wsjt-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/wsjt-devel

Reply via email to