linbpq/rigcontrol.h

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