Skip to content

TCPIP client

Eric edited this page Jan 22, 2023 · 5 revisions

BIND

Registers that a non-GUI client will be binding to a client with a particular ]Client ID]. From a radio perspective as of v3.0, this command is simply for debugging and troubleshooting and assists developers in determining how non-GUI clients are processing radio data, but in and of itself performs no function in the radio. It is recommended that non-GUI clients send the statement when they bind to maximize information for debugging.

C[D]<seq_number>|client bind client_id=<client_id>

<client_id>       =  the client_id of the GUI client that this non-GUI client intends to "follow"

Example:

C44|client bind client_id=72E8C7F3-5766-4ADF-9286-EBF2F525C77

See Response Format for details on the format of the response messages from the radio

Hex Response Message Debug Output / Meaning
00000000 |[] OK, handle is the handle of the GUI client that may be used for filtering data

Responses

Response Example:

R44|0|0x6F54A02B|OK

DISCONNECT

Disconnects a client that is currently connected to the radio

C[D]<seq_number>|client disconnect <handle>

<handle>       =  an optional client handle (32-bit hex value sent to client on connection)

Example:

C44|client disconnect

Issuing the disconnect without a handle will disconnect all GUI clients currently connected to the radio. If a handle is specified, only the client with that handle is disconnected. When specifying a handle, either a GUI or non-GUI client may be disconnected.

See Response Format for details on the format of the response messages from the radio

Hex Response Message Debug Output / Meaning
00000000 OK
50000062 Invalid Client

Responses

Response Example:

R44|0||OK

GUI

Registers your program as the sole GUI to the radio (v1.x and v2.x) or registers your client as one of possibly many GUI clients (v3.x+). For v1.x and v2.x, all displays (panadapter, waterfall, etc.) will be sent to this client. For later versions of SmartSDR, the displays will be sent to the client that requested them and any resources (slices, etc) that are used will be considered as "owned" by that GUI client.

C[D]<seq_number>|client gui [<client_id>]

Example:

C42|client gui

See Response Format for details on the format of the response messages from the radio

Hex Response Message Debug Output / Meaning
00000000   | <client_id> OK; for v3.x+, if no client_id was specified when the command was issued, one will be returned.

Responses

Response Example:

R42|0|72E8C7F3-5766-4ADE-9286-EBF2F525C77|OK

Note that the client that initially connects without the client_id (v3.0+) should then store the returned client_id (in the response) and then for all subsequent sessions with this (or any v3.x+) transceiver should present this in the later commands as the client's client_id. The preferred method is to save the ID in a path that will be reused by the client software as new releases are issued.

NAME / NICKNAME

Registers nickname of the radio that can be stored in the radio

C[D]<seq_number>|client nickname < nickname >

< nickname >       =  the nickname of the radio being updated

Example:

C44|client nickname Shack6000

See Response Format for details on the format of the response messages from the radio

Hex Response Message Debug Output / Meaning
00000000 OK

Responses

Response Example:

R44|0|0x6F54A02B|OK

PROGRAM

Registers the name of the client program connected to the radio. Not yet implemented; do not use.

C[D]<seq_number>|client program <name>

<name>         = An alpha-numeric name for your program (no spaces)

Example:

C42|client program MyProgram

See Response Format for details on the format of the response messages from the radio

Hex Response Message Debug Output / Meaning
00000000   OK
10000002   unknown client program
F3000001   Too many clients connected to the radio

Responses

The "unknown client program" response is not an error -- it simply means that SmartSDR has not heard of this client. In general, we ask that clients identify with their program name so that when we are debugging issues, we can see other programs connected and what is issuing commands as this can help with debugging. All messages starting with a "1" are strictly informational.

Response Example:

R42|0||OK

START_PERSISTENCE

Loads data for this client from the persistence database. This restores the client to the last state prior to the previous shutdown

C[D]<seq_number>|client start_persistence <value>

<value>       =  a 1 or 0 to indicate if we persistence should be started

Example:

C44|client start_persistence 1

See Response Format for details on the format of the response messages from the radio

Hex Response Message Debug Output / Meaning
00000000 OK

Responses

Response Example:

R44|0||OK

STATION

Stores a friendly name for the client (GUI) that can be displayed in other places for clarity. This command should only be issued for a GUI client.

C[D]<seq_number>|client station <station_name>

<station_name>       =  a text string with no spaces that is the name of the station

Example:

C44|client station Rlyeh

See Response Format for details on the format of the response messages from the radio

Hex Response Message Debug Output / Meaning
00000000 OK

Responses

Response Example:

R44|0||OK

UDPPORT

Provides the radio with the UDP port that should be used on the client to receive streaming VITA-49 UDP data

C[D]<seq_number>|client udpport <port>

<port>  =  The 16-bit UDP/IP port number on the client computer

Example:

C43|client udpport 4993

Note: this port must be free, meaning not in use by any other running application.

See Response Format for details on the format of the response messages from the radio

Hex Response Message Debug Output / Meaning
00000000 OK Successfully registered port number

Responses

Response Example:

R43|0||OK