#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