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.

SmartSDR TCP/IP API - Exaustive command list request

IW7DMH, Enzo
IW7DMH, Enzo Member ✭✭
As the wiki documentation is lacking of a lot of commands I am wondering if Flex software engineers could publish an exhaustive list of every command supported by the last software version (1.3.8).
I am not talking about command explanation, but only about the default Flex basic dictionary.
I am a bit tired of the sniffing practice and I think it would be more useful having at least the full command list.

Thank you very much.

73' Enzo
iw7dmh


Comments

  • Michael - OZ1MDF
    edited December 2016
    +1
  • Stu Phillips - K6TU
    Stu Phillips - K6TU Member ✭✭
    edited May 2020
    Simple answer.

    There isn't one and with the current workload at FlexRadio, I don't see one coming anytime soon.

    It is trivial to understand the API using WireShark - fire up SmartSDR, do something the affects the radio and you will see the command structure.  It is straight forward and intuitive.

    If you have any detailed questions, post them here and I'll be happy to help.

    Not an ideal situation, but its is what it is.
    Stu K6TU
  • Steve-N5AC
    Steve-N5AC Community Manager admin
    edited February 2017
    Periodically we go out and add more detail to the wiki -- I just did this about a month ago.  We know we're behind on getting all the docs in the wiki and will continue to add more as we have time.  The effort to go do what you're asking, provide a list of all commands and options, is close to the same work to update the wiki.  The hard part is pulling all the data out of the code.  Rather than start another thing for people to read for the API, we'll just continue to try to find time to update the wiki.
  • Michael - OZ1MDF
    edited December 2016
    I am quite happy to be hunting for information on the wiki.

    But on behalf of developers using "other" development-platforms, may I ask you this ..
    Will there "ever" be a *real* dynamic link library ?

    Quite a lot of us prefer to develop native unmanaged code, and having to wrap your managed dll with the overhead of .NET **** is a rather disgusting approach, - pardon my french :-)


  • Stu Phillips - K6TU
    Stu Phillips - K6TU Member ✭✭
    edited May 2020
    "real dynamic link library"?

    Oh, you must be using Windows .**** OS?  There is nothing stopping you writing your own code - its not hard - just takes time and effort.  FRS has to support where their market lies - and that, because of the will of the masses, is Windows.

    For everything else there is Mac OS X - priceless!
    Stu K6TU
  • Michael - OZ1MDF
    edited May 2020
    Yes, I am using Windows .. like a lot of other developers do. A lot of customers seem to demand that we produce our services using the MS platform .. Am I suppose to make an excuse for that ?

    The fact is that a native DLL is absolutely prefered over anything that is depending on a big hunk of buggy frameworking (CLX, .NET). Nuff said. And it seems odd that you would choose to (natively) only support a very narrow development-platform. I am not asking for a timeframe here, only the an indication as to the chance of a native DLL, or alternatively complete source so a translation could be done.

    Oh, and I do own a Mac .. and still I find more demand for development on the PC platform.
    Seems that 80% of all business, production, banking, investing, education and what not prefer
    the PC. Not everybody is an artist or arkitect :-)
  • Stu Phillips - K6TU
    Stu Phillips - K6TU Member ✭✭
    edited August 2016
    Write a replacement from scratch.  It really is not that difficult.  I know because I am the author of the Objective-C interface library to the radio.  

    Tedious?  Yes.
    Mundane? Painfully.
    Difficult? **** no!

    The real market for application development and use is mobile - and despite a bazillion dollars spent, Windows mobile is a joke.

    I understand your comment re Windows only too well...  but I have a choice what I do!

    I really do feel your pain!
    Stu K6TU

    PS: Here in Silicon Valley, developers for Apple iOS make about 2x the salary of the same experience and skill level as Windows programmers...  Android programmers about 1.5x.  

    PSS: Wait long enough and unappreciated skills become very valuable.  Try hiring a programmer to update your CICS application driving 3270 tubes! ;-)
  • Michael - OZ1MDF
    edited December 2016
    I appriciate your stance, I really do.

    I basically always had to work to pay rent, and jobs in my skill-segment seems to be demanding MS software for all kinds of businesses.

    If I could join you guys in Silicon Vally, I would give up any of my development habits and be quite happy with 1.0 x normal salary .. Just for the experience :-)

    But alas, I am a persisting kind of guy .. and I will get around this API-obstacle too.

    Thanks for your comment. Rather made my day :-)
  • IW7DMH, Enzo
    IW7DMH, Enzo Member ✭✭
    edited May 2020
    Well, my idea was not to distract developers and designers from their more important targets.
    I figured that, if someone has already written SSDR, somewhere there must be the complete commands list (I hope).
    I find it very difficult to follow the traffic using the method suggested by Steve (right click on tcp packets and click on "Follow TCP Stream") as, often, most packets are lost (the typical message is "[7865 bytes missing in capture file]C5059|ping").
    For example, I'm trying to understand what are the commands to change bandwidth filter, and also I would like to read the S-METER.
    Also, a hint on right filters to use in wireshark would be helpful.

  • Stu Phillips - K6TU
    Stu Phillips - K6TU Member ✭✭
    edited August 2016
    You will have to excuse my dry sense of humour (deliberate Brit mis-spelling)...

    You can take the boy out of Britain but you can't take the Brit out of the boy!

    Monty Python RULES!!!

    Stu K6TU (ex G8HQA, DA4BM, N6TTO........)

    PS: Sorry, have to go feed my Norwegian Blue Parrot some spam ;-)
  • Stu Phillips - K6TU
    Stu Phillips - K6TU Member ✭✭
    edited August 2016
    Try setting "tcp.port == 4992" - then I think you can add Follow Conversation and it will show you both sides of the TCP stream.

    To read the S-meter, you have to use the VITA-49 packet streams which are sent via UDP.

    Stu K6TU
  • Michael - OZ1MDF
    edited December 2016
    copy con:  wiki:  on this stuff ! :)

    Speaking about WireShark .. Do you know http://www.tamos.com/products/commview/ ?

  • IW7DMH, Enzo
    IW7DMH, Enzo Member ✭✭
    edited December 2016
    I have another question about how to get the vfo frequency. I can't get in any way the slice status message.
    Each time I send a command like "C12|slice t 0 14.035" I get only "radio status" and "interlock status" messages.

    Also it is not clear this sentence in wiki pages: "... To find out about objects, the client must have either subscribed to status for the object ot controlled the object first (in which case an automatic subscription is entered on the client's behalf) ..."
    How my application can subscribe to status for the slice? I am using a slice that it is already created by  SSDR and not by my application.
  • Stu Phillips - K6TU
    Stu Phillips - K6TU Member ✭✭
    edited August 2016
    Enzo,

    To see what the slice is doing and to get status commands back from the radio you need to subscribe to slice status changes using "sub slice all" - then, when you or some other client changes any attribute of the slice, you will see a status message of the change.

    You can tell whether the status message is a result of your own client by looking at the status handle at the beginning of the message.

    Stu K6TU


  • IW7DMH, Enzo
    IW7DMH, Enzo Member ✭✭
    edited December 2016
    Thank a lot Stu.
    Reading better the wiki pages, SUB is one of the already documented commands.
    I should have read the wiki better, but anyway, now my Flex studies go on :)

    Thank you very much for your help.

    73' Enzo
    iw7dmh

  • Stu Phillips - K6TU
    Stu Phillips - K6TU Member ✭✭
    edited August 2016
    Looks like an expensive clone of WireShark.  Nice looking product but for most things, WS is plenty useful!

    Stu K6TU
  • Vern
    Vern Member
    edited December 2014
    If I can get my hands on a VITA-49 packet can I perform parsing of it just as I can with the TCP-IP packets? Example Command:  'C1|sub slice all' ?
    Make sense?

    Vern
  • Stu Phillips - K6TU
    Stu Phillips - K6TU Member ✭✭
    edited August 2016
    Short answer - no.  The VITA-49 packets have a VITA-49 header and then payloads in various forms dependent on the data type being streamed.  All streams arrive via UDP and the VITA header describes the stream type.

    Current stream types are Meters, Pan and waterfall data, DAX streams, DAX IQ streams OPUS encoded audio data.

    TO decode, you have to first analyze the VITA header, then process the data payload according to the stream type.

    I am working on a document that describes this process but it is not yet finished.

    Stu K6TU
  • Vern
    Vern Member
    edited December 2014
    Does my 6500/SmartSDR, right now, generate VITA-49 packets and on which port. TU for the info.
  • Stu Phillips - K6TU
    Stu Phillips - K6TU Member ✭✭
    edited August 2016
    yes it does - if you use Wireshark to observe the Ethernet traffic you will see all the VITA packets.  The UDP port depends on what the client has told the radio to use - its usually from 4991 up.

    This way multiple clients on your PC can process VITA streams including SSDR, CAT and DAX.

    Stu K6TU
  • Vern
    Vern Member
    edited December 2014
    What does the format of a VITA-49 packet look like for a given parameter(s) for the FLEXRadio?

     Vern

    image
  • IW7DMH, Enzo
    IW7DMH, Enzo Member ✭✭
    edited January 2017
    Hello,

    after the great suggestions that Stu gave me, I studied better the Flex TCP/IP command protocol using a telnet console.
    There is no doubt that the only way to get the entire state of the radio is to send commands that Stu described above (and in another post) immediately after obtaining the connection. ("sub tx all","sub pan all", and "sub slice all")
    The results of such commands are summarized in the pictures below. The values are referred to my Flex 6300. On a flex 6500 or 6700 the number of returned objects should be greater, but the number of related parameters should be the same.

    image
    image
    image

    About the commands to be sent, actually there is a fairly simple way to identify them all: with your preferred text editor you can search for the string "_radio.SendCommand" in the directory <path_to_flex_lib_archive>FlexLib_v1.3.9flexlib. As you can see, in that directory, there are lots of .cs files that logically identifies all the objects inside our Flex rigs. Each of them can send a set of specific commands to the radio, and these are commands we are looking for.
    Here is a printscreen of my text editor after the search completion.

    image

    I hope this can be helpful.

    73 'Enzo
    iw7dmh

  • James Whiteway
    edited January 2015
    Enzo, thanks for all the hard work! Things like this really do help.
    james
    WD5GWY

Leave a Comment

Rich Text Editor. To edit a paragraph's style, hit tab to get to the paragraph menu. From there you will be able to pick one style. Nothing defaults to paragraph. An inline formatting menu will show up when you select text. Hit tab to get into that menu. Some elements, such as rich link embeds, images, loading indicators, and error messages may get inserted into the editor. You may navigate to these using the arrow keys inside of the editor and delete them with the delete or backspace key.