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.

What are the command response codes for the network API?

Steve Conklin
Steve Conklin Member ✭✭
edited February 2017 in SmartSDR API
Commands issued to the radio using the TCP/IP API return a hex value representing a 32 bit value.

This is documented on the wiki as follows:

"<hex response> = ASCII hexadecimal number (32-bit) return value (see table below for possibilities)"

but there is no table.

From another post in this forum, I found the following:

"A 0x1xxxxxxx message is styled as Informational.  A 0x5xxxxxxx is an error."

And from observation, zero is success.

Is there any more information available than this?

Thanks.

Answers

  • Steve-N5AC
    Steve-N5AC Community Manager admin
    edited February 2017
    Yes, the original intent was to post all of these in the wiki along with the command they could be issued for.  The wiki has aged a lot though and so there's not a lot of info in there that we'd like to get added.  Here's a definitive list as of today - not with a lot of descriptions.  The ones that have an SL_R also have a text description further down in the list
    ///*! file messages.h
    // *
    // * Copyright 2012-2013 FlexRadio Systems.  All Rights Reserved.
    // *
    // *  Unauthorized use, duplication or distribution of this software is
    // *  strictly prohibited by law.
    // *
    // * author Stephen Hicks, N5AC
    // *
    // *  DATE:   04-SEP-2012
    // *
    // */
    #ifndef SL_MESSAGES_H
    #define SL_MESSAGES_H

    #define SL_ERROR_BASE 0x50000000
    #define SL_INFO     0x10000000
    #define SL_WARNING 0x31000000
    #define SL_ERROR 0xE2000000
    #define SL_FATAL 0xF3000000
    #define SL_MYSQL 0x00001000
    #define SL_NO_FOUNDATION_RCVR SL_ERROR_BASE + 0x001
    extern char*SL_R_NO_FOUNDATION_RCVR;
    #define SL_LICENSE_NO_SLICE_AVAIL SL_ERROR_BASE + 0x002
    #define SL_ERROR_ALL_SLICES_IN_USE SL_ERROR_BASE + 0x003
    #define SL_ERROR_SLICE_PARAM SL_ERROR_BASE + 0x004
    extern char* SL_R_ERROR_SLICE_PARAM;
    #define SL_MALLOC_FAIL_SIGNAL_CHAIN SL_ERROR_BASE + 0x005
    #define SL_MALLOC_FAIL_DSP_PROCESS SL_ERROR_BASE + 0x006
    #define SL_NO_SCU_AVAILABLE SL_ERROR_BASE + 0x007
    #define SL_SCU_NOT_IN_USE SL_ERROR_BASE + 0x008
    #define SL_NO_FOUNDATION_RX_AVAILABLE SL_ERROR_BASE + 0x009
    #define SL_FOUNDATION_RX_NOT_IN_USE  SL_ERROR_BASE + 0x00A
    #define SL_OUT_OF_MEMORY SL_ERROR_BASE + 0x00B
    #define SL_FREQUENCY_OUT_OF_RANGE SL_ERROR_BASE + 0x00C
    extern char* SL_R_FREQUENCY_OUT_OF_RANGE;
    #define SL_INVALID_SLICE_RECEIVER SL_ERROR_BASE + 0x00D
    extern char* SL_R_INVALID_SLICE_RECEIVER;
    #define SL_INVALID_FOUNDATION_RX SL_ERROR_BASE + 0x00E
    #define SL_INVALID_DSP_PROCESS SL_ERROR_BASE + 0x00F
    #define SL_INVALID_SIGNAL_CHAIN SL_ERROR_BASE + 0x010
    #define SL_FREQUENCY_TOO_HIGH SL_ERROR_BASE + 0x011
    #define SL_NYQUIST_MISMATCH SL_ERROR_BASE + 0x012
    #define SL_BAD_COMMAND SL_ERROR_BASE + 0x013
    extern char* SL_R_BAD_COMMAND;
    #define SL_UNKNOWN_COMMAND SL_ERROR_BASE + 0x015
    extern char* SL_R_UNKNOWN_COMMAND;
    #define SL_MALFORMED_COMMAND SL_ERROR_BASE + 0x016
    extern char* SL_R_MALFORMED_COMMAND;
    #define SL_NO_SUB SL_ERROR_BASE + 0x017
    extern char* SL_R_NO_SUB;
    #define SL_BAD_SCU_NUMBER SL_ERROR_BASE + 0x018
    extern char* SL_R_BAD_SCU_NUMBER;
    #define SL_UNKNOWN_PREAMP SL_ERROR_BASE + 0x019
    extern char* SL_R_UNKNOWN_PREAMP;
    #define SL_NULL_POINTER_IN_SIG_CHAIN SL_ERROR_BASE + 0x01A
    extern char* SL_R_NULL_POINTER_IN_SIG_CHAIN;
    #define SL_REF_COUNT_UNDERFLOW SL_ERROR_BASE + 0x01B
    extern char* SL_R_REF_COUNT_UNDERFLOW;
    #define SL_INVALID_MINIMIXER_RX SL_ERROR_BASE + 0x01C
    extern char* SL_R_INVALID_MINIMIXER_RX;
    #define SL_NO_MINIMIXER SL_ERROR_BASE + 0x01D
    extern char* SL_R_NO_MINIMIXER;
    #define SL_SHARED_MINIMIXER SL_ERROR_BASE + 0x01E
    extern char* SL_R_SHARED_MINIMIXER;
    #define SL_NO_MINIMIXER_IN_RANGE SL_ERROR_BASE + 0x01F
    extern char* SL_R_NO_MINIMIXER_IN_RANGE;
    #define SL_MMX_LIMIT_REACHED SL_ERROR_BASE + 0x020
    #define SL_SECURITY_FAULT SL_ERROR_BASE + 0x021
    extern char* SL_R_SECURITY_FAULT;
    #define SL_RECAHED_MMX_LIMIT SL_ERROR_BASE + 0x022
    #define SL_FOUNDATION_MMX_LIMIT SL_ERROR_BASE + 0x023
    extern char* SL_R_FOUNDATION_MMX_LIMIT;
    #define SL_AUDIO_CLIENT_NOT_FOUND SL_ERROR_BASE+0x024
    extern char* SL_R_AUDIO_CLIENT_NOT_FOUND;
    #define SL_AUDIO_CLIENT_STREAM_ID_NOT_FOUND SL_ERROR_BASE+0x025
    extern char* SL_R_AUDIO_CLIENT_STREAM_ID_NOT_FOUND;
    #define SL_AUDIO_CLIENT_GAIN_INVALID SL_ERROR_BASE+0x026
    extern char* SL_R_AUDIO_CLIENT_GAIN_INVALID;
    #define SL_AUDIO_CLIENT_PAN_INVALID SL_ERROR_BASE+0x027
    extern char* SL_R_AUDIO_CLIENT_PAN_INVALID;
    #define SL_SLICE_RECEIVER_NOT_IN_USE SL_ERROR_BASE + 0x028
    extern char* SL_R_SLICE_RECEIVER_NOT_IN_USE;
    #define SL_CLIENT_STREAM_ID_NOT_FOUND SL_ERROR_BASE + 0x029
    extern char* SL_R_CLIENT_STREAM_ID_NOT_FOUND;
    #define SL_UNKNOWN_ANT_PORT SL_ERROR_BASE + 0x02A
    extern char* SL_R_UNKNOWN_ANT_PORT;
    #define SL_INVALID_NUMERIC_VALUE SL_ERROR_BASE + 0x02B
    extern char* SL_R_INVALID_NUMERIC_VALUE;
    #define SL_INCORRECT_NUM_PARAMS SL_ERROR_BASE + 0x02C
    extern char* SL_R_INCORRECT_NUM_PARAMS;
    #define SL_BAD_FIELD SL_ERROR_BASE + 0x02D
    extern char* SL_R_BAD_FIELD;
    #define SL_NO_SUBSCRIPTION SL_ERROR_BASE + 0x02E
    extern char* SL_R_UNIMPLEMENTED_MODE;
    #define SL_UNIMPLEMENTED_MODE SL_ERROR_BASE + 0x02F
    #define SL_SIGNAL_CHAIN_ERROR SL_ERROR_BASE + 0x030
    #define SL_RFGAIN_OUT_OF_RANGE SL_ERROR_BASE + 0x031
    extern char* SL_R_RFGAIN_OUT_OF_RANGE;
    #define SL_BAD_MODE SL_ERROR_BASE + 0x032
    extern char* SL_R_BAD_MODE;
    #define SL_PARAM_OUT_OF_RANGE SL_ERROR_BASE + 0x033
    extern char* SL_R_PARAM_OUT_OF_RANGE;
    #define SL_BAD_METER SL_ERROR_BASE + 0x034
    extern char* SL_R_BAD_METER;
    #define SL_LOW_LEVEL SL_ERROR_BASE + 0x035
    extern char* SL_R_LOW_LEVEL;
    #define SL_INVALID_METER SL_ERROR_BASE + 0x036
    #define SL_TERMINATE SL_ERROR_BASE + 0x037
    #define SL_NO_COMMAND SL_ERROR_BASE + 0x038
    #define SL_FFT_FPS_OUT_OF_RANGE SL_ERROR_BASE + 0x039
    extern char* SL_R_FFT_FPS_OUT_OF_RANGE;
    #define SL_CLOSE_CLIENT SL_ERROR_BASE + 0x03A
    #define SL_TXSC_INVALID_TONE_INDEX SL_ERROR_BASE + 0x03B
    #define SL_INVALID_TX_ANTENNA SL_ERROR_BASE + 0x03C
    extern char* SL_R_INVALID_TX_ANTENNA;
    #define SL_TX_NOT_SUPPORTED SL_ERROR_BASE + 0x03D
    extern char* SL_R_TX_NOT_SUPPORTED;
    #define SL_BAD_ADC_SOURCE SL_ERROR_BASE + 0x03E
    #define SL_BAD_CAL_TABLE_TYPE SL_ERROR_BASE + 0x03F
    #define SL_BAD_CAL_TABLE_POINTS SL_ERROR_BASE + 0x040
    #define SL_CAL_TABLE_READ_FAIL SL_ERROR_BASE + 0x041
    extern char* SL_R_TRANSMIT_NOT_READY;
    #define SL_NOT_READY_TO_TRANSMIT SL_ERROR_BASE + 0x042
    extern char* SL_R_NO_TRANSMITTER;
    #define SL_NO_TRANSMITTER SL_ERROR_BASE + 0x043
    #define SL_INVALID_TUNE_POWER SL_ERROR_BASE + 0x044
    #define SL_UNCALIBRATED_POWER SL_ERROR_BASE + 0x045
    #define SL_BITE2_FAULT SL_ERROR_BASE + 0x046
    #define SL_CALIBRATION_WRITE_FAIL SL_ERROR_BASE + 0x047
    #define SL_INVALID_RF_POWER SL_ERROR_BASE + 0x048
    #define SL_READ_EMPTY_CAL_TABLE SL_ERROR_BASE + 0x049
    #define SL_INVALID_ADL5201_DEVICE SL_ERROR_BASE + 0x04A
    #define SL_INVALID_MIC_LEVEL SL_ERROR_BASE + 0x04B
    #define SL_INVALID_ALSA_CONTROL_NAME SL_ERROR_BASE + 0x04C
    #define SL_INVALID_OSC_INDEX   SL_ERROR_BASE + 0x04D
    #define SL_INVALID_BOOLEAN SL_ERROR_BASE + 0x04E
    #define SL_INVALID_BIAS_CAL_TARGET SL_ERROR_BASE + 0x04F
    #define SL_INVALID_PA_CLASS SL_ERROR_BASE + 0x050
    #define SL_MCL_INIT_FAILURE SL_ERROR_BASE + 0x051
    #define SL_UNEXPECTED_FILE_SIZE SL_ERROR_BASE + 0x052
    #define SL_FILE_SERVER_BUSY SL_ERROR_BASE + 0x053
    #define SL_INVALID_TX_EQ_STAGE SL_ERROR_BASE + 0x054
    #define SL_INVALID_RX_EQ_STAGE SL_ERROR_BASE + 0x055
    #define SL_INVALID_FILTER SL_ERROR_BASE + 0x056
    #define SL_STORAGE_NOT_INITIALIZED SL_ERROR_BASE + 0x057
    extern char* SL_R_INVALID_FILTER;
    #define SL_PTT_TIMEOUT SL_ERROR_BASE + 0x058
    extern char* SL_PTT_TIMEOUT_FMT;
    #define SL_INVALID_STREAM_ID SL_ERROR_BASE + 0x059
    extern char* SL_R_INVALID_STREAM_ID;
    #define SL_NO_CHANGE_ANT_IN_TX SL_ERROR_BASE + 0x060
    extern char* SL_R_NO_CHANGE_ANT_IN_TX;
    #define SL_INVALID_DSP_ALG_FOR_MODE SL_ERROR_BASE + 0x061
    #define SL_INVALID_CLIENT SL_ERROR_BASE + 0x062
    #define SL_INVALID_FREQUENCY SL_ERROR_BASE + 0x063
    #define SL_NO_IP_OR_PORT SL_ERROR_BASE + 0x064
    #define SL_INVALID_DAX_CHANNEL SL_ERROR_BASE + 0x065
    extern char* SL_R_NO_IP_OR_PORT;
    #define SL_NO_DAX_TX SL_ERROR_BASE + 0x066
    extern char* SL_R_NO_DAX_TX;
    #define SL_INVALID_DAX_IQ_CHANNEL SL_ERROR_BASE + 0x066
    #define SL_INVALID_DAX_IQ_RATE SL_ERROR_BASE + 0x067
    extern char* SL_R_INVALID_DAX_IQ_RATE;
    #define SL_SLICE_IS_LOCKED SL_ERROR_BASE + 0x068
    extern char* SL_R_SLICE_IS_LOCKED;
    #define SL_FREQUENCY_TOO_LOW SL_ERROR_BASE + 0x069
    #define SL_SO2R_NOT_VALID_FOR_MODEL SL_ERROR_BASE + 0x06A
    extern char* SL_R_SO2R_NOT_VALID_FOR_MODEL;
    #define SL_DUPLEX_NOT_VALID_FOR_MODEL SL_ERROR_BASE + 0x06B
    extern char* SL_R_DUPLEX_NOT_VALID_FOR_MODEL;
    #define SL_INVALID_BAND_FOR_PERSISTENCE SL_ERROR_BASE + 0x06C
    #define SL_LOOP_NOT_VALID_FOR_MODEL  SL_ERROR_BASE + 0x06D
    extern char* SL_R_LOOP_NOT_VALID_FOR_MODEL;
    extern char* SL_R_OUT_OF_MEMORY;
    #define SLM_INVALID_CLIENT_NOT_PAN SL_ERROR_BASE + 0x06E
    #define SL_NO_VALID_CLIENT SL_ERROR_BASE + 0x06F
    extern char* SL_R_NO_VALID_CLIENT;
    #define SL_EXCESS_TX_COMPRESSION_FAIL SL_ERROR_BASE + 0x070
    #define SL_NO_RECORDED_DATA   SL_ERROR_BASE + 0x071
    #define SL_BAD_ECO_TABLE_TYPE            SL_ERROR_BASE + 0x072
    #define SL_EMPTY_ECO_TABLE               SL_ERROR_BASE + 0x073
    #define SL_FULL_ECO_TABLE                SL_ERROR_BASE + 0x074
    #define SL_BAD_ECO_NUMBER                SL_ERROR_BASE + 0x075
    extern char* SL_R_BAD_ECO_NUMBER;
    #define SL_ECO_NOT_FOUND                 SL_ERROR_BASE + 0x076
    extern char* SL_R_ECO_NOT_FOUND;

    #define SL_MYSQL_CONNECTION_FAIL SL_ERROR_BASE + SL_MYSQL + 0x001
    #define SL_MYSQL_LOGIN_FAIL SL_ERROR_BASE + SL_MYSQL + 0x002
    #define SL_MYSQL_NOT_CONNECTED SL_ERROR_BASE + SL_MYSQL + 0x003
    #define SL_MYSQL_PCB_ALREADY_REG SL_ERROR_BASE + SL_MYSQL + 0x004
    #define SL_MYSQL_PCB_NOT_REGISTERED SL_ERROR_BASE + SL_MYSQL + 0x005
    #define SL_MYSQL_PCB_SN_BLANK SL_ERROR_BASE + SL_MYSQL + 0x006
    #define SL_MYSQL_PCB_SN_TOO_LONG SL_ERROR_BASE + SL_MYSQL + 0x007
    #define SL_MYSQL_MNEMONIC_BLANK SL_ERROR_BASE + SL_MYSQL + 0x008
    #define SL_MYSQL_MNEMONIC_TOO_LONG SL_ERROR_BASE + SL_MYSQL + 0x009
    #define SL_MYSQL_PCB_REV_BLANK SL_ERROR_BASE + SL_MYSQL + 0x00A
    #define SL_MYSQL_PCB_REV_TOO_LONG SL_ERROR_BASE + SL_MYSQL + 0x00B
    #define SL_MYSQL_PCB_MODEL_BLANK SL_ERROR_BASE + SL_MYSQL + 0x00C
    #define SL_MYSQL_PCB_MODEL_TOO_LONG SL_ERROR_BASE + SL_MYSQL + 0x00D
    #define SL_MYSQL_BAD_TESTID SL_ERROR_BASE + SL_MYSQL + 0x00E
    #define SL_MYSQL_PART_DESIG_BLANK SL_ERROR_BASE + SL_MYSQL + 0x00F
    #define SL_MYSQL_SW_NAME_BLANK SL_ERROR_BASE + SL_MYSQL + 0x010
    #define SL_MYSQL_SW_VERSION_BLANK SL_ERROR_BASE + SL_MYSQL + 0x011
    #define SL_MYSQL_BOM_REV_BLANK SL_ERROR_BASE + SL_MYSQL + 0x012
    #define SL_MYSQL_BOM_REV_TOO_LONG SL_ERROR_BASE + SL_MYSQL + 0x013
    #define SL_MYSQL_BOM_BLANK SL_ERROR_BASE + SL_MYSQL + 0x014
    #define SL_MYSQL_BOM_TOO_LONG SL_ERROR_BASE + SL_MYSQL + 0x015
    #define SL_MYSQL_MODEL_BLANK SL_ERROR_BASE + SL_MYSQL + 0x016
    #define SL_MYSQL_MODEL_TOO_LONG SL_ERROR_BASE + SL_MYSQL + 0x017
    // This response is sent when SmartSDR does not generate a result itself, forcing a default
    // response.  This generally indicates that the command code has failed to close the response
    // loop on all command paths
    #define SL_RESP_UNKNOWN SL_ERROR_BASE + 0x00001000
    extern char* SL_R_RESP_UNKNOWN;
    #define SLM_I_CLIENT_CONNECTED SL_INFO + 0x0001
    #define SLM_I_UNKNOWN_CLIENT SL_INFO + 0x0002


    #define SLM_W_SERVICE SL_WARNING + 0x0001
    #define SLM_W_NO_TRANSMITTER SL_WARNING + 0x0002
    #define SLM_W_INTERLOCK SL_WARNING + 0x0003
    #define SLM_I_MAX_CLIENTS SL_FATAL + 0x0001


    ///*!  messages.c
    // *   Messages
    // *
    // * Copyright 2012-2013 FlexRadio Systems.  All Rights Reserved.
    // *
    // *  Unauthorized use, duplication or distribution of this software is
    // *  strictly prohibited by law.
    // *
    // * author Stephen Hicks, N5AC
    // *
    // *  DATE:   04-SEP-2012
    // *
    // */
    #include "messages.h"
    #define ENGLISH
    #ifdef ENGLISH
    char* SL_R_UNKNOWN_COMMAND = "Command Unknown";
    char* SL_R_BAD_COMMAND = "Command Format Fail";
    char* SL_R_RESP_UNKNOWN = "Command result unknown";
    char* SL_R_MALFORMED_COMMAND = "Malformed command";
    char* SL_R_NO_SUB = "Subscription not found";
    char* SL_R_BAD_SCU_NUMBER = "SCU %d does not exist";
    char* SL_R_UNKNOWN_PREAMP = "Preamp selection must be o=off, 1=preamp1, 2=preamp2, b=both";
    char* SL_R_NO_FOUNDATION_RCVR = "Unable to get foundation receiver assignment";
    char* SL_R_NULL_POINTER_IN_SIG_CHAIN = "Internal error -- NULL pointer in signal chain";
    char* SL_R_REF_COUNT_UNDERFLOW = "FDX reference count underflow";
    char* SL_R_NO_MINIMIXER = "Unable to get minimixer receiver assignment";
    char* SL_R_INVALID_MINIMIXER_RX = "Invalid minimixer number (%d)";
    char* SL_R_SHARED_MINIMIXER = "Can't tune shared minimixer outside range";
    char* SL_R_NO_MINIMIXER_IN_RANGE= "No minimixer found in the frequency range";
    char* SL_R_SECURITY_FAULT = "Security fault; command not executed";
    char* SL_R_FOUNDATION_MMX_LIMIT = "Foundation receiver cannot tune due to minimixer frequency";
    char* SL_R_FREQUENCY_OUT_OF_RANGE = "Frequency out of range";
    char* SL_R_INVALID_SLICE_RECEIVER = "Invalid slice receiver (%u)";
    char* SL_R_AUDIO_CLIENT_NOT_FOUND = "No Audio Client found for submitted Client ID (%08X)";
    char* SL_R_AUDIO_CLIENT_STREAM_ID_NOT_FOUND = "slice %u not found in Audio Client (%08X)";
    char* SL_R_AUDIO_CLIENT_GAIN_INVALID = "Gain value not within required [0.0,1.0] range (%.13g)";
    char* SL_R_AUDIO_CLIENT_PAN_INVALID = "Pan value not within required [0.0,1.0] range (%.13g)";
    char* SL_R_SLICE_RECEIVER_NOT_IN_USE = "Slice receiver (%u) not in use";
    char* SL_R_CLIENT_STREAM_ID_NOT_FOUND = "Client stream ID 0x%08X not found";
    char* SL_R_UNKNOWN_ANT_PORT = "Antenna port '%s' is unknown";
    char* SL_R_INVALID_NUMERIC_VALUE = "Parameter is not a valid numeric value '%s'";
    char* SL_R_INCORRECT_NUM_PARAMS = "Incorrect number of parameters (%u) for command";
    char* SL_R_BAD_FIELD = "Bad field '%s'";
    char* SL_R_UNIMPLEMENTED_MODE = "Unimplemented mode '%s'";
    char* SL_R_RFGAIN_OUT_OF_RANGE = "RF Gain out of range (%.5f)";
    char* SL_R_BAD_MODE = "Unrecognized mode 0x08X";
    char* SL_R_PARAM_OUT_OF_RANGE = "Parameter out of range";
    char* SL_R_BAD_METER = "Bad meter number (%u)";
    char* SL_R_LOW_LEVEL = "33[91mNOTE: This is a low level command that may alter the internal consistency of the radio33[m
    ";
    char* SL_R_FFT_FPS_OUT_OF_RANGE = "FFT framerate of %u fps is out of range
    ";
    char* SL_R_INVALID_TX_ANTENNA = "Antenna %s is not valid for transmit
    ";
    char* SL_R_TX_NOT_SUPPORTED = "This radio does not support transmit capability
    ";
    char* SL_R_NO_CHANGE_ANT_IN_TX = "The antenna may not be changed while transmitting
    ";
    char* SL_R_NO_IP_OR_PORT = "Either the IP or Port required for operation is missing";
    char* SL_R_NO_TRANSMITTER = "The transmit slice has not been selected
    ";
    char* SL_R_TRANSMIT_NOT_READY = "The transmitter is not ready
    ";
    char* SL_R_INVALID_FILTER = "Invalid filter configuration (low >= high)
    ";
    char* SL_R_INVALID_STREAM_ID = "Invalid Stream ID (0x%X)
    ";
    char* SL_R_NO_DAX_TX = "You must enable transmit in DAX before transmitting";
    char* SL_R_INVALID_DAX_IQ_RATE = "Invalid DAX IQ rate";
    char* SL_R_SLICE_IS_LOCKED = "Unable to tune a locked slice -- unlock first";
    char* SL_R_SO2R_NOT_VALID_FOR_MODEL = "SO2R is not valid for this radio model";
    char* SL_R_DUPLEX_NOT_VALID_FOR_MODEL = "Duplex is not valid for this radio model";
    char* SL_R_LOOP_NOT_VALID_FOR_MODEL = "The loop selected is not valid for this radio model";
    char* SL_R_OUT_OF_MEMORY = "Out of memory error";
    char* SL_R_NO_VALID_CLIENT = "33[91mcalled with no or invalid client";
    char* SL_R_BAD_ECO_NUMBER           = "33[91mthe ECO number supplied is invalid";
    char* SL_R_ECO_NOT_FOUND           = "33[91mthe ECO number supplied cannot be found";
    char* SLM_I_CLIENT_CONNECTED_FMT = "Client connected from IP %u.%u.%u.%u";
    char* SLM_I_MAX_CLIENTS_FMT = "The maximum number of connected clients has been reached";
    char* SLM_W_SERVICE_FMT = "Service mode enabled on remote device";
    char* SLM_W_NO_TRANSMITTER_FMT = "Transmit slice has not been selected";
    char* SLM_W_INTERLOCK_FMT = "Interlock is preventing transmission";
    char* SL_PTT_TIMEOUT_FMT = "The PTT timeout timer has elapsed.  Release PTT to reset.";
    char* SLM_F_INVALID_CLIENT_NOT_PAN = "33[91minvalid client; not a panadapter";
    char* SLM_F_INVALID_CLIENT_NOT_FALL = "33[91minvalid client; not a waterfall";
    char* SLM_F_INVALID_CLIENT_NOT_FFT = "33[91minvalid client; not an FFT display";

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.