SmartSDR TCP/IP API - Exaustive command list request

  • 2
  • Praise
  • Updated 4 years ago
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
Photo of IW7DMH, Enzo

IW7DMH, Enzo

  • 353 Posts
  • 84 Reply Likes

Posted 4 years ago

  • 2
Photo of Michael - OZ1MDF

Michael - OZ1MDF

  • 40 Posts
  • 14 Reply Likes
+1
Photo of Stu Phillips - K6TU

Stu Phillips - K6TU, Elmer

  • 642 Posts
  • 256 Reply Likes
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
Photo of IW7DMH, Enzo

IW7DMH, Enzo

  • 353 Posts
  • 84 Reply Likes
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.
Photo of Stu Phillips - K6TU

Stu Phillips - K6TU, Elmer

  • 642 Posts
  • 256 Reply Likes
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
Photo of IW7DMH, Enzo

IW7DMH, Enzo

  • 353 Posts
  • 84 Reply Likes
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
Photo of Steve - N5AC

Steve - N5AC, VP Engineering / CTO

  • 1030 Posts
  • 999 Reply Likes
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.
Photo of Michael - OZ1MDF

Michael - OZ1MDF

  • 40 Posts
  • 14 Reply Likes
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 crap is a rather disgusting approach, - pardon my french :-)
Photo of Stu Phillips - K6TU

Stu Phillips - K6TU, Elmer

  • 642 Posts
  • 256 Reply Likes
"real dynamic link library"?

Oh, you must be using Windows .CRAP 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
Photo of Michael - OZ1MDF

Michael - OZ1MDF

  • 40 Posts
  • 14 Reply Likes
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 :-)
(Edited)
Photo of Stu Phillips - K6TU

Stu Phillips - K6TU, Elmer

  • 642 Posts
  • 256 Reply Likes
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? Hell 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! ;-)
Photo of Michael - OZ1MDF

Michael - OZ1MDF

  • 40 Posts
  • 14 Reply Likes
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 :-)
(Edited)
Photo of Stu Phillips - K6TU

Stu Phillips - K6TU, Elmer

  • 642 Posts
  • 256 Reply Likes
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 ;-)
Photo of IW7DMH, Enzo

IW7DMH, Enzo

  • 353 Posts
  • 84 Reply Likes
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.
Photo of Vern

Vern

  • 64 Posts
  • 4 Reply Likes
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
Photo of Stu Phillips - K6TU

Stu Phillips - K6TU, Elmer

  • 642 Posts
  • 256 Reply Likes
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
Photo of Vern

Vern

  • 64 Posts
  • 4 Reply Likes
Does my 6500/SmartSDR, right now, generate VITA-49 packets and on which port. TU for the info.
Photo of Stu Phillips - K6TU

Stu Phillips - K6TU, Elmer

  • 642 Posts
  • 256 Reply Likes
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
Photo of Vern

Vern

  • 64 Posts
  • 4 Reply Likes
What does the format of a VITA-49 packet look like for a given parameter(s) for the FLEXRadio?

 Vern

(Edited)
Photo of IW7DMH, Enzo

IW7DMH, Enzo

  • 353 Posts
  • 84 Reply Likes
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.





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.9\flexlib. 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.



I hope this can be helpful.

73 'Enzo
iw7dmh
Photo of James Whiteway

James Whiteway

  • 877 Posts
  • 193 Reply Likes
Enzo, thanks for all the hard work! Things like this really do help.
james
WD5GWY