/* * "Cmd.h" was added in Version 2.0 by John Price (WA2FZW) * * This file contains definitions and function prototypes associated with * the "Cmd.cpp" module. * * In Version 2.0 of the software, all of the serial input command handling * was removed from the main program sile into these modules. */ #ifndef _CMD_H_ #define _CMD_H_ // Prevent double inclusion #include "simpleSA.h" // General program definitions #include "pE4302.h" // Class definition for thePE4302 attenuator #include "si4432.h" // Class definition for the Si4432 transceiver #include "preferences.h" // For saving the "setting" structure #include /* * These are numerical values which define the message being processed. We could just * work off the ASCII string, but translating the strings to a numerical value makes * the processing a bit easier and also keeps open the possibility of using more tha * one ASCII string to implement a give command. */ #define MSG_NONE 0 // Unrecognized command #define MSG_START 1 // Set sweep start frequency #define MSG_STOP 2 // Set sweep stop frequency #define MSG_CENTER 3 // Set sweep center frequency #define MSG_SPAN 4 // Set sweep range #define MSG_FOCUS 5 // Center frequency with narrow sweep #define MSG_DRIVE 6 // Set transmitter (LO) output level #define MSG_VFO_FREQ 7 // Set the frequency for the selected VFO #define MSG_ATTEN 8 // Set the PE4301 attenuation #define MSG_HELP 9 // Display the command menu #define MSG_STEPS 10 // Set or get number of sweep points (not used) #define MSG_DELAY 11 // Set or get delay time between sweep readings #define MSG_VFO 12 // Set or get the currently selected VFO #define MSG_RBW 13 // Set or get the current resolution bandwidth #define MSG_REG_DUMP 14 // Print register values for the selected VFO #define MSG_RSSI 15 // Show RSSI values #define MSG_QUIT 16 // Stop RSSI readings #define MSG_SET_REG 17 // Set or get the value of a specifix register for the selected VFO #define MSG_SAVE 18 // Save scan configuration #define MSG_RECALL 19 // Recall saved scan configuration #define MSG_GPIO2 20 // Set transmitter GPIO2 reference frequency #define MSG_TUNE 21 // Tune selected Si4432 (VFO) #define MSG_CONFIG 22 // Save "config" structure #define MSG_ACT_PWR 23 // Calibrate the observed power level #define MSG_IF_FREQ 24 // Set the IF frequency #define MSG_TRACES 25 // Turn things on the display on or off #define MSG_PREAMP 26 // Set the receiver preamp gain #define MSG_GRID 27 // Set the dB value for top line of the grid #define MSG_SCALE 28 // Set the dB/horizontal line for the grid #define MSG_PAUSE 29 // Pause (or resume) the sweep #define MSG_SWEEPLO 30 // Set Analyse low range mode #define MSG_SIGLO 31 // Signal generate low range mode #define MSG_IF_SWEEP 32 // Set IF Sweep mode #define MSG_MARKER 33 // Configure Markers #define MSG_SPUR 34 // Set Spur reduction on or off #define MSG_WIFI_UPDATE 35 // Set WiFi update target time in us #define MSG_WIFI_POINTS 36 // Set WiFi chunk size #define MSG_WEBSKT_INTERVAL 37 // Set interval between checking websocket for events if no client connected #define MSG_SG_RX_DRIVE 38 // Set Signal Generator RX (IF) Drive level - don't go above the 10dBm rating of the SAW filters #define MSG_SG_LO_DRIVE 39 // Set Signal Generator LO Drive level - limited by mixer/attenuators fitted #define MSG_TG_IF_DRIVE 40 // Set Tracking Generator RX (IF) Drive level - don't go above the 10dBm rating of the SAW filters #define MSG_TG_LO_DRIVE 41 // Set Tracking Generator LO Drive level - limited by mixer/attenuators fitted #define MSG_IFSIGNAL 42 // Set frequency of injected signal for IF Sweep #define MSG_TGOFFSET 43 // Offset TG IF frequency from SA IF #define MSG_BANDSCOPE 44 // Set Bandscope Mode #define MSG_IFSWEEP 45 // Set IF Sweep Mode #define MSG_OFFDELAY 46 // Adjust offset tuning delay time before taking reading #define MSG_WFMIN 47 // set the min level for the waterfall colours #define MSG_WFGAIN 48 // set the gain for waterfall colouring #define MSG_RX_SWEEP 49 // Set the RX Sweep Mode #define MSG_RXSIGNAL 50 // Set frequency of injected signal for IF Sweep #define MSG_EXTGAIN 51 // Set external gain or attenuation #define MSG_SGON 52 // Turn Signal Generator output on #define MSG_SGOFF 53 // Turn Signal Generator output off #define MSG_SGFREQ 54 // Set Signal Generator Frequency #define MSG_TGON 55 // Turn Tracking Generator output on #define MSG_TGOFF 56 // Turn Tracking Generator output off #define MSG_TGFREQ 57 // Set Track Gen frequency for sig gen mode #define MSG_TGSIG 58 // Set Track Gen sig gen mode #define MSG_BPFCAL 59 // Start bandpass filter calibration #define MSG_OTA 60 // OTA Update mode #define MSG_COLOURTEST 99 // test of waterfall colours - remove this when done! typedef struct // Keeps everything together { char Name[20]; // ASCII Command string uint8_t ID; // The internal message number } msg_t; /* * This "enum" is used by the "SetSweepCenter" function to designate whether we want a * "WIDE" span when setting the normal center frequency, or a "NARROW" span when setting * a focus frequency. */ enum { WIDE, NARROW }; /* * Function prototypes for the help menu display and main command processing: */ void ShowMenu (); // Displays the command menu bool CheckCommand (); // Checks for a new command bool ParseCommand ( char* inBuff ); // Separate command and data bool ProcessCommand ( uint8_t command, char* dataBuff ); /* * Function prototypes for general support functions: */ uint32_t ParseFrequency ( char* freqString ); // Handles various frequency input formats int32_t ParseSignedFrequency ( char* freqString ); // Handles various frequency input formats char* FormatFrequency ( uint32_t freq ); // Neatly formats frequencies for output char* FormatSignedFrequency ( int32_t freq ); // Neatly formats signed frequencies for output char* DisplayFrequency ( uint32_t freq ); // Neatly formats frequencies for sig gen display uint16_t xtoi ( char* hexString ); // Converts hexadecimal strings into integers bool isHex ( char c ); // Tests if a character is a hexadecimal digit /* * These functions all support the main command processing functions and are used to * set the values of things either in the appropriate internal variables and/or in * the PE4302 or Si4432 modules themselves. */ void SetRefOutput ( int freq ); // Sets the GPIO2 frequency for the LO void SetRefLevel ( int ref ); // Sets the decibel level for the top line of the graph void SetPowerGrid ( int g ); // Sets the dB/vertical divison on the grid void SetGenerate ( int8_t g ); // Puts the unit into or out of signal generator mode bool SetIFFrequency ( int32_t f ); // Sets the IF frequency void SetLoDrive ( uint8_t level ); // Sets LO Si4432 output level void SetSGState (uint16_t s); bool SetSGFreq ( uint32_t freq); // set signal generator frequency - returns false if invalid void SetSGLoDrive ( uint8_t level ); void SetSGRxDrive ( uint8_t level ); void SetSGPower ( int16_t dBm ); // Set signal generator attenuator and drive levels void SetTracking ( int8_t m ); // set tracking generator mode void SetTGLoDrive ( uint8_t level ); // set tracking generator drive void SetTGIfDrive ( uint8_t level ); bool SetTGOffset ( int32_t offset); // set tracking generator offset - returns false if invalid bool SetTGFreq ( int32_t freq); // set tracking generator freq for sig gen mode - returns false if invalid int32_t GetTGOffset (void ); void SetTGPower ( int16_t dBm ); // Set TG attenuator and drive levels void SetAttenuation ( int a ); // Sets the PE4302 attenuation void SetExtGain ( double a ); // Sets the external gain or attenuation double GetExtGain (void ); void SetStorage ( void ); // Saves the results of a scan void SetClearStorage ( void ); // Logically erases the saved scan void SetSubtractStorage(void); // Sets the "setting.SubtractStorage" flag void RequestSetPowerLevel ( float o ); // Power level calibration void SetPowerLevel ( double o ); // ??? void SetRBW ( int v ); // Sets the resolution bandwidth void SetSpur (int v ); // Turns spurious signal supression on or off void SetAverage ( int v ); // Sets the number of readings to average void SetPreampGain ( uint8_t gain ); // Set and get the receiver preamp gain uint8_t GetPreampGain ( bool* agc, uint8_t* reg ); void SetSweepStart ( uint32_t freq ); // Added in Version 2.3 uint32_t GetSweepStart ( void ); void SetSweepStop ( uint32_t freq ); // Added in Version 2.3 uint32_t GetSweepStop ( void ); void SetBandscopeStart ( uint32_t freq ); // Added in Version 3.0f uint32_t GetBandscopeStart ( void ); void SetBandscopeSpan ( uint32_t freq ); // Added in Version 3.0f uint32_t GetBandscopeSpan ( void ); void SetBandscopeRBW ( int v ); // Sets the resolution bandwidth void SetBandscopeLevel ( int ref ); // Sets the decibel level for the top line of the graph void SetIFsweepStart ( uint32_t freq ); // Added in Version 3.0c uint32_t GetIFsweepStart ( void ); void SetIFsweepStop ( uint32_t freq ); // Added in Version 3.0c uint32_t GetIFsweepStop ( void ); void SetIFsweepSigFreq ( uint32_t freq ); // Added in Version 3.0c uint32_t GetIFsweepSigFreq ( void ); void SetRXsweepStart ( uint32_t freq ); uint32_t GetRXsweepStart ( void ); void SetRXsweepStop ( uint32_t freq ); uint32_t GetRXsweepStop ( void ); void SetRXsweepSpan ( uint32_t freq ); uint32_t GetRXsweepSpan ( void ); void SetRXsweepSigFreq ( uint32_t freq ); uint32_t GetRXsweepSigFreq ( void ); boolean StartBpfCal ( void ); void SetSweepCenter ( uint32_t freq, uint8_t span ); uint32_t GetSweepCenter ( void ); void SetSweepSpan ( uint32_t spanRange ); uint32_t GetSweepSpan ( void ); void SetFreq ( int vfo, uint32_t freq ); bool UpdateMarker ( uint8_t mkr, char action ); void SetWFMin (int16_t level); void SetWFGain (float gain); #endif // End of "Cmd.h"