275 lines
7.7 KiB
C
275 lines
7.7 KiB
C
#ifndef RIGCONTROL
|
|
#define RIGCONTROL
|
|
|
|
#ifndef LINBPQ
|
|
#include "Rigresource.h"
|
|
#endif
|
|
|
|
#define IDI_ICON2 2
|
|
|
|
|
|
struct TimeScan
|
|
{
|
|
time_t Start;
|
|
time_t End;
|
|
struct ScanEntry ** Scanlist;
|
|
};
|
|
|
|
struct ScanEntry
|
|
{
|
|
// Holds info for one frequency change. May Need to set Feeq, Mode, Repeater Split, Pactor/Winmor Bandwidth
|
|
|
|
double Freq; // In case needed to report to WL2K
|
|
int Dwell; // Dwell Time on this freq
|
|
char Bandwidth; // W/N For WINMOR
|
|
char RPacketMode; // Robust or Normal for Tracker
|
|
char HFPacketMode; // Robust or Normal for Tracker
|
|
char PMaxLevel; // Pactor Max Level
|
|
char PMinLevel; // Pactor Max Level
|
|
char Antenna;
|
|
// char Supress; // Dont report this one to WL2K
|
|
char ARDOPMode[6];
|
|
char VARAMode;
|
|
char * Cmd1;
|
|
int Cmd1Len;
|
|
char * Cmd2;
|
|
int Cmd2Len;
|
|
char * Cmd3;
|
|
int Cmd3Len;
|
|
char * Cmd4;
|
|
int Cmd4Len;
|
|
char * PollCmd;
|
|
int PollCmdLen;
|
|
char APPL[13]; // Autoconnect APPL for this Freq
|
|
char APPLCALL[10]; // Callsign for autoconnect application
|
|
char Cmd1Msg[100]; // Space for commands
|
|
char Cmd2Msg[16];
|
|
char Cmd3Msg[16];
|
|
char Cmd4Msg[16];
|
|
};
|
|
|
|
struct HAMLIBSOCK
|
|
{
|
|
struct HAMLIBSOCK * Next;
|
|
SOCKET Sock;
|
|
union
|
|
{
|
|
struct sockaddr_in6 sin6;
|
|
struct sockaddr_in sin;
|
|
};
|
|
};
|
|
|
|
struct TNCINFO;
|
|
|
|
struct RIGINFO
|
|
{
|
|
// struct TRANSPORTENTRY * AttachedSession;
|
|
|
|
void * BPQtoRADIO_Q; // Frames from switch for radio
|
|
|
|
uint64_t BPQPort; // Port this radio is attached to. Bit Map, as may be more than one port controlling radio
|
|
// int PortNum; // Number of port that defined this rig
|
|
int Interlock; // Interlock group for this Radio
|
|
int IC735; // Old ICOM with shorter freq message
|
|
int ICF8101; // ICOM Land Mobile IC-F8101
|
|
char * CM108Device; // Device to open for CM108 GPIO PTT
|
|
|
|
struct _EXTPORTDATA * PortRecord[64]; // BPQ32 port record(s) for this rig (null terminated list)
|
|
|
|
UCHAR RigAddr;
|
|
int Channel; // For sdrangel
|
|
uint64_t ScanStopped; // Scanning enabled if zero. Bits used for interlocked scanning (eg winmor/pactor on same port
|
|
int ScanCounter;
|
|
int PollCounter; // Don't poll too often;
|
|
int ScanFreq; // Scan Rate
|
|
|
|
BOOL OKtoChange; // Can Change
|
|
BOOL WaitingForPermission; //
|
|
|
|
BOOL RIGOK; // RIG is reponding
|
|
|
|
int Session; // BPQ L4 Record Number
|
|
int DebugDelay;
|
|
|
|
char RigName[10];
|
|
|
|
struct TimeScan ** TimeBands; // List of TimeBands/Frequencies
|
|
int NumberofBands;
|
|
|
|
char * FreqText; // Frequency list in text format
|
|
|
|
// Frequency list is a block of ScanEntry structs, each holding Set Freq/Mode commands in link format, null terminated
|
|
|
|
struct ScanEntry ** FreqPtr;
|
|
|
|
int PTTMode; // PTT Control Flags.
|
|
|
|
#define PTTRTS 1
|
|
#define PTTDTR 2
|
|
#define PTTCI_V 4
|
|
#define PTTCM108 8
|
|
#define PTTHAMLIB 16
|
|
#define PTTFLRIG 32
|
|
|
|
int PTTTimer; // PTT Timer watchdog (limits PTT ON to PTT OFF time
|
|
|
|
#define PTTLimit 200
|
|
|
|
int repeatPTTOFFTimer; // On ICOM radios send a second PTT OFF command after 30 secs
|
|
|
|
struct RIGPORTINFO * PORT; // For PTT Routines
|
|
|
|
HWND hLabel;
|
|
HWND hCAT;
|
|
HWND hFREQ;
|
|
HWND hMODE;
|
|
HWND hSCAN;
|
|
HWND hPTT;
|
|
HWND hPORTS;
|
|
|
|
char * WEB_Label;
|
|
char * WEB_CAT;
|
|
char * WEB_FREQ;
|
|
char * WEB_MODE;
|
|
char * WEB_PORTS;
|
|
char WEB_SCAN;
|
|
char WEB_PTT;
|
|
|
|
double RigFreq;
|
|
char Valchar[15]; // Freq as char string
|
|
char CurrentBandWidth; // bandwidth as character
|
|
int Passband; // Filter bandwidth
|
|
char ModeString[16];
|
|
|
|
char PTTOn[60];
|
|
char PTTOff[60];
|
|
int PTTOnLen;
|
|
int PTTOffLen;
|
|
|
|
char Poll[50];
|
|
int PollLen;
|
|
|
|
char PTTCATPort[4][10];
|
|
HANDLE PTTCATHandles[4];
|
|
struct TNCINFO * PTTCATTNC[4];
|
|
|
|
int RealMux[4]; // BPQ Virtual or Real
|
|
|
|
int TSMenu; // Menu number for ACC?USB switching on TS590S/SG
|
|
BOOL RIG_DEBUG;
|
|
|
|
int HAMLIBPORT; // Port Number for HAMLIB (rigctld) Emulator
|
|
|
|
SOCKET ListenSocket;
|
|
|
|
struct HAMLIBSOCK * Sockets;
|
|
|
|
long long txOffset; // Used primarily with transverters
|
|
long long rxOffset;
|
|
long long pttOffset; // Used to set tx freq to corresponding rx freq (for split freq)
|
|
long long txFreq; // Used in preference to Rx Freq + pttOffset if set
|
|
int rxError; // RX Frequency Error
|
|
int txError; // TX Calibration Error
|
|
int PTTSetsFreq;
|
|
int defaultFreq;
|
|
|
|
char * reportFreqs;
|
|
|
|
long long lastSetFreq; // Last freq we set (saves recalulating ptt string if not changed
|
|
|
|
};
|
|
|
|
// PortType Equates
|
|
|
|
#define ICOM 1
|
|
#define YAESU 2
|
|
#define KENWOOD 3
|
|
#define PTT 4
|
|
#define ANT 5
|
|
#define FT100 6
|
|
#define FT2000 7
|
|
#define FLEX 8
|
|
#define M710 9
|
|
#define NMEA 10
|
|
#define FT1000 11
|
|
#define DUMMY 12
|
|
#define FT990 13
|
|
#define HAMLIB 14
|
|
#define FT991A 15 // 991A is a varient of FT2000 but easier to have own type
|
|
#define RTLUDP 16
|
|
#define FLRIG 17
|
|
#define SDRRADIO 18
|
|
//G7TAJ
|
|
#define SDRANGEL 19
|
|
//G7TAJ
|
|
#define FTDX10 20
|
|
|
|
// Yease seem to have lots of variants of the same model
|
|
|
|
#define FT1000D 1
|
|
#define FT1000MP 2
|
|
|
|
|
|
struct RIGPORTINFO
|
|
{
|
|
int PortType; // ICOM, Yaesu, Etc
|
|
int YaesuVariant; // Yaesu seems to have lots of incompatible subtypes
|
|
char IOBASE[256];
|
|
char PTTIOBASE[256]; // Port for Hardware PTT - may be same as control port.
|
|
int SPEED;
|
|
char * HIDDevice;
|
|
struct RIGINFO Rigs[10]; // Rigs off a port
|
|
char * InitPtr; // Next Command
|
|
int CmdSent; // Last Command sent
|
|
int CmdStream; // Stream last command was issued o
|
|
int ConfiguredRigs; // Radios on this interface
|
|
int CurrentRig; // Radio last accessed.
|
|
|
|
int Timeout; // Timeout response counter
|
|
int Retries;
|
|
BOOL PORTOK; // PORT is reponding
|
|
|
|
int Closed; // CLOSE command received
|
|
|
|
HANDLE hDevice; // COM device Handle
|
|
int ReopenDelay;
|
|
struct TNCINFO * PTC; // Set to TNC record address if using an SCS PTC Radio Port
|
|
SOCKET remoteSock; // Socket for use with WINMORCONROL
|
|
struct sockaddr remoteDest; // Dest for above
|
|
HANDLE hPTTDevice; // May use a different port for PTT
|
|
UCHAR TXBuffer[500]; // Last message sent - saved for Retry
|
|
int TXLen; // Len of last sent
|
|
// ---- G7TAJ ----
|
|
UCHAR RXBuffer[8192]; // Message being received - may not arrive all at once. SDRANGLE needs a lot
|
|
// ---- G7TAJ ----
|
|
int RXLen; // Data in RXBUffer
|
|
BOOL AutoPoll; // set if last command was a Timer poll
|
|
// Local ScanStruct for Interactive Commands
|
|
struct ScanEntry * FreqPtr; // Block we are currently sending.
|
|
struct ScanEntry ScanEntry;
|
|
int CONNECTED; // for HAMLIB
|
|
int CONNECTING;
|
|
int Alerted;
|
|
};
|
|
|
|
|
|
#define IOCTL_SERIAL_IS_COM_OPEN CTL_CODE(FILE_DEVICE_SERIAL_PORT,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS)
|
|
#define IOCTL_SERIAL_GETDATA CTL_CODE(FILE_DEVICE_SERIAL_PORT,0x801,METHOD_BUFFERED,FILE_ANY_ACCESS)
|
|
#define IOCTL_SERIAL_SETDATA CTL_CODE(FILE_DEVICE_SERIAL_PORT,0x802,METHOD_BUFFERED,FILE_ANY_ACCESS)
|
|
|
|
#define IOCTL_SERIAL_SET_CTS CTL_CODE(FILE_DEVICE_SERIAL_PORT,0x803,METHOD_BUFFERED,FILE_ANY_ACCESS)
|
|
#define IOCTL_SERIAL_SET_DSR CTL_CODE(FILE_DEVICE_SERIAL_PORT,0x804,METHOD_BUFFERED,FILE_ANY_ACCESS)
|
|
#define IOCTL_SERIAL_SET_DCD CTL_CODE(FILE_DEVICE_SERIAL_PORT,0x805,METHOD_BUFFERED,FILE_ANY_ACCESS)
|
|
|
|
#define IOCTL_SERIAL_CLR_CTS CTL_CODE(FILE_DEVICE_SERIAL_PORT,0x806,METHOD_BUFFERED,FILE_ANY_ACCESS)
|
|
#define IOCTL_SERIAL_CLR_DSR CTL_CODE(FILE_DEVICE_SERIAL_PORT,0x807,METHOD_BUFFERED,FILE_ANY_ACCESS)
|
|
#define IOCTL_SERIAL_CLR_DCD CTL_CODE(FILE_DEVICE_SERIAL_PORT,0x808,METHOD_BUFFERED,FILE_ANY_ACCESS)
|
|
|
|
#define IOCTL_BPQ_ADD_DEVICE CTL_CODE(FILE_DEVICE_SERIAL_PORT,0x809,METHOD_BUFFERED,FILE_ANY_ACCESS)
|
|
#define IOCTL_BPQ_DELETE_DEVICE CTL_CODE(FILE_DEVICE_SERIAL_PORT,0x80a,METHOD_BUFFERED,FILE_ANY_ACCESS)
|
|
|
|
#define W98_SERIAL_GETDATA 0x801
|
|
#define W98_SERIAL_SETDATA 0x802
|
|
|
|
#endif
|