Welcome to the new FlexRadio Community! Please review the new Community Rules and other important new Community information on the Message Board.
If you are having a problem, please refer to the product documentation or check the Help Center for known solutions.
Need technical support from FlexRadio? It's as simple as Creating a HelpDesk ticket.

Do I need to send keep alive to use the API

Member ✭✭
edited February 2020 in SmartSDR API

Maybe this is a **** question I have read cover to cover several times the fine book API Primer by G3WGV. I am having a connection issue and want to make sure I am not missing something. In the Radio.cs there is a routine that can be called by Send Command("keep alive enable") is this something that I need to send to the radio on a regular basis so that it does not ignore my connection once I am connected?

Excuse my ignorance but I am dealing with some in consistencies after I connect regarding sending commands to the radio. It is either due to a firewall issue or the radio no longer wishing to talk to me. I am leaning to a firewall issue since as long as I run the application within the IDE there is no issue but if I try to run it stand alone not within the IDE it works sometimes and sometimes it does not work.

I have no issue getting the discovery packets and decoding them, parsing the info then connecting to the radio using that information within the IDE however outside the IDE I can obtain the discovery packets, get the information from those then about every other time I can establish a connection with the radio successfully while within the IDE it connects everytime.

I am using Win 7 and turning the firewall off has not seemed to have any effect.

I remembered seeing keep alive and was thinking that maybe I need to generate this at a specific interval to maintain the connection.

Thanks in advance.


Welcome!

It looks like you're new here. Sign in or register to get started.

Answers

  • Member ✭✭
    edited November 2018
    No, you don't need to send any sort of keep-alive to keep the TCP connection going.

    There is a ping command (no parameters), which you can use to check latency and, if you are on an unreliable link (perhaps a WAN) then you might use the ping to detect that the radio has gone away (as opposed to simply disconnected, which will create a TCP/IP event). Any other command would have the same effect though, so I am not sure what benefit ping brings to the API.

    I coded the option to ping the radio into my API library after 20s of inactivity. I find that I do not use it in practice.

    73, John, G3WGV


  • Member ✭✭
    edited June 2018
    Thanks I have other issues then.
  • Member
    edited February 2020
    Wayne,

    If you send the Radio a "keepalive enable" command (note that "keepalive" is one word) then you must send a "ping" command periodically (every second or so) otherwise the Radio will timeout the connection.

    If you don't send the "keepalive enable" then you do not need to send the "ping" commands.

    I see that you referenced the API Primer by G3WGV. If I recall correctly, G3WGV coded a "tester" for the Flex API that runs in Windows. You might want to reach out to him to obtain a copy. The "tester" that I built (unfortunately for you, only runs on the Mac) has been very helpful to me in learning more about the API.
  • Member ✭✭
    edited May 2018
    Ah yes, Doug, I had it in the back of my mind that there was some sort of keepalive option but I don't think Wayne has set that. Thanks for the reminder. Wayne: see here for information.

    As is the way of these things the tester to which you refer has fallen out of use/maintenance since I got my API library working but I do still have the code and it would not be a big job to update it. The source code might be useful too, although it's written in Delphi, which is perhaps not as mainstream as it deserves to be.
  • Member ✭✭✭
    edited May 2018
    Hi Doug, is it possible to get a copy of your Mac API “tester” for the Flex? My email is available on QRZ. Thanks!
  • Member ✭✭
    edited June 2018
    No keep alive being used. Found my issue was misplacement of a subroutine interferring with the packet processing I was doing

Leave a Comment