Spots API

  • 4
  • Praise
  • Updated 3 months ago
  • (Edited)
The new spots capability in V2.3.7 is brilliant and the API is ridiculously easy to implement. Within 2 minutes of seeing the FlexLib code I was happily sending pretend spots to Smart SDR using my API tester. Now to implement in my logging program!
Great job, all you dev guys. Attaboys all round I'd say.
73, John, G3WGV
Photo of John G3WGV

John G3WGV

  • 189 Posts
  • 36 Reply Likes

Posted 4 months ago

  • 4
Photo of Gary L. Robinson

Gary L. Robinson

  • 246 Posts
  • 46 Reply Likes
So where can I find the Spots API code??  Is the FlexLib info on the Wiki updated for it?  I see nothing about Spots API on the Wiki.

---Gary WB8ROL
Photo of John G3WGV

John G3WGV

  • 189 Posts
  • 36 Reply Likes
Yep, get the new FlexLib code at http://www.flexradio.com/downloads/flexlib_api_v2-3-7-zip/ Specifically, look at the RequestSpot function in Radio.cs and all the code in Spot.cs. Eric says the Wiki will be updated in due course but, as always, the FlexLib code is the documentation of record.
Photo of EA4GLI - 8P9EH - Salvador

EA4GLI - 8P9EH - Salvador

  • 1752 Posts
  • 535 Reply Likes
A "simple" program to Telnet into Cluster server and feed SmartSDR with Spots would be great.
Photo of John G3WGV

John G3WGV

  • 189 Posts
  • 36 Reply Likes
That's an interesting idea, Salvador and yes, it would be quite easy to do.

More usually the logging program makes the cluster/RBN connection and would be the place to put the spot feeder code, especially as the logger would also need to talk to the radio for frequency/mode control.

Even so, I can see the value of your proposed program. Maybe I'll look into this a little later in the year when I have a bit more time. I already have most of the code fragments.
Photo of K1DBO

K1DBO

  • 424 Posts
  • 73 Reply Likes
I guess some might argue, but Slice Master is pretty simple and makes telnet connections to cluster servers and sends the spots to the radio.  Of course it does a bit more too, but it's not all that hard to ignore the extra features.
Photo of IW7DMH, Enzo

IW7DMH, Enzo

  • 353 Posts
  • 84 Reply Likes
A "simple" program to Telnet into Cluster server and feed SmartSDR with Spots would be great.

I just did it while I was waiting for 2.3. I am not in any Alfa/Beta testing group so I started from the end: I gave a look at N1MM docs and got the spot xml definition.
My small program, I jokingly called H-Spot, simply can connect to multiple telnet clusters and send each spot to the Flex UDP port and to a TCP (aggregator) port. It worked fine from the beginning. Now I am having some troubles with the duplicate-spot issue (see another thread) but I am going to solve it.

https://www.dropbox.com/s/tyx2nbk42cv5exq/H-Spot.exe?dl=0

Having said this, I consider SliceMaster the best option. I just would suggest Donald to start the development of its own (embedded) skimmer. Each time I make a band change, Windows remember me CWSkimmer is a bit out of date: I get a nice "Violation Error" and I can't understand why CW skimmer need to be restarted each time (this don't happen if you use SDR-Bridge). This is very annoying expecially during contest operations.
Anyway so far so good, let's see what will happen in July Iota contest. 
73' Enzoiw7dmh
 
(Edited)
Photo of K1DBO

K1DBO

  • 424 Posts
  • 73 Reply Likes
Hi Enzo,

I'm not sure about the "violation error", but CW Skimmer does have trouble sometimes.  You might have a zombie CW Skimmer hanging around that is causing you trouble.   Try a reboot to see if it clears up.

The CW Skimmer restart is by product of a Slice Master feature and a quirk of the Flex API.  Slice Master binds each CW Skimmer instance to particular slice.  If the slice is removed, Slice Master will stop the associated CW Skimmer.  If the slice is newly created, Slice Master will start a CW Skimmer for it.  Most of this time, this is a good thing.

But, depending on how you change bands, Flex might first destroy the slice then create a new one.  This often happens if you use the "Band" button on the panafall (left pop-out) menu.  If, instead, you change bands by typing the frequency into the slice flag in SSDR, the slice will not be destroyed/created and CW Skimmer wont need to be restarted.

--Don
Photo of EA4GLI - 8P9EH - Salvador

EA4GLI - 8P9EH - Salvador

  • 1752 Posts
  • 535 Reply Likes
Grazie mille Enzo!
Photo of Dave AA6YQ

Dave AA6YQ

  • 94 Posts
  • 54 Reply Likes
I typically update the API documentation as Eric KE5DTO answers my questions, but since the Spot function was under the alpha test cone of silence, I didn't do that this time.

Since DXLab's Commander maintains a table of active DX stations with metadata for each (from where spotted, grid square, eQSL and LoTW participation, etc) is was as John G3WGV said very easy to display callsigns on SmartSDR using the API Spot command. However, if you're working from a raw spot feed, there's a bit more work to do; you don't want the same callsign to appear 4 times, each separated by a few hundred hertz....
(Edited)
Photo of John G3WGV

John G3WGV

  • 187 Posts
  • 35 Reply Likes
Hi Dave,
Yes, absolutely with you on that. I do the same thing on my logging program and you're right, any spot feeder program would have to do the same thing. Of course both of us do already have that code...
Photo of Jeff | VA2SS

Jeff | VA2SS

  • 34 Posts
  • 1 Reply Like
It shoulD be great to have the telnet feature embedded into smartsdr.... especially the maestro. ÙùI don’t use a PC.... I don’t want to install a PC in the shack to only have spots on the Maesto display.

73 de Jeff | VA2SS
(Edited)
Photo of k3Tim

k3Tim

  • 842 Posts
  • 164 Reply Likes
For a Maestro or M modrl user could one program a Raspberry pi to telnet then feed the Spots?

In looking at the code, as suggested, it would appear a Pi could take a short-wave schedule and "spot" SW stations. One could highlight in a certain color those in languages the user understands.

The question is can the Pi call the API and not be bound to Windows?

k3Tim/b
Photo of Dave AA6YQ

Dave AA6YQ

  • 94 Posts
  • 54 Reply Likes
Yes.

SmartSDR will process properly-formed API calls it receives via TCP, no matter what hardware or software was used to generate those calls.
Photo of k3Tim

k3Tim

  • 842 Posts
  • 164 Reply Likes
Very cool.

Thanks Dave..
Photo of Dave AA6YQ

Dave AA6YQ

  • 94 Posts
  • 54 Reply Likes
SmartSDR 2.3.7 is only a few days old, but I'd like to suggest that the Spot API be extended in a future version to allow the optional specification of a background color for each callsign. This would make it possible to depict each callsign's known QSLing behavior: via eQSL, via LoTW, both, or neither.
Photo of Tim - W4TME

Tim - W4TME, Customer Experience Manager

  • 9152 Posts
  • 3470 Reply Likes
Dave, there is already a color attribute for spots.  Reach out to Eric or Abed about it.
Photo of K1DBO

K1DBO

  • 420 Posts
  • 73 Reply Likes
Tim,

Dave is asking about background color, not text color.  This request was made and rejected a few times on the Alpha list.

--Don
Photo of Tim - W4TME

Tim - W4TME, Customer Experience Manager

  • 9152 Posts
  • 3470 Reply Likes
Added as feature request #6451
Photo of Bill -VA3WTB

Bill -VA3WTB

  • 2838 Posts
  • 619 Reply Likes
I wonder if SSDR thin client would work with embedded telnet?
Photo of Dave AA6YQ

Dave AA6YQ

  • 94 Posts
  • 54 Reply Likes
Another Spot API extension: when the user clicks on a callsign in SmartSDR, send a TCP message reporting the details. This would enable client applications to perform callbook lookups, check award need, rotate antennas, and populate logging windows.
(Edited)
Photo of K1DBO

K1DBO

  • 420 Posts
  • 73 Reply Likes
Dave,

The API currently sends a "triggered" status message when the user clicks a spot in SSDR.

--Don
Photo of Dave AA6YQ

Dave AA6YQ

  • 94 Posts
  • 54 Reply Likes
Thanks, Don!
Photo of Dave AA6YQ

Dave AA6YQ

  • 94 Posts
  • 54 Reply Likes
The API currently only sends a triggered status message when the user clicks a callsign in SmartSDR if the (undocumented) 

sub spot all

command has been issued.

Thanks to Eric KE5DTO...