diff --git a/AeroWizard/AeroWizard/AeroWizard.csproj b/AeroWizard/AeroWizard/AeroWizard.csproj index 8052163..0f6d659 100644 --- a/AeroWizard/AeroWizard/AeroWizard.csproj +++ b/AeroWizard/AeroWizard/AeroWizard.csproj @@ -96,8 +96,8 @@ ..\..\packages\Newtonsoft.Json.12.0.3\lib\net40\Newtonsoft.Json.dll - - ..\..\packages\System.Data.SQLite.Core.1.0.112.0\lib\net40\System.Data.SQLite.dll + + ..\..\packages\Stub.System.Data.SQLite.Core.NetFramework.1.0.113.3\lib\net40\System.Data.SQLite.dll @@ -246,11 +246,11 @@ - + Dieses Projekt verweist auf mindestens ein NuGet-Paket, das auf diesem Computer fehlt. Verwenden Sie die Wiederherstellung von NuGet-Paketen, um die fehlenden Dateien herunterzuladen. Weitere Informationen finden Sie unter "http://go.microsoft.com/fwlink/?LinkID=322105". Die fehlende Datei ist "{0}". - + \ No newline at end of file diff --git a/AeroWizard/AeroWizard/packages.config b/AeroWizard/AeroWizard/packages.config index 2bc3b5b..05a4de8 100644 --- a/AeroWizard/AeroWizard/packages.config +++ b/AeroWizard/AeroWizard/packages.config @@ -1,5 +1,6 @@  - + + \ No newline at end of file diff --git a/AirScout.AircraftPositions/AirScout.AircraftPositions.csproj b/AirScout.AircraftPositions/AirScout.AircraftPositions.csproj index 2769597..59486ef 100644 --- a/AirScout.AircraftPositions/AirScout.AircraftPositions.csproj +++ b/AirScout.AircraftPositions/AirScout.AircraftPositions.csproj @@ -37,8 +37,8 @@ - - ..\packages\System.Data.SQLite.Core.1.0.112.0\lib\net40\System.Data.SQLite.dll + + ..\packages\Stub.System.Data.SQLite.Core.NetFramework.1.0.113.3\lib\net40\System.Data.SQLite.dll @@ -93,12 +93,12 @@ - + Dieses Projekt verweist auf mindestens ein NuGet-Paket, das auf diesem Computer fehlt. Verwenden Sie die Wiederherstellung von NuGet-Paketen, um die fehlenden Dateien herunterzuladen. Weitere Informationen finden Sie unter "http://go.microsoft.com/fwlink/?LinkID=322105". Die fehlende Datei ist "{0}". - + plane heading @@ -2465,7 +2482,7 @@ namespace AirScout.Aircrafts if ((i4 != null) && ((imin == null) || (i4.QRB < imin.QRB))) imin = i4; // check hot planes which are very near the path first - if ((imin != null) && (imin.QRB <= maxdist)) + if ((imin != null) && (imin.QRB <= maxdist) && (imin.Dist1 <= ppath.Distance)) { // plane is near path // use the minimum qrb info @@ -2506,7 +2523,7 @@ namespace AirScout.Aircrafts else { // plane is far from path --> check only intersection i1 = planes moves towards path - if ((i1 != null) && (i1.Min_H <= maxalt)) + if ((i1 != null) && (i1.Min_H <= maxalt) && (i1.Dist1 <= ppath.Distance)) { plane.IntPoint = new LatLon.GPoint(i1.Lat, i1.Lon); plane.IntQRB = i1.QRB; diff --git a/AirScout.Aircrafts/Airline.cs b/AirScout.Aircrafts/Airline.cs index 9cb2559..6f5d860 100644 --- a/AirScout.Aircrafts/Airline.cs +++ b/AirScout.Aircrafts/Airline.cs @@ -81,7 +81,7 @@ namespace AirScout.Aircrafts DataColumn ICAO = this.Columns.Add("ICAO", typeof(string)); DataColumn Airline = this.Columns.Add("Airline", typeof(string)); DataColumn Country = this.Columns.Add("Country", typeof(string)); - DataColumn LastUpdated = this.Columns.Add("LastUpdated", typeof(string)); + DataColumn LastUpdated = this.Columns.Add("LastUpdated", typeof(int)); // create primary key DataColumn[] keys = new DataColumn[2]; keys[0] = IATA; diff --git a/AirScout.Aircrafts/PlaneInfoCache.cs b/AirScout.Aircrafts/PlaneInfoCache.cs index 15c1acf..7e7d8c0 100644 --- a/AirScout.Aircrafts/PlaneInfoCache.cs +++ b/AirScout.Aircrafts/PlaneInfoCache.cs @@ -4,6 +4,7 @@ using System.Collections.Generic; using System.Linq; using System.Text; using AirScout.Core; +using System.IO; namespace AirScout.Aircrafts { @@ -20,7 +21,7 @@ namespace AirScout.Aircrafts PlaneInfo oldplane = null; if (!this.TryGetValue(plane.Hex, out oldplane)) { - // add plane + // not found --> add plane this.Add(plane.Hex, plane); i = 1; } @@ -29,6 +30,15 @@ namespace AirScout.Aircrafts // plane already in cache --> check time and update if newer if (plane.Time > oldplane.Time) { + // keep old values + oldplane.OldTime = oldplane.Time; + oldplane.OldLat = oldplane.Lat; + oldplane.OldLon = oldplane.Lon; + oldplane.OldAlt = oldplane.Alt; + oldplane.OldSpeed = oldplane.Speed; + oldplane.OldTrack = oldplane.Track; + + // update values oldplane.Alt = plane.Alt; oldplane.AltDiff = plane.AltDiff; oldplane.Angle = plane.Angle; @@ -121,21 +131,89 @@ namespace AirScout.Aircrafts return null; // create new plane info PlaneInfo info = new PlaneInfo(plane); - // estimate new position + // estimate new values + double alt = 0; + double speed = 0; + double speed_kmh = 0; + double track = 0; + double dist = 0; + LatLon.GPoint newpos; + // use stored old values if available + if (plane.OldTime != DateTime.MinValue) + { + double oldtimediff = (plane.Time - plane.OldTime).TotalSeconds; + double newtimediff = (at - plane.Time).TotalSeconds; + + // adjust values if there is a valid timespan in history + if ((oldtimediff > 0) && (newtimediff > 0)) + { + alt = (plane.Alt - plane.OldAlt) / oldtimediff * newtimediff + plane.Alt; + track = (plane.Track - plane.OldTrack) / oldtimediff * newtimediff + plane.Track; + speed = (plane.Speed - plane.OldSpeed) / oldtimediff * newtimediff + plane.Speed; + } + else + { + // do nothing + } + } + else + { + // no stored values available + } + + // --> estimate new position using speed and track + + // do plausibility check of calculated new absolute values + if ((alt > 0) && (alt <= 50000) && + (track > 0) && (track <= 360) && + (speed > 0) && (speed <= 700)) + { + // change speed to km/h + speed_kmh = UnitConverter.kts_kmh(speed); + // calculate distance after timespan + dist = speed_kmh * (at - info.Time).TotalHours; + // estimate new position + newpos = LatLon.DestinationPoint(info.Lat, info.Lon, track, dist); + + // check resulting motion vector against last reported track + // should be well inside the bounds + // a plane cannot move to a position to where it is not pointing to + double calctrack = LatLon.Bearing(info.Lat, info.Lon, newpos.Lat, newpos.Lon); + if (Math.Abs(info.Track - calctrack) < 45) + { + // valid --> use the calculated values + info.Lat = newpos.Lat; + info.Lon = newpos.Lon; + info.Alt = alt; + info.Track = track; + info.Speed = speed; + info.Time = at; + + // return calculated info + return info; + } + } + + // one of plausibility checks failed --> use last reported constant values for estimation // change speed to km/h - double speed = info.Speed_kmh; + speed_kmh = info.Speed_kmh; // calculate distance after timespan - double dist = speed * (at - info.Time).TotalHours; + dist = speed_kmh * (at - info.Time).TotalHours; // estimate new position - LatLon.GPoint newpos = LatLon.DestinationPoint(info.Lat, info.Lon, info.Track, dist); + newpos = LatLon.DestinationPoint(info.Lat, info.Lon, info.Track, dist); info.Lat = newpos.Lat; info.Lon = newpos.Lon; info.Time = at; + + // return calculated info return info; } public List GetAll(DateTime at, int ttl) { + string filename = "positions.csv"; + string call = "CSN464"; + List l = new List(); DateTime to = at; DateTime from = to - new TimeSpan(0, ttl, 0); @@ -147,14 +225,86 @@ namespace AirScout.Aircrafts continue; // create new plane info PlaneInfo info = new PlaneInfo(plane); - // estimate new position + // estimate new values + // use stored old values if available + if (plane.OldTime != DateTime.MinValue) + { + double oldtimediff = (plane.Time - plane.OldTime).TotalSeconds; + double newtimediff = (at - plane.Time).TotalSeconds; + + // adjust values if there is a valid timespan in history + if ((oldtimediff > 0) && (newtimediff > 0)) + { + double newalt = (plane.Alt - plane.OldAlt) / oldtimediff * newtimediff + plane.Alt; + double newtrack = (plane.Track - plane.OldTrack) / oldtimediff * newtimediff + plane.Track; + double newspeed = (plane.Speed - plane.OldSpeed) / oldtimediff * newtimediff + plane.Speed; + + if (plane.Call == call) + { + File.AppendAllText(filename, oldtimediff.ToString() + ";" + + newtimediff.ToString() + ";" + + plane.OldAlt.ToString("F8") + ";" + + plane.Alt.ToString("F8") + ";" + + newalt.ToString("F8") + ";" + + plane.OldTrack.ToString("F8") + ";" + + plane.Track.ToString("F8") + ";" + + newtrack.ToString("F8") + ";" + + plane.OldSpeed.ToString("F8") + ";" + + plane.Speed.ToString("F8") + ";" + + newspeed.ToString("F8") + ";" + + Environment.NewLine); + } + // do plausibility check of calculated values + if ((newalt > 0) && (newalt < 50000) && + (newtrack > 0) && (newtrack < 360) && + (newspeed > 0) && (newspeed < 700)) + { + info.Alt = newalt; + info.Track = newtrack; + info.Speed = newspeed; + } + else + { + // do nothing + if (plane.Call == call) + { + File.AppendAllText(filename, oldtimediff.ToString() + ";" + + newtimediff.ToString() + ";" + + plane.OldAlt.ToString("F8") + ";" + + plane.Alt.ToString("F8") + ";" + + newalt.ToString("F8") + ";" + + plane.OldTrack.ToString("F8") + ";" + + plane.Track.ToString("F8") + ";" + + newtrack.ToString("F8") + ";" + + plane.OldSpeed.ToString("F8") + ";" + + plane.Speed.ToString("F8") + ";" + + newspeed.ToString("F8") + ":" + + "invalid values!" + + Environment.NewLine); + } + } + } + else + { + // do nothing + if (plane.Call == call) + { + File.AppendAllText(filename, oldtimediff.ToString() + ";" + newtimediff.ToString() + "invalid timediff!" + Environment.NewLine); + } + } + } + else + { + // no stored values available + } + + // --> estimate new position using speed and track // change speed to km/h double speed = info.Speed_kmh; // calculate distance after timespan double dist = speed * (at - info.Time).TotalHours; // estimate new position LatLon.GPoint newpos = LatLon.DestinationPoint(info.Lat, info.Lon, info.Track, dist); - double d = LatLon.Distance(info.Lat, info.Lon, newpos.Lat, newpos.Lon); info.Lat = newpos.Lat; info.Lon = newpos.Lon; info.Time = at; diff --git a/AirScout.Aircrafts/Properties/AssemblyInfo.cs b/AirScout.Aircrafts/Properties/AssemblyInfo.cs index c38a19b..f7c80d9 100644 --- a/AirScout.Aircrafts/Properties/AssemblyInfo.cs +++ b/AirScout.Aircrafts/Properties/AssemblyInfo.cs @@ -32,5 +32,5 @@ using System.Runtime.InteropServices; // Sie können alle Werte angeben oder die standardmäßigen Build- und Revisionsnummern // übernehmen, indem Sie "*" eingeben: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.3.0.0")] -[assembly: AssemblyFileVersion("1.3.0.0")] +[assembly: AssemblyVersion("1.3.1.0")] +[assembly: AssemblyFileVersion("1.3.1.0")] diff --git a/AirScout.Aircrafts/packages.config b/AirScout.Aircrafts/packages.config index 2bc3b5b..05a4de8 100644 --- a/AirScout.Aircrafts/packages.config +++ b/AirScout.Aircrafts/packages.config @@ -1,5 +1,6 @@  - + + \ No newline at end of file diff --git a/AirScout.CAT/AirScout.CAT.csproj b/AirScout.CAT/AirScout.CAT.csproj new file mode 100644 index 0000000..37c1229 --- /dev/null +++ b/AirScout.CAT/AirScout.CAT.csproj @@ -0,0 +1,71 @@ + + + + + Debug + AnyCPU + {FFDEC390-7BBC-4DEC-9826-1DD04279F3FA} + Library + Properties + AirScout.CAT + AirScout.CAT + v4.0 + 512 + true + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + True + True + Settings.settings + + + + + + + + PublicSettingsSingleFileGenerator + Settings.Designer.cs + + + + + {c9291203-b5d0-4179-888d-04bc670b158f} + ScoutBase.CAT + + + + \ No newline at end of file diff --git a/AirScout.CAT/CATWorker.cs b/AirScout.CAT/CATWorker.cs new file mode 100644 index 0000000..39f91fb --- /dev/null +++ b/AirScout.CAT/CATWorker.cs @@ -0,0 +1,289 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data.OleDb; +using System.Globalization; +using System.Linq; +using System.Security.Policy; +using System.Text; +using System.Threading; +using ScoutBase.CAT; + +namespace AirScout.CAT +{ + + public class CATWorkerStartOptions + { + public string Name; + public string RigType = ""; + public string PortName = ""; + public int Baudrate = 9600; + public int DataBits = 8; + public PARITY Parity = PARITY.NONE; + public STOPBITS StopBits = STOPBITS.ONE; + public FLOWCONTROL RTS = FLOWCONTROL.LOW; + public FLOWCONTROL DTR = FLOWCONTROL.LOW; + public int Poll = 100; + public int Timeout = 500; + } + + public class CATWorker : BackgroundWorker + { + + public CATWorkerStartOptions StartOptions; + public IRig Rig = null; + + // doppler tracking + public DOPPLERSTRATEGY DopplerStrategy = DOPPLERSTRATEGY.DOPPLER_NONE; + public long RxFrequency = 0; + public long TxFrequency = 0; + + public CATWorker() + { + this.WorkerReportsProgress = true; + this.WorkerSupportsCancellation = true; + } + + #region OmniRig + + #endregion + + // provides a list of supported rigs + public static List SupportedRigs() + { + List rigs = new List(); + // try to get external OmniRig supported rigs + try + { + List omnirigs = OmniRigX.SupportedRigs(); + foreach (SupportedRig omnirig in omnirigs) + { + rigs.Add(omnirig); + } + } + catch (Exception ex) + { + // add nothing if something goes wrong + } + + // try to get ScoutBase OmniRig supported rigs + try + { + List scoutbaserigs = ScoutBaseRig.SupportedRigs(); + foreach (SupportedRig scoutbaserig in scoutbaserigs) + { + rigs.Add(scoutbaserig); + } + } + catch (Exception ex) + { + // add nothing if something goes wrong + } + + // try to collect other rigs from other CAT interfaces here + + // return supported rigs + return rigs; + } + + protected override void OnDoWork(DoWorkEventArgs e) + { + StartOptions = (CATWorkerStartOptions)e.Argument; + this.ReportProgress(0, StartOptions.Name + " started."); + // name the thread for debugging + if (String.IsNullOrEmpty(Thread.CurrentThread.Name)) + Thread.CurrentThread.Name = StartOptions.Name + "_" + this.GetType().Name; + + // check if any CAT is working by getting all supported rigs + // handle exceptions + List rigs = new List(); + try + { + rigs = CATWorker.SupportedRigs(); + } + catch (Exception ex) + { + this.ReportProgress(-1, "Error while getting supported rigs from CAT: " + ex.Message); + this.ReportProgress(1, RIGSTATUS.NOCAT); + return; + } + + // check if any rig is found + if (rigs.Count == 0) + { + this.ReportProgress(-1, "Error while getting supported rigs from CAT: No available CAT found!"); + this.ReportProgress(1, RIGSTATUS.NORIG); + return; + } + + // check if the rig is among the currently supported rigs --> get a new IRig object + // be careful with ActiveX objects an handle exceptions + Rig = null; + try + { + foreach (SupportedRig rig in rigs) + { + if (rig.Type == StartOptions.RigType) + { + switch (rig.CATEngine) + { + case CATENGINE.OMNIRIGX: Rig = new OmniRigX(); break; + case CATENGINE.SCOUTBASE: Rig = new ScoutBaseRig(); break; + } + + // OK, we have a valid CAT and rig --> complete and download settings + RigSettings settings = new RigSettings(); + settings.Type = rig.Type; + settings.Model = rig.Model; + settings.PortName = StartOptions.PortName; + settings.Baudrate = StartOptions.Baudrate; + settings.DataBits = StartOptions.DataBits; + settings.Parity = StartOptions.Parity; + settings.StopBits = StartOptions.StopBits; + settings.RtsMode = StartOptions.RTS; + settings.DtrMode = StartOptions.DTR; + settings.PollMs = StartOptions.Poll; + settings.TimeoutMs = StartOptions.Timeout; + Rig.Settings = settings; + + // stop search + break; + } + } + } + catch (Exception ex) + { + this.ReportProgress(-1, "Error while trying to get a rig object from CAT: " + ex.ToString()); + } + + // report error if rig is still null + if (Rig == null) + { + this.ReportProgress(-1, "Rig is not supported by any available CAT!"); + this.ReportProgress(1, RIGSTATUS.NORIG); + return; + } + + + this.ReportProgress(0, "Opening CAT: Success!"); + this.ReportProgress(2, Rig); + + // old values for check changes + DOPPLERSTRATEGY olddoppler = DOPPLERSTRATEGY.DOPPLER_NONE; + RIGSTATUS oldrigstat = RIGSTATUS.NONE; + RIGMODE oldrigmode = RIGMODE.NONE; + RIGSPLIT oldrigsplit = RIGSPLIT.NONE; + RIGRIT oldrigrit = RIGRIT.NONE; + long oldrxfreq = -1; + long oldtxfreq = -1; + + // run polling loop + while (!this.CancellationPending) + { + try + { + RIGSTATUS rigstatus = Rig.GetStatus(); + if (oldrigstat != rigstatus) + { + oldrigstat = rigstatus; + this.ReportProgress(1, rigstatus); + } + + // get rig infos when rig is online + if (rigstatus == RIGSTATUS.ONLINE) + { + // get mode + RIGMODE rigmode = Rig.GetMode(); + if ( oldrigmode != rigmode) + { + lock (Rig) + { + oldrigmode = rigmode; + this.ReportProgress(2, Rig); + } + } + + // get split + RIGSPLIT rigsplit = Rig.GetSplit(); + if (oldrigsplit != rigsplit) + { + lock (Rig) + { + oldrigsplit = rigsplit; + this.ReportProgress(2, Rig); + } + } + + // get rit + RIGRIT rigrit = Rig.GetRit(); + if (oldrigrit != rigrit) + { + lock (Rig) + { + oldrigrit = rigrit; + this.ReportProgress(2, Rig); + } + } + + // get RX frequency + long rxfreq = Rig.GetRxFrequency(); + if (oldrxfreq != rxfreq) + { + lock (Rig) + { + oldrxfreq = rxfreq; + this.ReportProgress(2, Rig); + } + } + + // get TX frequency + long txfreq = Rig.GetTxFrequency(); + if (oldtxfreq != txfreq) + { + lock (Rig) + { + oldtxfreq = txfreq; + this.ReportProgress(2, Rig); + } + } + + } + + // check for Doppler settings changes + if (olddoppler != DopplerStrategy) + { + olddoppler = DopplerStrategy; + // check for Doppler tracking enabled + if ((DopplerStrategy == DOPPLERSTRATEGY.DOPPLER_A) || (DopplerStrategy == DOPPLERSTRATEGY.DOPPLER_B) || (DopplerStrategy == DOPPLERSTRATEGY.DOPPLER_C) || (DopplerStrategy == DOPPLERSTRATEGY.DOPPLER_D)) + { + // enter doppler tracking + Rig.SetDopplerStrategy(DopplerStrategy); + Rig.EnterDoppler(); + } + else + { + // leave doppler tracking + Rig.SetDopplerStrategy(DOPPLERSTRATEGY.DOPPLER_NONE); + Rig.LeaveDoppler(); + } + } + + // Doppler tracking + if ((DopplerStrategy == DOPPLERSTRATEGY.DOPPLER_A) || (DopplerStrategy == DOPPLERSTRATEGY.DOPPLER_B) || (DopplerStrategy == DOPPLERSTRATEGY.DOPPLER_C) || (DopplerStrategy == DOPPLERSTRATEGY.DOPPLER_D)) + { + Rig.SetSplitMode(RxFrequency, TxFrequency); + } + } + catch (Exception ex) + { + + } + + Thread.Sleep(Properties.Settings.Default.CAT_Update); + } + + // reset status + this.ReportProgress(1, RIGSTATUS.NONE); + } + } +} diff --git a/AirScout.CAT/Enums.cs b/AirScout.CAT/Enums.cs new file mode 100644 index 0000000..7fe1a1b --- /dev/null +++ b/AirScout.CAT/Enums.cs @@ -0,0 +1,125 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Text; + +namespace AirScout.CAT +{ + public enum CATENGINE + { + NONE = 0, + OMNIRIGX = 1, + SCOUTBASE = 2, + HAMLIB = 3 + } + + [Description("Rig Status")] + public enum RIGSTATUS + { + [Description("None")] + NONE = 0, + [Description("CAT not available")] + NOCAT = 1, + [Description("Port not available")] + NOPORT = 2, + [Description("Rig not available")] + NORIG = 4, + [Description("Rig not suitable")] + NOTSUITABLE = 8, + [Description("Rig offline")] + OFFLINE = 16, + [Description("Rig online")] + ONLINE = 64, + [Description("Error")] + ERROR = 128 + } + + public enum RIGSPLIT + { + NONE = 0, + SPLITOFF = 1, + SPLITON = 2, + ERROR = 128 + } + + public enum RIGRIT + { + NONE = 0, + RITON = 1, + RITOFF = 2, + ERROR = 128 + } + + public enum RIGMODE + { + NONE = 0, + CW = 1, + CW_R = 2, + LSB = 3, + USB = 4, + DIG = 5, + DIG_R = 6, + AM = 7, + FM = 8, + OTHER = 9, + ERROR = 128 + } + + public enum RIGVFO + { + NONE = 0, + A = 1, + B = 2, + ERROR = 128 + } + + [Description("Flow Control")] + public enum FLOWCONTROL + { + [Description("Low")] + LOW, + [Description("High")] + HIGH, + [Description("Handshake")] + HANDSHAKE + } + + [Description("Stopbits")] + public enum STOPBITS + { + [Description("1")] + ONE, + [Description("1,5")] + ONE_5, + [Description("2")] + TWO + } + + [Description("Parity")] + public enum PARITY + { + [Description("None")] + NONE, + [Description("Odd")] + ODD, + [Description("Even")] + EVEN, + [Description("Mark")] + MARK, + [Description("Space")] + SPACE + } + + public enum DOPPLERSTRATEGY + { + DOPPLER_NONE = 0, + DOPPLER_A = 1, + DOPPLER_B = 2, + DOPPLER_C = 4, + DOPPLER_D = 8, + ERROR = 128 + } + + +} diff --git a/AirScout.CAT/ExtOmniRig.cs b/AirScout.CAT/ExtOmniRig.cs new file mode 100644 index 0000000..d73003c --- /dev/null +++ b/AirScout.CAT/ExtOmniRig.cs @@ -0,0 +1,526 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Linq.Expressions; +using System.Runtime.InteropServices; +using System.Text; + +namespace AirScout.CAT +{ + + // can handle different versions dynamically + public static class ExtOmniRig + { + + private static dynamic OmniRigEngine = null; + private static string OmniRigVersion = ""; + private static OMNIRIGSTATUS Status = OMNIRIGSTATUS.ST_NOTCONFIGURED; + private static int Retries = 0; + + public static RIGSTATUS GetRigStatus(string rig) + { + try + { + OMNIRIGSTATUS omnistat = OMNIRIGSTATUS.ST_NOTCONFIGURED; + + if (rig == "OmniRig Rig 1") + { + omnistat = (OMNIRIGSTATUS)ExtOmniRig.OmniRigEngine.Rig1.Status; + } + else if (rig == "OmniRig Rig 2") + { + omnistat = (OMNIRIGSTATUS)ExtOmniRig.OmniRigEngine.Rig2.Status; + } + + else if ((OmniRigEngine.InterfaceVersion >= 0x210) && + (OmniRigEngine.InterfaceVersion >= 0x299) && + (rig == "OmniRig 3") + ) + { + omnistat = (OMNIRIGSTATUS)ExtOmniRig.OmniRigEngine.Rig3.Status; + } + + else if ((OmniRigEngine.InterfaceVersion >= 0x210) && + (OmniRigEngine.InterfaceVersion >= 0x299) && + (rig == "OmniRig 4") + ) + { + omnistat = (OMNIRIGSTATUS)ExtOmniRig.OmniRigEngine.Rig4.Status; + } + + // suppress sporadic "offline" status + if (omnistat != OMNIRIGSTATUS.ST_ONLINE) + { + if (Retries < 3) + { + omnistat = Status; + Retries++; + } + } + else + { + Status = omnistat; + Retries = 0; + } + + + // translate OmniRig status to rig status + switch (omnistat) + { + case OMNIRIGSTATUS.ST_ONLINE: + return RIGSTATUS.ONLINE; + case OMNIRIGSTATUS.ST_NOTRESPONDING: + return RIGSTATUS.OFFLINE; + default: + return RIGSTATUS.ERROR; + } + + } + catch (Exception ex) + { + // do nothing + } + + return RIGSTATUS.ERROR; + } + + public static RIGRIT GetRit(string rig) + { + try + { + if (rig == "OmniRig Rig 1") + { + switch ((OMNIRIGPARAM)OmniRigEngine.Rig1.Rit) + { + case OMNIRIGPARAM.PM_RITOFF: + return RIGRIT.RITOFF; + + case OMNIRIGPARAM.PM_RITON: + return RIGRIT.RITON; + default: + return RIGRIT.ERROR; + } + } + else if (rig == "OmniRig Rig 2") + { + switch ((OMNIRIGPARAM)OmniRigEngine.Rig2.Rit) + { + case OMNIRIGPARAM.PM_RITOFF: + return RIGRIT.RITOFF; + + case OMNIRIGPARAM.PM_RITON: + return RIGRIT.RITON; + default: + return RIGRIT.ERROR; + } + } + else if ((OmniRigEngine.InterfaceVersion >= 0x210) && + (OmniRigEngine.InterfaceVersion >= 0x299) && + (rig == "OmniRig 3") + ) + { + switch ((OMNIRIGPARAM)OmniRigEngine.Rig3.Rit) + { + case OMNIRIGPARAM.PM_RITOFF: + return RIGRIT.RITOFF; + + case OMNIRIGPARAM.PM_RITON: + return RIGRIT.RITON; + default: + return RIGRIT.ERROR; + } + } + else if ((OmniRigEngine.InterfaceVersion >= 0x210) && + (OmniRigEngine.InterfaceVersion >= 0x299) && + (rig == "OmniRig 4") + ) + { + switch ((OMNIRIGPARAM)OmniRigEngine.Rig4.Rit) + { + case OMNIRIGPARAM.PM_RITOFF: + return RIGRIT.RITOFF; + + case OMNIRIGPARAM.PM_RITON: + return RIGRIT.RITON; + default: + return RIGRIT.ERROR; + } + } + } + catch (Exception ex) + { + // do nothing + } + return RIGRIT.ERROR; ; + } + + public static RIGSPLIT GetSplit(string rig) + { + try + { + if (rig == "OmniRig Rig 1") + { + switch ((OMNIRIGPARAM)OmniRigEngine.Rig1.Split) + { + case OMNIRIGPARAM.PM_SPLITOFF: + return RIGSPLIT.SPLITOFF; + case OMNIRIGPARAM.PM_SPLITON: + return RIGSPLIT.SPLITON; + default: + return RIGSPLIT.ERROR; + } + } + else if (rig == "OmniRig Rig 2") + { + switch ((OMNIRIGPARAM)OmniRigEngine.Rig2.Split) + { + case OMNIRIGPARAM.PM_SPLITOFF: + return RIGSPLIT.SPLITOFF; + case OMNIRIGPARAM.PM_SPLITON: + return RIGSPLIT.SPLITON; + default: + return RIGSPLIT.ERROR; + } + } + + else if ((OmniRigEngine.InterfaceVersion >= 0x210) && + (OmniRigEngine.InterfaceVersion >= 0x299) && + (rig == "OmniRig 3") + ) + { + switch ((OMNIRIGPARAM)OmniRigEngine.Rig3.Split) + { + case OMNIRIGPARAM.PM_SPLITOFF: + return RIGSPLIT.SPLITOFF; + case OMNIRIGPARAM.PM_SPLITON: + return RIGSPLIT.SPLITON; + default: + return RIGSPLIT.ERROR; + } + } + + else if ((OmniRigEngine.InterfaceVersion >= 0x210) && + (OmniRigEngine.InterfaceVersion >= 0x299) && + (rig == "OmniRig 4") + ) + { + switch ((OMNIRIGPARAM)OmniRigEngine.Rig4.Split) + { + case OMNIRIGPARAM.PM_SPLITOFF: + return RIGSPLIT.SPLITOFF; + case OMNIRIGPARAM.PM_SPLITON: + return RIGSPLIT.SPLITON; + default: + return RIGSPLIT.ERROR; + } + } + } + catch (Exception ex) + { + // do nothing + } + return RIGSPLIT.ERROR; ; + } + + public static RIGMODE GetMode(string rig) + { + try + { + if (rig == "OmniRig Rig 1") + { + switch ((OMNIRIGPARAM)OmniRigEngine.Rig1.Mode) + { + case OMNIRIGPARAM.PM_CW_L: + return RIGMODE.CW; + case OMNIRIGPARAM.PM_CW_U: + return RIGMODE.CW_R; + case OMNIRIGPARAM.PM_SSB_L: + return RIGMODE.LSB; + case OMNIRIGPARAM.PM_SSB_U: + return RIGMODE.USB; + case OMNIRIGPARAM.PM_FM: + return RIGMODE.FM; + case OMNIRIGPARAM.PM_AM: + return RIGMODE.AM; + default: + return RIGMODE.OTHER; + } + } + else if (rig == "OmniRig Rig 2") + { + switch ((OMNIRIGPARAM)OmniRigEngine.Rig2.Mode) + { + case OMNIRIGPARAM.PM_CW_L: + return RIGMODE.CW; + case OMNIRIGPARAM.PM_CW_U: + return RIGMODE.CW_R; + case OMNIRIGPARAM.PM_SSB_L: + return RIGMODE.LSB; + case OMNIRIGPARAM.PM_SSB_U: + return RIGMODE.USB; + case OMNIRIGPARAM.PM_FM: + return RIGMODE.FM; + case OMNIRIGPARAM.PM_AM: + return RIGMODE.AM; + default: + return RIGMODE.OTHER; + } + } + + else if ((OmniRigEngine.InterfaceVersion >= 0x210) && + (OmniRigEngine.InterfaceVersion >= 0x299) && + (rig == "OmniRig 3") + ) + { + switch ((OMNIRIGPARAM)OmniRigEngine.Rig3.Mode) + { + case OMNIRIGPARAM.PM_CW_L: + return RIGMODE.CW; + case OMNIRIGPARAM.PM_CW_U: + return RIGMODE.CW_R; + case OMNIRIGPARAM.PM_SSB_L: + return RIGMODE.LSB; + case OMNIRIGPARAM.PM_SSB_U: + return RIGMODE.USB; + case OMNIRIGPARAM.PM_FM: + return RIGMODE.FM; + case OMNIRIGPARAM.PM_AM: + return RIGMODE.AM; + default: + return RIGMODE.OTHER; + } + } + + else if ((OmniRigEngine.InterfaceVersion >= 0x210) && + (OmniRigEngine.InterfaceVersion >= 0x299) && + (rig == "OmniRig 4") + ) + { + switch ((OMNIRIGPARAM)OmniRigEngine.Rig4.Mode) + { + case OMNIRIGPARAM.PM_CW_L: + return RIGMODE.CW; + case OMNIRIGPARAM.PM_CW_U: + return RIGMODE.CW_R; + case OMNIRIGPARAM.PM_SSB_L: + return RIGMODE.LSB; + case OMNIRIGPARAM.PM_SSB_U: + return RIGMODE.USB; + case OMNIRIGPARAM.PM_FM: + return RIGMODE.FM; + case OMNIRIGPARAM.PM_AM: + return RIGMODE.AM; + default: + return RIGMODE.OTHER; + } + } + } + catch (Exception ex) + { + // do nothing + } + return RIGMODE.ERROR; ; + } + + public static long GetRXFrequency(string rig) + { + try + { + if (rig == "OmniRig Rig 1") + { + return (long)OmniRigEngine.Rig1.GetRxFrequency(); + } + else if (rig == "OmniRig Rig 2") + { + return (long)OmniRigEngine.Rig2.GetRxFrequency(); + } + + else if ((OmniRigEngine.InterfaceVersion >= 0x210) && + (OmniRigEngine.InterfaceVersion >= 0x299) && + (rig == "OmniRig 3") + ) + { + return (long)OmniRigEngine.Rig3.GetRxFrequency(); + } + + else if ((OmniRigEngine.InterfaceVersion >= 0x210) && + (OmniRigEngine.InterfaceVersion >= 0x299) && + (rig == "OmniRig 4") + ) + { + return (long)OmniRigEngine.Rig4.GetRxFrequency(); + } + } + catch (Exception ex) + { + // do nothing + } + return 0; + } + + public static bool SetSplit(string rig, long rx, long tx) + { + try + { + if (rig == "OmniRig Rig 1") + { + // OmniRig can handle Int32 only + if ((rx > Int32.MaxValue) || (tx > Int32.MaxValue)) + return false; + OmniRigEngine.Rig1.Split = OMNIRIGPARAM.PM_SPLITON; + OmniRigEngine.Rig1.FreqA = (int)rx; + OmniRigEngine.Rig1.FreqB = (int)tx; + return true; + } + else if (rig == "OmniRig Rig 2") + { + // OmniRig can handle Int32 only + if ((rx > Int32.MaxValue) || (tx > Int32.MaxValue)) + return false; + OmniRigEngine.Rig2.Split = OMNIRIGPARAM.PM_SPLITON; + OmniRigEngine.Rig2.FreqA = (int)rx; + OmniRigEngine.Rig2.FreqB = (int)tx; + return true; + } + + else if ((OmniRigEngine.InterfaceVersion >= 0x210) && + (OmniRigEngine.InterfaceVersion >= 0x299) && + (rig == "OmniRig 3") + ) + { + // OmniRig can handle Int32 only + if ((rx > Int32.MaxValue) || (tx > Int32.MaxValue)) + return false; + OmniRigEngine.Rig3.Split = OMNIRIGPARAM.PM_SPLITON; + OmniRigEngine.Rig3.FreqA = (int)rx; + OmniRigEngine.Rig3.FreqB = (int)tx; + return true; + } + + else if ((OmniRigEngine.InterfaceVersion >= 0x210) && + (OmniRigEngine.InterfaceVersion >= 0x299) && + (rig == "OmniRig 4") + ) + { + // OmniRig can handle Int32 only + if ((rx > Int32.MaxValue) || (tx > Int32.MaxValue)) + return false; + OmniRigEngine.Rig4.Split = OMNIRIGPARAM.PM_SPLITON; + OmniRigEngine.Rig4.FreqA = (int)rx; + OmniRigEngine.Rig4.FreqB = (int)tx; + return true; + } + } + catch (Exception ex) + { + // do nothing + } + + return false; + + } + + public static bool SetSimplex(string rig, long rx) + { + try + { + if (rig == "OmniRig Rig 1") + { + // OmniRig can handle Int32 only + if (rx > Int32.MaxValue) + return false; + OmniRigEngine.Rig1.Split = OMNIRIGPARAM.PM_SPLITOFF; + OmniRigEngine.Rig1.FreqA = (int)rx; + return true; + } + else if (rig == "OmniRig Rig 2") + { + // OmniRig can handle Int32 only + if (rx > Int32.MaxValue) + return false; + OmniRigEngine.Rig2.Split = OMNIRIGPARAM.PM_SPLITOFF; + OmniRigEngine.Rig2.FreqA = (int)rx; + return true; + } + + else if ((OmniRigEngine.InterfaceVersion >= 0x210) && + (OmniRigEngine.InterfaceVersion >= 0x299) && + (rig == "OmniRig 3") + ) + { + // OmniRig can handle Int32 only + if (rx > Int32.MaxValue) + return false; + OmniRigEngine.Rig3.Split = OMNIRIGPARAM.PM_SPLITOFF; + OmniRigEngine.Rig3.FreqA = (int)rx; + return true; + } + + else if ((OmniRigEngine.InterfaceVersion >= 0x210) && + (OmniRigEngine.InterfaceVersion >= 0x299) && + (rig == "OmniRig 4") + ) + { + // OmniRig can handle Int32 only + if (rx > Int32.MaxValue) + return false; + OmniRigEngine.Rig4.Split = OMNIRIGPARAM.PM_SPLITOFF; + OmniRigEngine.Rig4.FreqA = (int)rx; + return true; + } + } + catch (Exception ex) + { + // do nothing + } + + return false; + + } + + public static bool SetRit(string rig, RIGRIT rit) + { + try + { + if (rig == "OmniRig Rig 1") + { + OmniRigEngine.Rig1.Rit = (rit == RIGRIT.RITON) ? OMNIRIGPARAM.PM_RITON : OMNIRIGPARAM.PM_RITOFF; + return true; + } + else if (rig == "OmniRig Rig 2") + { + OmniRigEngine.Rig2.Rit = (rit == RIGRIT.RITON) ? OMNIRIGPARAM.PM_RITON : OMNIRIGPARAM.PM_RITOFF; + return true; + } + + else if ((OmniRigEngine.InterfaceVersion >= 0x210) && + (OmniRigEngine.InterfaceVersion >= 0x299) && + (rig == "OmniRig 3") + ) + { + OmniRigEngine.Rig3.Rit = (rit == RIGRIT.RITON) ? OMNIRIGPARAM.PM_RITON : OMNIRIGPARAM.PM_RITOFF; + return true; + } + + else if ((OmniRigEngine.InterfaceVersion >= 0x210) && + (OmniRigEngine.InterfaceVersion >= 0x299) && + (rig == "OmniRig 4") + ) + { + OmniRigEngine.Rig3.Rit = (rit == RIGRIT.RITON) ? OMNIRIGPARAM.PM_RITON : OMNIRIGPARAM.PM_RITOFF; + return true; + } + } + catch (Exception ex) + { + // do nothing + } + + return false; + + } + + } + +} diff --git a/AirScout.CAT/IRig.cs b/AirScout.CAT/IRig.cs new file mode 100644 index 0000000..be059b5 --- /dev/null +++ b/AirScout.CAT/IRig.cs @@ -0,0 +1,71 @@ +using ScoutBase.CAT; +using System; +using System.Collections.Generic; +using System.Dynamic; +using System.Linq; +using System.Text; + +namespace AirScout.CAT +{ + public class RigSettings + { + // rig type name + public string Type { get; set; } = ""; + public string Model { get; set; } = ""; + + // port settings + public string PortName { get; set; } = ""; + public int Baudrate { get; set; } = 0; + public int DataBits { get; set; } = 0; + public PARITY Parity { get; set; } = PARITY.NONE; + public STOPBITS StopBits { get; set; } = STOPBITS.ONE; + public FLOWCONTROL RtsMode { get; set; } = FLOWCONTROL.LOW; + public FLOWCONTROL DtrMode { get; set; } = FLOWCONTROL.LOW; + + // time settings + public int PollMs { get; set; } = 1000; + public int TimeoutMs { get; set; } = 5000; + + + } + + // repesents an interface to a rig connected via CAT interface + // supports variuos kinds of connections + public interface IRig + { + + // Rig + RigSettings Settings { get; set; } + CATENGINE CatEngine { get; } + string CatVersion { get; } + + // rig status, read-only + RIGSTATUS GetStatus(); + + // get rig values + RIGMODE GetMode(); + RIGSPLIT GetSplit(); + RIGRIT GetRit(); + RIGVFO GetVfo(); + long GetRxFrequency(); + long GetTxFrequency(); + + // set rig values + bool SetMode(RIGMODE mode); + bool SetSplit(RIGSPLIT split); + bool SetRit(RIGRIT rit); + bool SetVfo(RIGVFO vfo); + bool SetRxFrequency(long rx); + bool SetTxFrequency(long tx); + + // rig capabilities + bool SetSimplexMode(long freq, RIGMODE mode = RIGMODE.NONE); + bool SetSplitMode(long rxfreq, long txfreq, RIGMODE mode = RIGMODE.NONE); + + // doppler tracking + bool SetDopplerStrategy(DOPPLERSTRATEGY doppler); + bool EnterDoppler(); + bool LeaveDoppler(); + + } +} diff --git a/AirScout.CAT/OmniRigX.cs b/AirScout.CAT/OmniRigX.cs new file mode 100644 index 0000000..006ae3f --- /dev/null +++ b/AirScout.CAT/OmniRigX.cs @@ -0,0 +1,1360 @@ +using Microsoft.Win32; +using ScoutBase.CAT; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Runtime.Remoting.Channels; +using System.Text; + +namespace AirScout.CAT +{ + // OmniRig enums + // hopefully constant over all versions + + public enum OMNIRIGSTATUS + { + ST_NOTCONFIGURED = 0x00000000, + ST_DISABLED = 0x00000001, + ST_PORTBUSY = 0x00000002, + ST_NOTRESPONDING = 0x00000003, + ST_ONLINE = 0x00000004 + } + + public enum OMNIRIGPARAM + { + PM_UNKNOWN = 0x00000001, + PM_FREQ = 0x00000002, + PM_FREQA = 0x00000004, + PM_FREQB = 0x00000008, + PM_PITCH = 0x00000010, + PM_RITOFFSET = 0x00000020, + PM_RIT0 = 0x00000040, + PM_VFOAA = 0x00000080, + PM_VFOAB = 0x00000100, + PM_VFOBA = 0x00000200, + PM_VFOBB = 0x00000400, + PM_VFOA = 0x00000800, + PM_VFOB = 0x00001000, + PM_VFOEQUAL = 0x00002000, + PM_VFOSWAP = 0x00004000, + PM_SPLITON = 0x00008000, + PM_SPLITOFF = 0x00010000, + PM_RITON = 0x00020000, + PM_RITOFF = 0x00040000, + PM_XITON = 0x00080000, + PM_XITOFF = 0x00100000, + PM_RX = 0x00200000, + PM_TX = 0x00400000, + PM_CW_U = 0x00800000, + PM_CW_L = 0x01000000, + PM_SSB_U = 0x02000000, + PM_SSB_L = 0x04000000, + PM_DIG_U = 0x08000000, + PM_DIG_L = 0x10000000, + PM_AM = 0x20000000, + PM_FM = 0x40000000 + + } + + + // represents a rig connected via OmniRig ActiveX interface + public class OmniRigX : IRig + { + // holds the OmniRig ActiveX object + private static dynamic OmniRigEngine = null; + private static string OmniRigVersion = ""; + + // rig type constants + private static readonly string RigType1 = "[OmniRig] Rig 1"; + private static readonly string RigType2 = "[OmniRig] Rig 2"; + private static readonly string RigType3 = "[OmniRig] Rig 3"; + private static readonly string RigType4 = "[OmniRig] Rig 4"; + + // rig + private RigSettings Settings = new RigSettings(); + + // doppler tracking strategy + DOPPLERSTRATEGY DopplerStrategy = DOPPLERSTRATEGY.DOPPLER_NONE; + + // save rig settings + private RIGMODE SaveRigMode; + private RIGSPLIT SaveRigSplit; + private RIGRIT SaveRigRit; + private long SaveRxFrequency; + private long SaveTxFrequency; + + private static void StartOmniRig() + { + if (OmniRigEngine == null) + { + try + { + // try to load recent version of OmniRig + // we want OmniRig interface V2.1 + Type COMType = System.Type.GetTypeFromProgID("OmniRig.OmniRigX"); + OmniRigVersion = "OmniRig V2.x"; + + // Leagcy support: try to load OmniRig V1.19 instead explicit, if loading of recent version fails + if (COMType == null) + { + COMType = System.Type.GetTypeFromCLSID(new Guid("4FE359C5-A58F-459D-BE95-CA559FB4F270")); + OmniRigVersion = "OmniRig V1.19"; + } + + // try to create COM-object dynamically + if (COMType != null) + { + OmniRigEngine = Activator.CreateInstance(COMType); + } + else + { + OmniRigEngine = null; + throw new NotSupportedException("OmniRig is not installed! or has unsupported version!"); + } + + // check supported versions + if (OmniRigEngine.InterfaceVersion != 0x110) + { + OmniRigVersion = "OmniRig V1.19"; + } + else if ((OmniRigEngine.InterfaceVersion < 0x210) && (OmniRigEngine.InterfaceVersion > 0x299)) + { + OmniRigVersion = "OmniRig V2.x"; + } + else + { + OmniRigEngine = null; + throw new NotSupportedException("OmniRig is not installed but has unsupported version:" + OmniRigEngine.InterfaceVersion.ToString()); + } + } + catch (Exception ex) + { + OmniRigEngine = null; + throw new NotSupportedException("Error while initializing OmniRig: " + ex.ToString()); + } + + + } + } + + // ************************ Interface ********************************* + + RigSettings IRig.Settings + { + get + { + if (OmniRigEngine == null) + StartOmniRig(); + + // refresh Settings with values from OmniRig + // we can set only rig model as we don't get more info + + // V1.19 + if (Settings.Type == OmniRigX.RigType1) + Settings.Model = OmniRigX.OmniRigEngine.Rig1.RigType; + else if (Settings.Type == OmniRigX.RigType2) + Settings.Model = OmniRigX.OmniRigEngine.Rig2.RigType; + // V2.x + if (Is2x()) + { + if (Settings.Type == OmniRigX.RigType3) + Settings.Model = OmniRigX.OmniRigEngine.Rig3.RigType; + else if (Settings.Type == OmniRigX.RigType4) + Settings.Model = OmniRigX.OmniRigEngine.Rig4.RigType; + } + + // return the current settings + return Settings; + } + set + { + // update settings + Settings = value; + + // we can only transfer rig model to OmniRig + if (OmniRigEngine == null) + StartOmniRig(); + + // V1.19 + if (Settings.Type == OmniRigX.RigType1) + OmniRigX.OmniRigEngine.Rig1.RigType = Settings.Model; + else if (Settings.Type == OmniRigX.RigType2) + OmniRigX.OmniRigEngine.Rig2.RigType = Settings.Model; + // V2.x + if (Is2x()) + { + if (Settings.Type == OmniRigX.RigType3) + OmniRigX.OmniRigEngine.Rig3.RigType = Settings.Model; + else if (Settings.Type == OmniRigX.RigType4) + OmniRigX.OmniRigEngine.Rig4.RigType = Settings.Model; + } + + } + } + + CATENGINE IRig.CatEngine + { + get + { + if (OmniRigEngine == null) + StartOmniRig(); + return CATENGINE.OMNIRIGX; + } + } + + string IRig.CatVersion + { + get + { + if (OmniRigEngine == null) + StartOmniRig(); + return OmniRigVersion; + } + } + + private bool Is2x() + { + try + { + return (OmniRigEngine.InterfaceVersion < 0x210) && (OmniRigEngine.InterfaceVersion > 0x299); + } + catch (Exception ex) + { + + } + + return false; + } + + private RIGSTATUS IntGetRigStatus (dynamic rig) + { + // translate result to RIGSTATUS values + switch ((OMNIRIGSTATUS)rig.Status) + { + case OMNIRIGSTATUS.ST_PORTBUSY: return RIGSTATUS.NOPORT; + case OMNIRIGSTATUS.ST_NOTCONFIGURED: return RIGSTATUS.NORIG; + case OMNIRIGSTATUS.ST_DISABLED: return RIGSTATUS.NORIG; + case OMNIRIGSTATUS.ST_NOTRESPONDING: return RIGSTATUS.OFFLINE; + } + + // rig is online + // check for rig capabilities here + if (DopplerStrategy == DOPPLERSTRATEGY.DOPPLER_A) + { + // rig must support at least split operation + if ((!rig.IsParamReadable(OMNIRIGPARAM.PM_SPLITOFF)) || + (!rig.IsParamReadable(OMNIRIGPARAM.PM_SPLITON)) || + (!rig.IsParamWriteable(OMNIRIGPARAM.PM_SPLITOFF)) || + (!rig.IsParamWriteable(OMNIRIGPARAM.PM_SPLITON)) || + (!rig.IsParamWriteable(OMNIRIGPARAM.PM_VFOEQUAL)) + ) + { + return RIGSTATUS.NOTSUITABLE; + } + } + + // return online + return RIGSTATUS.ONLINE; + } + + public RIGSTATUS GetStatus() + { + if (OmniRigEngine == null) + StartOmniRig(); + + // return NOCAT if still null + if (OmniRigEngine == null) + return RIGSTATUS.NOCAT; + + try + { + // V1.19 + if (Settings.Type == OmniRigX.RigType1) + { + return IntGetRigStatus(OmniRigX.OmniRigEngine.Rig1); + } + else if (Settings.Type == OmniRigX.RigType2) + { + return IntGetRigStatus(OmniRigX.OmniRigEngine.Rig2); + } + + // V2.x + if (Is2x()) + { + if (Settings.Type == OmniRigX.RigType3) + { + return IntGetRigStatus(OmniRigX.OmniRigEngine.Rig3); + } + else if (Settings.Type == OmniRigX.RigType4) + { + return IntGetRigStatus(OmniRigX.OmniRigEngine.Rig4); + } + } + } + catch (Exception ex) + { + + } + return RIGSTATUS.NONE; + } + + private RIGMODE IntGetMode (dynamic rig) + { + switch ((OMNIRIGPARAM)rig.Mode) + { + case OMNIRIGPARAM.PM_CW_L: return RIGMODE.CW; + case OMNIRIGPARAM.PM_CW_U: return RIGMODE.CW_R; + case OMNIRIGPARAM.PM_SSB_L: return RIGMODE.LSB; + case OMNIRIGPARAM.PM_SSB_U: return RIGMODE.USB; + case OMNIRIGPARAM.PM_DIG_L: return RIGMODE.DIG; + case OMNIRIGPARAM.PM_DIG_U: return RIGMODE.DIG_R; + case OMNIRIGPARAM.PM_AM: return RIGMODE.AM; + case OMNIRIGPARAM.PM_FM: return RIGMODE.FM; + } + + return RIGMODE.NONE; + } + + public RIGMODE GetMode() + { + if (OmniRigEngine == null) + StartOmniRig(); + + try + { + // V1.19 + if (Settings.Type == OmniRigX.RigType1) + { + return IntGetMode(OmniRigX.OmniRigEngine.Rig1); + } + else if (Settings.Type == OmniRigX.RigType2) + { + return IntGetMode(OmniRigX.OmniRigEngine.Rig2); + } + // V2.x + if (Is2x()) + { + if (Settings.Type == OmniRigX.RigType3) + { + return IntGetMode(OmniRigX.OmniRigEngine.Rig3); + } + else if (Settings.Type == OmniRigX.RigType4) + { + return IntGetMode(OmniRigX.OmniRigEngine.Rig4); + } + } + } + catch (Exception ex) + { + + } + + return RIGMODE.NONE; + } + + public RIGSPLIT IntGetSplit(dynamic rig) + { + switch ((OMNIRIGPARAM)rig.Split) + { + case OMNIRIGPARAM.PM_SPLITOFF: return RIGSPLIT.SPLITOFF; + case OMNIRIGPARAM.PM_SPLITON: return RIGSPLIT.SPLITON; + } + + return RIGSPLIT.NONE; + } + + public RIGSPLIT GetSplit() + { + if (OmniRigEngine == null) + StartOmniRig(); + + try + { + // V1.19 + if (Settings.Type == OmniRigX.RigType1) + { + return IntGetSplit(OmniRigX.OmniRigEngine.Rig1); + } + else if (Settings.Type == OmniRigX.RigType2) + { + return IntGetSplit(OmniRigX.OmniRigEngine.Rig2); + } + // V2.x + if (Is2x()) + { + if (Settings.Type == OmniRigX.RigType3) + { + return IntGetSplit(OmniRigX.OmniRigEngine.Rig3); + } + else if (Settings.Type == OmniRigX.RigType4) + { + return IntGetSplit(OmniRigX.OmniRigEngine.Rig4); + } + } + } + catch (Exception ex) + { + + } + + return RIGSPLIT.NONE; + + } + + public RIGRIT IntGetRit (dynamic rig) + { + switch ((OMNIRIGPARAM)rig.Rit) + { + case OMNIRIGPARAM.PM_RITOFF: return RIGRIT.RITOFF; + case OMNIRIGPARAM.PM_RITON: return RIGRIT.RITON; + } + + return RIGRIT.NONE; + } + + public RIGRIT GetRit() + { + + if (OmniRigEngine == null) + StartOmniRig(); + + try + { + // V1.19 + if (Settings.Type == OmniRigX.RigType1) + { + return IntGetRit(OmniRigX.OmniRigEngine.Rig1); + } + else if (Settings.Type == OmniRigX.RigType2) + { + return IntGetRit(OmniRigX.OmniRigEngine.Rig2); + } + // V2.x + if (Is2x()) + { + if (Settings.Type == OmniRigX.RigType3) + { + return IntGetRit(OmniRigX.OmniRigEngine.Rig3); + } + else if (Settings.Type == OmniRigX.RigType4) + { + return IntGetRit(OmniRigX.OmniRigEngine.Rig4); + } + } + } + catch (Exception ex) + { + + } + + return RIGRIT.NONE; + + } + + public RIGVFO IntGetVfo(dynamic rig) + { + switch ((OMNIRIGPARAM)rig.Vfo) + { + case OMNIRIGPARAM.PM_VFOA: return RIGVFO.A; + case OMNIRIGPARAM.PM_VFOB: return RIGVFO.B; + } + + return RIGVFO.NONE; + } + + public RIGVFO GetVfo() + { + + if (OmniRigEngine == null) + StartOmniRig(); + + try + { + // V1.19 + if (Settings.Type == OmniRigX.RigType1) + { + return IntGetVfo(OmniRigX.OmniRigEngine.Rig1); + } + else if (Settings.Type == OmniRigX.RigType2) + { + return IntGetVfo(OmniRigX.OmniRigEngine.Rig2); + } + // V2.x + if (Is2x()) + { + if (Settings.Type == OmniRigX.RigType3) + { + return IntGetVfo(OmniRigX.OmniRigEngine.Rig3); + } + else if (Settings.Type == OmniRigX.RigType4) + { + return IntGetVfo(OmniRigX.OmniRigEngine.Rig4); + } + } + } + catch (Exception ex) + { + + } + + return RIGVFO.NONE; + + } + + private long IntGetRxFrequency(dynamic rig) + { + if ((OMNIRIGPARAM)rig.Split == OMNIRIGPARAM.PM_SPLITOFF) + { + // check if pmFreq is readable --> return Freq + if (rig.Freq > 0) + return rig.Freq; + // check if pmFreqA is readable --> return FreqA instead + if (rig.FreqA > 0) + return rig.FreqA; + } + else + { + // check if pmFreqA is readable --> return FreqA instead + if (rig.FreqA > 0) + return rig.FreqA; + } + + return 0; + } + + public long GetRxFrequency() + { + if (OmniRigEngine == null) + StartOmniRig(); + + try + { + // V1.19 + if (Settings.Type == OmniRigX.RigType1) + { + return IntGetRxFrequency(OmniRigX.OmniRigEngine.Rig1); + } + else if (Settings.Type == OmniRigX.RigType2) + { + return IntGetRxFrequency(OmniRigX.OmniRigEngine.Rig2); + } + // V2.x + if (Is2x()) + { + if (Settings.Type == OmniRigX.RigType3) + { + return IntGetRxFrequency(OmniRigX.OmniRigEngine.Rig3); + } + else if (Settings.Type == OmniRigX.RigType4) + { + return IntGetRxFrequency(OmniRigX.OmniRigEngine.Rig4); + } + } + } + catch (Exception ex) + { + + } + + return 0; + } + + private int IntGetTxFrequency(dynamic rig) + { + if ((OMNIRIGPARAM)rig.Split == OMNIRIGPARAM.PM_SPLITOFF) + { + // check if pmFreq is readable --> return Freq + if (rig.Freq > 0) + return rig.Freq; + // check if pmFreqA is readable --> return FreqA instead + if (rig.FreqA > 0) + return rig.FreqA; + } + else + { + // check if pmFreqB is readable --> return FreqB instead + if (rig.FreqB > 0) + return rig.FreqB; + } + + return 0; + } + + public long GetTxFrequency() + { + if (OmniRigEngine == null) + StartOmniRig(); + + try + { + // V1.19 + if (Settings.Type == OmniRigX.RigType1) + { + return IntGetTxFrequency(OmniRigX.OmniRigEngine.Rig1); + } + else if (Settings.Type == OmniRigX.RigType2) + { + return IntGetTxFrequency(OmniRigX.OmniRigEngine.Rig2); + } + // V2.x + if (Is2x()) + { + if (Settings.Type == OmniRigX.RigType3) + { + return IntGetTxFrequency(OmniRigX.OmniRigEngine.Rig3); + } + else if (Settings.Type == OmniRigX.RigType4) + { + return IntGetTxFrequency(OmniRigX.OmniRigEngine.Rig4); + } + } + } + catch (Exception ex) + { + + } + + return 0; + } + + // ******************************************************************** + + private bool IntSetMode(dynamic rig, RIGMODE mode) + { + switch (mode) + { + case RIGMODE.CW: rig.Mode = OMNIRIGPARAM.PM_CW_L; return true; + case RIGMODE.CW_R: rig.Mode = OMNIRIGPARAM.PM_CW_U; return true; + case RIGMODE.LSB: rig.Mode = OMNIRIGPARAM.PM_SSB_L; return true; + case RIGMODE.USB: rig.Mode = OMNIRIGPARAM.PM_SSB_U; return true; + case RIGMODE.DIG: rig.Mode = OMNIRIGPARAM.PM_DIG_L; return true; + case RIGMODE.DIG_R: rig.Mode = OMNIRIGPARAM.PM_DIG_U; return true; + case RIGMODE.AM: rig.Mode = OMNIRIGPARAM.PM_AM; return true; + case RIGMODE.FM: rig.Mode = OMNIRIGPARAM.PM_FM; return true; + } + + return false; + } + + public bool SetMode(RIGMODE mode) + { + if (OmniRigEngine == null) + StartOmniRig(); + + try + { + // V1.19 + if (Settings.Type == OmniRigX.RigType1) + { + return IntSetMode(OmniRigX.OmniRigEngine.Rig1, mode); + } + else if (Settings.Type == OmniRigX.RigType2) + { + return IntSetMode(OmniRigX.OmniRigEngine.Rig2, mode); + } + // V2.x + if (Is2x()) + { + if (Settings.Type == OmniRigX.RigType3) + { + return IntSetMode(OmniRigX.OmniRigEngine.Rig3, mode); + } + else if (Settings.Type == OmniRigX.RigType4) + { + return IntSetMode(OmniRigX.OmniRigEngine.Rig4, mode); + } + } + + } + catch (Exception ex) + { + } + + return false; + } + + private bool IntSetSplit(dynamic rig, RIGSPLIT split) + { + switch (split) + { + case RIGSPLIT.SPLITOFF: rig.Split = OMNIRIGPARAM.PM_SPLITOFF; return true; + case RIGSPLIT.SPLITON: rig.Split = OMNIRIGPARAM.PM_SPLITON; return true; + } + + return false; + } + + public bool SetSplit (RIGSPLIT split) + { + if (OmniRigEngine == null) + StartOmniRig(); + + try + { + // V1.19 + if (Settings.Type == OmniRigX.RigType1) + { + return IntSetSplit(OmniRigX.OmniRigEngine.Rig1, split); + } + else if (Settings.Type == OmniRigX.RigType2) + { + return IntSetSplit(OmniRigX.OmniRigEngine.Rig2, split); + } + // V2.x + if (Is2x()) + { + if (Settings.Type == OmniRigX.RigType3) + { + return IntSetSplit(OmniRigX.OmniRigEngine.Rig3, split); + } + else if (Settings.Type == OmniRigX.RigType4) + { + return IntSetSplit(OmniRigX.OmniRigEngine.Rig4, split); + } + } + } + catch (Exception ex) + { + + } + + + return false; + } + + private bool IntSetRit(dynamic rig, RIGRIT rit) + { + switch (rit) + { + case RIGRIT.RITOFF: rig.Rit = OMNIRIGPARAM.PM_RITOFF; return true; + case RIGRIT.RITON: rig.Rit = OMNIRIGPARAM.PM_RITON; return true; + } + + return false; + } + + public bool SetRit(RIGRIT rit) + { + if (OmniRigEngine == null) + StartOmniRig(); + + try + { + // V1.19 + if (Settings.Type == OmniRigX.RigType1) + { + return IntSetRit(OmniRigX.OmniRigEngine.Rig1, rit); + } + else if (Settings.Type == OmniRigX.RigType2) + { + return IntSetRit(OmniRigX.OmniRigEngine.Rig2, rit); + } + // V2.x + if (Is2x()) + { + if (Settings.Type == OmniRigX.RigType3) + { + return IntSetRit(OmniRigX.OmniRigEngine.Rig3, rit); + } + else if (Settings.Type == OmniRigX.RigType4) + { + return IntSetRit(OmniRigX.OmniRigEngine.Rig4, rit); + } + } + } + catch (Exception ex) + { + + } + + + return false; + } + + private bool IntSetVfo(dynamic rig, RIGVFO vfo) + { + switch (vfo) + { + case RIGVFO.A: rig.Vfo = OMNIRIGPARAM.PM_VFOA; return true; + case RIGVFO.B: rig.Vfo = OMNIRIGPARAM.PM_VFOB; return true; + } + + return false; + } + + public bool SetVfo(RIGVFO vfo) + { + if (OmniRigEngine == null) + StartOmniRig(); + + try + { + // V1.19 + if (Settings.Type == OmniRigX.RigType1) + { + return IntSetVfo(OmniRigX.OmniRigEngine.Rig1, vfo); + } + else if (Settings.Type == OmniRigX.RigType2) + { + return IntSetVfo(OmniRigX.OmniRigEngine.Rig2, vfo); + } + // V2.x + if (Is2x()) + { + if (Settings.Type == OmniRigX.RigType3) + { + return IntSetVfo(OmniRigX.OmniRigEngine.Rig3, vfo); + } + else if (Settings.Type == OmniRigX.RigType4) + { + return IntSetVfo(OmniRigX.OmniRigEngine.Rig4, vfo); + } + } + } + catch (Exception ex) + { + + } + + + return false; + } + + private bool IntSetRxFrequency(dynamic rig, long rx) + { + if ((OMNIRIGPARAM)rig.Split == OMNIRIGPARAM.PM_SPLITOFF) + { + // check if pmFreq is writeable --> set Freq + if (rig.IsWritable(OMNIRIGPARAM.PM_FREQ)) + { + rig.Freq = (int)rx; + return true; + } + // check if pmFreqA is writeable --> set FreqA instead + if (rig.IsWritable(OMNIRIGPARAM.PM_FREQA)) + { + rig.FreqA = (int)rx; + return true; + } + } + else + { + // check if pmFreqA is writeable --> set FreqA instead + if (rig.IsWritable(OMNIRIGPARAM.PM_FREQA)) + { + rig.FreqA = (int)rx; + return true; + } + } + + return false; + } + + public bool SetRxFrequency(long rx) + { + if (OmniRigEngine == null) + StartOmniRig(); + + // check bounds as OmniRig ActiveX only supperts 32bit values + if ((rx < Int32.MinValue) || (rx > int.MaxValue)) + return false; + + try + { + // V1.19 + if (Settings.Type == OmniRigX.RigType1) + { + return IntSetRxFrequency(OmniRigX.OmniRigEngine.Rig1, rx); + } + else if (Settings.Type == OmniRigX.RigType2) + { + return IntSetRxFrequency(OmniRigX.OmniRigEngine.Rig2, rx); + } + // V2.x + if (Is2x()) + { + if (Settings.Type == OmniRigX.RigType3) + { + return IntSetRxFrequency(OmniRigX.OmniRigEngine.Rig3, rx); + } + else if (Settings.Type == OmniRigX.RigType4) + { + return IntSetRxFrequency(OmniRigX.OmniRigEngine.Rig4, rx); + } + } + } + catch (Exception ex) + { + + } + + return false; + } + + private bool IntSetTxFrequency(dynamic rig, long tx) + { + if ((OMNIRIGPARAM)rig.Split == OMNIRIGPARAM.PM_SPLITOFF) + { + // check if pmFreq is writeable --> set Freq + if (rig.IsWritable(OMNIRIGPARAM.PM_FREQ)) + { + rig.Freq = (int)tx; + return true; + } + // check if pmFreqA is writeable --> set FreqA instead + if (rig.IsWritable(OMNIRIGPARAM.PM_FREQA)) + { + rig.FreqA = (int)tx; + return true; + } + } + else + { + // check if pmFreqB is writeable --> set FreqB instead + if (rig.IsWritable(OMNIRIGPARAM.PM_FREQB)) + { + rig.FreqB = (int)tx; + return true; + } + } + + return false; + } + + public bool SetTxFrequency(long tx) + { + if (OmniRigEngine == null) + StartOmniRig(); + + // check bounds as OmniRig ActiveX only supperts 32bit values + if ((tx < Int32.MinValue) || (tx > int.MaxValue)) + return false; + + try + { + // V1.19 + if (Settings.Type == OmniRigX.RigType1) + { + return IntSetTxFrequency(OmniRigX.OmniRigEngine.Rig1, tx); + } + else if (Settings.Type == OmniRigX.RigType2) + { + return IntSetTxFrequency(OmniRigX.OmniRigEngine.Rig2, tx); + } + // V2.x + if (Is2x()) + { + if (Settings.Type == OmniRigX.RigType3) + { + return IntSetTxFrequency(OmniRigX.OmniRigEngine.Rig3, tx); + } + else if (Settings.Type == OmniRigX.RigType4) + { + return IntSetTxFrequency(OmniRigX.OmniRigEngine.Rig4, tx); + } + } + } + catch (Exception ex) + { + + } + + return false; + } + + public bool IntSetSimplexMode(dynamic rig, long freq, RIGMODE mode) + { + // set frequency and switch split off + try + { + if (rig.IsParamWriteable(OMNIRIGPARAM.PM_FREQA) && rig.IsParamWriteable(OMNIRIGPARAM.PM_VFOAA)) + { + rig.Vfo = OMNIRIGPARAM.PM_VFOAA; + rig.FreqA = freq; + } + else if (rig.IsParamWriteable(OMNIRIGPARAM.PM_FREQA) && rig.IsParamWriteable(OMNIRIGPARAM.PM_VFOA) && rig.IsParamWriteable(OMNIRIGPARAM.PM_SPLITOFF)) + { + rig.Vfo = OMNIRIGPARAM.PM_VFOA; + rig.FreqA = freq; + } + else if (rig.IsParamWriteable(OMNIRIGPARAM.PM_FREQ) && rig.IsParamWriteable(OMNIRIGPARAM.PM_VFOA) && rig.IsParamWriteable(OMNIRIGPARAM.PM_VFOB)) + { + rig.Vfo = OMNIRIGPARAM.PM_VFOB; + rig.Freq = freq; + rig.Vfo = OMNIRIGPARAM.PM_VFOA; + rig.Freq = freq; + } + else if (rig.IsParamWriteable(OMNIRIGPARAM.PM_FREQ) && rig.IsParamWriteable(OMNIRIGPARAM.PM_VFOEQUAL)) + { + rig.Freq = freq; + rig.Vfo = OMNIRIGPARAM.PM_VFOEQUAL; + } + else if (rig.IsParamWriteable(OMNIRIGPARAM.PM_FREQ) && rig.IsParamWriteable(OMNIRIGPARAM.PM_VFOSWAP)) + { + rig.Vfo = OMNIRIGPARAM.PM_VFOSWAP; + rig.Freq = freq; + rig.Vfo = OMNIRIGPARAM.PM_VFOSWAP; + rig.Freq = freq; + } + // Added by RA6UAZ for Icom Marine Radio NMEA Command + else if (rig.IsParamWriteable(OMNIRIGPARAM.PM_FREQ) && !rig.IsParamWriteable(OMNIRIGPARAM.PM_VFOA) && rig.IsParamWriteable(OMNIRIGPARAM.PM_FREQB)) + { + rig.Freq = freq; + rig.FreqB = freq; + } + else if (rig.IsParamWriteable(OMNIRIGPARAM.PM_FREQ)) + { + rig.Freq = freq; + } + + if (rig.IsParamWriteable(OMNIRIGPARAM.PM_SPLITOFF)) + { + rig.Split = OMNIRIGPARAM.PM_SPLITOFF; + } + + // simply set mode on current VFO + if (CanWriteMode(rig) && (mode != RIGMODE.NONE)) + { + rig.Mode = mode; + } + + return true; + } + catch (Exception ex) + { + + } + + return false; + } + + public bool SetSimplexMode(long freq, RIGMODE mode = RIGMODE.NONE) + { + + // we cannot use the "buil-in" function from OmniRig as it affects the Rit/Xit + if (OmniRigEngine == null) + StartOmniRig(); + + // check bounds as OmniRig ActiveX only supperts 32bit values + if ((freq < Int32.MinValue) || (freq > int.MaxValue)) + return false; + + try + { + // V1.19 + if (Settings.Type == OmniRigX.RigType1) + { + return IntSetSimplexMode(OmniRigX.OmniRigEngine.Rig1, freq, mode); + } + else if (Settings.Type == OmniRigX.RigType2) + { + return IntSetSimplexMode(OmniRigX.OmniRigEngine.Rig2, freq, mode); + } + // V2.x + if (Is2x()) + { + if (Settings.Type == OmniRigX.RigType3) + { + return IntSetSimplexMode(OmniRigX.OmniRigEngine.Rig3, freq, mode); + } + else if (Settings.Type == OmniRigX.RigType4) + { + return IntSetSimplexMode(OmniRigX.OmniRigEngine.Rig4, freq, mode); + } + } + + return true; + } + catch (Exception ex) + { + + } + + return false; + } + + private bool CanWriteMode(dynamic rig) + { + // check if modes are writable + if (!rig.IsParamWriteable(OMNIRIGPARAM.PM_CW_L)) + return false; + if (!rig.IsParamWriteable(OMNIRIGPARAM.PM_CW_U)) + return false; + if (!rig.IsParamWriteable(OMNIRIGPARAM.PM_SSB_L)) + return false; + if (!rig.IsParamWriteable(OMNIRIGPARAM.PM_SSB_U)) + return false; + if (!rig.IsParamWriteable(OMNIRIGPARAM.PM_DIG_L)) + return false; + if (!rig.IsParamWriteable(OMNIRIGPARAM.PM_DIG_U)) + return false; + if (!rig.IsParamWriteable(OMNIRIGPARAM.PM_AM)) + return false; + if (!rig.IsParamWriteable(OMNIRIGPARAM.PM_FM)) + return false; + + return true; + } + + private bool IntSetSplitMode(dynamic rig, long rxfreq, long txfreq, RIGMODE mode = RIGMODE.NONE) + { + //set rx and tx frequencies and split + try + { + // try to set mode on both Vfos via VfoEqual which is the easiest way + if (rig.IsParamWriteable(OMNIRIGPARAM.PM_VFOEQUAL)) + { + if (CanWriteMode(rig) && (mode != RIGMODE.NONE)) + { + rig.Mode = mode; + rig.Vfo = OMNIRIGPARAM.PM_VFOEQUAL; + } + } + + if (rig.IsParamWriteable(OMNIRIGPARAM.PM_FREQA) && rig.IsParamWriteable(OMNIRIGPARAM.PM_FREQB) && rig.IsParamWriteable(OMNIRIGPARAM.PM_VFOAB)) + { + // TS-570 + rig.Vfo = OMNIRIGPARAM.PM_VFOAB; + rig.FreqA = rxfreq; + rig.FreqB = txfreq; + // try to set mode once for both VFOs + if (CanWriteMode(rig) && (mode != RIGMODE.NONE)) + { + rig.Mode = mode; + } + } + else if (rig.IsParamWriteable(OMNIRIGPARAM.PM_FREQ) && rig.IsParamWriteable(OMNIRIGPARAM.PM_VFOEQUAL)) + { + // IC-746 + rig.Freq = txfreq; + // should work fine for both VFOs because of VfoEqual + if (CanWriteMode(rig) && (mode != RIGMODE.NONE)) + { + rig.Mode = mode; + } + rig.Vfo = OMNIRIGPARAM.PM_VFOEQUAL; + rig.Freq = rxfreq; + } + else if (rig.IsParamWriteable(OMNIRIGPARAM.PM_VFOB) && rig.IsParamWriteable(OMNIRIGPARAM.PM_FREQ) && rig.IsParamWriteable(OMNIRIGPARAM.PM_VFOA)) + { + // FT-100D + rig.Vfo = OMNIRIGPARAM.PM_VFOB; + rig.Freq = txfreq; + // should work fine for both VFOs because of switching to both VFOs + if (CanWriteMode(rig) && (mode != RIGMODE.NONE)) + { + rig.Mode = mode; + } + rig.Vfo = OMNIRIGPARAM.PM_VFOA; + rig.Freq = rxfreq; + // should work fine for both VFOs because of switching to both VFOs + if (CanWriteMode(rig) && (mode != RIGMODE.NONE)) + { + rig.Mode = mode; + } + } + else if (rig.IsParamWriteable(OMNIRIGPARAM.PM_FREQ) && rig.IsParamWriteable(OMNIRIGPARAM.PM_VFOSWAP)) + { + // FT-817 ? + rig.Vfo = OMNIRIGPARAM.PM_VFOSWAP; + rig.Freq = txfreq; + // should work fine for both VFOs because of VfoSwap + if (CanWriteMode(rig) && (mode != RIGMODE.NONE)) + { + rig.Mode = mode; + } + rig.Vfo = OMNIRIGPARAM.PM_VFOSWAP; + rig.Freq = rxfreq; + // should work fine for both VFOs because of VfoSwap + if (CanWriteMode(rig) && (mode != RIGMODE.NONE)) + { + rig.Mode = mode; + } + } + else if (rig.IsParamWriteable(OMNIRIGPARAM.PM_FREQA) && rig.IsParamWriteable(OMNIRIGPARAM.PM_FREQB) && rig.IsParamWriteable(OMNIRIGPARAM.PM_VFOA)) + { + //FT-1000 MP, IC-7610 + rig.Vfo = OMNIRIGPARAM.PM_VFOA; + rig.FreqA = rxfreq; + rig.FreqB = txfreq; + // can set only mode on VFO A + if (CanWriteMode(rig) && (mode != RIGMODE.NONE)) + { + rig.Mode = mode; + } + + } + // Added by RA6UAZ for Icom Marine Radio NMEA Command + else if (rig.IsParamWriteable(OMNIRIGPARAM.PM_FREQ) && !rig.IsParamWriteable(OMNIRIGPARAM.PM_FREQA) && rig.IsParamWriteable(OMNIRIGPARAM.PM_FREQB)) + { + rig.Freq = rxfreq; + rig.FreqB = txfreq; + } + + if (rig.IsParamWriteable(OMNIRIGPARAM.PM_SPLITON)) + { + rig.Split = OMNIRIGPARAM.PM_SPLITON; + } + + return true; + } + catch (Exception ex) + { + + } + + return false; + } + + public bool SetSplitMode(long rxfreq, long txfreq, RIGMODE mode = RIGMODE.NONE) + { + // we cannot use the "buil-in" split function from OmniRig as it affects the Rit/Xit + if (OmniRigEngine == null) + StartOmniRig(); + + // check bounds as OmniRig ActiveX only supperts 32bit values + if ((rxfreq < Int32.MinValue) || (rxfreq > int.MaxValue) || (txfreq < Int32.MinValue) || (txfreq > int.MaxValue)) + return false; + + try + { + // V1.19 + if (Settings.Type == OmniRigX.RigType1) + { + return IntSetSplitMode(OmniRigX.OmniRigEngine.Rig1, rxfreq, txfreq, mode); + } + else if (Settings.Type == OmniRigX.RigType2) + { + return IntSetSplitMode(OmniRigX.OmniRigEngine.Rig2, rxfreq, txfreq, mode); + } + // V2.x + if (Is2x()) + { + if (Settings.Type == OmniRigX.RigType3) + { + return IntSetSplitMode(OmniRigX.OmniRigEngine.Rig3, rxfreq, txfreq, mode); + } + else if (Settings.Type == OmniRigX.RigType4) + { + return IntSetSplitMode(OmniRigX.OmniRigEngine.Rig4, rxfreq, txfreq, mode); + } + } + + return true; + } + catch (Exception ex) + { + + } + + return false; + } + + public bool SetDopplerStrategy(DOPPLERSTRATEGY doppler) + { + DopplerStrategy = doppler; + return true; + } + + public bool EnterDoppler() + { + // return false if we are not online or rig not suitable + if (GetStatus() != RIGSTATUS.ONLINE) + return false; + + // save rig settings + SaveRigMode = this.GetMode(); + SaveRigSplit = this.GetSplit(); + SaveRigRit = this.GetRit(); + SaveRxFrequency = this.GetRxFrequency(); + SaveTxFrequency = this.GetTxFrequency(); + + SetSplitMode(SaveRxFrequency, SaveRxFrequency, SaveRigMode); + + return true; + } + + public bool LeaveDoppler() + { + // restore rig settings + if (SaveRigMode != RIGMODE.NONE) + SetMode(SaveRigMode); + if (SaveRigSplit != RIGSPLIT.NONE) + SetSplit(SaveRigSplit); + if (SaveRigRit != RIGRIT.NONE) + SetRit(SaveRigRit); + if (SaveRxFrequency > 0) + SetRxFrequency(SaveRxFrequency); + if (SaveTxFrequency > 0) + SetTxFrequency(SaveTxFrequency); + + SetSimplexMode(SaveRxFrequency, SaveRigMode); + + return true; + } + + + // provides a list of supported rigs + public static List SupportedRigs() + { + List l = new List(); + + // try get OmniRig working + if (OmniRigEngine == null) + { + StartOmniRig(); + } + + if (OmniRigEngine != null) + { + // setup OmniRig virtual Rigs according to OmniRig version + + // legacy V1.19 --> supports only 2 rigs + if (OmniRigEngine.InterfaceVersion == 0x101) + { + SupportedRig rig = new SupportedRig(); + rig.Type = OmniRigX.RigType1; + rig.Model = OmniRigX.OmniRigEngine.Rig1.RigType; + rig.CATEngine = CATENGINE.OMNIRIGX; + l.Add(rig); + rig = new SupportedRig(); + rig.Type = OmniRigX.RigType2; + rig.Model = OmniRigX.OmniRigEngine.Rig2.RigType; + rig.CATEngine = CATENGINE.OMNIRIGX; + l.Add(rig); + } + // version 2.xx --> supports 4 rigs + else if ((OmniRigEngine.InterfaceVersion < 0x210) && (OmniRigEngine.InterfaceVersion > 0x299)) + { + SupportedRig rig = new SupportedRig(); + rig.Type = OmniRigX.RigType1; + rig.Model = OmniRigX.OmniRigEngine.Rig1.RigType; + rig.CATEngine = CATENGINE.OMNIRIGX; + l.Add(rig); + rig = new SupportedRig(); + rig.Type = OmniRigX.RigType2; + rig.Model = OmniRigX.OmniRigEngine.Rig2.RigType; + rig.CATEngine = CATENGINE.OMNIRIGX; + l.Add(rig); + rig = new SupportedRig(); + rig.Type = OmniRigX.RigType3; + rig.Model = OmniRigX.OmniRigEngine.Rig3.RigType; + rig.CATEngine = CATENGINE.OMNIRIGX; + l.Add(rig); + rig = new SupportedRig(); + rig.Type = OmniRigX.RigType4; + rig.Model = OmniRigX.OmniRigEngine.Rig4.RigType; + rig.CATEngine = CATENGINE.OMNIRIGX; + l.Add(rig); + } + + } + + // return list of rigs + return l; + } + + + } +} diff --git a/AirScout.CAT/Properties/AssemblyInfo.cs b/AirScout.CAT/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..eecb059 --- /dev/null +++ b/AirScout.CAT/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Allgemeine Informationen über eine Assembly werden über die folgenden +// Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern, +// die einer Assembly zugeordnet sind. +[assembly: AssemblyTitle("AirScout.CAT")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("AirScout.CAT")] +[assembly: AssemblyCopyright("Copyright © 2021")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Durch Festlegen von ComVisible auf FALSE werden die Typen in dieser Assembly +// für COM-Komponenten unsichtbar. Wenn Sie auf einen Typ in dieser Assembly von +// COM aus zugreifen müssen, sollten Sie das ComVisible-Attribut für diesen Typ auf "True" festlegen. +[assembly: ComVisible(false)] + +// Die folgende GUID bestimmt die ID der Typbibliothek, wenn dieses Projekt für COM verfügbar gemacht wird +[assembly: Guid("ffdec390-7bbc-4dec-9826-1dd04279f3fa")] + +// Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten: +// +// Hauptversion +// Nebenversion +// Buildnummer +// Revision +// +// Sie können alle Werte angeben oder Standardwerte für die Build- und Revisionsnummern verwenden, +// indem Sie "*" wie unten gezeigt eingeben: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/AirScout.CAT/Properties/Settings.Designer.cs b/AirScout.CAT/Properties/Settings.Designer.cs new file mode 100644 index 0000000..ba9d571 --- /dev/null +++ b/AirScout.CAT/Properties/Settings.Designer.cs @@ -0,0 +1,182 @@ +//------------------------------------------------------------------------------ +// +// Dieser Code wurde von einem Tool generiert. +// Laufzeitversion:4.0.30319.42000 +// +// Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn +// der Code erneut generiert wird. +// +//------------------------------------------------------------------------------ + +namespace AirScout.CAT.Properties { + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.5.0.0")] + public sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default { + get { + return defaultInstance; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("False")] + public bool CAT_Activate { + get { + return ((bool)(this["CAT_Activate"])); + } + set { + this["CAT_Activate"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("500")] + public int CAT_Update { + get { + return ((int)(this["CAT_Update"])); + } + set { + this["CAT_Update"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("500")] + public int CAT_ResponseTimeout { + get { + return ((int)(this["CAT_ResponseTimeout"])); + } + set { + this["CAT_ResponseTimeout"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("")] + public string CAT_RigType { + get { + return ((string)(this["CAT_RigType"])); + } + set { + this["CAT_RigType"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("")] + public string CAT_PortName { + get { + return ((string)(this["CAT_PortName"])); + } + set { + this["CAT_PortName"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("9600")] + public int CAT_Baudrate { + get { + return ((int)(this["CAT_Baudrate"])); + } + set { + this["CAT_Baudrate"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("8")] + public int CAT_DataBits { + get { + return ((int)(this["CAT_DataBits"])); + } + set { + this["CAT_DataBits"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("NONE")] + public global::AirScout.CAT.PARITY CAT_Parity { + get { + return ((global::AirScout.CAT.PARITY)(this["CAT_Parity"])); + } + set { + this["CAT_Parity"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("ONE")] + public global::AirScout.CAT.STOPBITS CAT_StopBits { + get { + return ((global::AirScout.CAT.STOPBITS)(this["CAT_StopBits"])); + } + set { + this["CAT_StopBits"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("LOW")] + public global::AirScout.CAT.FLOWCONTROL CAT_RTS { + get { + return ((global::AirScout.CAT.FLOWCONTROL)(this["CAT_RTS"])); + } + set { + this["CAT_RTS"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("LOW")] + public global::AirScout.CAT.FLOWCONTROL CAT_DTR { + get { + return ((global::AirScout.CAT.FLOWCONTROL)(this["CAT_DTR"])); + } + set { + this["CAT_DTR"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("100")] + public int CAT_Poll { + get { + return ((int)(this["CAT_Poll"])); + } + set { + this["CAT_Poll"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("500")] + public int CAT_Timeout { + get { + return ((int)(this["CAT_Timeout"])); + } + set { + this["CAT_Timeout"] = value; + } + } + } +} diff --git a/AirScout.CAT/Properties/Settings.settings b/AirScout.CAT/Properties/Settings.settings new file mode 100644 index 0000000..b66b028 --- /dev/null +++ b/AirScout.CAT/Properties/Settings.settings @@ -0,0 +1,45 @@ + + + + + + False + + + 500 + + + 500 + + + + + + + + + 9600 + + + 8 + + + NONE + + + ONE + + + LOW + + + LOW + + + 100 + + + 500 + + + \ No newline at end of file diff --git a/AirScout.CAT/ScoutBaseRig.cs b/AirScout.CAT/ScoutBaseRig.cs new file mode 100644 index 0000000..9b7fcf6 --- /dev/null +++ b/AirScout.CAT/ScoutBaseRig.cs @@ -0,0 +1,706 @@ +using ScoutBase.CAT; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Net.Mime; +using System.Text; +using System.Xml.Schema; + +namespace AirScout.CAT +{ + // represents a rig connected directly via ScoutBase.CAT (OmniRig style) + public class ScoutBaseRig : ScoutBase.CAT.Rig, IRig + { + + private RigSettings Settings = new RigSettings(); + + // doppler tracking strategy + DOPPLERSTRATEGY DopplerStrategy = DOPPLERSTRATEGY.DOPPLER_NONE; + + // save rig settings + private RIGMODE SaveRigMode; + private RIGSPLIT SaveRigSplit; + private RIGRIT SaveRigRit; + private long SaveRxFrequency; + private long SaveTxFrequency; + + + // ************************ Interface ********************************* + + RigSettings IRig.Settings + { + get + { + + return Settings; + } + set + { + Settings = value; + + this.Enabled = false; + + // copy settings to rig settings + ScoutBase.CAT.RigSettings settings = new ScoutBase.CAT.RigSettings(); + settings.RigType = Settings.Model; + settings.PortName = Settings.PortName; + settings.Baudrate = Settings.Baudrate; + settings.DataBits = Settings.DataBits; + switch(Settings.Parity) + { + case PARITY.EVEN: settings.Parity = Parity.ptEven; break; + case PARITY.ODD: settings.Parity = Parity.ptOdd; break; + case PARITY.MARK: settings.Parity = Parity.ptMark; break; + case PARITY.SPACE: settings.Parity = Parity.ptSpace; break; + default: settings.Parity = Parity.ptNone; break; + } + switch(Settings.StopBits) + { + case STOPBITS.ONE_5: settings.StopBits = StopBits.sbOne_5; break; + case STOPBITS.TWO: settings.StopBits = StopBits.sbTwo; break; + default: settings.StopBits = StopBits.sbOne; break; + } + switch (Settings.RtsMode) + { + case FLOWCONTROL.HIGH: settings.RtsMode = FlowControl.fcHigh; break; + case FLOWCONTROL.HANDSHAKE: settings.RtsMode = FlowControl.fcHandShake; break; + default: settings.RtsMode = FlowControl.fcLow; break; + } + switch (Settings.DtrMode) + { + case FLOWCONTROL.HIGH: settings.DtrMode = FlowControl.fcHigh; break; + case FLOWCONTROL.HANDSHAKE: settings.DtrMode = FlowControl.fcHandShake; break; + default: settings.DtrMode = FlowControl.fcLow; break; + } + settings.PollMs = Settings.PollMs; + settings.TimeoutMs = Settings.TimeoutMs; + + // transfer settings to rig and restart + settings.ToRig(this); + + // enable rig + this.Enabled = true; + } + } + + + CATENGINE IRig.CatEngine + { + get + { + return CATENGINE.SCOUTBASE; + } + } + + string IRig.CatVersion + { + get + { + return "ScoutBase.CAT V" + ScoutBase.CAT.OmniRig.InterfaceVersion; + } + } + + public RIGSTATUS GetStatus() + { + try + { + // translate result to RIGSTATUS values + switch ((RigCtlStatus)this.Status) + { + case RigCtlStatus.stPortBusy: return RIGSTATUS.NOPORT; + case RigCtlStatus.stNotConfigured: return RIGSTATUS.NORIG; + case RigCtlStatus.stDisabled: return RIGSTATUS.NORIG; + case RigCtlStatus.stNotResponding: return RIGSTATUS.OFFLINE; + } + + // rig is online + // check for rig capabilities here + if (DopplerStrategy == DOPPLERSTRATEGY.DOPPLER_A) + { + // rig must support at least split operation + if ((!this.IsParamReadable(RigParam.pmSplitOff)) || + (!this.IsParamReadable(RigParam.pmSplitOn)) || + (!this.IsParamWriteable(RigParam.pmSplitOff)) || + (!this.IsParamWriteable(RigParam.pmSplitOn)) || + (!this.IsParamWriteable(RigParam.pmVfoEqual)) + ) + { + return RIGSTATUS.NOTSUITABLE; + } + } + + // return online + return RIGSTATUS.ONLINE; + } + catch (Exception ex) + { + + } + + return RIGSTATUS.NONE; + } + + public RIGMODE GetMode() + { + try + { + switch ((RigParam)this.Mode) + { + case RigParam.pmCW_L: return RIGMODE.CW; + case RigParam.pmCW_U: return RIGMODE.CW_R; + case RigParam.pmSSB_L: return RIGMODE.LSB; + case RigParam.pmSSB_U: return RIGMODE.USB; + case RigParam.pmDIG_L: return RIGMODE.DIG; + case RigParam.pmDIG_U: return RIGMODE.DIG_R; + case RigParam.pmAM: return RIGMODE.AM; + case RigParam.pmFM: return RIGMODE.FM; + } + + return RIGMODE.NONE; + } + catch (Exception ex) + { + + } + + return RIGMODE.NONE; + } + + public RIGSPLIT GetSplit() + { + try + { + switch ((RigParam)this.Split) + { + case RigParam.pmSplitOff: return RIGSPLIT.SPLITOFF; + case RigParam.pmSplitOn: return RIGSPLIT.SPLITON; + } + } + catch (Exception ex) + { + + } + + return RIGSPLIT.NONE; + + } + + public RIGRIT GetRit() + { + try + { + switch ((RigParam)this.Rit) + { + case RigParam.pmRitOff: return RIGRIT.RITOFF; + case RigParam.pmRitOn: return RIGRIT.RITON; + } + } + catch (Exception ex) + { + + } + + return RIGRIT.NONE; + + } + + public RIGVFO GetVfo() + { + try + { + switch ((RigParam)this.Vfo) + { + case RigParam.pmVfoA: return RIGVFO.A; + case RigParam.pmVfoB: return RIGVFO.B; + } + } + catch (Exception ex) + { + + } + + return RIGVFO.NONE; + + } + + long IRig.GetRxFrequency() + { + try + { + if ((RigParam)this.Split == RigParam.pmSplitOff) + { + // check if pmFreq is readable --> return Freq + if (this.Freq > 0) + return this.Freq; + // check if pmFreqA is readable --> return FreqA instead + if (this.FreqA > 0) + return this.FreqA; + } + else + { + // check if pmFreqA is readable --> return FreqA instead + if (this.FreqA > 0) + return this.FreqA; + } + } + catch (Exception ex) + { + + } + + return 0; + } + + long IRig.GetTxFrequency() + { + try + { + if ((RigParam)this.Split == RigParam.pmSplitOff) + { + // check if pmFreq is readable --> return Freq + if (this.Freq > 0) + return this.Freq; + // check if pmFreqA is readable --> return FreqA instead + if (this.FreqA > 0) + return this.FreqA; + } + else + { + // check if pmFreqB is readable --> return FreqB instead + if (this.FreqB > 0) + return this.FreqB; + } + } + catch (Exception ex) + { + + } + + return 0; + } + + // ******************************************************************** + + public bool SetMode(RIGMODE mode) + { + try + { + switch (mode) + { + case RIGMODE.CW: this.Mode = RigParam.pmCW_L; return true; + case RIGMODE.CW_R: this.Mode = RigParam.pmCW_U; return true; + case RIGMODE.LSB: this.Mode = RigParam.pmSSB_L; return true; + case RIGMODE.USB: this.Mode = RigParam.pmSSB_U; return true; + case RIGMODE.DIG: this.Mode = RigParam.pmDIG_L; return true; + case RIGMODE.DIG_R: this.Mode = RigParam.pmDIG_U; return true; + case RIGMODE.AM: this.Mode = RigParam.pmAM; return true; + case RIGMODE.FM: this.Mode = RigParam.pmFM; return true; + } + + } + catch (Exception ex) + { + } + + return false; + } + + public bool SetSplit(RIGSPLIT split) + { + try + { + switch (split) + { + case RIGSPLIT.SPLITOFF: this.Split = RigParam.pmSplitOff; return true; + case RIGSPLIT.SPLITON: this.Split = RigParam.pmSplitOn; return true; + } + } + catch (Exception ex) + { + + } + + + return false; + } + + public bool SetRit(RIGRIT rit) + { + try + { + switch (rit) + { + case RIGRIT.RITOFF: this.Rit = RigParam.pmRitOff; return true; + case RIGRIT.RITON: this.Rit = RigParam.pmRitOn; return true; + } + } + catch (Exception ex) + { + + } + + + return false; + } + + public bool SetVfo(RIGVFO vfo) + { + try + { + switch (vfo) + { + case RIGVFO.A: this.Vfo = RigParam.pmVfoA; return true; + case RIGVFO.B: this.Vfo = RigParam.pmVfoB; return true; + } + } + catch (Exception ex) + { + + } + + + return false; + } + + public bool SetRxFrequency(long rx) + { + try + { + if ((RigParam)this.Split == RigParam.pmSplitOff) + { + // check if pmFreq is writeable --> set Freq + if (this.IsParamWriteable(RigParam.pmFreq)) + { + this.Freq = (int)rx; + return true; + } + // check if pmFreqA is writeable --> set FreqA instead + if (this.IsParamWriteable(RigParam.pmFreqA)) + { + this.FreqA = (int)rx; + return true; + } + } + else + { + // check if pmFreqA is writeable --> set FreqA instead + if (this.IsParamWriteable(RigParam.pmFreqA)) + { + this.FreqA = (int)rx; + return true; + } + } + } + catch (Exception ex) + { + + } + + return false; + } + + public bool SetTxFrequency(long tx) + { + try + { + if ((RigParam)this.Split == RigParam.pmSplitOff) + { + // check if pmFreq is writeable --> set Freq + if (this.IsParamWriteable(RigParam.pmFreq)) + { + this.Freq = (int)tx; + return true; + } + // check if pmFreqA is writeable --> set FreqA instead + if (this.IsParamWriteable(RigParam.pmFreqA)) + { + this.FreqA = (int)tx; + return true; + } + } + else + { + // check if pmFreqB is writeable --> set FreqB instead + if (this.IsParamWriteable(RigParam.pmFreqB)) + { + this.FreqB = (int)tx; + return true; + } + } + } + catch (Exception ex) + { + + } + + return false; + } + + public bool IntSetSimplexMode(dynamic rig, long freq, RIGMODE mode) + { + return false; + } + + public bool SetSimplexMode(long freq, RIGMODE mode = RIGMODE.NONE) + { + + // set frequency and switch split off + try + { + if (this.IsParamWriteable(RigParam.pmFreqA) && this.IsParamWriteable(RigParam.pmVfoAA)) + { + this.Vfo = RigParam.pmVfoAA; + this.FreqA = freq; + } + else if (this.IsParamWriteable(RigParam.pmFreqA) && this.IsParamWriteable(RigParam.pmVfoA) && this.IsParamWriteable(RigParam.pmSplitOff)) + { + this.Vfo = RigParam.pmVfoA; + this.FreqA = freq; + } + else if (this.IsParamWriteable(RigParam.pmFreq) && this.IsParamWriteable(RigParam.pmVfoA) && this.IsParamWriteable(RigParam.pmVfoB)) + { + this.Vfo = RigParam.pmVfoB; + this.Freq = freq; + this.Vfo = RigParam.pmVfoA; + this.Freq = freq; + } + else if (this.IsParamWriteable(RigParam.pmFreq) && this.IsParamWriteable(RigParam.pmVfoEqual)) + { + this.Freq = freq; + this.Vfo = RigParam.pmVfoEqual; + } + else if (this.IsParamWriteable(RigParam.pmFreq) && this.IsParamWriteable(RigParam.pmVfoSwap)) + { + this.Vfo = RigParam.pmVfoSwap; + this.Freq = freq; + this.Vfo = RigParam.pmVfoSwap; + this.Freq = freq; + } + // Added by RA6UAZ for Icom Marine Radio NMEA Command + else if (this.IsParamWriteable(RigParam.pmFreq) && !this.IsParamWriteable(RigParam.pmVfoA) && this.IsParamWriteable(RigParam.pmFreqB)) + { + this.Freq = freq; + this.FreqB = freq; + } + else if (this.IsParamWriteable(RigParam.pmFreq)) + { + this.Freq = freq; + } + + if (this.IsParamWriteable(RigParam.pmSplitOff)) + { + this.Split = RigParam.pmSplitOff; + } + + // simply set mode on current VFO + if (CanWriteMode() && (mode != RIGMODE.NONE)) + { + this.SetMode(mode); + } + + return true; + } + catch (Exception ex) + { + + } + + return false; + } + + private bool CanWriteMode() + { + // check if modes are writable + if (!this.IsParamWriteable(RigParam.pmCW_L)) + return false; + if (!this.IsParamWriteable(RigParam.pmCW_U)) + return false; + if (!this.IsParamWriteable(RigParam.pmSSB_L)) + return false; + if (!this.IsParamWriteable(RigParam.pmSSB_U)) + return false; + if (!this.IsParamWriteable(RigParam.pmDIG_L)) + return false; + if (!this.IsParamWriteable(RigParam.pmDIG_U)) + return false; + if (!this.IsParamWriteable(RigParam.pmAM)) + return false; + if (!this.IsParamWriteable(RigParam.pmFM)) + return false; + + return true; + } + + public bool SetSplitMode(long rxfreq, long txfreq, RIGMODE mode = RIGMODE.NONE) + { + //set rx and tx frequencies and split + try + { + // try to set mode on both Vfos via VfoEqual which is the easiest way + if (this.IsParamWriteable(RigParam.pmVfoEqual)) + { + if (CanWriteMode() && (mode != RIGMODE.NONE)) + { + this.SetMode(mode); + this.Vfo = RigParam.pmVfoEqual; + } + } + + if (this.IsParamWriteable(RigParam.pmFreqA) && this.IsParamWriteable(RigParam.pmFreqB) && this.IsParamWriteable(RigParam.pmVfoAB)) + { + // TS-570 + this.Vfo = RigParam.pmVfoAB; + this.FreqA = rxfreq; + this.FreqB = txfreq; + // try to set mode once for both VFOs + if (CanWriteMode() && (mode != RIGMODE.NONE)) + { + this.SetMode(mode); + } + } + else if (this.IsParamWriteable(RigParam.pmFreq) && this.IsParamWriteable(RigParam.pmVfoEqual)) + { + // IC-746 + this.Freq = txfreq; + // should work fine for both VFOs because of VfoEqual + if (CanWriteMode() && (mode != RIGMODE.NONE)) + { + this.SetMode(mode); + } + this.Vfo = RigParam.pmVfoEqual; + this.Freq = rxfreq; + } + else if (this.IsParamWriteable(RigParam.pmVfoB) && this.IsParamWriteable(RigParam.pmFreq) && this.IsParamWriteable(RigParam.pmVfoA)) + { + // FT-100D + this.Vfo = RigParam.pmVfoB; + this.Freq = txfreq; + // should work fine for both VFOs because of switching to both VFOs + if (CanWriteMode() && (mode != RIGMODE.NONE)) + { + this.SetMode(mode); + } + this.Vfo = RigParam.pmVfoA; + this.Freq = rxfreq; + // should work fine for both VFOs because of switching to both VFOs + if (CanWriteMode() && (mode != RIGMODE.NONE)) + { + this.SetMode(mode); + } + } + else if (this.IsParamWriteable(RigParam.pmFreq) && this.IsParamWriteable(RigParam.pmVfoSwap)) + { + // FT-817 ? + this.Vfo = RigParam.pmVfoSwap; + this.Freq = txfreq; + // should work fine for both VFOs because of VfoSwap + if (CanWriteMode() && (mode != RIGMODE.NONE)) + { + this.SetMode(mode); + } + this.Vfo = RigParam.pmVfoSwap; + this.Freq = rxfreq; + // should work fine for both VFOs because of VfoSwap + if (CanWriteMode() && (mode != RIGMODE.NONE)) + { + this.SetMode(mode); + } + } + else if (this.IsParamWriteable(RigParam.pmFreqA) && this.IsParamWriteable(RigParam.pmFreqB) && this.IsParamWriteable(RigParam.pmVfoA)) + { + //FT-1000 MP, IC-7610 + this.Vfo = RigParam.pmVfoA; + this.FreqA = rxfreq; + this.FreqB = txfreq; + // can set only mode on VFO A + if (CanWriteMode() && (mode != RIGMODE.NONE)) + { + this.SetMode(mode); + } + + } + // Added by RA6UAZ for Icom Marine Radio NMEA Command + else if (this.IsParamWriteable(RigParam.pmFreq) && !this.IsParamWriteable(RigParam.pmFreqA) && this.IsParamWriteable(RigParam.pmFreqB)) + { + this.Freq = rxfreq; + this.FreqB = txfreq; + } + + if (this.IsParamWriteable(RigParam.pmSplitOn)) + { + this.Split = RigParam.pmSplitOn; + } + + return true; + } + catch (Exception ex) + { + + } + + return false; + } + + public bool SetDopplerStrategy(DOPPLERSTRATEGY doppler) + { + DopplerStrategy = doppler; + return true; + } + + public bool EnterDoppler() + { + // return false if we are not online or rig not suitable + if (GetStatus() != RIGSTATUS.ONLINE) + return false; + + // save rig settings + SaveRigMode = this.GetMode(); + SaveRigSplit = this.GetSplit(); + SaveRigRit = this.GetRit(); + SaveRxFrequency = this.GetRxFrequency(); + SaveTxFrequency = this.GetTxFrequency(); + + SetSplitMode(SaveRxFrequency, SaveRxFrequency, SaveRigMode); + + return true; + } + + public bool LeaveDoppler() + { + // restore rig settings + if (SaveRigMode != RIGMODE.NONE) + SetMode(SaveRigMode); + if (SaveRigSplit != RIGSPLIT.NONE) + SetSplit(SaveRigSplit); + if (SaveRigRit != RIGRIT.NONE) + SetRit(SaveRigRit); + if (SaveRxFrequency > 0) + SetRxFrequency(SaveRxFrequency); + if (SaveTxFrequency > 0) + SetTxFrequency(SaveTxFrequency); + + SetSimplexMode(SaveRxFrequency, SaveRigMode); + + return true; + } + + + + public static List SupportedRigs() + { + List rigs = new List(); + List rigtypes = ScoutBase.CAT.OmniRig.SupportedRigs(); + foreach (string rigtype in rigtypes) + { + SupportedRig rig = new SupportedRig(); + rig.Type = "[Serial] " + rigtype; + rig.Model = rigtype; + rig.CATEngine = CATENGINE.SCOUTBASE; + rigs.Add(rig); + } + + // return list of rigs + return rigs; + } + } +} diff --git a/AirScout.CAT/SupportedRig.cs b/AirScout.CAT/SupportedRig.cs new file mode 100644 index 0000000..2bcb938 --- /dev/null +++ b/AirScout.CAT/SupportedRig.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace AirScout.CAT +{ + public class SupportedRig + { + public string Type { get; set; } = ""; + public string Model { get; set; } = ""; + public CATENGINE CATEngine { get; set; } = CATENGINE.NONE; + } +} diff --git a/AirScout.CAT/app.config b/AirScout.CAT/app.config new file mode 100644 index 0000000..fb57df7 --- /dev/null +++ b/AirScout.CAT/app.config @@ -0,0 +1,51 @@ + + + + +
+ + + + + + False + + + 500 + + + 500 + + + + + + + + + 9600 + + + 8 + + + NONE + + + ONE + + + LOW + + + LOW + + + 100 + + + 500 + + + + \ No newline at end of file diff --git a/AirScout.Core/AirScout.Core.csproj b/AirScout.Core/AirScout.Core.csproj index 92d4100..450865a 100644 --- a/AirScout.Core/AirScout.Core.csproj +++ b/AirScout.Core/AirScout.Core.csproj @@ -37,8 +37,8 @@ - - ..\packages\System.Data.SQLite.Core.1.0.112.0\lib\net40\System.Data.SQLite.dll + + ..\packages\Stub.System.Data.SQLite.Core.NetFramework.1.0.113.3\lib\net40\System.Data.SQLite.dll @@ -73,12 +73,12 @@ - + Dieses Projekt verweist auf mindestens ein NuGet-Paket, das auf diesem Computer fehlt. Verwenden Sie die Wiederherstellung von NuGet-Paketen, um die fehlenden Dateien herunterzuladen. Weitere Informationen finden Sie unter "http://go.microsoft.com/fwlink/?LinkID=322105". Die fehlende Datei ist "{0}". - + compare server time with local time and calculate offset @@ -376,6 +375,8 @@ namespace AirScout.PlaneFeeds.Plugin.VirtualRadarServer long toffset = 0; try { + // deserialize JSON + dynamic root = JsonConvert.DeserializeObject(json); // get local time of request in milliseconds DateTime lt = DateTime.UtcNow; long ltime = (long)(lt - new DateTime(1970, 1, 1)).TotalMilliseconds; diff --git a/AirScout.PlaneFeeds/AirScout.PlaneFeeds.csproj b/AirScout.PlaneFeeds/AirScout.PlaneFeeds.csproj index a9f67a6..3f5037a 100644 --- a/AirScout.PlaneFeeds/AirScout.PlaneFeeds.csproj +++ b/AirScout.PlaneFeeds/AirScout.PlaneFeeds.csproj @@ -59,8 +59,8 @@ - - ..\packages\System.Data.SQLite.Core.1.0.112.0\lib\net40\System.Data.SQLite.dll + + ..\packages\Stub.System.Data.SQLite.Core.NetFramework.1.0.113.3\lib\net40\System.Data.SQLite.dll @@ -123,12 +123,12 @@ - + Dieses Projekt verweist auf mindestens ein NuGet-Paket, das auf diesem Computer fehlt. Verwenden Sie die Wiederherstellung von NuGet-Paketen, um die fehlenden Dateien herunterzuladen. Weitere Informationen finden Sie unter "http://go.microsoft.com/fwlink/?LinkID=322105". Die fehlende Datei ist "{0}". - + try to find one in the database + if (String.IsNullOrEmpty(dxlocstr)) + { + LocationDesignator ld = StationData.Database.LocationFindLastRecent(dxcallstr); + if (ld != null) + dxlocstr = ld.Loc; + } + // skip when loc is still invalid + if (!MaidenheadLocator.Check(dxlocstr)) + continue; + + // skip own callsign + if (dxcallstr == Callsign.Cut(Properties.Settings.Default.MyCall)) + continue; + + // find or create call & loc combination in station database + LocationDesignator dxcall = StationData.Database.LocationFindOrCreate(dxcallstr, dxlocstr); + double qrb = LatLon.Distance(Properties.Settings.Default.MyLat, Properties.Settings.Default.MyLon, dxcall.Lat, dxcall.Lon); + + // add to watchlist + int index = Properties.Settings.Default.Watchlist.IndexOf(dxcallstr, dxlocstr); + // reset remove flag if item found, add to watchlist if not + if (index >= 0) + { + Properties.Settings.Default.Watchlist[index].Remove = false; + Properties.Settings.Default.Watchlist[index].OutOfRange = qrb > Properties.Settings.Default.Path_MaxLength; + if (!Properties.Settings.Default.Watchlist[index].OutOfRange) + { + Properties.Settings.Default.Watchlist[index].Checked = checkstr == "1"; + } + } + else + { + if (qrb > Properties.Settings.Default.Path_MaxLength) + { + Properties.Settings.Default.Watchlist.Add(new WatchlistItem(dxcallstr, dxlocstr, true)); + } + else + { + Properties.Settings.Default.Watchlist.Add(new WatchlistItem(dxcallstr, dxlocstr, false, checkstr == "1")); + } + } + } + + // update watchlist in map + UpdateWatchlistInMap(); + + // update ListView control + RefreshWatchlistView(); + + // refresh paths + UpdatePaths(); + + // start playing if at least one active watch + if (Properties.Settings.Default.Watchlist.Find(item => item.Checked) != null) + { + if (PlayMode == AIRSCOUTPLAYMODE.PAUSE) + Play(); + } + + st.Stop(); + Log.WriteMessage("Processing ASADDWATCH: " + st.ElapsedMilliseconds.ToString() + " ms."); + } + catch (Exception ex) + { + Log.WriteMessage(ex.ToString(), LogLevel.Error); + } + } + + private void ASRemoveWatch(wtMessage msg) + { + // abort if in wtKST sync mode + if (Properties.Settings.Default.Watchlist_SyncWithKST) + return; + + // maintain watchlist + try + { + Stopwatch st = new Stopwatch(); + st.Start(); + + // check for empty call sign list --> remove all + if (!msg.Data.Contains(",")) + { + // mark all watchlist items to remove wich are not currently tracked + foreach (WatchlistItem item in Properties.Settings.Default.Watchlist) + { + // nasty!! Should never be null! + if (item == null) + continue; + item.Remove = true; + } + } + else + { + // split message + string[] a = msg.Data.Split(','); + // ignore band string so far + string qrgstr = a[0]; + for (int i = 1; i < a.Length; i++) + { + // get call + string dxcallstr = a[i].Trim().ToUpper(); + + // mark all watchlist items to remove wich are not currently tracked + foreach (WatchlistItem item in Properties.Settings.Default.Watchlist) + { + // nasty!! Should never be null! + if (item == null) + continue; + if (item.Call == dxcallstr) + item.Remove = true; + } + } + } + + // remove all items from watchlist which marked as remove + Properties.Settings.Default.Watchlist.RemoveAll(item => item.Remove); + + // update watchlist in map + UpdateWatchlistInMap(); + + // update ListView control + RefreshWatchlistView(); + + // refresh paths + UpdatePaths(); + + // stop playing if no more active watches + if (Properties.Settings.Default.Watchlist.Find(item => item.Checked) == null) + { + if (PlayMode == AIRSCOUTPLAYMODE.FORWARD) + Pause(); + } + + st.Stop(); + Log.WriteMessage("Processing ASREMOVEWATCH: " + st.ElapsedMilliseconds.ToString() + " ms."); + } + catch (Exception ex) + { + Log.WriteMessage(ex.ToString(), LogLevel.Error); + } + } + private void DispatchWinTestMsg(wtMessage msg) { // a Win-Test message was received by the background thread @@ -6237,6 +6904,18 @@ namespace AirScout // dispatch it to main thread bw_WinTestReceive.ReportProgress(1, msg); } + else if (msg.Msg == WTMESSAGES.ASADDWATCH) + { + // add call to watchlist + // dispatch it to main thread + bw_WinTestReceive.ReportProgress(1, msg); + } + else if (msg.Msg == WTMESSAGES.ASREMOVEWATCH) + { + // add call to watchlist + // dispatch it to main thread + bw_WinTestReceive.ReportProgress(1, msg); + } } private void bw_WinTestReceive_ProgressChanged(object sender, ProgressChangedEventArgs e) @@ -6251,7 +6930,11 @@ namespace AirScout if (msg.Msg == WTMESSAGES.ASSHOWPATH) ASShowPath(msg); else if (msg.Msg == WTMESSAGES.ASWATCHLIST) - ASSWatchlist(msg); + ASWatchlist(msg); + else if (msg.Msg == WTMESSAGES.ASADDWATCH) + ASAddWatch(msg); + else if (msg.Msg == WTMESSAGES.ASREMOVEWATCH) + ASRemoveWatch(msg); } private void bw_WinTestReceive_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) @@ -6519,9 +7202,11 @@ namespace AirScout throw new NullReferenceException("[UDP]: Client and/or IP endpoint not initialized."); wtMessage msg; msg = new wtMessage(WTMESSAGES.SETAZIMUTH, Properties.Settings.Default.Server_Name, "", "AUTO", " 00 " + az.ToString("000")); - msg = new wtMessage(WTMESSAGES.SETELEVATION, Properties.Settings.Default.Server_Name, "", "AUTO", " 00 " + el.ToString("000")); byte[] bytes = msg.ToBytes(); client.Send(bytes, bytes.Length, ip); + msg = new wtMessage(WTMESSAGES.SETELEVATION, Properties.Settings.Default.Server_Name, "", "AUTO", " 00 " + el.ToString("000")); + bytes = msg.ToBytes(); + client.Send(bytes, bytes.Length, ip); return true; } @@ -6619,167 +7304,463 @@ namespace AirScout private void bw_Track_DoWork(object sender, DoWorkEventArgs e) { Log.WriteMessage("Started."); + // name the thread for debugging if (String.IsNullOrEmpty(Thread.CurrentThread.Name)) Thread.CurrentThread.Name = "bw_Track"; + + // last recent calculated values + TrackValues oldvalues = null; + TRACKSTATUS oldstatus = TRACKSTATUS.NONE; + // clients and ports DdeClient ddeclient = null; UdpClient udpclient = null; IPEndPoint udpip = null; SerialPort serialport = null; + // error counters int ddeerr = 0; int udperr = 0; int serialerr = 0; int maxerr = 10; + // outer loop do { - // intializations - if (Properties.Settings.Default.Track_DDE_HRD) - { - ddeclient = new DdeClient("HRDRotator", "Position"); - int result = ddeclient.TryConnect(); - - } - if (Properties.Settings.Default.Track_UDP_WinTest) - { - udpclient = new UdpClient(); - udpip = new IPEndPoint(IPAddress.Broadcast, Properties.Settings.Default.Track_UDP_WinTest_Port); - } - else if (Properties.Settings.Default.Track_UDP_AirScout) - { - udpclient = new UdpClient(); - udpip = new IPEndPoint(IPAddress.Broadcast, Properties.Settings.Default.Track_UDP_AirScout_Port); - } - if ((Properties.Settings.Default.Track_Serial_GS232_AZ) || (Properties.Settings.Default.Track_Serial_GS232_AZEL)) - { - serialport = new SerialPort(Properties.Settings.Default.Track_Serial_Port, - Properties.Settings.Default.Track_Serial_Baudrate, - Parity.None, - 8, - StopBits.One); - serialport.Handshake = System.IO.Ports.Handshake.None; - serialport.NewLine = "\r"; - serialport.Encoding = Encoding.ASCII; - serialport.ReadTimeout = 1000; - serialport.WriteTimeout = 1000; - serialport.Open(); - } - // inner loop - while (Properties.Settings.Default.Track_Activate && !bw_Track.CancellationPending) - { - try - { - // tracking - double az = Properties.Settings.Default.Track_SetAz; - double el = Properties.Settings.Default.Track_SetEl; - if (!double.IsNaN(az) && !double.IsNaN(el)) - { - if (Properties.Settings.Default.Track_DDE_HRD) - Track_DDE_HRD(ddeclient, az, el); - if (Properties.Settings.Default.Track_UDP_WinTest) - Track_UDP_WinTest(udpclient, udpip, az, el); - if (Properties.Settings.Default.Track_UDP_AirScout) - Track_UDP_WinTest(udpclient, udpip, az, el); - if (Properties.Settings.Default.Track_Serial_GS232_AZ) - Track_SER__GS_232A_AZ(serialport, az); - if (Properties.Settings.Default.Track_Serial_GS232_AZEL) - Track_SER__GS_232A_AZEL(serialport, az, el); - if (Properties.Settings.Default.Track_File_Native) - Track_File_Native(az, el); - if (Properties.Settings.Default.Track_File_WSJT) - Track_File_WSJT(az, el); - } - else - { - // no tracking! - } - } - catch (Exception ex) - { - Log.WriteMessage(ex.ToString(), LogLevel.Error); - //report error - bw_Track.ReportProgress(-1, ex.Message); - // increment error counters and switch off in case of subsequent errors - if (ex.Message.StartsWith("[DDE]:")) - { - ddeerr++; - if (ddeerr > maxerr) - { - // switch off DDE - Properties.Settings.Default.Track_DDE_None = true; - Properties.Settings.Default.Track_DDE_HRD = false; - bw_Track.ReportProgress(-1, "Tracking via DDE disabled."); - } - } - if (ex.Message.StartsWith("[UDP]:")) - { - udperr++; - if (udperr > maxerr) - { - // switch off UDP - Properties.Settings.Default.Track_UDP_None = true; - Properties.Settings.Default.Track_UDP_WinTest = false; - Properties.Settings.Default.Track_UDP_AirScout = false; - bw_Track.ReportProgress(-1, "Tracking via UDP disabled."); - } - } - if (ex.Message.StartsWith("[Serial]:")) - { - serialerr++; - if (serialerr > maxerr) - { - // switch off Serial - Properties.Settings.Default.Track_Serial_None = true; - Properties.Settings.Default.Track_Serial_GS232_AZ = false; - Properties.Settings.Default.Track_Serial_GS232_AZEL = false; - bw_Track.ReportProgress(-1, "Tracking via Serial disabled."); - } - if (ex.Message.StartsWith("[Serial]:")) - serialerr++; - } - // leave inner loop - break; - } - Thread.Sleep(1000); - } - Thread.Sleep(1000); - // try to close all connections try { - if ((ddeclient != null) && (ddeclient.IsConnected)) - ddeclient.Disconnect(); - if (udpclient != null) - udpclient.Close(); - if ((serialport != null) && (serialport.IsOpen)) - serialport.Close(); + // intializations + if (Properties.Settings.Default.Track_DDE_HRD) + { + ddeclient = new DdeClient("HRDRotator", "Position"); + int result = ddeclient.TryConnect(); + + } + if (Properties.Settings.Default.Track_UDP_WinTest) + { + udpclient = new UdpClient(); + udpip = new IPEndPoint(IPAddress.Broadcast, Properties.Settings.Default.Track_UDP_WinTest_Port); + } + else if (Properties.Settings.Default.Track_UDP_AirScout) + { + udpclient = new UdpClient(); + udpip = new IPEndPoint(IPAddress.Broadcast, Properties.Settings.Default.Track_UDP_AirScout_Port); + } + if ((Properties.Settings.Default.Track_Serial_GS232_AZ) || (Properties.Settings.Default.Track_Serial_GS232_AZEL)) + { + serialport = new SerialPort(Properties.Settings.Default.Track_Serial_Port, + Properties.Settings.Default.Track_Serial_Baudrate, + System.IO.Ports.Parity.None, + 8, + System.IO.Ports.StopBits.One); + serialport.Handshake = System.IO.Ports.Handshake.None; + serialport.NewLine = "\r"; + serialport.Encoding = Encoding.ASCII; + serialport.ReadTimeout = 1000; + serialport.WriteTimeout = 1000; + serialport.Open(); + } + + // init OK --> ready for tracking + bw_Track.ReportProgress(1, TRACKSTATUS.STOPPED); + bw_Track.ReportProgress(2, ROTSTATUS.STOPPED); + + // inner loop + while (Properties.Settings.Default.Track_Activate && !bw_Track.CancellationPending) + { + try + { + // get current plane position and calculate set of tracking values + DateTime time = DateTime.UtcNow.AddSeconds(Properties.Settings.Default.Track_Offset); + TrackValues trackvalues = new TrackValues(); + trackvalues.Timestamp = time; + if (TrackMode == AIRSCOUTTRACKMODE.TRACK) + { + // invalidate oldvalues on plane change + if ((oldvalues != null) && (Properties.Settings.Default.Track_CurrentPlane != null) && (oldvalues.Hex != Properties.Settings.Default.Track_CurrentPlane)) + { + oldvalues = null; + } + // track plane --> get plane position and calculate values + PlaneInfo plane = Planes.Get(Properties.Settings.Default.Track_CurrentPlane, time, Properties.Settings.Default.Planes_Position_TTL); + if (plane != null) + { + trackvalues.Hex = Properties.Settings.Default.Track_CurrentPlane; + trackvalues.MyAzimuth = LatLon.Bearing(Properties.Settings.Default.MyLat, + Properties.Settings.Default.MyLon, + plane.Lat, + plane.Lon); + trackvalues.DXAzimuth = LatLon.Bearing(Properties.Settings.Default.DXLat, + Properties.Settings.Default.DXLon, + plane.Lat, + plane.Lon); + double myh = (GetElevation(Properties.Settings.Default.MyLat, Properties.Settings.Default.MyLon) + Properties.Settings.Default.MyHeight); + double dxh = (GetElevation(Properties.Settings.Default.DXLat, Properties.Settings.Default.DXLon) + Properties.Settings.Default.DXHeight); + double H = plane.Alt_m; + trackvalues.MyDistance = LatLon.Distance(Properties.Settings.Default.MyLat, Properties.Settings.Default.MyLon, plane.Lat, plane.Lon); + trackvalues.MySlantRange = Propagation.SlantRangeFromHeights( + myh, + Properties.Settings.Default.MyLat, + Properties.Settings.Default.MyLon, + plane.Lat, + plane.Lon, + H, + LatLon.Earth.Radius * Properties.Settings.Default.Path_Band_Settings[Properties.Settings.Default.Band].K_Factor); + trackvalues.MyElevation = Propagation.EpsilonFromHeights(myh, + trackvalues.MyDistance, + H, + LatLon.Earth.Radius * Properties.Settings.Default.Path_Band_Settings[Properties.Settings.Default.Band].K_Factor) + / Math.PI * 180; + trackvalues.DXDistance = LatLon.Distance(Properties.Settings.Default.DXLat, Properties.Settings.Default.DXLon, plane.Lat, plane.Lon); + trackvalues.DXSlantRange = Propagation.SlantRangeFromHeights( + dxh, + Properties.Settings.Default.DXLat, + Properties.Settings.Default.DXLon, + plane.Lat, + plane.Lon, + H, + LatLon.Earth.Radius * Properties.Settings.Default.Path_Band_Settings[Properties.Settings.Default.Band].K_Factor); + trackvalues.DXElevation = Propagation.EpsilonFromHeights(dxh, + trackvalues.MyDistance, + H, + LatLon.Earth.Radius * Properties.Settings.Default.Path_Band_Settings[Properties.Settings.Default.Band].K_Factor) + / Math.PI * 180; + + // calculate doppler, we need a last recent calculated values to calculate relative speed + if (oldvalues != null) + { + // get both resulting speeds in m/s + double timediff = (trackvalues.Timestamp - oldvalues.Timestamp).TotalSeconds; + double myspeed = 0; + double dxspeed = 0; + + if (timediff > 0) + { + myspeed = (oldvalues.MySlantRange - trackvalues.MySlantRange) * 1000.0 / timediff; + dxspeed = (oldvalues.DXSlantRange - trackvalues.DXSlantRange) * 1000.0 / timediff; + } + + // calculate both doppler shifts + trackvalues.MyDoppler = Propagation.DopplerShift(Bands.ToHz(Properties.Settings.Default.Band), myspeed); + trackvalues.DXDoppler = Propagation.DopplerShift(Bands.ToHz(Properties.Settings.Default.Band), dxspeed); + } + } + } + else if (TrackMode == AIRSCOUTTRACKMODE.SINGLE) + { + // single shot --> get values from settings and track only once + trackvalues.MyAzimuth = Properties.Settings.Default.Track_SetAz; + trackvalues.MyElevation = Properties.Settings.Default.Track_SetEl; + } + + // valid values --> start tracking + if (!double.IsNaN(trackvalues.MyAzimuth) && + !double.IsNaN(trackvalues.MyElevation) && + (trackvalues.MyAzimuth >= 0) && + (trackvalues.MyAzimuth < 360)) + { + // report track start + if (TrackMode == AIRSCOUTTRACKMODE.SINGLE) + { + bw_Track.ReportProgress(1, TRACKSTATUS.SINGLE); + } + else if (TrackMode == AIRSCOUTTRACKMODE.TRACK) + { + bw_Track.ReportProgress(1, TRACKSTATUS.TRACKING); + } + + // rotator control + try + { + // log tracking to console + Console.WriteLine("Tracking[" + DateTime.UtcNow.ToString("yyyy-MM-dd HH:mm:ss,fff") + "]: Az=" + trackvalues.MyAzimuth + ", El=" + trackvalues.MyElevation); + if (Properties.Settings.Default.Track_DDE_HRD) + { + bw_Track.ReportProgress(2, ROTSTATUS.TRACKING); + Track_DDE_HRD(ddeclient, trackvalues.MyAzimuth, trackvalues.MyElevation); + } + if (Properties.Settings.Default.Track_UDP_WinTest) + { + bw_Track.ReportProgress(2, ROTSTATUS.TRACKING); + Track_UDP_WinTest(udpclient, udpip, trackvalues.MyAzimuth, trackvalues.MyElevation); + } + if (Properties.Settings.Default.Track_UDP_AirScout) + { + bw_Track.ReportProgress(2, ROTSTATUS.TRACKING); + Track_UDP_AirScout(udpclient, udpip, trackvalues.MyAzimuth, trackvalues.MyElevation); + } + if (Properties.Settings.Default.Track_Serial_GS232_AZ) + { + bw_Track.ReportProgress(2, ROTSTATUS.TRACKING); + Track_SER__GS_232A_AZ(serialport, trackvalues.MyAzimuth); + } + if (Properties.Settings.Default.Track_Serial_GS232_AZEL) + { + bw_Track.ReportProgress(2, ROTSTATUS.TRACKING); + Track_SER__GS_232A_AZEL(serialport, trackvalues.MyAzimuth, trackvalues.MyElevation); + } + if (Properties.Settings.Default.Track_File_Native) + { + bw_Track.ReportProgress(2, ROTSTATUS.TRACKING); + Track_File_Native(trackvalues.MyAzimuth, trackvalues.MyElevation); + } + if (Properties.Settings.Default.Track_File_WSJT) + { + bw_Track.ReportProgress(2, ROTSTATUS.TRACKING); + Track_File_WSJT(trackvalues.MyAzimuth, trackvalues.MyElevation); + } + } + catch (Exception ex) + { + Log.WriteMessage(ex.ToString(), LogLevel.Error); + //report error + bw_Track.ReportProgress(-1, ex.Message); + // increment error counters and switch off in case of subsequent errors + if (ex.Message.StartsWith("[DDE]:")) + { + ddeerr++; + if (ddeerr > maxerr) + { + // switch off DDE + Properties.Settings.Default.Track_DDE_None = true; + Properties.Settings.Default.Track_DDE_HRD = false; + bw_Track.ReportProgress(-1, "Tracking via DDE disabled."); + bw_Track.ReportProgress(2, ROTSTATUS.ERROR); + bw_Track.ReportProgress(1, TRACKSTATUS.ERROR); + + } + } + if (ex.Message.StartsWith("[UDP]:")) + { + udperr++; + if (udperr > maxerr) + { + // switch off UDP + Properties.Settings.Default.Track_UDP_None = true; + Properties.Settings.Default.Track_UDP_WinTest = false; + Properties.Settings.Default.Track_UDP_AirScout = false; + bw_Track.ReportProgress(-1, "Tracking via UDP disabled."); + bw_Track.ReportProgress(2, ROTSTATUS.ERROR); + bw_Track.ReportProgress(1, TRACKSTATUS.ERROR); + } + } + if (ex.Message.StartsWith("[Serial]:")) + { + serialerr++; + if (serialerr > maxerr) + { + // switch off Serial + Properties.Settings.Default.Track_Serial_None = true; + Properties.Settings.Default.Track_Serial_GS232_AZ = false; + Properties.Settings.Default.Track_Serial_GS232_AZEL = false; + bw_Track.ReportProgress(-1, "Tracking via Serial disabled."); + bw_Track.ReportProgress(2, ROTSTATUS.ERROR); + bw_Track.ReportProgress(1, TRACKSTATUS.ERROR); + } + if (ex.Message.StartsWith("[Serial]:")) + serialerr++; + } + + } + + // doppler shift compensation if activated + if (Properties.Settings.Default.Doppler_Strategy_A) + { + trackvalues.RXFrequency = Properties.Settings.Default.Doppler_DialFreq + + (long)trackvalues.MyDoppler + + (long)trackvalues.DXDoppler; + trackvalues.TXFrequency = Properties.Settings.Default.Doppler_DialFreq; + } + else if (Properties.Settings.Default.Doppler_Strategy_B) + { + trackvalues.RXFrequency = Properties.Settings.Default.Doppler_DialFreq; + trackvalues.TXFrequency = Properties.Settings.Default.Doppler_DialFreq - + (long)trackvalues.MyDoppler - + (long)trackvalues.DXDoppler; + } + else if (Properties.Settings.Default.Doppler_Strategy_C) + { + trackvalues.RXFrequency = Properties.Settings.Default.Doppler_DialFreq + + (long)trackvalues.MyDoppler + + (long)trackvalues.DXDoppler; + trackvalues.TXFrequency = Properties.Settings.Default.Doppler_DialFreq - + (long)trackvalues.MyDoppler - + (long)trackvalues.DXDoppler; + } + else if (Properties.Settings.Default.Doppler_Strategy_D) + { + trackvalues.RXFrequency = Properties.Settings.Default.Doppler_DialFreq + + (long)trackvalues.MyDoppler; + trackvalues.TXFrequency = Properties.Settings.Default.Doppler_DialFreq - + (long)trackvalues.MyDoppler; + } + + // report values + bw_Track.ReportProgress(3, trackvalues); + + // store last values + oldvalues = trackvalues; + + // stop tracking when single shot + if (TrackMode == AIRSCOUTTRACKMODE.SINGLE) + { + bw_Track.ReportProgress(1, TRACKSTATUS.STOPPED); + bw_Track.ReportProgress(2, ROTSTATUS.STOPPED); + } + + } + else + { + // no tracking! + bw_Track.ReportProgress(1, TRACKSTATUS.STOPPED); + bw_Track.ReportProgress(2, ROTSTATUS.STOPPED); + } + } + catch (Exception ex) + { + // leave inner loop + bw_Track.ReportProgress(1, TRACKSTATUS.ERROR); + break; + } + Thread.Sleep(1000); + } + Thread.Sleep(Properties.Settings.Default.Track_Update); + } catch (Exception ex) { - Log.WriteMessage(ex.ToString(), LogLevel.Error); + bw_Track.ReportProgress(-1, "Track error: " + ex.Message); + bw_Track.ReportProgress(1, TRACKSTATUS.ERROR); } + } while (!bw_Track.CancellationPending); + + // try to close all connections + try + { + if ((ddeclient != null) && (ddeclient.IsConnected)) + ddeclient.Disconnect(); + if (udpclient != null) + udpclient.Close(); + if ((serialport != null) && (serialport.IsOpen)) + serialport.Close(); + } + catch (Exception ex) + { + Log.WriteMessage(ex.ToString(), LogLevel.Error); + } + + bw_Track.ReportProgress(1, TRACKSTATUS.NONE); + bw_Track.ReportProgress(2, ROTSTATUS.NONE); + Log.WriteMessage("Finished."); } private void bw_Track_ProgressChanged(object sender, ProgressChangedEventArgs e) { - if (e.ProgressPercentage < 0) + if (e.ProgressPercentage <= 0) { // report Error tsl_Status.Text = (string)e.UserState; } - if (e.ProgressPercentage == 1) + else if (e.ProgressPercentage == 1) { - // report Azimuth - ag_Azimuth.Value = (float)(double)e.UserState; + // report tracking status + TRACKSTATUS trackstatus = (TRACKSTATUS)e.UserState; + switch (trackstatus) + { + case TRACKSTATUS.NONE: + SayTrack("TRK", Color.DarkGray, SystemColors.Control); + break; + case TRACKSTATUS.STOPPED: +// TrackMode = AIRSCOUTTRACKMODE.NONE; + SayTrack("TRK", SystemColors.Control, Color.DarkGray); + break; + case TRACKSTATUS.SINGLE: + case TRACKSTATUS.TRACKING: + SayTrack("TRK", Color.White, Color.DarkGreen); + break; + case TRACKSTATUS.ERROR: + SayTrack("TRK", Color.Yellow, Color.Red); + break; + default: + SayTrack("TRK", Color.DarkGray, SystemColors.Control); + break; + } + + // restore settings when returning from tracking + if ((trackstatus == TRACKSTATUS.TRACKING) || (trackstatus == TRACKSTATUS.SINGLE)) + { + if (bw_CAT != null) + { + if (Properties.Settings.Default.Doppler_Strategy_A) + bw_CAT.DopplerStrategy = DOPPLERSTRATEGY.DOPPLER_A; + else if (Properties.Settings.Default.Doppler_Strategy_B) + bw_CAT.DopplerStrategy = DOPPLERSTRATEGY.DOPPLER_B; + else if (Properties.Settings.Default.Doppler_Strategy_C) + bw_CAT.DopplerStrategy = DOPPLERSTRATEGY.DOPPLER_C; + else if (Properties.Settings.Default.Doppler_Strategy_D) + bw_CAT.DopplerStrategy = DOPPLERSTRATEGY.DOPPLER_D; + + } + } + else + { + if (bw_CAT != null) + { + bw_CAT.DopplerStrategy = DOPPLERSTRATEGY.DOPPLER_NONE; + } + } + + // save TrackStatus + TrackStatus = trackstatus; } - if (e.ProgressPercentage == 2) + else if (e.ProgressPercentage == 2) { - // report Elevation - ag_Elevation.Value = (float)(double)e.UserState; + // report Status + RotStatus = (ROTSTATUS)e.UserState; + switch (RotStatus) + { + case ROTSTATUS.STOPPED: + SayRot("ROT", SystemColors.Control, Color.DarkGray); + break; + case ROTSTATUS.TRACKING: + SayRot("ROT", Color.White, Color.DarkGreen); + break; + case ROTSTATUS.ERROR: + SayRot("ROT", Color.Yellow, Color.Red); + break; + default: + SayRot("ROT", Color.DarkGray, SystemColors.Control); + break; + } + } + else if (e.ProgressPercentage == 3) + { + // report track values + TrackValues = (TrackValues)e.UserState; + if (Properties.Settings.Default.Doppler_Strategy_A || + Properties.Settings.Default.Doppler_Strategy_B || + Properties.Settings.Default.Doppler_Strategy_C || + Properties.Settings.Default.Doppler_Strategy_D) + { + // adjust rig if frequencies are valid + if ((bw_CAT != null) && (TrackValues.RXFrequency != 0) && (TrackValues.TXFrequency != 0)) + { + if (Properties.Settings.Default.Doppler_Strategy_A) + bw_CAT.DopplerStrategy = DOPPLERSTRATEGY.DOPPLER_A; + if (Properties.Settings.Default.Doppler_Strategy_B) + bw_CAT.DopplerStrategy = DOPPLERSTRATEGY.DOPPLER_B; + if (Properties.Settings.Default.Doppler_Strategy_C) + bw_CAT.DopplerStrategy = DOPPLERSTRATEGY.DOPPLER_C; + if (Properties.Settings.Default.Doppler_Strategy_D) + bw_CAT.DopplerStrategy = DOPPLERSTRATEGY.DOPPLER_D; + bw_CAT.RxFrequency = TrackValues.RXFrequency; + bw_CAT.TxFrequency = TrackValues.TXFrequency; + } + } } } @@ -7514,6 +8495,95 @@ namespace AirScout } + #endregion + + #region CATUpdater + + private void bw_CATUpdater_ProgressChanged(object sender, ProgressChangedEventArgs e) + { + if (e.ProgressPercentage <= 0) + { + Say((string)e.UserState); + } + } + + + #endregion + + #region CAT + + private void bw_CAT_ProgressChanged(object sender, ProgressChangedEventArgs e) + { + if (e.ProgressPercentage <= 0) + { + Say((string)e.UserState); + } + else if (e.ProgressPercentage == 1) + { + // new rig status received + RIGSTATUS status = (RIGSTATUS)e.UserState; + switch (status) + { + case RIGSTATUS.ONLINE: + SayCAT("CAT", Color.White, Color.DarkGreen); + break; + case RIGSTATUS.ERROR: + case RIGSTATUS.NOCAT: + case RIGSTATUS.NOPORT: + case RIGSTATUS.NORIG: + case RIGSTATUS.NOTSUITABLE: + SayCAT("CAT", Color.Yellow, Color.Red); + break; + case RIGSTATUS.OFFLINE: + SayCAT("CAT", Color.White, Color.DarkOrange); + break; + default: + SayCAT("CAT", Color.DarkGray, SystemColors.Control); + break; + } + + RigStatus = status; + } + else if (e.ProgressPercentage == 2) + { + // new rig info received + IRig rig = (IRig)e.UserState; + + // save info if a valid tracking is not going on + if (TrackStatus != TRACKSTATUS.TRACKING) + { + if (rig != null) + { + ConnectedRig = rig; + // save latest rig settings to switch back after tracking + Properties.Settings.Default.Doppler_DialFreq = rig.GetRxFrequency(); + Properties.Settings.Default.Doppler_DialMode = rig.GetMode(); + Properties.Settings.Default.Doppler_DialSplit = rig.GetSplit(); + Properties.Settings.Default.Doppler_DialRit = rig.GetRit(); + } + } + + // report to status bar + NumberFormatInfo info = new NumberFormatInfo(); + info.NumberDecimalSeparator = ";"; + info.NumberGroupSeparator = "."; + Say("Rig reports RX: " + rig.GetRxFrequency().ToString(info) + ", TX: " + rig.GetTxFrequency().ToString(info) + "Hz, Mode: " + rig.GetMode().ToString() + ", RIT: " + ((rig.GetRit() == RIGRIT.RITON) ? "ON" : "OFF") +", Split: " + ((rig.GetSplit() == RIGSPLIT.SPLITON)? "ON" : "OFF")); + } + + // set Tooltip + if (ConnectedRig != null) + { + tsl_CAT.ToolTipText = ConnectedRig.CatVersion + "\n" + ConnectedRig.Settings.Type + "\n\n"; + } + else + { + tsl_CAT.ToolTipText = "CAT error!" + "\n\n"; + } + tsl_CAT.ToolTipText = tsl_CAT.ToolTipText + RigStatus.ToString(); + + } + + #endregion #endregion diff --git a/AirScout/MapDlg.resx b/AirScout/MapDlg.resx index 735db0f..3417064 100644 --- a/AirScout/MapDlg.resx +++ b/AirScout/MapDlg.resx @@ -125,7 +125,7 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAACc - DQAAAk1TRnQBSQFMAgEBAwEAAagBCwGoAQsBIAEAASABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo + DQAAAk1TRnQBSQFMAgEBAwEAARABDAEQAQwBIAEAASABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo AwABgAMAASADAAEBAQABCAYAARAYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5 AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA @@ -193,7 +193,7 @@ iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO - awAADmsBVP4NBgAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAHbSURBVGhD7Zg/ + aQAADmkBKwDOjwAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAHbSURBVGhD7Zg/ S8NAGIejIAo6OCiiVnqNRRQXxclV3QUXQcTRr+DaUXAQWpOYSXBx1dk/30Ad3ZwUpA7VXFJEqfEuvi1t c4kpmEuU94HfcO9d7+4Z7npEQRAEQRAEQRAkCGJUiOK6XdAMhBy5fVnTGYVm+lA1WlB1epUvVjNQEpIv 0uGcTl9U3d6AUrrgImyDLkuFaHQdyj5AhI9jsY5ntfIAdKWDJpHGJkf2nvqhu0GrCI99nz20FqE7efwi @@ -211,7 +211,7 @@ iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO - awAADmsBVP4NBgAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAEfSURBVGhD7dg9 + aQAADmkBKwDOjwAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAEfSURBVGhD7dg9 a8JwFMXhbAVbbZ2EDqJpoIPfy6WDn6DgWHAQhEQy9ONZROsLjXt6lHtBRXxLSO4fzgN3sGg8P+ikR0RE RERElwTx+q0Tzp7kpbvaUfKB+/OjzVczWtflz+6RkFTO3aCjkIOg1nD1Im+zD6NPhei5E4Sx50L07Adh 5DUhegs/TPp+vHyWj9uBcbeE6P2aC8Koe0L07ARhTJYQvV1QMFrU5LHFw4g8QvTmpQXhy/MMWbbHyWcp @@ -222,7 +222,7 @@ iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO - awAADmsBVP4NBgAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAACGSURBVGhD7dix + aQAADmkBKwDOjwAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAACGSURBVGhD7dix CcMwEEBRjeJ0WcqQPvMkIdt5Btm9E4E6XZHiMMS8B6p0J/xbFwAA4BfTu14vz/U+nNc295FBu4t22lt9 5HjTo96+H7GPpy59ZNDuop32Vh85npBgR0gGIcGOkAxCgh0hGYQEO0IyCAl2hGQQEuwIyXCekLP8fAAA gD9Sygf13QPKE81S/AAAAABJRU5ErkJggg== @@ -275,7 +275,7 @@ XTesb3QPLh88M+QwdP6m681Lt7xuXbu94vbgcOjwnZHokdE77DtTd1PuvriXeW/h/sYH6AdFD6UeVjxS fNTws+7PbaOWo6fHXMf6Hwc/vj/OGn/2S8Yv7ycKnpCfVEyqTDZPmU2dmnafvvF05dOJZ+nPFmYKf5X+ tfa5zvMffnP8rX82YnbiBf/Fp99LXsq/PPRq2aueuYC5R69TXy/MF72Rf3P4LeNt37vwd5MLWe+x7ys/ - 6H7o/ujz8cGn1E+f/gUDmPP8usTo0wAAAAlwSFlzAAAOawAADmsBVP4NBgAAAVJJREFUaEPdmL1KA0EU + 6H7o/ujz8cGn1E+f/gUDmPP8usTo0wAAAAlwSFlzAAAOaQAADmkBKwDOjwAAAVJJREFUaEPdmL1KA0EU RtMFTDRaCRaSrAsWvpeNhU8QsAykCAR2ZQsfzxDy5+Kmn4zghWX4srk4S2Y+PzjNaeYe2DTpGGP+BVAy AiUjUDICJSNQMgIlI1AyAiUjUDICJSNQMgIlI1AyAqWGtveUrfppUT6gtzRAqaGt3eflTZLvJ6O8+ra8 oLc0QKnBd06A+YUnZDj7ugYBPCEnAoR4Q5QBQnwhSbEbJFn1Zo/bOsc2EU9ILWDjHKkhfIhngBAuJJ1v @@ -287,7 +287,7 @@ iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO - awAADmsBVP4NBgAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAHmSURBVGhD7Zg/ + aQAADmkBKwDOjwAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAHmSURBVGhD7Zg/ S8NAGIerIAo6OCiiVnuJRfwziZOruAtOIuLoV3DtKDgIrUnMJLi4iqvoN1BHNycFqUM1lxZRNL4v9Opx vUTBkhzyPvCjzeUgvwcu16M5giAIgiAIgiA6TcGvj7KjqK95GU8UdTGvxppXZmG74Ybl8udimQ83h7QU y4287fJL2+Gl5pAZzDvVAcsNjkEiwiSJMI+voyzOM0qkcBgsWW54JyTiREb2HvtlWYwZIqWoG4tAoXe5 @@ -305,43 +305,43 @@ iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAIAAABLbSncAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO - wwAADsMBx2+oZAAAABBJREFUGFdjqMcBhpREfT0AN/NfQdTsp04AAAAASUVORK5CYII= + wAAADsABataJCQAAABBJREFUGFdjqMcBhpREfT0AN/NfQdTsp04AAAAASUVORK5CYII= iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAIAAABLbSncAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO - wwAADsMBx2+oZAAAABBJREFUGFdjqMcBhpREfT0AN/NfQdTsp04AAAAASUVORK5CYII= + wAAADsABataJCQAAABBJREFUGFdjqMcBhpREfT0AN/NfQdTsp04AAAAASUVORK5CYII= iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAIAAABLbSncAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO - wwAADsMBx2+oZAAAABBJREFUGFdjqMcBhpREfT0AN/NfQdTsp04AAAAASUVORK5CYII= + wAAADsABataJCQAAABBJREFUGFdjqMcBhpREfT0AN/NfQdTsp04AAAAASUVORK5CYII= iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAIAAABLbSncAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO - wwAADsMBx2+oZAAAABBJREFUGFdjqMcBhpREfT0AN/NfQdTsp04AAAAASUVORK5CYII= + wAAADsABataJCQAAABBJREFUGFdjqMcBhpREfT0AN/NfQdTsp04AAAAASUVORK5CYII= iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAIAAABLbSncAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO - wwAADsMBx2+oZAAAABBJREFUGFdjqMcBhpREfT0AN/NfQdTsp04AAAAASUVORK5CYII= + wAAADsABataJCQAAABBJREFUGFdjqMcBhpREfT0AN/NfQdTsp04AAAAASUVORK5CYII= iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAIAAABLbSncAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO - wwAADsMBx2+oZAAAABBJREFUGFdjqMcBhpREfT0AN/NfQdTsp04AAAAASUVORK5CYII= + wAAADsABataJCQAAABBJREFUGFdjqMcBhpREfT0AN/NfQdTsp04AAAAASUVORK5CYII= iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAIAAABLbSncAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO - wwAADsMBx2+oZAAAABBJREFUGFdjqMcBhpREfT0AN/NfQdTsp04AAAAASUVORK5CYII= + wAAADsABataJCQAAABBJREFUGFdjqMcBhpREfT0AN/NfQdTsp04AAAAASUVORK5CYII= @@ -352,7 +352,7 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAACM - DAAAAk1TRnQBSQFMAwEBAAEQAQoBEAEKASABAAEgAQAE/wEJAQAI/wFCAU0BNgEEBgABNgEEAgABKAMA + DAAAAk1TRnQBSQFMAwEBAAF4AQoBeAEKASABAAEgAQAE/wEJAQAI/wFCAU0BNgEEBgABNgEEAgABKAMA AYADAAEgAwABAQEAAQgGAAEQGAABgAIAAYADAAKAAQABgAMAAYABAAGAAQACgAIAA8ABAAHAAdwBwAEA AfABygGmAQABMwUAATMBAAEzAQABMwEAAjMCAAMWAQADHAEAAyIBAAMpAQADVQEAA00BAANCAQADOQEA AYABfAH/AQACUAH/AQABkwEAAdYBAAH/AewBzAEAAcYB1gHvAQAB1gLnAQABkAGpAa0CAAH/ATMDAAFm diff --git a/AirScout/OptionsDlg.Designer.cs b/AirScout/OptionsDlg.Designer.cs index 30fdbe7..ab78318 100644 --- a/AirScout/OptionsDlg.Designer.cs +++ b/AirScout/OptionsDlg.Designer.cs @@ -43,15 +43,34 @@ this.btn_DeleteAllMapTiles = new System.Windows.Forms.Button(); this.btn_Options_Open_PluginDirectory = new System.Windows.Forms.Button(); this.btn_Options_Open_AirScoutDirectory = new System.Windows.Forms.Button(); + this.pb_Donate = new System.Windows.Forms.PictureBox(); + this.rb_Options_Track_UDP_AirScout = new System.Windows.Forms.RadioButton(); + this.tb_Options_Track_DialFreq = new ScoutBase.Core.LongTextBox(); + this.cb_Options_Locations_RestrictToAreaOfInterest = new System.Windows.Forms.CheckBox(); + this.cb_Options_Path_BestCaseElevation = new System.Windows.Forms.CheckBox(); + this.cb_Options_Planes_KeepHistory = new System.Windows.Forms.CheckBox(); + this.tb_Options_Track_Serial_Baudrate = new ScoutBase.Core.Int32TextBox(); + this.tb_Options_Track_Serial_Port = new System.Windows.Forms.TextBox(); + this.tb_Options_Track_Offset = new ScoutBase.Core.Int32TextBox(); + this.int32TextBox2 = new ScoutBase.Core.Int32TextBox(); + this.cb_Options_Track_Activate = new System.Windows.Forms.CheckBox(); this.tab_Options_Planes = new System.Windows.Forms.TabPage(); this.groupBox48 = new System.Windows.Forms.GroupBox(); + this.int32TextBox1 = new ScoutBase.Core.Int32TextBox(); this.label33 = new System.Windows.Forms.Label(); + this.cb_Options_Planes_ExtendedPlausibilityCheck_Enabled = new System.Windows.Forms.CheckBox(); + this.tb_Options_Planes_Interval = new ScoutBase.Core.Int32TextBox(); this.label22 = new System.Windows.Forms.Label(); + this.cb_Options_Planes_LogErrors = new System.Windows.Forms.CheckBox(); this.groupBox40 = new System.Windows.Forms.GroupBox(); this.label55 = new System.Windows.Forms.Label(); + this.ud_Options_Planes_Position_DatabaseLifetime = new System.Windows.Forms.NumericUpDown(); this.label53 = new System.Windows.Forms.Label(); this.label32 = new System.Windows.Forms.Label(); this.groupBox38 = new System.Windows.Forms.GroupBox(); + this.tb_Options_Planes_Positions_TTL = new ScoutBase.Core.Int32TextBox(); + this.tb_Options_Planes_MaxAlt = new ScoutBase.Core.Int32TextBox(); + this.tb_Options_Planes_MinAlt = new ScoutBase.Core.Int32TextBox(); this.label2 = new System.Windows.Forms.Label(); this.label1 = new System.Windows.Forms.Label(); this.label9 = new System.Windows.Forms.Label(); @@ -59,6 +78,8 @@ this.label7 = new System.Windows.Forms.Label(); this.label5 = new System.Windows.Forms.Label(); this.groupBox26 = new System.Windows.Forms.GroupBox(); + this.tb_Options_Planes_Filter_MinAlt = new ScoutBase.Core.Int32TextBox(); + this.tb_Options_Planes_Filter_Max_Circumcircle = new ScoutBase.Core.Int32TextBox(); this.label96 = new System.Windows.Forms.Label(); this.label94 = new System.Windows.Forms.Label(); this.label95 = new System.Windows.Forms.Label(); @@ -89,6 +110,7 @@ this.groupBox1 = new System.Windows.Forms.GroupBox(); this.btn_Options_Path_Export = new System.Windows.Forms.Button(); this.label147 = new System.Windows.Forms.Label(); + this.tb_Options_Path_MaxLength = new ScoutBase.Core.DoubleTextBox(); this.label131 = new System.Windows.Forms.Label(); this.label130 = new System.Windows.Forms.Label(); this.tb_Options_Path_StepWidth = new System.Windows.Forms.TextBox(); @@ -103,6 +125,8 @@ this.groupBox13 = new System.Windows.Forms.GroupBox(); this.gm_Options_SRTM1 = new GMap.NET.WindowsForms.GMapControl(); this.groupBox12 = new System.Windows.Forms.GroupBox(); + this.cb_Options_Elevation_SRTM1_EnableCache = new System.Windows.Forms.CheckBox(); + this.cb_Options_Elevation_SRTM1 = new System.Windows.Forms.CheckBox(); this.tab_Options_SRTM3 = new System.Windows.Forms.TabPage(); this.groupBox42 = new System.Windows.Forms.GroupBox(); this.label100 = new System.Windows.Forms.Label(); @@ -111,6 +135,8 @@ this.groupBox9 = new System.Windows.Forms.GroupBox(); this.gm_Options_SRTM3 = new GMap.NET.WindowsForms.GMapControl(); this.groupBox8 = new System.Windows.Forms.GroupBox(); + this.cb_Options_Elevation_SRTM3_EnableCache = new System.Windows.Forms.CheckBox(); + this.cb_Options_Elevation_SRTM3 = new System.Windows.Forms.CheckBox(); this.tab_Options_GLOBE = new System.Windows.Forms.TabPage(); this.groupBox41 = new System.Windows.Forms.GroupBox(); this.label99 = new System.Windows.Forms.Label(); @@ -119,16 +145,32 @@ this.groupBox11 = new System.Windows.Forms.GroupBox(); this.gm_Options_GLOBE = new GMap.NET.WindowsForms.GMapControl(); this.groupBox10 = new System.Windows.Forms.GroupBox(); + this.cb_Options_Elevation_GLOBE_EnableCache = new System.Windows.Forms.CheckBox(); + this.cb_Options_Elevation_GLOBE = new System.Windows.Forms.CheckBox(); this.tab_Options_Map = new System.Windows.Forms.TabPage(); this.groupBox49 = new System.Windows.Forms.GroupBox(); + this.cb_Options_Map_SmallMarkers = new System.Windows.Forms.CheckBox(); + this.cb_Options_Map_LabelCalls = new System.Windows.Forms.CheckBox(); this.groupBox37 = new System.Windows.Forms.GroupBox(); this.label34 = new System.Windows.Forms.Label(); + this.ud_Options_Charts_FontSize = new System.Windows.Forms.NumericUpDown(); this.groupBox39 = new System.Windows.Forms.GroupBox(); + this.tb_Options_Map_Update_Interval = new ScoutBase.Core.Int32TextBox(); this.label97 = new System.Windows.Forms.Label(); this.label29 = new System.Windows.Forms.Label(); this.groupBox23 = new System.Windows.Forms.GroupBox(); + this.ud_Options_Map_Opacity = new AirScout.PercentageControl(); + this.label148 = new System.Windows.Forms.Label(); + this.ud_Options_Map_Preloader_MaxZoom = new System.Windows.Forms.NumericUpDown(); this.label144 = new System.Windows.Forms.Label(); + this.cb_Options_Map_Preloader_Enabled = new System.Windows.Forms.CheckBox(); + this.cb_Options_Watchlist_Activate = new System.Windows.Forms.CheckBox(); + this.cb_Options_Airports_Activate = new System.Windows.Forms.CheckBox(); this.groupBox30 = new System.Windows.Forms.GroupBox(); + this.tb_Options_Planes_IconSize_S = new ScoutBase.Core.Int32TextBox(); + this.tb_Options_Planes_IconSize_H = new ScoutBase.Core.Int32TextBox(); + this.tb_Options_Planes_IconSize_M = new ScoutBase.Core.Int32TextBox(); + this.tb_Options_Planes_IconSize_L = new ScoutBase.Core.Int32TextBox(); this.label84 = new System.Windows.Forms.Label(); this.label83 = new System.Windows.Forms.Label(); this.label82 = new System.Windows.Forms.Label(); @@ -139,10 +181,23 @@ this.label76 = new System.Windows.Forms.Label(); this.label74 = new System.Windows.Forms.Label(); this.label75 = new System.Windows.Forms.Label(); + this.cb_Options_InfoWin_Angle = new System.Windows.Forms.CheckBox(); + this.cb_Options_InfoWin_Speed = new System.Windows.Forms.CheckBox(); + this.cb_Options_InfoWin_Squint = new System.Windows.Forms.CheckBox(); + this.cb_Options_InfoWin_Epsilon = new System.Windows.Forms.CheckBox(); + this.cb_Options_InfoWin_Dist = new System.Windows.Forms.CheckBox(); + this.cb_Options_InfoWin_Time = new System.Windows.Forms.CheckBox(); + this.cb_Options_InfoWin_Type = new System.Windows.Forms.CheckBox(); + this.cb_Options_InfoWin_Track = new System.Windows.Forms.CheckBox(); + this.cb_Options_InfoWin_Alt = new System.Windows.Forms.CheckBox(); + this.cb_Options_InfoWin_Position = new System.Windows.Forms.CheckBox(); this.groupBox22 = new System.Windows.Forms.GroupBox(); + this.rb_Options_InfoWin_Imperial = new System.Windows.Forms.RadioButton(); + this.rb_Options_InfoWin_Metric = new System.Windows.Forms.RadioButton(); this.label72 = new System.Windows.Forms.Label(); this.btn_Options_SelectFont = new System.Windows.Forms.Button(); this.label62 = new System.Windows.Forms.Label(); + this.tb_Options_Map_ToolTipFont = new System.Windows.Forms.TextBox(); this.groupBox2 = new System.Windows.Forms.GroupBox(); this.label61 = new System.Windows.Forms.Label(); this.cb_Options_Map_Provider = new System.Windows.Forms.ComboBox(); @@ -179,12 +234,17 @@ this.label28 = new System.Windows.Forms.Label(); this.label41 = new System.Windows.Forms.Label(); this.groupBox14 = new System.Windows.Forms.GroupBox(); + this.cb_Options_SmallLettersForSubSquares = new System.Windows.Forms.CheckBox(); + this.cb_Options_Locator_AutoLength = new System.Windows.Forms.CheckBox(); this.label48 = new System.Windows.Forms.Label(); + this.ud_Options_Locator_MaxLength = new System.Windows.Forms.NumericUpDown(); this.groupBox16 = new System.Windows.Forms.GroupBox(); this.label52 = new System.Windows.Forms.Label(); this.groupBox5 = new System.Windows.Forms.GroupBox(); + this.btn_Options_DXMap = new System.Windows.Forms.Button(); this.tb_Options_DXLon = new ScoutBase.Core.DoubleTextBox(); this.tb_Options_DXLat = new ScoutBase.Core.DoubleTextBox(); + this.tb_Options_DXLoc = new ScoutBase.Core.LocatorTextBox(); this.tb_Options_DXCall = new ScoutBase.Core.CallsignTextBox(); this.label21 = new System.Windows.Forms.Label(); this.btn_Options_DXHorizon = new System.Windows.Forms.Button(); @@ -196,9 +256,11 @@ this.label43 = new System.Windows.Forms.Label(); this.label44 = new System.Windows.Forms.Label(); this.groupBox4 = new System.Windows.Forms.GroupBox(); + this.btn_Options_MyMap = new System.Windows.Forms.Button(); this.btn_Options_MyHorizon = new System.Windows.Forms.Button(); this.tb_Options_MyLon = new ScoutBase.Core.DoubleTextBox(); this.tb_Options_MyLat = new ScoutBase.Core.DoubleTextBox(); + this.tb_Options_MyLoc = new ScoutBase.Core.LocatorTextBox(); this.tb_Options_MyCall = new ScoutBase.Core.CallsignTextBox(); this.label18 = new System.Windows.Forms.Label(); this.btn_MyCall_QRZ = new System.Windows.Forms.Button(); @@ -210,6 +272,10 @@ this.label11 = new System.Windows.Forms.Label(); this.tab_Options_General = new System.Windows.Forms.TabPage(); this.groupBox25 = new System.Windows.Forms.GroupBox(); + this.tb_Coverage_MaxLat = new ScoutBase.Core.DoubleTextBox(); + this.tb_Coverage_MinLat = new ScoutBase.Core.DoubleTextBox(); + this.tb_Coverage_MaxLon = new ScoutBase.Core.DoubleTextBox(); + this.tb_Coverage_MinLon = new ScoutBase.Core.DoubleTextBox(); this.gm_Options_Coverage = new GMap.NET.WindowsForms.GMapControl(); this.label35 = new System.Windows.Forms.Label(); this.label54 = new System.Windows.Forms.Label(); @@ -221,7 +287,9 @@ this.groupBox27 = new System.Windows.Forms.GroupBox(); this.label108 = new System.Windows.Forms.Label(); this.gb_Options_Database_Settings = new System.Windows.Forms.GroupBox(); + this.cb_Options_Background_Calculations_Enable = new System.Windows.Forms.CheckBox(); this.label47 = new System.Windows.Forms.Label(); + this.ud_Options_Database_Update_Period = new System.Windows.Forms.NumericUpDown(); this.rb_Options_Database_Update_Periodically = new System.Windows.Forms.RadioButton(); this.rb_Options_Database_Update_OnStartup = new System.Windows.Forms.RadioButton(); this.rb_Options_Database_Update_Never = new System.Windows.Forms.RadioButton(); @@ -291,6 +359,8 @@ this.groupBox52 = new System.Windows.Forms.GroupBox(); this.gm_Options_ASTER3 = new GMap.NET.WindowsForms.GMapControl(); this.groupBox53 = new System.Windows.Forms.GroupBox(); + this.cb_Options_Elevation_ASTER3_EnableCache = new System.Windows.Forms.CheckBox(); + this.cb_Options_Elevation_ASTER3 = new System.Windows.Forms.CheckBox(); this.tba_Option_ASTER1 = new System.Windows.Forms.TabPage(); this.groupBox54 = new System.Windows.Forms.GroupBox(); this.label145 = new System.Windows.Forms.Label(); @@ -298,51 +368,161 @@ this.groupBox55 = new System.Windows.Forms.GroupBox(); this.gm_Options_ASTER1 = new GMap.NET.WindowsForms.GMapControl(); this.groupBox56 = new System.Windows.Forms.GroupBox(); + this.cb_Options_Elevation_ASTER1_EnableCache = new System.Windows.Forms.CheckBox(); + this.cb_Options_Elevation_ASTER1 = new System.Windows.Forms.CheckBox(); this.tab_Options_Alarm = new System.Windows.Forms.TabPage(); this.groupBox21 = new System.Windows.Forms.GroupBox(); + this.cb_Options_Alarm_Activate = new System.Windows.Forms.CheckBox(); this.groupBox19 = new System.Windows.Forms.GroupBox(); + this.cb_Options_Alarm_PlaySound = new System.Windows.Forms.CheckBox(); this.cb_Options_Alarm_BringWindowToFront = new System.Windows.Forms.CheckBox(); this.groupBox20 = new System.Windows.Forms.GroupBox(); + this.tb_Options_Alarm_Distance = new ScoutBase.Core.DoubleTextBox(); this.label36 = new System.Windows.Forms.Label(); this.label56 = new System.Windows.Forms.Label(); this.tab_Options_Network = new System.Windows.Forms.TabPage(); this.label86 = new System.Windows.Forms.Label(); this.groupBox32 = new System.Windows.Forms.GroupBox(); + this.tb_Options_Webserver_Port = new ScoutBase.Core.Int32TextBox(); this.label85 = new System.Windows.Forms.Label(); this.groupBox31 = new System.Windows.Forms.GroupBox(); + this.cb_Options_Server_Activate = new System.Windows.Forms.CheckBox(); this.label3 = new System.Windows.Forms.Label(); this.groupBox24 = new System.Windows.Forms.GroupBox(); + this.tb_Options_Server_Port = new ScoutBase.Core.Int32TextBox(); this.label6 = new System.Windows.Forms.Label(); this.label4 = new System.Windows.Forms.Label(); + this.tb_Options_Server_Name = new System.Windows.Forms.TextBox(); this.tab_Options_SpecLab = new System.Windows.Forms.TabPage(); this.groupBox3 = new System.Windows.Forms.GroupBox(); + this.tb_Options_SpecLab_UpdateInterval = new ScoutBase.Core.DoubleTextBox(); + this.tb_Options_SpecLab_F2 = new ScoutBase.Core.Int32TextBox(); + this.tb_Options_SpecLab_F1 = new ScoutBase.Core.Int32TextBox(); this.label70 = new System.Windows.Forms.Label(); this.label71 = new System.Windows.Forms.Label(); this.label68 = new System.Windows.Forms.Label(); this.label69 = new System.Windows.Forms.Label(); this.label67 = new System.Windows.Forms.Label(); this.label66 = new System.Windows.Forms.Label(); + this.tb_SpecLab_FileName = new System.Windows.Forms.TextBox(); this.label63 = new System.Windows.Forms.Label(); this.label64 = new System.Windows.Forms.Label(); this.label65 = new System.Windows.Forms.Label(); + this.tb_SpecLab_URL = new System.Windows.Forms.TextBox(); + this.cb_SpecLab_Enabled = new System.Windows.Forms.CheckBox(); this.tab_Options_Track = new System.Windows.Forms.TabPage(); - this.groupBox36 = new System.Windows.Forms.GroupBox(); - this.groupBox35 = new System.Windows.Forms.GroupBox(); - this.groupBox34 = new System.Windows.Forms.GroupBox(); + this.gb_Options_Doppler = new System.Windows.Forms.GroupBox(); + this.label150 = new System.Windows.Forms.Label(); + this.label180 = new System.Windows.Forms.Label(); + this.label181 = new System.Windows.Forms.Label(); + this.label182 = new System.Windows.Forms.Label(); + this.label183 = new System.Windows.Forms.Label(); + this.label184 = new System.Windows.Forms.Label(); + this.rb_Options_Doppler_Strategy_None = new System.Windows.Forms.RadioButton(); + this.label178 = new System.Windows.Forms.Label(); + this.label179 = new System.Windows.Forms.Label(); + this.label176 = new System.Windows.Forms.Label(); + this.label177 = new System.Windows.Forms.Label(); + this.label174 = new System.Windows.Forms.Label(); + this.label175 = new System.Windows.Forms.Label(); + this.label172 = new System.Windows.Forms.Label(); + this.label173 = new System.Windows.Forms.Label(); + this.label170 = new System.Windows.Forms.Label(); + this.label171 = new System.Windows.Forms.Label(); + this.label168 = new System.Windows.Forms.Label(); + this.label169 = new System.Windows.Forms.Label(); + this.label166 = new System.Windows.Forms.Label(); + this.label167 = new System.Windows.Forms.Label(); + this.label165 = new System.Windows.Forms.Label(); + this.label163 = new System.Windows.Forms.Label(); + this.label164 = new System.Windows.Forms.Label(); + this.label162 = new System.Windows.Forms.Label(); + this.label161 = new System.Windows.Forms.Label(); + this.label160 = new System.Windows.Forms.Label(); + this.label159 = new System.Windows.Forms.Label(); + this.label158 = new System.Windows.Forms.Label(); + this.label157 = new System.Windows.Forms.Label(); + this.label156 = new System.Windows.Forms.Label(); + this.label155 = new System.Windows.Forms.Label(); + this.rb_Options_Doppler_Strategy_D = new System.Windows.Forms.RadioButton(); + this.rb_Options_Doppler_Strategy_C = new System.Windows.Forms.RadioButton(); + this.rb_Options_Doppler_Strategy_B = new System.Windows.Forms.RadioButton(); + this.rb_Options_Doppler_Strategy_A = new System.Windows.Forms.RadioButton(); + this.label154 = new System.Windows.Forms.Label(); + this.label153 = new System.Windows.Forms.Label(); + this.label152 = new System.Windows.Forms.Label(); + this.gb_Options_Track_File = new System.Windows.Forms.GroupBox(); + this.rb_Options_Track_File_None = new System.Windows.Forms.RadioButton(); + this.rb_Options_Track_File_WSJT = new System.Windows.Forms.RadioButton(); + this.rb_Options_Track_File_Native = new System.Windows.Forms.RadioButton(); + this.gb_Options_Track_DDE = new System.Windows.Forms.GroupBox(); + this.rb_Options_Track_DDE_None = new System.Windows.Forms.RadioButton(); + this.rb_Options_Track_DDE_HRD = new System.Windows.Forms.RadioButton(); + this.gb_Options_Track_UDP = new System.Windows.Forms.GroupBox(); + this.tb_Options_Track_UDP_AirScout_Port = new ScoutBase.Core.Int32TextBox(); + this.tb_Options_Track_UDP_WinTest_Port = new ScoutBase.Core.Int32TextBox(); this.label90 = new System.Windows.Forms.Label(); this.label89 = new System.Windows.Forms.Label(); - this.groupBox33 = new System.Windows.Forms.GroupBox(); + this.rb_Options_Track_UDP_None = new System.Windows.Forms.RadioButton(); + this.rb_Options_Track_UDP_WinTest = new System.Windows.Forms.RadioButton(); + this.gb_Options_Track_Serial = new System.Windows.Forms.GroupBox(); + this.rb_Options_Track_Serial_None = new System.Windows.Forms.RadioButton(); this.label88 = new System.Windows.Forms.Label(); this.label87 = new System.Windows.Forms.Label(); + this.rb_Options_Track_Serial_GS232_AZEL = new System.Windows.Forms.RadioButton(); + this.rb_Options_Track_Serial_GS232_AZ = new System.Windows.Forms.RadioButton(); this.groupBox28 = new System.Windows.Forms.GroupBox(); + this.label186 = new System.Windows.Forms.Label(); + this.label187 = new System.Windows.Forms.Label(); + this.label185 = new System.Windows.Forms.Label(); + this.label151 = new System.Windows.Forms.Label(); + this.tab_Options_CAT = new System.Windows.Forms.TabPage(); + this.gb_Options_CAT_PortSettings = new System.Windows.Forms.GroupBox(); + this.ud_Options_CAT_Timeout = new System.Windows.Forms.NumericUpDown(); + this.label149 = new System.Windows.Forms.Label(); + this.ud_Options_CAT_Poll = new System.Windows.Forms.NumericUpDown(); + this.label190 = new System.Windows.Forms.Label(); + this.label191 = new System.Windows.Forms.Label(); + this.cb_Options_CAT_DTR = new System.Windows.Forms.ComboBox(); + this.label192 = new System.Windows.Forms.Label(); + this.cb_Options_CAT_RTS = new System.Windows.Forms.ComboBox(); + this.label193 = new System.Windows.Forms.Label(); + this.cb_Options_CAT_StopBits = new System.Windows.Forms.ComboBox(); + this.label194 = new System.Windows.Forms.Label(); + this.cb_Options_CAT_Parity = new System.Windows.Forms.ComboBox(); + this.label195 = new System.Windows.Forms.Label(); + this.cb_Options_CAT_DataBits = new System.Windows.Forms.ComboBox(); + this.label196 = new System.Windows.Forms.Label(); + this.cb_Options_CAT_Baudrate = new System.Windows.Forms.ComboBox(); + this.label197 = new System.Windows.Forms.Label(); + this.cb_Options_CAT_PortName = new System.Windows.Forms.ComboBox(); + this.gb_Options_CAT_RigType = new System.Windows.Forms.GroupBox(); + this.richTextBox5 = new System.Windows.Forms.RichTextBox(); + this.richTextBox4 = new System.Windows.Forms.RichTextBox(); + this.richTextBox3 = new System.Windows.Forms.RichTextBox(); + this.label199 = new System.Windows.Forms.Label(); + this.richTextBox2 = new System.Windows.Forms.RichTextBox(); + this.cb_Options_CAT_Rig = new System.Windows.Forms.ComboBox(); + this.gb_Options_CAT_OperatingInstructions = new System.Windows.Forms.GroupBox(); + this.richTextBox1 = new System.Windows.Forms.RichTextBox(); + this.groupBox57 = new System.Windows.Forms.GroupBox(); + this.ud_Options_CAT_Update = new System.Windows.Forms.NumericUpDown(); + this.label189 = new System.Windows.Forms.Label(); + this.cb_Options_CAT_Activate = new System.Windows.Forms.CheckBox(); this.tab_Options_Watchlist = new System.Windows.Forms.TabPage(); this.groupBox50 = new System.Windows.Forms.GroupBox(); + this.pictureBox3 = new System.Windows.Forms.PictureBox(); + this.pictureBox2 = new System.Windows.Forms.PictureBox(); this.label37 = new System.Windows.Forms.Label(); + this.pictureBox1 = new System.Windows.Forms.PictureBox(); this.btn_Options_Watchlist_Clear = new System.Windows.Forms.Button(); this.groupBox17 = new System.Windows.Forms.GroupBox(); + this.cb_Options_Watchlist_SyncWithKST = new System.Windows.Forms.CheckBox(); + this.tb_Options_Watchlist_MaxCount = new ScoutBase.Core.Int32TextBox(); this.label31 = new System.Windows.Forms.Label(); this.btn_Options_Watchlist_Manage = new System.Windows.Forms.Button(); this.tab_Options_Misc = new System.Windows.Forms.TabPage(); + this.pictureBox4 = new System.Windows.Forms.PictureBox(); this.label143 = new System.Windows.Forms.Label(); this.groupBox15 = new System.Windows.Forms.GroupBox(); this.tab_Options_Info = new System.Windows.Forms.TabPage(); @@ -373,109 +553,13 @@ this.bw_StationDataUpdater = new System.ComponentModel.BackgroundWorker(); this.bw_ASTER3_MapUpdater = new System.ComponentModel.BackgroundWorker(); this.bw_ASTER1_MapUpdater = new System.ComponentModel.BackgroundWorker(); - this.label148 = new System.Windows.Forms.Label(); - this.tb_Coverage_MaxLat = new ScoutBase.Core.DoubleTextBox(); - this.tb_Coverage_MinLat = new ScoutBase.Core.DoubleTextBox(); - this.tb_Coverage_MaxLon = new ScoutBase.Core.DoubleTextBox(); - this.tb_Coverage_MinLon = new ScoutBase.Core.DoubleTextBox(); - this.cb_Options_Background_Calculations_Enable = new System.Windows.Forms.CheckBox(); - this.ud_Options_Database_Update_Period = new System.Windows.Forms.NumericUpDown(); - this.cb_Options_Locations_RestrictToAreaOfInterest = new System.Windows.Forms.CheckBox(); - this.cb_Options_SmallLettersForSubSquares = new System.Windows.Forms.CheckBox(); - this.cb_Options_Locator_AutoLength = new System.Windows.Forms.CheckBox(); - this.ud_Options_Locator_MaxLength = new System.Windows.Forms.NumericUpDown(); - this.tb_Options_DXLoc = new ScoutBase.Core.LocatorTextBox(); - this.tb_Options_MyLoc = new ScoutBase.Core.LocatorTextBox(); - this.cb_Options_Map_SmallMarkers = new System.Windows.Forms.CheckBox(); - this.cb_Options_Map_LabelCalls = new System.Windows.Forms.CheckBox(); - this.ud_Options_Charts_FontSize = new System.Windows.Forms.NumericUpDown(); - this.tb_Options_Map_Update_Interval = new ScoutBase.Core.Int32TextBox(); - this.ud_Options_Map_Preloader_MaxZoom = new System.Windows.Forms.NumericUpDown(); - this.cb_Options_Map_Preloader_Enabled = new System.Windows.Forms.CheckBox(); - this.cb_Options_Watchlist_Activate = new System.Windows.Forms.CheckBox(); - this.cb_Options_Airports_Activate = new System.Windows.Forms.CheckBox(); - this.tb_Options_Planes_IconSize_S = new ScoutBase.Core.Int32TextBox(); - this.tb_Options_Planes_IconSize_H = new ScoutBase.Core.Int32TextBox(); - this.tb_Options_Planes_IconSize_M = new ScoutBase.Core.Int32TextBox(); - this.tb_Options_Planes_IconSize_L = new ScoutBase.Core.Int32TextBox(); - this.cb_Options_InfoWin_Angle = new System.Windows.Forms.CheckBox(); - this.cb_Options_InfoWin_Speed = new System.Windows.Forms.CheckBox(); - this.cb_Options_InfoWin_Squint = new System.Windows.Forms.CheckBox(); - this.cb_Options_InfoWin_Epsilon = new System.Windows.Forms.CheckBox(); - this.cb_Options_InfoWin_Dist = new System.Windows.Forms.CheckBox(); - this.cb_Options_InfoWin_Time = new System.Windows.Forms.CheckBox(); - this.cb_Options_InfoWin_Type = new System.Windows.Forms.CheckBox(); - this.cb_Options_InfoWin_Track = new System.Windows.Forms.CheckBox(); - this.cb_Options_InfoWin_Alt = new System.Windows.Forms.CheckBox(); - this.cb_Options_InfoWin_Position = new System.Windows.Forms.CheckBox(); - this.rb_Options_InfoWin_Imperial = new System.Windows.Forms.RadioButton(); - this.rb_Options_InfoWin_Metric = new System.Windows.Forms.RadioButton(); - this.tb_Options_Map_ToolTipFont = new System.Windows.Forms.TextBox(); - this.cb_Options_Elevation_GLOBE_EnableCache = new System.Windows.Forms.CheckBox(); - this.cb_Options_Elevation_GLOBE = new System.Windows.Forms.CheckBox(); - this.cb_Options_Elevation_SRTM3_EnableCache = new System.Windows.Forms.CheckBox(); - this.cb_Options_Elevation_SRTM3 = new System.Windows.Forms.CheckBox(); - this.cb_Options_Elevation_SRTM1_EnableCache = new System.Windows.Forms.CheckBox(); - this.cb_Options_Elevation_SRTM1 = new System.Windows.Forms.CheckBox(); - this.cb_Options_Elevation_ASTER3_EnableCache = new System.Windows.Forms.CheckBox(); - this.cb_Options_Elevation_ASTER3 = new System.Windows.Forms.CheckBox(); - this.cb_Options_Elevation_ASTER1_EnableCache = new System.Windows.Forms.CheckBox(); - this.cb_Options_Elevation_ASTER1 = new System.Windows.Forms.CheckBox(); - this.tb_Options_Path_MaxLength = new ScoutBase.Core.DoubleTextBox(); - this.cb_Options_Path_BestCaseElevation = new System.Windows.Forms.CheckBox(); - this.int32TextBox1 = new ScoutBase.Core.Int32TextBox(); - this.cb_Options_Planes_ExtendedPlausibilityCheck_Enabled = new System.Windows.Forms.CheckBox(); - this.tb_Options_Planes_Interval = new ScoutBase.Core.Int32TextBox(); - this.cb_Options_Planes_LogErrors = new System.Windows.Forms.CheckBox(); - this.cb_Options_Planes_KeepHistory = new System.Windows.Forms.CheckBox(); - this.ud_Options_Planes_Position_DatabaseLifetime = new System.Windows.Forms.NumericUpDown(); - this.tb_Options_Planes_Positions_TTL = new ScoutBase.Core.Int32TextBox(); - this.tb_Options_Planes_MaxAlt = new ScoutBase.Core.Int32TextBox(); - this.tb_Options_Planes_MinAlt = new ScoutBase.Core.Int32TextBox(); - this.tb_Options_Planes_Filter_MinAlt = new ScoutBase.Core.Int32TextBox(); - this.tb_Options_Planes_Filter_Max_Circumcircle = new ScoutBase.Core.Int32TextBox(); - this.cb_Options_Alarm_Activate = new System.Windows.Forms.CheckBox(); - this.cb_Options_Alarm_PlaySound = new System.Windows.Forms.CheckBox(); - this.tb_Options_Alarm_Distance = new ScoutBase.Core.DoubleTextBox(); - this.tb_Options_Webserver_Port = new ScoutBase.Core.Int32TextBox(); - this.cb_Options_Server_Activate = new System.Windows.Forms.CheckBox(); - this.tb_Options_Server_Port = new ScoutBase.Core.Int32TextBox(); - this.tb_Options_Server_Name = new System.Windows.Forms.TextBox(); - this.tb_Options_SpecLab_UpdateInterval = new ScoutBase.Core.DoubleTextBox(); - this.tb_Options_SpecLab_F2 = new ScoutBase.Core.Int32TextBox(); - this.tb_Options_SpecLab_F1 = new ScoutBase.Core.Int32TextBox(); - this.tb_SpecLab_FileName = new System.Windows.Forms.TextBox(); - this.tb_SpecLab_URL = new System.Windows.Forms.TextBox(); - this.cb_SpecLab_Enabled = new System.Windows.Forms.CheckBox(); - this.rb_Options_Track_File_None = new System.Windows.Forms.RadioButton(); - this.rb_Options_Track_File_WSJT = new System.Windows.Forms.RadioButton(); - this.rb_Options_Track_File_Native = new System.Windows.Forms.RadioButton(); - this.rb_Options_Track_DDE_None = new System.Windows.Forms.RadioButton(); - this.rb_Options_Track_DDE_HRD = new System.Windows.Forms.RadioButton(); - this.tb_Options_Track_UDP_AirScout_Port = new ScoutBase.Core.Int32TextBox(); - this.tb_Options_Track_UDP_WinTest_Port = new ScoutBase.Core.Int32TextBox(); - this.rb_Options_Track_UDP_None = new System.Windows.Forms.RadioButton(); - this.rb_Options_Track_UDP_AirScout = new System.Windows.Forms.RadioButton(); - this.rb_Options_Track_UDP_WinTest = new System.Windows.Forms.RadioButton(); - this.tb_Options_Track_Serial_Baudrate = new ScoutBase.Core.Int32TextBox(); - this.rb_Options_Track_Serial_None = new System.Windows.Forms.RadioButton(); - this.tb_Options_Track_Serial_Port = new System.Windows.Forms.TextBox(); - this.rb_Options_Track_Serial_GS232_AZEL = new System.Windows.Forms.RadioButton(); - this.rb_Options_Track_Serial_GS232_AZ = new System.Windows.Forms.RadioButton(); - this.cb_Options_Track_Activate = new System.Windows.Forms.CheckBox(); - this.cb_Options_Watchlist_SyncWithKST = new System.Windows.Forms.CheckBox(); - this.tb_Options_Watchlist_MaxCount = new ScoutBase.Core.Int32TextBox(); - this.btn_Options_DXMap = new System.Windows.Forms.Button(); - this.btn_Options_MyMap = new System.Windows.Forms.Button(); - this.pictureBox3 = new System.Windows.Forms.PictureBox(); - this.pictureBox2 = new System.Windows.Forms.PictureBox(); - this.pictureBox1 = new System.Windows.Forms.PictureBox(); - this.pb_Donate = new System.Windows.Forms.PictureBox(); - this.pictureBox4 = new System.Windows.Forms.PictureBox(); - this.ud_Options_Map_Opacity = new AirScout.PercentageControl(); + this.cb_Options_Locators_Activate = new System.Windows.Forms.CheckBox(); + this.cb_Options_Distances_Activated = new System.Windows.Forms.CheckBox(); + ((System.ComponentModel.ISupportInitialize)(this.pb_Donate)).BeginInit(); this.tab_Options_Planes.SuspendLayout(); this.groupBox48.SuspendLayout(); this.groupBox40.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.ud_Options_Planes_Position_DatabaseLifetime)).BeginInit(); this.groupBox38.SuspendLayout(); this.groupBox26.SuspendLayout(); this.groupBox6.SuspendLayout(); @@ -497,8 +581,11 @@ this.tab_Options_Map.SuspendLayout(); this.groupBox49.SuspendLayout(); this.groupBox37.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.ud_Options_Charts_FontSize)).BeginInit(); this.groupBox39.SuspendLayout(); this.groupBox23.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.ud_Options_Map_Opacity)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.ud_Options_Map_Preloader_MaxZoom)).BeginInit(); this.groupBox30.SuspendLayout(); this.groupBox7.SuspendLayout(); this.groupBox29.SuspendLayout(); @@ -510,6 +597,7 @@ this.groupBox45.SuspendLayout(); this.groupBox44.SuspendLayout(); this.groupBox14.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.ud_Options_Locator_MaxLength)).BeginInit(); this.groupBox16.SuspendLayout(); this.groupBox5.SuspendLayout(); this.groupBox4.SuspendLayout(); @@ -520,6 +608,7 @@ this.groupBox47.SuspendLayout(); this.groupBox27.SuspendLayout(); this.gb_Options_Database_Settings.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.ud_Options_Database_Update_Period)).BeginInit(); this.gb_Options_Database_Info.SuspendLayout(); this.tab_Options_ASTER3.SuspendLayout(); this.groupBox51.SuspendLayout(); @@ -540,29 +629,31 @@ this.tab_Options_SpecLab.SuspendLayout(); this.groupBox3.SuspendLayout(); this.tab_Options_Track.SuspendLayout(); - this.groupBox36.SuspendLayout(); - this.groupBox35.SuspendLayout(); - this.groupBox34.SuspendLayout(); - this.groupBox33.SuspendLayout(); + this.gb_Options_Doppler.SuspendLayout(); + this.gb_Options_Track_File.SuspendLayout(); + this.gb_Options_Track_DDE.SuspendLayout(); + this.gb_Options_Track_UDP.SuspendLayout(); + this.gb_Options_Track_Serial.SuspendLayout(); this.groupBox28.SuspendLayout(); + this.tab_Options_CAT.SuspendLayout(); + this.gb_Options_CAT_PortSettings.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.ud_Options_CAT_Timeout)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.ud_Options_CAT_Poll)).BeginInit(); + this.gb_Options_CAT_RigType.SuspendLayout(); + this.gb_Options_CAT_OperatingInstructions.SuspendLayout(); + this.groupBox57.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.ud_Options_CAT_Update)).BeginInit(); this.tab_Options_Watchlist.SuspendLayout(); this.groupBox50.SuspendLayout(); - this.groupBox17.SuspendLayout(); - this.tab_Options_Misc.SuspendLayout(); - this.groupBox15.SuspendLayout(); - this.tab_Options_Info.SuspendLayout(); - this.ss_Options.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.ud_Options_Database_Update_Period)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.ud_Options_Locator_MaxLength)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.ud_Options_Charts_FontSize)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.ud_Options_Map_Preloader_MaxZoom)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.ud_Options_Planes_Position_DatabaseLifetime)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.pictureBox3)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.pb_Donate)).BeginInit(); + this.groupBox17.SuspendLayout(); + this.tab_Options_Misc.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.pictureBox4)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.ud_Options_Map_Opacity)).BeginInit(); + this.groupBox15.SuspendLayout(); + this.tab_Options_Info.SuspendLayout(); + this.ss_Options.SuspendLayout(); this.SuspendLayout(); // // btn_Options_OK @@ -708,6 +799,176 @@ this.btn_Options_Open_AirScoutDirectory.UseVisualStyleBackColor = true; this.btn_Options_Open_AirScoutDirectory.Click += new System.EventHandler(this.btn_Options_Open_AirScoutDirectory_Click); // + // pb_Donate + // + this.pb_Donate.Image = ((System.Drawing.Image)(resources.GetObject("pb_Donate.Image"))); + this.pb_Donate.InitialImage = ((System.Drawing.Image)(resources.GetObject("pb_Donate.InitialImage"))); + this.pb_Donate.Location = new System.Drawing.Point(18, 272); + this.pb_Donate.Name = "pb_Donate"; + this.pb_Donate.Size = new System.Drawing.Size(306, 113); + this.pb_Donate.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage; + this.pb_Donate.TabIndex = 38; + this.pb_Donate.TabStop = false; + this.tt_Options.SetToolTip(this.pb_Donate, "Click here to open a browser window with link."); + this.pb_Donate.Click += new System.EventHandler(this.pb_Donate_Click); + // + // rb_Options_Track_UDP_AirScout + // + this.rb_Options_Track_UDP_AirScout.AutoSize = true; + this.rb_Options_Track_UDP_AirScout.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.rb_Options_Track_UDP_AirScout.Location = new System.Drawing.Point(17, 65); + this.rb_Options_Track_UDP_AirScout.Name = "rb_Options_Track_UDP_AirScout"; + this.rb_Options_Track_UDP_AirScout.Size = new System.Drawing.Size(180, 17); + this.rb_Options_Track_UDP_AirScout.TabIndex = 7; + this.rb_Options_Track_UDP_AirScout.Tag = ""; + this.rb_Options_Track_UDP_AirScout.Text = "UDP Broadcast (AirScout) Az/El "; + this.tt_Options.SetToolTip(this.rb_Options_Track_UDP_AirScout, "Not implemented yet"); + this.rb_Options_Track_UDP_AirScout.UseVisualStyleBackColor = true; + this.rb_Options_Track_UDP_AirScout.CheckedChanged += new System.EventHandler(this.gb_Options_Track_UDP_CheckedChanged); + // + // tb_Options_Track_DialFreq + // + this.tb_Options_Track_DialFreq.BackColor = System.Drawing.Color.Gray; + this.tb_Options_Track_DialFreq.Font = new System.Drawing.Font("Courier New", 15.75F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic))), System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_Options_Track_DialFreq.ForeColor = System.Drawing.Color.Chartreuse; + this.tb_Options_Track_DialFreq.FormatSpecifier = "F0"; + this.tb_Options_Track_DialFreq.Location = new System.Drawing.Point(278, 34); + this.tb_Options_Track_DialFreq.MaxValue = ((long)(0)); + this.tb_Options_Track_DialFreq.MinValue = ((long)(0)); + this.tb_Options_Track_DialFreq.Name = "tb_Options_Track_DialFreq"; + this.tb_Options_Track_DialFreq.Size = new System.Drawing.Size(296, 31); + this.tb_Options_Track_DialFreq.TabIndex = 20; + this.tb_Options_Track_DialFreq.Text = "0"; + this.tt_Options.SetToolTip(this.tb_Options_Track_DialFreq, "This is the RX frequency of your rig. To change this, simply dial on your rig whe" + + "n not in tracking mode."); + this.tb_Options_Track_DialFreq.Value = ((long)(0)); + this.tb_Options_Track_DialFreq.TextChanged += new System.EventHandler(this.tb_Options_CAT_DialFreq_TextChanged); + // + // cb_Options_Locations_RestrictToAreaOfInterest + // + this.cb_Options_Locations_RestrictToAreaOfInterest.AutoSize = true; + this.cb_Options_Locations_RestrictToAreaOfInterest.Checked = global::AirScout.Properties.Settings.Default.Location_RestrictToAreaOfInterest; + this.cb_Options_Locations_RestrictToAreaOfInterest.CheckState = System.Windows.Forms.CheckState.Checked; + this.cb_Options_Locations_RestrictToAreaOfInterest.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Location_RestrictToAreaOfInterest", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.cb_Options_Locations_RestrictToAreaOfInterest.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_Locations_RestrictToAreaOfInterest.Location = new System.Drawing.Point(12, 58); + this.cb_Options_Locations_RestrictToAreaOfInterest.Name = "cb_Options_Locations_RestrictToAreaOfInterest"; + this.cb_Options_Locations_RestrictToAreaOfInterest.Size = new System.Drawing.Size(230, 17); + this.cb_Options_Locations_RestrictToAreaOfInterest.TabIndex = 12; + this.cb_Options_Locations_RestrictToAreaOfInterest.Text = "Restrict locations to current Area of Interest"; + this.tt_Options.SetToolTip(this.cb_Options_Locations_RestrictToAreaOfInterest, "Restrict stations kept in the database to Area of Interest \r\n(all other stations" + + " will be removed during the update process)"); + this.cb_Options_Locations_RestrictToAreaOfInterest.UseVisualStyleBackColor = true; + // + // cb_Options_Path_BestCaseElevation + // + this.cb_Options_Path_BestCaseElevation.AutoSize = true; + this.cb_Options_Path_BestCaseElevation.Checked = global::AirScout.Properties.Settings.Default.Path_BestCaseElevation; + this.cb_Options_Path_BestCaseElevation.CheckState = System.Windows.Forms.CheckState.Checked; + this.cb_Options_Path_BestCaseElevation.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Path_BestCaseElevation", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.cb_Options_Path_BestCaseElevation.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_Path_BestCaseElevation.Location = new System.Drawing.Point(6, 411); + this.cb_Options_Path_BestCaseElevation.Name = "cb_Options_Path_BestCaseElevation"; + this.cb_Options_Path_BestCaseElevation.Size = new System.Drawing.Size(438, 17); + this.cb_Options_Path_BestCaseElevation.TabIndex = 28; + this.cb_Options_Path_BestCaseElevation.Tag = ""; + this.cb_Options_Path_BestCaseElevation.Text = "Use best case elevation from grid square for both stations if precise location is" + + " unknown"; + this.tt_Options.SetToolTip(this.cb_Options_Path_BestCaseElevation, "If an exact position of a station is not available, use highest available elevati" + + "on within the given grid square. \r\nThis position is ONLY used for path calculati" + + "on and is not kept in database."); + this.cb_Options_Path_BestCaseElevation.UseVisualStyleBackColor = true; + // + // cb_Options_Planes_KeepHistory + // + this.cb_Options_Planes_KeepHistory.AutoSize = true; + this.cb_Options_Planes_KeepHistory.Checked = global::AirScout.Properties.Settings.Default.Planes_KeepHistory; + this.cb_Options_Planes_KeepHistory.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Planes_KeepHistory", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.cb_Options_Planes_KeepHistory.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_Planes_KeepHistory.Location = new System.Drawing.Point(18, 81); + this.cb_Options_Planes_KeepHistory.Name = "cb_Options_Planes_KeepHistory"; + this.cb_Options_Planes_KeepHistory.Size = new System.Drawing.Size(156, 17); + this.cb_Options_Planes_KeepHistory.TabIndex = 4; + this.cb_Options_Planes_KeepHistory.Text = "Keep Plane Position History"; + this.tt_Options.SetToolTip(this.cb_Options_Planes_KeepHistory, "Check this option to keep plane positions in database for history analysis.\r\nCAUT" + + "ION! This will need lot of CPU performance and space on disk!"); + this.cb_Options_Planes_KeepHistory.UseVisualStyleBackColor = true; + // + // tb_Options_Track_Serial_Baudrate + // + this.tb_Options_Track_Serial_Baudrate.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Track_Serial_Baudrate", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.tb_Options_Track_Serial_Baudrate.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_Options_Track_Serial_Baudrate.FormatSpecifier = "F0"; + this.tb_Options_Track_Serial_Baudrate.Location = new System.Drawing.Point(190, 40); + this.tb_Options_Track_Serial_Baudrate.MaxValue = 115200; + this.tb_Options_Track_Serial_Baudrate.MinValue = 0; + this.tb_Options_Track_Serial_Baudrate.Name = "tb_Options_Track_Serial_Baudrate"; + this.tb_Options_Track_Serial_Baudrate.Size = new System.Drawing.Size(72, 22); + this.tb_Options_Track_Serial_Baudrate.TabIndex = 11; + this.tb_Options_Track_Serial_Baudrate.Text = "4800"; + this.tt_Options.SetToolTip(this.tb_Options_Track_Serial_Baudrate, "Set the serial port baudrate for rotator control here.\\nBe sure that the baudrate" + + " is supported."); + this.tb_Options_Track_Serial_Baudrate.Value = global::AirScout.Properties.Settings.Default.Track_Serial_Baudrate; + // + // tb_Options_Track_Serial_Port + // + this.tb_Options_Track_Serial_Port.CharacterCasing = System.Windows.Forms.CharacterCasing.Upper; + this.tb_Options_Track_Serial_Port.DataBindings.Add(new System.Windows.Forms.Binding("Text", global::AirScout.Properties.Settings.Default, "Track_Serial_Port", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.tb_Options_Track_Serial_Port.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_Options_Track_Serial_Port.Location = new System.Drawing.Point(190, 17); + this.tb_Options_Track_Serial_Port.Name = "tb_Options_Track_Serial_Port"; + this.tb_Options_Track_Serial_Port.Size = new System.Drawing.Size(54, 22); + this.tb_Options_Track_Serial_Port.TabIndex = 6; + this.tb_Options_Track_Serial_Port.Tag = ""; + this.tb_Options_Track_Serial_Port.Text = global::AirScout.Properties.Settings.Default.Track_Serial_Port; + this.tt_Options.SetToolTip(this.tb_Options_Track_Serial_Port, "Set the serial port for rotator control here.\\nBe sure that the port exists on yo" + + "ur computer."); + // + // tb_Options_Track_Offset + // + this.tb_Options_Track_Offset.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Track_Offset", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.tb_Options_Track_Offset.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_Options_Track_Offset.FormatSpecifier = "F0"; + this.tb_Options_Track_Offset.Location = new System.Drawing.Point(569, 17); + this.tb_Options_Track_Offset.MaxValue = 30; + this.tb_Options_Track_Offset.MinValue = -30; + this.tb_Options_Track_Offset.Name = "tb_Options_Track_Offset"; + this.tb_Options_Track_Offset.Size = new System.Drawing.Size(43, 22); + this.tb_Options_Track_Offset.TabIndex = 57; + this.tb_Options_Track_Offset.Text = "0"; + this.tt_Options.SetToolTip(this.tb_Options_Track_Offset, "Allows you to set an offset in time when calculating aircraft position.\\n Use thi" + + "s to compensate delay in your rotator control."); + this.tb_Options_Track_Offset.Value = global::AirScout.Properties.Settings.Default.Track_Offset; + // + // int32TextBox2 + // + this.int32TextBox2.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Track_Update", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.int32TextBox2.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.int32TextBox2.FormatSpecifier = "F0"; + this.int32TextBox2.Location = new System.Drawing.Point(332, 17); + this.int32TextBox2.MaxValue = 10000; + this.int32TextBox2.MinValue = 100; + this.int32TextBox2.Name = "int32TextBox2"; + this.int32TextBox2.Size = new System.Drawing.Size(48, 22); + this.int32TextBox2.TabIndex = 1; + this.int32TextBox2.Text = "1000"; + this.tt_Options.SetToolTip(this.int32TextBox2, "Set the tracling update refresh rate.\\nBe sure that your rotator control and your" + + " rig can handle this rate."); + this.int32TextBox2.Value = global::AirScout.Properties.Settings.Default.Track_Update; + // + // cb_Options_Track_Activate + // + this.cb_Options_Track_Activate.Checked = global::AirScout.Properties.Settings.Default.Track_Activate; + this.cb_Options_Track_Activate.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Track_Activate", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.cb_Options_Track_Activate.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_Track_Activate.Location = new System.Drawing.Point(13, 15); + this.cb_Options_Track_Activate.Name = "cb_Options_Track_Activate"; + this.cb_Options_Track_Activate.Size = new System.Drawing.Size(129, 24); + this.cb_Options_Track_Activate.TabIndex = 0; + this.cb_Options_Track_Activate.Text = "Activate Tracking"; + this.tt_Options.SetToolTip(this.cb_Options_Track_Activate, "Click here to activate/deactivate tracking"); + this.cb_Options_Track_Activate.CheckedChanged += new System.EventHandler(this.cb_Options_Track_Activate_CheckedChanged); + // // tab_Options_Planes // this.tab_Options_Planes.BackColor = System.Drawing.SystemColors.Control; @@ -740,6 +1001,20 @@ this.groupBox48.TabStop = false; this.groupBox48.Text = "General Plane Feed Settings"; // + // int32TextBox1 + // + this.int32TextBox1.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Planes_ExtendedPlausibilityCheck_MaxErrorDist", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.int32TextBox1.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.int32TextBox1.FormatSpecifier = "F0"; + this.int32TextBox1.Location = new System.Drawing.Point(199, 84); + this.int32TextBox1.MaxValue = 600; + this.int32TextBox1.MinValue = 10; + this.int32TextBox1.Name = "int32TextBox1"; + this.int32TextBox1.Size = new System.Drawing.Size(52, 22); + this.int32TextBox1.TabIndex = 46; + this.int32TextBox1.Text = "10"; + this.int32TextBox1.Value = global::AirScout.Properties.Settings.Default.Planes_ExtendedPlausibilityCheck_MaxErrorDist; + // // label33 // this.label33.AutoSize = true; @@ -750,6 +1025,34 @@ this.label33.TabIndex = 45; this.label33.Text = "Max. allowed distance between \r\nreported and estimated position [km]:"; // + // cb_Options_Planes_ExtendedPlausibilityCheck_Enabled + // + this.cb_Options_Planes_ExtendedPlausibilityCheck_Enabled.AutoSize = true; + this.cb_Options_Planes_ExtendedPlausibilityCheck_Enabled.Checked = global::AirScout.Properties.Settings.Default.Planes_ExtendedPlausibilityCheck_Enabled; + this.cb_Options_Planes_ExtendedPlausibilityCheck_Enabled.CheckState = System.Windows.Forms.CheckState.Checked; + this.cb_Options_Planes_ExtendedPlausibilityCheck_Enabled.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Planes_ExtendedPlausibilityCheck_Enabled", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.cb_Options_Planes_ExtendedPlausibilityCheck_Enabled.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_Planes_ExtendedPlausibilityCheck_Enabled.Location = new System.Drawing.Point(13, 53); + this.cb_Options_Planes_ExtendedPlausibilityCheck_Enabled.Name = "cb_Options_Planes_ExtendedPlausibilityCheck_Enabled"; + this.cb_Options_Planes_ExtendedPlausibilityCheck_Enabled.Size = new System.Drawing.Size(256, 17); + this.cb_Options_Planes_ExtendedPlausibilityCheck_Enabled.TabIndex = 44; + this.cb_Options_Planes_ExtendedPlausibilityCheck_Enabled.Text = "Enable extended plausibility check of aircraft info"; + this.cb_Options_Planes_ExtendedPlausibilityCheck_Enabled.UseVisualStyleBackColor = true; + // + // tb_Options_Planes_Interval + // + this.tb_Options_Planes_Interval.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Planes_Interval", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.tb_Options_Planes_Interval.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_Options_Planes_Interval.FormatSpecifier = "F0"; + this.tb_Options_Planes_Interval.Location = new System.Drawing.Point(199, 22); + this.tb_Options_Planes_Interval.MaxValue = 600; + this.tb_Options_Planes_Interval.MinValue = 10; + this.tb_Options_Planes_Interval.Name = "tb_Options_Planes_Interval"; + this.tb_Options_Planes_Interval.Size = new System.Drawing.Size(52, 22); + this.tb_Options_Planes_Interval.TabIndex = 43; + this.tb_Options_Planes_Interval.Text = "60"; + this.tb_Options_Planes_Interval.Value = global::AirScout.Properties.Settings.Default.Planes_Interval; + // // label22 // this.label22.AutoSize = true; @@ -760,6 +1063,19 @@ this.label22.TabIndex = 35; this.label22.Text = "Interval [sec]:"; // + // cb_Options_Planes_LogErrors + // + this.cb_Options_Planes_LogErrors.AutoSize = true; + this.cb_Options_Planes_LogErrors.Checked = global::AirScout.Properties.Settings.Default.Planes_LogErrors; + this.cb_Options_Planes_LogErrors.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Planes_LogErrors", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.cb_Options_Planes_LogErrors.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_Planes_LogErrors.Location = new System.Drawing.Point(12, 118); + this.cb_Options_Planes_LogErrors.Name = "cb_Options_Planes_LogErrors"; + this.cb_Options_Planes_LogErrors.Size = new System.Drawing.Size(249, 17); + this.cb_Options_Planes_LogErrors.TabIndex = 0; + this.cb_Options_Planes_LogErrors.Text = "Log errors as warnings to AirScout\'s main logfile"; + this.cb_Options_Planes_LogErrors.UseVisualStyleBackColor = true; + // // groupBox40 // this.groupBox40.Controls.Add(this.cb_Options_Planes_KeepHistory); @@ -784,6 +1100,26 @@ this.label55.TabIndex = 3; this.label55.Text = "Aircraft positions older than above entered value will be deleted on next startup" + " (0 = forever)."; + // + // ud_Options_Planes_Position_DatabaseLifetime + // + this.ud_Options_Planes_Position_DatabaseLifetime.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "AircraftDatabase_MaxDaysLifetime", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.ud_Options_Planes_Position_DatabaseLifetime.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.ud_Options_Planes_Position_DatabaseLifetime.Location = new System.Drawing.Point(199, 14); + this.ud_Options_Planes_Position_DatabaseLifetime.Maximum = new decimal(new int[] { + 365, + 0, + 0, + 0}); + this.ud_Options_Planes_Position_DatabaseLifetime.Minimum = new decimal(new int[] { + 1, + 0, + 0, + 0}); + this.ud_Options_Planes_Position_DatabaseLifetime.Name = "ud_Options_Planes_Position_DatabaseLifetime"; + this.ud_Options_Planes_Position_DatabaseLifetime.Size = new System.Drawing.Size(49, 22); + this.ud_Options_Planes_Position_DatabaseLifetime.TabIndex = 2; + this.ud_Options_Planes_Position_DatabaseLifetime.Value = global::AirScout.Properties.Settings.Default.AircraftDatabase_MaxDaysLifetime; // // label53 // @@ -824,6 +1160,48 @@ this.groupBox38.TabStop = false; this.groupBox38.Text = "Plane Position Database Filters"; // + // tb_Options_Planes_Positions_TTL + // + this.tb_Options_Planes_Positions_TTL.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Planes_Position_TTL", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.tb_Options_Planes_Positions_TTL.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_Options_Planes_Positions_TTL.FormatSpecifier = "F0"; + this.tb_Options_Planes_Positions_TTL.Location = new System.Drawing.Point(192, 65); + this.tb_Options_Planes_Positions_TTL.MaxValue = 30; + this.tb_Options_Planes_Positions_TTL.MinValue = 0; + this.tb_Options_Planes_Positions_TTL.Name = "tb_Options_Planes_Positions_TTL"; + this.tb_Options_Planes_Positions_TTL.Size = new System.Drawing.Size(52, 22); + this.tb_Options_Planes_Positions_TTL.TabIndex = 43; + this.tb_Options_Planes_Positions_TTL.Text = "5"; + this.tb_Options_Planes_Positions_TTL.Value = global::AirScout.Properties.Settings.Default.Planes_Position_TTL; + // + // tb_Options_Planes_MaxAlt + // + this.tb_Options_Planes_MaxAlt.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Planes_MaxAlt", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.tb_Options_Planes_MaxAlt.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_Options_Planes_MaxAlt.FormatSpecifier = "F0"; + this.tb_Options_Planes_MaxAlt.Location = new System.Drawing.Point(192, 39); + this.tb_Options_Planes_MaxAlt.MaxValue = 20000; + this.tb_Options_Planes_MaxAlt.MinValue = 0; + this.tb_Options_Planes_MaxAlt.Name = "tb_Options_Planes_MaxAlt"; + this.tb_Options_Planes_MaxAlt.Size = new System.Drawing.Size(52, 22); + this.tb_Options_Planes_MaxAlt.TabIndex = 42; + this.tb_Options_Planes_MaxAlt.Text = "12200"; + this.tb_Options_Planes_MaxAlt.Value = global::AirScout.Properties.Settings.Default.Planes_MaxAlt; + // + // tb_Options_Planes_MinAlt + // + this.tb_Options_Planes_MinAlt.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Planes_MinAlt", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.tb_Options_Planes_MinAlt.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_Options_Planes_MinAlt.FormatSpecifier = "F0"; + this.tb_Options_Planes_MinAlt.Location = new System.Drawing.Point(192, 14); + this.tb_Options_Planes_MinAlt.MaxValue = 20000; + this.tb_Options_Planes_MinAlt.MinValue = 0; + this.tb_Options_Planes_MinAlt.Name = "tb_Options_Planes_MinAlt"; + this.tb_Options_Planes_MinAlt.Size = new System.Drawing.Size(52, 22); + this.tb_Options_Planes_MinAlt.TabIndex = 41; + this.tb_Options_Planes_MinAlt.Text = "5000"; + this.tb_Options_Planes_MinAlt.Value = global::AirScout.Properties.Settings.Default.Planes_MinAlt; + // // label2 // this.label2.AutoSize = true; @@ -902,6 +1280,34 @@ this.groupBox26.TabStop = false; this.groupBox26.Text = "Plane Live Position Filters"; // + // tb_Options_Planes_Filter_MinAlt + // + this.tb_Options_Planes_Filter_MinAlt.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Planes_Filter_Min_Alt", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.tb_Options_Planes_Filter_MinAlt.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_Options_Planes_Filter_MinAlt.FormatSpecifier = "F0"; + this.tb_Options_Planes_Filter_MinAlt.Location = new System.Drawing.Point(192, 86); + this.tb_Options_Planes_Filter_MinAlt.MaxValue = 12000; + this.tb_Options_Planes_Filter_MinAlt.MinValue = 0; + this.tb_Options_Planes_Filter_MinAlt.Name = "tb_Options_Planes_Filter_MinAlt"; + this.tb_Options_Planes_Filter_MinAlt.Size = new System.Drawing.Size(52, 22); + this.tb_Options_Planes_Filter_MinAlt.TabIndex = 43; + this.tb_Options_Planes_Filter_MinAlt.Text = "0"; + this.tb_Options_Planes_Filter_MinAlt.Value = global::AirScout.Properties.Settings.Default.Planes_Filter_Min_Alt; + // + // tb_Options_Planes_Filter_Max_Circumcircle + // + this.tb_Options_Planes_Filter_Max_Circumcircle.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Planes_Filter_Max_Circumcircle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.tb_Options_Planes_Filter_Max_Circumcircle.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_Options_Planes_Filter_Max_Circumcircle.FormatSpecifier = "F0"; + this.tb_Options_Planes_Filter_Max_Circumcircle.Location = new System.Drawing.Point(192, 59); + this.tb_Options_Planes_Filter_Max_Circumcircle.MaxValue = 1000; + this.tb_Options_Planes_Filter_Max_Circumcircle.MinValue = -1; + this.tb_Options_Planes_Filter_Max_Circumcircle.Name = "tb_Options_Planes_Filter_Max_Circumcircle"; + this.tb_Options_Planes_Filter_Max_Circumcircle.Size = new System.Drawing.Size(52, 22); + this.tb_Options_Planes_Filter_Max_Circumcircle.TabIndex = 42; + this.tb_Options_Planes_Filter_Max_Circumcircle.Text = "0"; + this.tb_Options_Planes_Filter_Max_Circumcircle.Value = global::AirScout.Properties.Settings.Default.Planes_Filter_Max_Circumcircle; + // // label96 // this.label96.AutoSize = true; @@ -1254,6 +1660,20 @@ this.label147.TabIndex = 40; this.label147.Text = "Export elevation path to CSV (do not change settings before as they may not have " + " effect):"; + // + // tb_Options_Path_MaxLength + // + this.tb_Options_Path_MaxLength.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Path_MaxLength", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.tb_Options_Path_MaxLength.Font = new System.Drawing.Font("Courier New", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_Options_Path_MaxLength.FormatSpecifier = "F0"; + this.tb_Options_Path_MaxLength.Location = new System.Drawing.Point(318, 385); + this.tb_Options_Path_MaxLength.MaxValue = double.NaN; + this.tb_Options_Path_MaxLength.MinValue = double.NaN; + this.tb_Options_Path_MaxLength.Name = "tb_Options_Path_MaxLength"; + this.tb_Options_Path_MaxLength.Size = new System.Drawing.Size(57, 20); + this.tb_Options_Path_MaxLength.TabIndex = 39; + this.tb_Options_Path_MaxLength.Text = "1000"; + this.tb_Options_Path_MaxLength.Value = global::AirScout.Properties.Settings.Default.Path_MaxLength; // // label131 // @@ -1404,6 +1824,7 @@ this.gm_Options_SRTM1.MouseWheelZoomType = GMap.NET.MouseWheelZoomType.MousePositionAndCenter; this.gm_Options_SRTM1.Name = "gm_Options_SRTM1"; this.gm_Options_SRTM1.NegativeMode = false; + this.gm_Options_SRTM1.Opacity = 1D; this.gm_Options_SRTM1.PolygonsEnabled = true; this.gm_Options_SRTM1.RetryLoadTile = 0; this.gm_Options_SRTM1.RoutesEnabled = true; @@ -1425,6 +1846,34 @@ this.groupBox12.TabStop = false; this.groupBox12.Text = "Use Elevation Model"; // + // cb_Options_Elevation_SRTM1_EnableCache + // + this.cb_Options_Elevation_SRTM1_EnableCache.AutoSize = true; + this.cb_Options_Elevation_SRTM1_EnableCache.Checked = global::AirScout.Properties.Settings.Default.Elevation_SRTM1_EnableCache; + this.cb_Options_Elevation_SRTM1_EnableCache.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Elevation_SRTM1_EnableCache", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.cb_Options_Elevation_SRTM1_EnableCache.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_Elevation_SRTM1_EnableCache.Location = new System.Drawing.Point(6, 42); + this.cb_Options_Elevation_SRTM1_EnableCache.Name = "cb_Options_Elevation_SRTM1_EnableCache"; + this.cb_Options_Elevation_SRTM1_EnableCache.Size = new System.Drawing.Size(179, 17); + this.cb_Options_Elevation_SRTM1_EnableCache.TabIndex = 17; + this.cb_Options_Elevation_SRTM1_EnableCache.Tag = ""; + this.cb_Options_Elevation_SRTM1_EnableCache.Text = "Keep downloaded elevation tiles"; + this.cb_Options_Elevation_SRTM1_EnableCache.UseVisualStyleBackColor = true; + // + // cb_Options_Elevation_SRTM1 + // + this.cb_Options_Elevation_SRTM1.AutoSize = true; + this.cb_Options_Elevation_SRTM1.Checked = global::AirScout.Properties.Settings.Default.Elevation_SRTM1_Enabled; + this.cb_Options_Elevation_SRTM1.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Elevation_SRTM1_Enabled", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.cb_Options_Elevation_SRTM1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_Elevation_SRTM1.Location = new System.Drawing.Point(6, 19); + this.cb_Options_Elevation_SRTM1.Name = "cb_Options_Elevation_SRTM1"; + this.cb_Options_Elevation_SRTM1.Size = new System.Drawing.Size(155, 17); + this.cb_Options_Elevation_SRTM1.TabIndex = 16; + this.cb_Options_Elevation_SRTM1.Tag = ""; + this.cb_Options_Elevation_SRTM1.Text = "Use SRTM1 elevation data"; + this.cb_Options_Elevation_SRTM1.UseVisualStyleBackColor = true; + // // tab_Options_SRTM3 // this.tab_Options_SRTM3.BackColor = System.Drawing.SystemColors.Control; @@ -1511,6 +1960,7 @@ this.gm_Options_SRTM3.MouseWheelZoomType = GMap.NET.MouseWheelZoomType.MousePositionAndCenter; this.gm_Options_SRTM3.Name = "gm_Options_SRTM3"; this.gm_Options_SRTM3.NegativeMode = false; + this.gm_Options_SRTM3.Opacity = 1D; this.gm_Options_SRTM3.PolygonsEnabled = true; this.gm_Options_SRTM3.RetryLoadTile = 0; this.gm_Options_SRTM3.RoutesEnabled = true; @@ -1532,6 +1982,34 @@ this.groupBox8.TabStop = false; this.groupBox8.Text = "Use Elevation Model"; // + // cb_Options_Elevation_SRTM3_EnableCache + // + this.cb_Options_Elevation_SRTM3_EnableCache.AutoSize = true; + this.cb_Options_Elevation_SRTM3_EnableCache.Checked = global::AirScout.Properties.Settings.Default.Elevation_SRTM3_EnableCache; + this.cb_Options_Elevation_SRTM3_EnableCache.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Elevation_SRTM3_EnableCache", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.cb_Options_Elevation_SRTM3_EnableCache.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_Elevation_SRTM3_EnableCache.Location = new System.Drawing.Point(6, 42); + this.cb_Options_Elevation_SRTM3_EnableCache.Name = "cb_Options_Elevation_SRTM3_EnableCache"; + this.cb_Options_Elevation_SRTM3_EnableCache.Size = new System.Drawing.Size(179, 17); + this.cb_Options_Elevation_SRTM3_EnableCache.TabIndex = 13; + this.cb_Options_Elevation_SRTM3_EnableCache.Tag = ""; + this.cb_Options_Elevation_SRTM3_EnableCache.Text = "Keep downloaded elevation tiles"; + this.cb_Options_Elevation_SRTM3_EnableCache.UseVisualStyleBackColor = true; + // + // cb_Options_Elevation_SRTM3 + // + this.cb_Options_Elevation_SRTM3.AutoSize = true; + this.cb_Options_Elevation_SRTM3.Checked = global::AirScout.Properties.Settings.Default.Elevation_SRTM3_Enabled; + this.cb_Options_Elevation_SRTM3.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Elevation_SRTM3_Enabled", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.cb_Options_Elevation_SRTM3.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_Elevation_SRTM3.Location = new System.Drawing.Point(6, 19); + this.cb_Options_Elevation_SRTM3.Name = "cb_Options_Elevation_SRTM3"; + this.cb_Options_Elevation_SRTM3.Size = new System.Drawing.Size(155, 17); + this.cb_Options_Elevation_SRTM3.TabIndex = 12; + this.cb_Options_Elevation_SRTM3.Tag = ""; + this.cb_Options_Elevation_SRTM3.Text = "Use SRTM3 elevation data"; + this.cb_Options_Elevation_SRTM3.UseVisualStyleBackColor = true; + // // tab_Options_GLOBE // this.tab_Options_GLOBE.BackColor = System.Drawing.SystemColors.Control; @@ -1618,6 +2096,7 @@ this.gm_Options_GLOBE.MouseWheelZoomType = GMap.NET.MouseWheelZoomType.MousePositionAndCenter; this.gm_Options_GLOBE.Name = "gm_Options_GLOBE"; this.gm_Options_GLOBE.NegativeMode = false; + this.gm_Options_GLOBE.Opacity = 1D; this.gm_Options_GLOBE.PolygonsEnabled = true; this.gm_Options_GLOBE.RetryLoadTile = 0; this.gm_Options_GLOBE.RoutesEnabled = true; @@ -1639,6 +2118,36 @@ this.groupBox10.TabStop = false; this.groupBox10.Text = "Use Elevation Model"; // + // cb_Options_Elevation_GLOBE_EnableCache + // + this.cb_Options_Elevation_GLOBE_EnableCache.AutoSize = true; + this.cb_Options_Elevation_GLOBE_EnableCache.Checked = global::AirScout.Properties.Settings.Default.Elevation_GLOBE_EnableCache; + this.cb_Options_Elevation_GLOBE_EnableCache.CheckState = System.Windows.Forms.CheckState.Checked; + this.cb_Options_Elevation_GLOBE_EnableCache.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Elevation_GLOBE_EnableCache", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.cb_Options_Elevation_GLOBE_EnableCache.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_Elevation_GLOBE_EnableCache.Location = new System.Drawing.Point(12, 42); + this.cb_Options_Elevation_GLOBE_EnableCache.Name = "cb_Options_Elevation_GLOBE_EnableCache"; + this.cb_Options_Elevation_GLOBE_EnableCache.Size = new System.Drawing.Size(179, 17); + this.cb_Options_Elevation_GLOBE_EnableCache.TabIndex = 8; + this.cb_Options_Elevation_GLOBE_EnableCache.Tag = ""; + this.cb_Options_Elevation_GLOBE_EnableCache.Text = "Keep downloaded elevation tiles"; + this.cb_Options_Elevation_GLOBE_EnableCache.UseVisualStyleBackColor = true; + // + // cb_Options_Elevation_GLOBE + // + this.cb_Options_Elevation_GLOBE.AutoSize = true; + this.cb_Options_Elevation_GLOBE.Checked = global::AirScout.Properties.Settings.Default.Elevation_GLOBE_Enabled; + this.cb_Options_Elevation_GLOBE.CheckState = System.Windows.Forms.CheckState.Checked; + this.cb_Options_Elevation_GLOBE.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Elevation_GLOBE_Enabled", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.cb_Options_Elevation_GLOBE.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_Elevation_GLOBE.Location = new System.Drawing.Point(12, 19); + this.cb_Options_Elevation_GLOBE.Name = "cb_Options_Elevation_GLOBE"; + this.cb_Options_Elevation_GLOBE.Size = new System.Drawing.Size(154, 17); + this.cb_Options_Elevation_GLOBE.TabIndex = 7; + this.cb_Options_Elevation_GLOBE.Tag = ""; + this.cb_Options_Elevation_GLOBE.Text = "Use GLOBE elevation data"; + this.cb_Options_Elevation_GLOBE.UseVisualStyleBackColor = true; + // // tab_Options_Map // this.tab_Options_Map.BackColor = System.Drawing.SystemColors.Control; @@ -1670,6 +2179,34 @@ this.groupBox49.TabStop = false; this.groupBox49.Text = "Multi-Path"; // + // cb_Options_Map_SmallMarkers + // + this.cb_Options_Map_SmallMarkers.AutoSize = true; + this.cb_Options_Map_SmallMarkers.Checked = global::AirScout.Properties.Settings.Default.Map_SmallMarkers; + this.cb_Options_Map_SmallMarkers.CheckState = System.Windows.Forms.CheckState.Checked; + this.cb_Options_Map_SmallMarkers.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Map_SmallMarkers", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.cb_Options_Map_SmallMarkers.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_Map_SmallMarkers.Location = new System.Drawing.Point(18, 22); + this.cb_Options_Map_SmallMarkers.Name = "cb_Options_Map_SmallMarkers"; + this.cb_Options_Map_SmallMarkers.Size = new System.Drawing.Size(199, 17); + this.cb_Options_Map_SmallMarkers.TabIndex = 2; + this.cb_Options_Map_SmallMarkers.Text = "Use Small Markers for all Path Marks"; + this.cb_Options_Map_SmallMarkers.UseVisualStyleBackColor = true; + // + // cb_Options_Map_LabelCalls + // + this.cb_Options_Map_LabelCalls.AutoSize = true; + this.cb_Options_Map_LabelCalls.Checked = global::AirScout.Properties.Settings.Default.Map_LabelCalls; + this.cb_Options_Map_LabelCalls.CheckState = System.Windows.Forms.CheckState.Checked; + this.cb_Options_Map_LabelCalls.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Map_LabelCalls", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.cb_Options_Map_LabelCalls.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_Map_LabelCalls.Location = new System.Drawing.Point(18, 45); + this.cb_Options_Map_LabelCalls.Name = "cb_Options_Map_LabelCalls"; + this.cb_Options_Map_LabelCalls.Size = new System.Drawing.Size(209, 17); + this.cb_Options_Map_LabelCalls.TabIndex = 3; + this.cb_Options_Map_LabelCalls.Text = "Show Labels with Callsign at Locations"; + this.cb_Options_Map_LabelCalls.UseVisualStyleBackColor = true; + // // groupBox37 // this.groupBox37.Controls.Add(this.label34); @@ -1692,6 +2229,26 @@ this.label34.TabIndex = 2; this.label34.Text = "Font Size for Axes in Diagrams etc.:"; // + // ud_Options_Charts_FontSize + // + this.ud_Options_Charts_FontSize.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Charts_FontSize", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.ud_Options_Charts_FontSize.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.ud_Options_Charts_FontSize.Location = new System.Drawing.Point(192, 15); + this.ud_Options_Charts_FontSize.Maximum = new decimal(new int[] { + 16, + 0, + 0, + 0}); + this.ud_Options_Charts_FontSize.Minimum = new decimal(new int[] { + 6, + 0, + 0, + 0}); + this.ud_Options_Charts_FontSize.Name = "ud_Options_Charts_FontSize"; + this.ud_Options_Charts_FontSize.Size = new System.Drawing.Size(45, 22); + this.ud_Options_Charts_FontSize.TabIndex = 0; + this.ud_Options_Charts_FontSize.Value = global::AirScout.Properties.Settings.Default.Charts_FontSize; + // // groupBox39 // this.groupBox39.Controls.Add(this.tb_Options_Map_Update_Interval); @@ -1705,6 +2262,20 @@ this.groupBox39.TabStop = false; this.groupBox39.Text = "Screen Updates"; // + // tb_Options_Map_Update_Interval + // + this.tb_Options_Map_Update_Interval.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Map_Update", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.tb_Options_Map_Update_Interval.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_Options_Map_Update_Interval.FormatSpecifier = "F0"; + this.tb_Options_Map_Update_Interval.Location = new System.Drawing.Point(119, 33); + this.tb_Options_Map_Update_Interval.MaxValue = 3600; + this.tb_Options_Map_Update_Interval.MinValue = 0; + this.tb_Options_Map_Update_Interval.Name = "tb_Options_Map_Update_Interval"; + this.tb_Options_Map_Update_Interval.Size = new System.Drawing.Size(37, 22); + this.tb_Options_Map_Update_Interval.TabIndex = 23; + this.tb_Options_Map_Update_Interval.Text = "1"; + this.tb_Options_Map_Update_Interval.Value = global::AirScout.Properties.Settings.Default.Map_Update; + // // label97 // this.label97.AutoSize = true; @@ -1727,6 +2298,8 @@ // // groupBox23 // + this.groupBox23.Controls.Add(this.cb_Options_Distances_Activated); + this.groupBox23.Controls.Add(this.cb_Options_Locators_Activate); this.groupBox23.Controls.Add(this.ud_Options_Map_Opacity); this.groupBox23.Controls.Add(this.label148); this.groupBox23.Controls.Add(this.ud_Options_Map_Preloader_MaxZoom); @@ -1742,15 +2315,102 @@ this.groupBox23.TabStop = false; this.groupBox23.Text = "General "; // + // ud_Options_Map_Opacity + // + this.ud_Options_Map_Opacity.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Map_Opacity", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.ud_Options_Map_Opacity.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.ud_Options_Map_Opacity.Increment = new decimal(new int[] { + 1, + 0, + 0, + 65536}); + this.ud_Options_Map_Opacity.Location = new System.Drawing.Point(320, 18); + this.ud_Options_Map_Opacity.Maximum = new decimal(new int[] { + 1, + 0, + 0, + 0}); + this.ud_Options_Map_Opacity.Name = "ud_Options_Map_Opacity"; + this.ud_Options_Map_Opacity.Size = new System.Drawing.Size(54, 20); + this.ud_Options_Map_Opacity.TabIndex = 10; + this.ud_Options_Map_Opacity.Value = global::AirScout.Properties.Settings.Default.Map_Opacity; + // + // label148 + // + this.label148.AutoSize = true; + this.label148.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label148.Location = new System.Drawing.Point(234, 20); + this.label148.Name = "label148"; + this.label148.Size = new System.Drawing.Size(70, 13); + this.label148.TabIndex = 7; + this.label148.Text = "Map Opacity:"; + // + // ud_Options_Map_Preloader_MaxZoom + // + this.ud_Options_Map_Preloader_MaxZoom.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Map_Preloader_MaxZoom", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.ud_Options_Map_Preloader_MaxZoom.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.ud_Options_Map_Preloader_MaxZoom.Location = new System.Drawing.Point(319, 66); + this.ud_Options_Map_Preloader_MaxZoom.Maximum = new decimal(new int[] { + 11, + 0, + 0, + 0}); + this.ud_Options_Map_Preloader_MaxZoom.Name = "ud_Options_Map_Preloader_MaxZoom"; + this.ud_Options_Map_Preloader_MaxZoom.Size = new System.Drawing.Size(54, 22); + this.ud_Options_Map_Preloader_MaxZoom.TabIndex = 6; + this.ud_Options_Map_Preloader_MaxZoom.Value = global::AirScout.Properties.Settings.Default.Map_Preloader_MaxZoom; + // // label144 // this.label144.AutoSize = true; this.label144.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label144.Location = new System.Drawing.Point(226, 64); + this.label144.Location = new System.Drawing.Point(234, 64); this.label144.Name = "label144"; - this.label144.Size = new System.Drawing.Size(87, 26); + this.label144.Size = new System.Drawing.Size(78, 26); this.label144.TabIndex = 5; - this.label144.Text = "Preload down to \r\nZoom Level:"; + this.label144.Text = "Preload down \r\nto Zoom Level:"; + // + // cb_Options_Map_Preloader_Enabled + // + this.cb_Options_Map_Preloader_Enabled.AutoSize = true; + this.cb_Options_Map_Preloader_Enabled.Checked = global::AirScout.Properties.Settings.Default.Map_Preloader_Enabled; + this.cb_Options_Map_Preloader_Enabled.CheckState = System.Windows.Forms.CheckState.Checked; + this.cb_Options_Map_Preloader_Enabled.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Map_Preloader_Enabled", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.cb_Options_Map_Preloader_Enabled.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_Map_Preloader_Enabled.Location = new System.Drawing.Point(237, 44); + this.cb_Options_Map_Preloader_Enabled.Name = "cb_Options_Map_Preloader_Enabled"; + this.cb_Options_Map_Preloader_Enabled.Size = new System.Drawing.Size(136, 17); + this.cb_Options_Map_Preloader_Enabled.TabIndex = 4; + this.cb_Options_Map_Preloader_Enabled.Text = "Enable Map Preloading"; + this.cb_Options_Map_Preloader_Enabled.UseVisualStyleBackColor = true; + // + // cb_Options_Watchlist_Activate + // + this.cb_Options_Watchlist_Activate.AutoSize = true; + this.cb_Options_Watchlist_Activate.Checked = global::AirScout.Properties.Settings.Default.Watchlist_Activated; + this.cb_Options_Watchlist_Activate.CheckState = System.Windows.Forms.CheckState.Checked; + this.cb_Options_Watchlist_Activate.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Watchlist_Activated", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.cb_Options_Watchlist_Activate.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_Watchlist_Activate.Location = new System.Drawing.Point(16, 71); + this.cb_Options_Watchlist_Activate.Name = "cb_Options_Watchlist_Activate"; + this.cb_Options_Watchlist_Activate.Size = new System.Drawing.Size(144, 17); + this.cb_Options_Watchlist_Activate.TabIndex = 1; + this.cb_Options_Watchlist_Activate.Text = "Show Watchlist Callsigns"; + this.cb_Options_Watchlist_Activate.UseVisualStyleBackColor = true; + // + // cb_Options_Airports_Activate + // + this.cb_Options_Airports_Activate.AutoSize = true; + this.cb_Options_Airports_Activate.Checked = global::AirScout.Properties.Settings.Default.Airports_Activate; + this.cb_Options_Airports_Activate.CheckState = System.Windows.Forms.CheckState.Checked; + this.cb_Options_Airports_Activate.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Airports_Activate", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.cb_Options_Airports_Activate.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_Airports_Activate.Location = new System.Drawing.Point(16, 19); + this.cb_Options_Airports_Activate.Name = "cb_Options_Airports_Activate"; + this.cb_Options_Airports_Activate.Size = new System.Drawing.Size(91, 17); + this.cb_Options_Airports_Activate.TabIndex = 0; + this.cb_Options_Airports_Activate.Text = "Show Airports"; + this.cb_Options_Airports_Activate.UseVisualStyleBackColor = true; // // groupBox30 // @@ -1771,6 +2431,62 @@ this.groupBox30.TabStop = false; this.groupBox30.Text = "Plane Icon Sizes per Category"; // + // tb_Options_Planes_IconSize_S + // + this.tb_Options_Planes_IconSize_S.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Planes_IconSize_S", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.tb_Options_Planes_IconSize_S.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_Options_Planes_IconSize_S.FormatSpecifier = "F0"; + this.tb_Options_Planes_IconSize_S.Location = new System.Drawing.Point(183, 47); + this.tb_Options_Planes_IconSize_S.MaxValue = 128; + this.tb_Options_Planes_IconSize_S.MinValue = 0; + this.tb_Options_Planes_IconSize_S.Name = "tb_Options_Planes_IconSize_S"; + this.tb_Options_Planes_IconSize_S.Size = new System.Drawing.Size(37, 22); + this.tb_Options_Planes_IconSize_S.TabIndex = 16; + this.tb_Options_Planes_IconSize_S.Text = "48"; + this.tb_Options_Planes_IconSize_S.Value = global::AirScout.Properties.Settings.Default.Planes_IconSize_S; + // + // tb_Options_Planes_IconSize_H + // + this.tb_Options_Planes_IconSize_H.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Planes_IconSize_H", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.tb_Options_Planes_IconSize_H.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_Options_Planes_IconSize_H.FormatSpecifier = "F0"; + this.tb_Options_Planes_IconSize_H.Location = new System.Drawing.Point(183, 19); + this.tb_Options_Planes_IconSize_H.MaxValue = 128; + this.tb_Options_Planes_IconSize_H.MinValue = 0; + this.tb_Options_Planes_IconSize_H.Name = "tb_Options_Planes_IconSize_H"; + this.tb_Options_Planes_IconSize_H.Size = new System.Drawing.Size(37, 22); + this.tb_Options_Planes_IconSize_H.TabIndex = 15; + this.tb_Options_Planes_IconSize_H.Text = "36"; + this.tb_Options_Planes_IconSize_H.Value = global::AirScout.Properties.Settings.Default.Planes_IconSize_H; + // + // tb_Options_Planes_IconSize_M + // + this.tb_Options_Planes_IconSize_M.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Planes_IconSize_M", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.tb_Options_Planes_IconSize_M.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_Options_Planes_IconSize_M.FormatSpecifier = "F0"; + this.tb_Options_Planes_IconSize_M.Location = new System.Drawing.Point(63, 47); + this.tb_Options_Planes_IconSize_M.MaxValue = 128; + this.tb_Options_Planes_IconSize_M.MinValue = 0; + this.tb_Options_Planes_IconSize_M.Name = "tb_Options_Planes_IconSize_M"; + this.tb_Options_Planes_IconSize_M.Size = new System.Drawing.Size(37, 22); + this.tb_Options_Planes_IconSize_M.TabIndex = 14; + this.tb_Options_Planes_IconSize_M.Text = "24"; + this.tb_Options_Planes_IconSize_M.Value = global::AirScout.Properties.Settings.Default.Planes_IconSize_M; + // + // tb_Options_Planes_IconSize_L + // + this.tb_Options_Planes_IconSize_L.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Planes_IconSize_L", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.tb_Options_Planes_IconSize_L.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_Options_Planes_IconSize_L.FormatSpecifier = "F0"; + this.tb_Options_Planes_IconSize_L.Location = new System.Drawing.Point(63, 21); + this.tb_Options_Planes_IconSize_L.MaxValue = 128; + this.tb_Options_Planes_IconSize_L.MinValue = 0; + this.tb_Options_Planes_IconSize_L.Name = "tb_Options_Planes_IconSize_L"; + this.tb_Options_Planes_IconSize_L.Size = new System.Drawing.Size(37, 22); + this.tb_Options_Planes_IconSize_L.TabIndex = 13; + this.tb_Options_Planes_IconSize_L.Text = "16"; + this.tb_Options_Planes_IconSize_L.Value = global::AirScout.Properties.Settings.Default.Planes_IconSize_L; + // // label84 // this.label84.AutoSize = true; @@ -1859,7 +2575,7 @@ this.label76.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.label76.Location = new System.Drawing.Point(10, 41); this.label76.Name = "label76"; - this.label76.Size = new System.Drawing.Size(116, 16); + this.label76.Size = new System.Drawing.Size(115, 16); this.label76.TabIndex = 18; this.label76.Text = "bold characters"; // @@ -1882,6 +2598,153 @@ this.label75.TabIndex = 17; this.label75.Text = "are affecting both Simple and Detailed Info Window."; // + // cb_Options_InfoWin_Angle + // + this.cb_Options_InfoWin_Angle.AutoSize = true; + this.cb_Options_InfoWin_Angle.Checked = global::AirScout.Properties.Settings.Default.InfoWin_Angle; + this.cb_Options_InfoWin_Angle.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "InfoWin_Angle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.cb_Options_InfoWin_Angle.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_InfoWin_Angle.Location = new System.Drawing.Point(139, 75); + this.cb_Options_InfoWin_Angle.Name = "cb_Options_InfoWin_Angle"; + this.cb_Options_InfoWin_Angle.Size = new System.Drawing.Size(96, 17); + this.cb_Options_InfoWin_Angle.TabIndex = 15; + this.cb_Options_InfoWin_Angle.Tag = ""; + this.cb_Options_InfoWin_Angle.Text = "Crossing Angle"; + this.cb_Options_InfoWin_Angle.UseVisualStyleBackColor = true; + // + // cb_Options_InfoWin_Speed + // + this.cb_Options_InfoWin_Speed.AutoSize = true; + this.cb_Options_InfoWin_Speed.Checked = global::AirScout.Properties.Settings.Default.InfoWin_Speed; + this.cb_Options_InfoWin_Speed.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "InfoWin_Speed", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.cb_Options_InfoWin_Speed.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_InfoWin_Speed.Location = new System.Drawing.Point(26, 100); + this.cb_Options_InfoWin_Speed.Name = "cb_Options_InfoWin_Speed"; + this.cb_Options_InfoWin_Speed.Size = new System.Drawing.Size(87, 17); + this.cb_Options_InfoWin_Speed.TabIndex = 14; + this.cb_Options_InfoWin_Speed.Tag = ""; + this.cb_Options_InfoWin_Speed.Text = "Plane Speed"; + this.cb_Options_InfoWin_Speed.UseVisualStyleBackColor = true; + // + // cb_Options_InfoWin_Squint + // + this.cb_Options_InfoWin_Squint.AutoSize = true; + this.cb_Options_InfoWin_Squint.Checked = global::AirScout.Properties.Settings.Default.InfoWin_Squint; + this.cb_Options_InfoWin_Squint.CheckState = System.Windows.Forms.CheckState.Checked; + this.cb_Options_InfoWin_Squint.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "InfoWin_Squint", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.cb_Options_InfoWin_Squint.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_InfoWin_Squint.Location = new System.Drawing.Point(139, 121); + this.cb_Options_InfoWin_Squint.Name = "cb_Options_InfoWin_Squint"; + this.cb_Options_InfoWin_Squint.Size = new System.Drawing.Size(86, 17); + this.cb_Options_InfoWin_Squint.TabIndex = 13; + this.cb_Options_InfoWin_Squint.Tag = ""; + this.cb_Options_InfoWin_Squint.Text = "Squint Angle"; + this.cb_Options_InfoWin_Squint.UseVisualStyleBackColor = true; + // + // cb_Options_InfoWin_Epsilon + // + this.cb_Options_InfoWin_Epsilon.AutoSize = true; + this.cb_Options_InfoWin_Epsilon.Checked = global::AirScout.Properties.Settings.Default.InfoWin_Epsilon; + this.cb_Options_InfoWin_Epsilon.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "InfoWin_Epsilon", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.cb_Options_InfoWin_Epsilon.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_InfoWin_Epsilon.Location = new System.Drawing.Point(139, 98); + this.cb_Options_InfoWin_Epsilon.Name = "cb_Options_InfoWin_Epsilon"; + this.cb_Options_InfoWin_Epsilon.Size = new System.Drawing.Size(105, 17); + this.cb_Options_InfoWin_Epsilon.TabIndex = 12; + this.cb_Options_InfoWin_Epsilon.Tag = ""; + this.cb_Options_InfoWin_Epsilon.Text = "Elevation Angles"; + this.cb_Options_InfoWin_Epsilon.UseVisualStyleBackColor = true; + // + // cb_Options_InfoWin_Dist + // + this.cb_Options_InfoWin_Dist.AutoSize = true; + this.cb_Options_InfoWin_Dist.Checked = global::AirScout.Properties.Settings.Default.InfoWin_Dist; + this.cb_Options_InfoWin_Dist.CheckState = System.Windows.Forms.CheckState.Checked; + this.cb_Options_InfoWin_Dist.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "InfoWin_Dist", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.cb_Options_InfoWin_Dist.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_InfoWin_Dist.Location = new System.Drawing.Point(139, 29); + this.cb_Options_InfoWin_Dist.Name = "cb_Options_InfoWin_Dist"; + this.cb_Options_InfoWin_Dist.Size = new System.Drawing.Size(111, 17); + this.cb_Options_InfoWin_Dist.TabIndex = 11; + this.cb_Options_InfoWin_Dist.Tag = ""; + this.cb_Options_InfoWin_Dist.Text = "Crossing Distance"; + this.cb_Options_InfoWin_Dist.UseVisualStyleBackColor = true; + // + // cb_Options_InfoWin_Time + // + this.cb_Options_InfoWin_Time.AutoSize = true; + this.cb_Options_InfoWin_Time.Checked = global::AirScout.Properties.Settings.Default.InfoWin_Time; + this.cb_Options_InfoWin_Time.CheckState = System.Windows.Forms.CheckState.Checked; + this.cb_Options_InfoWin_Time.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "InfoWin_Time", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.cb_Options_InfoWin_Time.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_InfoWin_Time.Location = new System.Drawing.Point(139, 52); + this.cb_Options_InfoWin_Time.Name = "cb_Options_InfoWin_Time"; + this.cb_Options_InfoWin_Time.Size = new System.Drawing.Size(92, 17); + this.cb_Options_InfoWin_Time.TabIndex = 10; + this.cb_Options_InfoWin_Time.Tag = ""; + this.cb_Options_InfoWin_Time.Text = "Crossing Time"; + this.cb_Options_InfoWin_Time.UseVisualStyleBackColor = true; + // + // cb_Options_InfoWin_Type + // + this.cb_Options_InfoWin_Type.AutoSize = true; + this.cb_Options_InfoWin_Type.Checked = global::AirScout.Properties.Settings.Default.InfoWin_Type; + this.cb_Options_InfoWin_Type.CheckState = System.Windows.Forms.CheckState.Checked; + this.cb_Options_InfoWin_Type.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "InfoWin_Type", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.cb_Options_InfoWin_Type.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_InfoWin_Type.Location = new System.Drawing.Point(26, 123); + this.cb_Options_InfoWin_Type.Name = "cb_Options_InfoWin_Type"; + this.cb_Options_InfoWin_Type.Size = new System.Drawing.Size(90, 17); + this.cb_Options_InfoWin_Type.TabIndex = 9; + this.cb_Options_InfoWin_Type.Tag = ""; + this.cb_Options_InfoWin_Type.Text = "Plane Type"; + this.cb_Options_InfoWin_Type.UseVisualStyleBackColor = true; + // + // cb_Options_InfoWin_Track + // + this.cb_Options_InfoWin_Track.AutoSize = true; + this.cb_Options_InfoWin_Track.Checked = global::AirScout.Properties.Settings.Default.InfoWin_Track; + this.cb_Options_InfoWin_Track.CheckState = System.Windows.Forms.CheckState.Checked; + this.cb_Options_InfoWin_Track.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "InfoWin_Track", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.cb_Options_InfoWin_Track.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_InfoWin_Track.Location = new System.Drawing.Point(26, 77); + this.cb_Options_InfoWin_Track.Name = "cb_Options_InfoWin_Track"; + this.cb_Options_InfoWin_Track.Size = new System.Drawing.Size(95, 17); + this.cb_Options_InfoWin_Track.TabIndex = 8; + this.cb_Options_InfoWin_Track.Tag = ""; + this.cb_Options_InfoWin_Track.Text = "Plane Track"; + this.cb_Options_InfoWin_Track.UseVisualStyleBackColor = true; + // + // cb_Options_InfoWin_Alt + // + this.cb_Options_InfoWin_Alt.AutoSize = true; + this.cb_Options_InfoWin_Alt.Checked = global::AirScout.Properties.Settings.Default.InfoWin_Alt; + this.cb_Options_InfoWin_Alt.CheckState = System.Windows.Forms.CheckState.Checked; + this.cb_Options_InfoWin_Alt.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "InfoWin_Alt", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.cb_Options_InfoWin_Alt.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_InfoWin_Alt.Location = new System.Drawing.Point(26, 54); + this.cb_Options_InfoWin_Alt.Name = "cb_Options_InfoWin_Alt"; + this.cb_Options_InfoWin_Alt.Size = new System.Drawing.Size(105, 17); + this.cb_Options_InfoWin_Alt.TabIndex = 7; + this.cb_Options_InfoWin_Alt.Tag = ""; + this.cb_Options_InfoWin_Alt.Text = "Plane Altitude"; + this.cb_Options_InfoWin_Alt.UseVisualStyleBackColor = true; + // + // cb_Options_InfoWin_Position + // + this.cb_Options_InfoWin_Position.AutoSize = true; + this.cb_Options_InfoWin_Position.Checked = global::AirScout.Properties.Settings.Default.InfoWin_Position; + this.cb_Options_InfoWin_Position.CheckState = System.Windows.Forms.CheckState.Checked; + this.cb_Options_InfoWin_Position.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "InfoWin_Position", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.cb_Options_InfoWin_Position.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_InfoWin_Position.Location = new System.Drawing.Point(26, 31); + this.cb_Options_InfoWin_Position.Name = "cb_Options_InfoWin_Position"; + this.cb_Options_InfoWin_Position.Size = new System.Drawing.Size(107, 17); + this.cb_Options_InfoWin_Position.TabIndex = 6; + this.cb_Options_InfoWin_Position.Tag = ""; + this.cb_Options_InfoWin_Position.Text = "Plane Position"; + this.cb_Options_InfoWin_Position.UseVisualStyleBackColor = true; + // // groupBox22 // this.groupBox22.Controls.Add(this.rb_Options_InfoWin_Imperial); @@ -1898,6 +2761,35 @@ this.groupBox22.TabStop = false; this.groupBox22.Text = "Info Window Options"; // + // rb_Options_InfoWin_Imperial + // + this.rb_Options_InfoWin_Imperial.AutoSize = true; + this.rb_Options_InfoWin_Imperial.Checked = global::AirScout.Properties.Settings.Default.InfoWin_Imperial; + this.rb_Options_InfoWin_Imperial.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "InfoWin_Imperial", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.rb_Options_InfoWin_Imperial.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.rb_Options_InfoWin_Imperial.Location = new System.Drawing.Point(156, 18); + this.rb_Options_InfoWin_Imperial.Name = "rb_Options_InfoWin_Imperial"; + this.rb_Options_InfoWin_Imperial.Size = new System.Drawing.Size(61, 17); + this.rb_Options_InfoWin_Imperial.TabIndex = 5; + this.rb_Options_InfoWin_Imperial.Tag = ""; + this.rb_Options_InfoWin_Imperial.Text = "Imperial"; + this.rb_Options_InfoWin_Imperial.UseVisualStyleBackColor = true; + // + // rb_Options_InfoWin_Metric + // + this.rb_Options_InfoWin_Metric.AutoSize = true; + this.rb_Options_InfoWin_Metric.Checked = global::AirScout.Properties.Settings.Default.InfoWin_Metric; + this.rb_Options_InfoWin_Metric.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "InfoWin_Metric", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.rb_Options_InfoWin_Metric.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.rb_Options_InfoWin_Metric.Location = new System.Drawing.Point(83, 18); + this.rb_Options_InfoWin_Metric.Name = "rb_Options_InfoWin_Metric"; + this.rb_Options_InfoWin_Metric.Size = new System.Drawing.Size(54, 17); + this.rb_Options_InfoWin_Metric.TabIndex = 4; + this.rb_Options_InfoWin_Metric.TabStop = true; + this.rb_Options_InfoWin_Metric.Tag = ""; + this.rb_Options_InfoWin_Metric.Text = "Metric"; + this.rb_Options_InfoWin_Metric.UseVisualStyleBackColor = true; + // // label72 // this.label72.AutoSize = true; @@ -1929,6 +2821,17 @@ this.label62.TabIndex = 1; this.label62.Text = "Font:"; // + // tb_Options_Map_ToolTipFont + // + this.tb_Options_Map_ToolTipFont.DataBindings.Add(new System.Windows.Forms.Binding("Text", global::AirScout.Properties.Settings.Default, "Map_ToolTipFont", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.tb_Options_Map_ToolTipFont.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_Options_Map_ToolTipFont.Location = new System.Drawing.Point(72, 39); + this.tb_Options_Map_ToolTipFont.Name = "tb_Options_Map_ToolTipFont"; + this.tb_Options_Map_ToolTipFont.ReadOnly = true; + this.tb_Options_Map_ToolTipFont.Size = new System.Drawing.Size(179, 20); + this.tb_Options_Map_ToolTipFont.TabIndex = 0; + this.tb_Options_Map_ToolTipFont.Text = global::AirScout.Properties.Settings.Default.Map_ToolTipFont; + // // groupBox2 // this.groupBox2.Controls.Add(this.label61); @@ -2350,6 +3253,34 @@ this.groupBox14.TabStop = false; this.groupBox14.Text = "Location Settings"; // + // cb_Options_SmallLettersForSubSquares + // + this.cb_Options_SmallLettersForSubSquares.AutoSize = true; + this.cb_Options_SmallLettersForSubSquares.Checked = global::AirScout.Properties.Settings.Default.Locator_SmallLettersForSubsquares; + this.cb_Options_SmallLettersForSubSquares.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Locator_SmallLettersForSubsquares", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.cb_Options_SmallLettersForSubSquares.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_SmallLettersForSubSquares.Location = new System.Drawing.Point(239, 16); + this.cb_Options_SmallLettersForSubSquares.Name = "cb_Options_SmallLettersForSubSquares"; + this.cb_Options_SmallLettersForSubSquares.Size = new System.Drawing.Size(157, 17); + this.cb_Options_SmallLettersForSubSquares.TabIndex = 11; + this.cb_Options_SmallLettersForSubSquares.Text = "Small letters for subsquares:"; + this.cb_Options_SmallLettersForSubSquares.UseVisualStyleBackColor = true; + this.cb_Options_SmallLettersForSubSquares.CheckedChanged += new System.EventHandler(this.cb_Options_SmallLettersForSubSquares_CheckedChanged); + // + // cb_Options_Locator_AutoLength + // + this.cb_Options_Locator_AutoLength.AutoSize = true; + this.cb_Options_Locator_AutoLength.Checked = global::AirScout.Properties.Settings.Default.Locator_AutoLength; + this.cb_Options_Locator_AutoLength.CheckState = System.Windows.Forms.CheckState.Checked; + this.cb_Options_Locator_AutoLength.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Locator_AutoLength", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.cb_Options_Locator_AutoLength.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_Locator_AutoLength.Location = new System.Drawing.Point(12, 38); + this.cb_Options_Locator_AutoLength.Name = "cb_Options_Locator_AutoLength"; + this.cb_Options_Locator_AutoLength.Size = new System.Drawing.Size(319, 17); + this.cb_Options_Locator_AutoLength.TabIndex = 10; + this.cb_Options_Locator_AutoLength.Text = "Cut locator to significant digits automatically (Minimum 6 digits):"; + this.cb_Options_Locator_AutoLength.UseVisualStyleBackColor = true; + // // label48 // this.label48.AutoSize = true; @@ -2360,6 +3291,31 @@ this.label48.TabIndex = 1; this.label48.Text = "Number of Locator digits (6 ..14):"; // + // ud_Options_Locator_MaxLength + // + this.ud_Options_Locator_MaxLength.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Locator_MaxLength", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.ud_Options_Locator_MaxLength.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.ud_Options_Locator_MaxLength.Increment = new decimal(new int[] { + 2, + 0, + 0, + 0}); + this.ud_Options_Locator_MaxLength.Location = new System.Drawing.Point(180, 15); + this.ud_Options_Locator_MaxLength.Maximum = new decimal(new int[] { + 14, + 0, + 0, + 0}); + this.ud_Options_Locator_MaxLength.Minimum = new decimal(new int[] { + 6, + 0, + 0, + 0}); + this.ud_Options_Locator_MaxLength.Name = "ud_Options_Locator_MaxLength"; + this.ud_Options_Locator_MaxLength.Size = new System.Drawing.Size(50, 20); + this.ud_Options_Locator_MaxLength.TabIndex = 9; + this.ud_Options_Locator_MaxLength.Value = global::AirScout.Properties.Settings.Default.Locator_MaxLength; + // // groupBox16 // this.groupBox16.Controls.Add(this.label52); @@ -2406,6 +3362,18 @@ this.groupBox5.TabStop = false; this.groupBox5.Text = "DX Station"; // + // btn_Options_DXMap + // + this.btn_Options_DXMap.BackgroundImage = global::AirScout.Properties.Resources.Map2; + this.btn_Options_DXMap.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch; + this.btn_Options_DXMap.Location = new System.Drawing.Point(8, 135); + this.btn_Options_DXMap.Name = "btn_Options_DXMap"; + this.btn_Options_DXMap.Size = new System.Drawing.Size(75, 81); + this.btn_Options_DXMap.TabIndex = 29; + this.btn_Options_DXMap.Text = "\r\nMap"; + this.btn_Options_DXMap.UseVisualStyleBackColor = true; + this.btn_Options_DXMap.Click += new System.EventHandler(this.btn_Options_DXMap_Click); + // // tb_Options_DXLon // this.tb_Options_DXLon.Font = new System.Drawing.Font("Courier New", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); @@ -2434,6 +3402,21 @@ this.tb_Options_DXLat.Value = 52.05626084D; this.tb_Options_DXLat.TextChanged += new System.EventHandler(this.tb_Options_DXLat_TextChanged); // + // tb_Options_DXLoc + // + this.tb_Options_DXLoc.BackColor = System.Drawing.SystemColors.Window; + this.tb_Options_DXLoc.DataBindings.Add(new System.Windows.Forms.Binding("SmallLettersForSubsquares", global::AirScout.Properties.Settings.Default, "Locator_SmallLettersForSubsquares", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.tb_Options_DXLoc.ErrorBackColor = System.Drawing.Color.Red; + this.tb_Options_DXLoc.ErrorForeColor = System.Drawing.Color.White; + this.tb_Options_DXLoc.Font = new System.Drawing.Font("Courier New", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_Options_DXLoc.ForeColor = System.Drawing.SystemColors.WindowText; + this.tb_Options_DXLoc.Location = new System.Drawing.Point(90, 36); + this.tb_Options_DXLoc.Name = "tb_Options_DXLoc"; + this.tb_Options_DXLoc.Size = new System.Drawing.Size(100, 21); + this.tb_Options_DXLoc.SmallLettersForSubsquares = global::AirScout.Properties.Settings.Default.Locator_SmallLettersForSubsquares; + this.tb_Options_DXLoc.TabIndex = 6; + this.tb_Options_DXLoc.TextChanged += new System.EventHandler(this.tb_Options_DXLoc_TextChanged); + // // tb_Options_DXCall // this.tb_Options_DXCall.BackColor = System.Drawing.SystemColors.Window; @@ -2565,6 +3548,18 @@ this.groupBox4.TabStop = false; this.groupBox4.Text = "My Station"; // + // btn_Options_MyMap + // + this.btn_Options_MyMap.BackgroundImage = global::AirScout.Properties.Resources.Map2; + this.btn_Options_MyMap.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch; + this.btn_Options_MyMap.Location = new System.Drawing.Point(7, 134); + this.btn_Options_MyMap.Name = "btn_Options_MyMap"; + this.btn_Options_MyMap.Size = new System.Drawing.Size(75, 81); + this.btn_Options_MyMap.TabIndex = 30; + this.btn_Options_MyMap.Text = "\r\nMap"; + this.btn_Options_MyMap.UseVisualStyleBackColor = true; + this.btn_Options_MyMap.Click += new System.EventHandler(this.btn_Options_MyMap_Click); + // // btn_Options_MyHorizon // this.btn_Options_MyHorizon.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); @@ -2604,6 +3599,21 @@ this.tb_Options_MyLat.Value = 50.937067D; this.tb_Options_MyLat.TextChanged += new System.EventHandler(this.tb_Options_MyLat_TextChanged); // + // tb_Options_MyLoc + // + this.tb_Options_MyLoc.BackColor = System.Drawing.SystemColors.Window; + this.tb_Options_MyLoc.DataBindings.Add(new System.Windows.Forms.Binding("SmallLettersForSubsquares", global::AirScout.Properties.Settings.Default, "Locator_SmallLettersForSubsquares", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.tb_Options_MyLoc.ErrorBackColor = System.Drawing.Color.Red; + this.tb_Options_MyLoc.ErrorForeColor = System.Drawing.Color.White; + this.tb_Options_MyLoc.Font = new System.Drawing.Font("Courier New", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_Options_MyLoc.ForeColor = System.Drawing.SystemColors.WindowText; + this.tb_Options_MyLoc.Location = new System.Drawing.Point(89, 36); + this.tb_Options_MyLoc.Name = "tb_Options_MyLoc"; + this.tb_Options_MyLoc.Size = new System.Drawing.Size(100, 21); + this.tb_Options_MyLoc.SmallLettersForSubsquares = global::AirScout.Properties.Settings.Default.Locator_SmallLettersForSubsquares; + this.tb_Options_MyLoc.TabIndex = 2; + this.tb_Options_MyLoc.TextChanged += new System.EventHandler(this.tb_Options_MyLoc_TextChanged); + // // tb_Options_MyCall // this.tb_Options_MyCall.BackColor = System.Drawing.SystemColors.Window; @@ -2732,6 +3742,66 @@ this.groupBox25.TabStop = false; this.groupBox25.Text = "Covered Area"; // + // tb_Coverage_MaxLat + // + this.tb_Coverage_MaxLat.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "MaxLat", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.tb_Coverage_MaxLat.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_Coverage_MaxLat.FormatSpecifier = "F0"; + this.tb_Coverage_MaxLat.Location = new System.Drawing.Point(589, 416); + this.tb_Coverage_MaxLat.MaxValue = 90D; + this.tb_Coverage_MaxLat.MinValue = -90D; + this.tb_Coverage_MaxLat.Name = "tb_Coverage_MaxLat"; + this.tb_Coverage_MaxLat.Size = new System.Drawing.Size(50, 22); + this.tb_Coverage_MaxLat.TabIndex = 4; + this.tb_Coverage_MaxLat.Text = "60"; + this.tb_Coverage_MaxLat.Value = global::AirScout.Properties.Settings.Default.MaxLat; + this.tb_Coverage_MaxLat.TextChanged += new System.EventHandler(this.tab_Options_General_Update); + // + // tb_Coverage_MinLat + // + this.tb_Coverage_MinLat.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "MinLat", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.tb_Coverage_MinLat.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_Coverage_MinLat.FormatSpecifier = "F0"; + this.tb_Coverage_MinLat.Location = new System.Drawing.Point(589, 391); + this.tb_Coverage_MinLat.MaxValue = 90D; + this.tb_Coverage_MinLat.MinValue = -90D; + this.tb_Coverage_MinLat.Name = "tb_Coverage_MinLat"; + this.tb_Coverage_MinLat.Size = new System.Drawing.Size(50, 22); + this.tb_Coverage_MinLat.TabIndex = 3; + this.tb_Coverage_MinLat.Text = "35"; + this.tb_Coverage_MinLat.Value = global::AirScout.Properties.Settings.Default.MinLat; + this.tb_Coverage_MinLat.TextChanged += new System.EventHandler(this.tab_Options_General_Update); + // + // tb_Coverage_MaxLon + // + this.tb_Coverage_MaxLon.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "MaxLon", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.tb_Coverage_MaxLon.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_Coverage_MaxLon.FormatSpecifier = "F0"; + this.tb_Coverage_MaxLon.Location = new System.Drawing.Point(589, 364); + this.tb_Coverage_MaxLon.MaxValue = 180D; + this.tb_Coverage_MaxLon.MinValue = -180D; + this.tb_Coverage_MaxLon.Name = "tb_Coverage_MaxLon"; + this.tb_Coverage_MaxLon.Size = new System.Drawing.Size(50, 22); + this.tb_Coverage_MaxLon.TabIndex = 2; + this.tb_Coverage_MaxLon.Text = "30"; + this.tb_Coverage_MaxLon.Value = global::AirScout.Properties.Settings.Default.MaxLon; + this.tb_Coverage_MaxLon.TextChanged += new System.EventHandler(this.tab_Options_General_Update); + // + // tb_Coverage_MinLon + // + this.tb_Coverage_MinLon.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "MinLon", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.tb_Coverage_MinLon.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_Coverage_MinLon.FormatSpecifier = "F0"; + this.tb_Coverage_MinLon.Location = new System.Drawing.Point(589, 337); + this.tb_Coverage_MinLon.MaxValue = 180D; + this.tb_Coverage_MinLon.MinValue = -180D; + this.tb_Coverage_MinLon.Name = "tb_Coverage_MinLon"; + this.tb_Coverage_MinLon.Size = new System.Drawing.Size(50, 22); + this.tb_Coverage_MinLon.TabIndex = 1; + this.tb_Coverage_MinLon.Text = "-15"; + this.tb_Coverage_MinLon.Value = global::AirScout.Properties.Settings.Default.MinLon; + this.tb_Coverage_MinLon.TextChanged += new System.EventHandler(this.tab_Options_General_Update); + // // gm_Options_Coverage // this.gm_Options_Coverage.Bearing = 0F; @@ -2747,6 +3817,7 @@ this.gm_Options_Coverage.MouseWheelZoomType = GMap.NET.MouseWheelZoomType.MousePositionAndCenter; this.gm_Options_Coverage.Name = "gm_Options_Coverage"; this.gm_Options_Coverage.NegativeMode = false; + this.gm_Options_Coverage.Opacity = 1D; this.gm_Options_Coverage.PolygonsEnabled = true; this.gm_Options_Coverage.RetryLoadTile = 0; this.gm_Options_Coverage.RoutesEnabled = true; @@ -2813,6 +3884,7 @@ this.tc_Options.Controls.Add(this.tab_Options_Network); this.tc_Options.Controls.Add(this.tab_Options_SpecLab); this.tc_Options.Controls.Add(this.tab_Options_Track); + this.tc_Options.Controls.Add(this.tab_Options_CAT); this.tc_Options.Controls.Add(this.tab_Options_Watchlist); this.tc_Options.Controls.Add(this.tab_Options_Misc); this.tc_Options.Controls.Add(this.tab_Options_Info); @@ -2891,6 +3963,20 @@ this.gb_Options_Database_Settings.TabStop = false; this.gb_Options_Database_Settings.Text = "Background Update and Pre-Calculation Settings"; // + // cb_Options_Background_Calculations_Enable + // + this.cb_Options_Background_Calculations_Enable.AutoSize = true; + this.cb_Options_Background_Calculations_Enable.Checked = global::AirScout.Properties.Settings.Default.Background_Calculations_Enable; + this.cb_Options_Background_Calculations_Enable.CheckState = System.Windows.Forms.CheckState.Checked; + this.cb_Options_Background_Calculations_Enable.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Background_Calculations_Enable", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.cb_Options_Background_Calculations_Enable.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_Background_Calculations_Enable.Location = new System.Drawing.Point(22, 126); + this.cb_Options_Background_Calculations_Enable.Name = "cb_Options_Background_Calculations_Enable"; + this.cb_Options_Background_Calculations_Enable.Size = new System.Drawing.Size(308, 17); + this.cb_Options_Background_Calculations_Enable.TabIndex = 6; + this.cb_Options_Background_Calculations_Enable.Text = "Enable Background Pre-Calculations for paths/horizons etc."; + this.cb_Options_Background_Calculations_Enable.UseVisualStyleBackColor = true; + // // label47 // this.label47.AutoSize = true; @@ -2901,6 +3987,26 @@ this.label47.TabIndex = 5; this.label47.Text = "Update interval [min]:"; // + // ud_Options_Database_Update_Period + // + this.ud_Options_Database_Update_Period.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Background_Update_Period", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.ud_Options_Database_Update_Period.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.ud_Options_Database_Update_Period.Location = new System.Drawing.Point(278, 84); + this.ud_Options_Database_Update_Period.Maximum = new decimal(new int[] { + 6000, + 0, + 0, + 0}); + this.ud_Options_Database_Update_Period.Minimum = new decimal(new int[] { + 1, + 0, + 0, + 0}); + this.ud_Options_Database_Update_Period.Name = "ud_Options_Database_Update_Period"; + this.ud_Options_Database_Update_Period.Size = new System.Drawing.Size(39, 20); + this.ud_Options_Database_Update_Period.TabIndex = 3; + this.ud_Options_Database_Update_Period.Value = global::AirScout.Properties.Settings.Default.Background_Update_Period; + // // rb_Options_Database_Update_Periodically // this.rb_Options_Database_Update_Periodically.AutoSize = true; @@ -3521,7 +4627,7 @@ this.label104.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Italic, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.label104.Location = new System.Drawing.Point(60, 10); this.label104.Name = "label104"; - this.label104.Size = new System.Drawing.Size(473, 16); + this.label104.Size = new System.Drawing.Size(472, 16); this.label104.TabIndex = 10; this.label104.Text = "This box is showing general info about the SQLite databases used by AirScout."; // @@ -3680,6 +4786,7 @@ this.gm_Options_ASTER3.MouseWheelZoomType = GMap.NET.MouseWheelZoomType.MousePositionAndCenter; this.gm_Options_ASTER3.Name = "gm_Options_ASTER3"; this.gm_Options_ASTER3.NegativeMode = false; + this.gm_Options_ASTER3.Opacity = 1D; this.gm_Options_ASTER3.PolygonsEnabled = true; this.gm_Options_ASTER3.RetryLoadTile = 0; this.gm_Options_ASTER3.RoutesEnabled = true; @@ -3701,6 +4808,34 @@ this.groupBox53.TabStop = false; this.groupBox53.Text = "Use Elevation Model"; // + // cb_Options_Elevation_ASTER3_EnableCache + // + this.cb_Options_Elevation_ASTER3_EnableCache.AutoSize = true; + this.cb_Options_Elevation_ASTER3_EnableCache.Checked = global::AirScout.Properties.Settings.Default.Elevation_ASTER3_EnableCache; + this.cb_Options_Elevation_ASTER3_EnableCache.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Elevation_ASTER3_EnableCache", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.cb_Options_Elevation_ASTER3_EnableCache.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_Elevation_ASTER3_EnableCache.Location = new System.Drawing.Point(6, 42); + this.cb_Options_Elevation_ASTER3_EnableCache.Name = "cb_Options_Elevation_ASTER3_EnableCache"; + this.cb_Options_Elevation_ASTER3_EnableCache.Size = new System.Drawing.Size(179, 17); + this.cb_Options_Elevation_ASTER3_EnableCache.TabIndex = 13; + this.cb_Options_Elevation_ASTER3_EnableCache.Tag = ""; + this.cb_Options_Elevation_ASTER3_EnableCache.Text = "Keep downloaded elevation tiles"; + this.cb_Options_Elevation_ASTER3_EnableCache.UseVisualStyleBackColor = true; + // + // cb_Options_Elevation_ASTER3 + // + this.cb_Options_Elevation_ASTER3.AutoSize = true; + this.cb_Options_Elevation_ASTER3.Checked = global::AirScout.Properties.Settings.Default.Elevation_ASTER3_Enabled; + this.cb_Options_Elevation_ASTER3.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Elevation_ASTER3_Enabled", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.cb_Options_Elevation_ASTER3.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_Elevation_ASTER3.Location = new System.Drawing.Point(6, 19); + this.cb_Options_Elevation_ASTER3.Name = "cb_Options_Elevation_ASTER3"; + this.cb_Options_Elevation_ASTER3.Size = new System.Drawing.Size(160, 17); + this.cb_Options_Elevation_ASTER3.TabIndex = 12; + this.cb_Options_Elevation_ASTER3.Tag = ""; + this.cb_Options_Elevation_ASTER3.Text = "Use ASTER3 elevation data"; + this.cb_Options_Elevation_ASTER3.UseVisualStyleBackColor = true; + // // tba_Option_ASTER1 // this.tba_Option_ASTER1.BackColor = System.Drawing.SystemColors.Control; @@ -3776,6 +4911,7 @@ this.gm_Options_ASTER1.MouseWheelZoomType = GMap.NET.MouseWheelZoomType.MousePositionAndCenter; this.gm_Options_ASTER1.Name = "gm_Options_ASTER1"; this.gm_Options_ASTER1.NegativeMode = false; + this.gm_Options_ASTER1.Opacity = 1D; this.gm_Options_ASTER1.PolygonsEnabled = true; this.gm_Options_ASTER1.RetryLoadTile = 0; this.gm_Options_ASTER1.RoutesEnabled = true; @@ -3797,6 +4933,34 @@ this.groupBox56.TabStop = false; this.groupBox56.Text = "Use Elevation Model"; // + // cb_Options_Elevation_ASTER1_EnableCache + // + this.cb_Options_Elevation_ASTER1_EnableCache.AutoSize = true; + this.cb_Options_Elevation_ASTER1_EnableCache.Checked = global::AirScout.Properties.Settings.Default.Elevation_ASTER1_EnableCache; + this.cb_Options_Elevation_ASTER1_EnableCache.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Elevation_ASTER1_EnableCache", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.cb_Options_Elevation_ASTER1_EnableCache.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_Elevation_ASTER1_EnableCache.Location = new System.Drawing.Point(6, 42); + this.cb_Options_Elevation_ASTER1_EnableCache.Name = "cb_Options_Elevation_ASTER1_EnableCache"; + this.cb_Options_Elevation_ASTER1_EnableCache.Size = new System.Drawing.Size(179, 17); + this.cb_Options_Elevation_ASTER1_EnableCache.TabIndex = 13; + this.cb_Options_Elevation_ASTER1_EnableCache.Tag = ""; + this.cb_Options_Elevation_ASTER1_EnableCache.Text = "Keep downloaded elevation tiles"; + this.cb_Options_Elevation_ASTER1_EnableCache.UseVisualStyleBackColor = true; + // + // cb_Options_Elevation_ASTER1 + // + this.cb_Options_Elevation_ASTER1.AutoSize = true; + this.cb_Options_Elevation_ASTER1.Checked = global::AirScout.Properties.Settings.Default.Elevation_ASTER1_Enabled; + this.cb_Options_Elevation_ASTER1.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Elevation_ASTER1_Enabled", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.cb_Options_Elevation_ASTER1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_Elevation_ASTER1.Location = new System.Drawing.Point(6, 19); + this.cb_Options_Elevation_ASTER1.Name = "cb_Options_Elevation_ASTER1"; + this.cb_Options_Elevation_ASTER1.Size = new System.Drawing.Size(160, 17); + this.cb_Options_Elevation_ASTER1.TabIndex = 12; + this.cb_Options_Elevation_ASTER1.Tag = ""; + this.cb_Options_Elevation_ASTER1.Text = "Use ASTER1 elevation data"; + this.cb_Options_Elevation_ASTER1.UseVisualStyleBackColor = true; + // // tab_Options_Alarm // this.tab_Options_Alarm.BackColor = System.Drawing.SystemColors.Control; @@ -3821,6 +4985,20 @@ this.groupBox21.TabStop = false; this.groupBox21.Text = "Activate Alarm"; // + // cb_Options_Alarm_Activate + // + this.cb_Options_Alarm_Activate.AutoSize = true; + this.cb_Options_Alarm_Activate.Checked = global::AirScout.Properties.Settings.Default.Alarm_Activate; + this.cb_Options_Alarm_Activate.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Alarm_Activate", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.cb_Options_Alarm_Activate.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_Alarm_Activate.Location = new System.Drawing.Point(13, 19); + this.cb_Options_Alarm_Activate.Name = "cb_Options_Alarm_Activate"; + this.cb_Options_Alarm_Activate.Size = new System.Drawing.Size(94, 17); + this.cb_Options_Alarm_Activate.TabIndex = 1; + this.cb_Options_Alarm_Activate.Tag = ""; + this.cb_Options_Alarm_Activate.Text = "Activate Alarm"; + this.cb_Options_Alarm_Activate.UseVisualStyleBackColor = true; + // // groupBox19 // this.groupBox19.Controls.Add(this.cb_Options_Alarm_PlaySound); @@ -3833,6 +5011,21 @@ this.groupBox19.TabStop = false; this.groupBox19.Text = "Alarm Settings"; // + // cb_Options_Alarm_PlaySound + // + this.cb_Options_Alarm_PlaySound.AutoSize = true; + this.cb_Options_Alarm_PlaySound.Checked = global::AirScout.Properties.Settings.Default.Alarm_PlaySound; + this.cb_Options_Alarm_PlaySound.CheckState = System.Windows.Forms.CheckState.Checked; + this.cb_Options_Alarm_PlaySound.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Alarm_PlaySound", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.cb_Options_Alarm_PlaySound.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_Alarm_PlaySound.Location = new System.Drawing.Point(13, 53); + this.cb_Options_Alarm_PlaySound.Name = "cb_Options_Alarm_PlaySound"; + this.cb_Options_Alarm_PlaySound.Size = new System.Drawing.Size(78, 17); + this.cb_Options_Alarm_PlaySound.TabIndex = 1; + this.cb_Options_Alarm_PlaySound.Tag = ""; + this.cb_Options_Alarm_PlaySound.Text = "Play sound"; + this.cb_Options_Alarm_PlaySound.UseVisualStyleBackColor = true; + // // cb_Options_Alarm_BringWindowToFront // this.cb_Options_Alarm_BringWindowToFront.AutoSize = true; @@ -3860,6 +5053,20 @@ this.groupBox20.TabStop = false; this.groupBox20.Text = "Generate Alarm"; // + // tb_Options_Alarm_Distance + // + this.tb_Options_Alarm_Distance.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Alarm_Distance", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.tb_Options_Alarm_Distance.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_Options_Alarm_Distance.FormatSpecifier = "F0"; + this.tb_Options_Alarm_Distance.Location = new System.Drawing.Point(143, 49); + this.tb_Options_Alarm_Distance.MaxValue = 1000D; + this.tb_Options_Alarm_Distance.MinValue = 0D; + this.tb_Options_Alarm_Distance.Name = "tb_Options_Alarm_Distance"; + this.tb_Options_Alarm_Distance.Size = new System.Drawing.Size(75, 22); + this.tb_Options_Alarm_Distance.TabIndex = 3; + this.tb_Options_Alarm_Distance.Text = "100"; + this.tb_Options_Alarm_Distance.Value = global::AirScout.Properties.Settings.Default.Alarm_Distance; + // // label36 // this.label36.AutoSize = true; @@ -3920,6 +5127,20 @@ this.groupBox32.TabStop = false; this.groupBox32.Text = "HTTP Server Settings"; // + // tb_Options_Webserver_Port + // + this.tb_Options_Webserver_Port.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Webserver_Port", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.tb_Options_Webserver_Port.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_Options_Webserver_Port.FormatSpecifier = "F0"; + this.tb_Options_Webserver_Port.Location = new System.Drawing.Point(150, 28); + this.tb_Options_Webserver_Port.MaxValue = 65535; + this.tb_Options_Webserver_Port.MinValue = 0; + this.tb_Options_Webserver_Port.Name = "tb_Options_Webserver_Port"; + this.tb_Options_Webserver_Port.Size = new System.Drawing.Size(57, 22); + this.tb_Options_Webserver_Port.TabIndex = 8; + this.tb_Options_Webserver_Port.Text = "9880"; + this.tb_Options_Webserver_Port.Value = global::AirScout.Properties.Settings.Default.Webserver_Port; + // // label85 // this.label85.AutoSize = true; @@ -3942,6 +5163,20 @@ this.groupBox31.TabStop = false; this.groupBox31.Text = "Activate Server"; // + // cb_Options_Server_Activate + // + this.cb_Options_Server_Activate.AutoSize = true; + this.cb_Options_Server_Activate.Checked = global::AirScout.Properties.Settings.Default.Server_Activate; + this.cb_Options_Server_Activate.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Server_Activate", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.cb_Options_Server_Activate.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_Server_Activate.Location = new System.Drawing.Point(13, 23); + this.cb_Options_Server_Activate.Name = "cb_Options_Server_Activate"; + this.cb_Options_Server_Activate.Size = new System.Drawing.Size(142, 17); + this.cb_Options_Server_Activate.TabIndex = 1; + this.cb_Options_Server_Activate.Tag = ""; + this.cb_Options_Server_Activate.Text = "Activate Network Server"; + this.cb_Options_Server_Activate.UseVisualStyleBackColor = true; + // // label3 // this.label3.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); @@ -3965,6 +5200,20 @@ this.groupBox24.TabStop = false; this.groupBox24.Text = "UDP Server Settings"; // + // tb_Options_Server_Port + // + this.tb_Options_Server_Port.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Server_Port", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.tb_Options_Server_Port.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_Options_Server_Port.FormatSpecifier = "F0"; + this.tb_Options_Server_Port.Location = new System.Drawing.Point(153, 56); + this.tb_Options_Server_Port.MaxValue = 65535; + this.tb_Options_Server_Port.MinValue = 0; + this.tb_Options_Server_Port.Name = "tb_Options_Server_Port"; + this.tb_Options_Server_Port.Size = new System.Drawing.Size(57, 22); + this.tb_Options_Server_Port.TabIndex = 6; + this.tb_Options_Server_Port.Text = "9872"; + this.tb_Options_Server_Port.Value = global::AirScout.Properties.Settings.Default.Server_Port; + // // label6 // this.label6.AutoSize = true; @@ -3985,6 +5234,18 @@ this.label4.TabIndex = 4; this.label4.Text = "AirScout UDP Server Name:"; // + // tb_Options_Server_Name + // + this.tb_Options_Server_Name.BackColor = System.Drawing.Color.FloralWhite; + this.tb_Options_Server_Name.DataBindings.Add(new System.Windows.Forms.Binding("Text", global::AirScout.Properties.Settings.Default, "Server_Name", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.tb_Options_Server_Name.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_Options_Server_Name.Location = new System.Drawing.Point(153, 30); + this.tb_Options_Server_Name.Name = "tb_Options_Server_Name"; + this.tb_Options_Server_Name.Size = new System.Drawing.Size(57, 20); + this.tb_Options_Server_Name.TabIndex = 2; + this.tb_Options_Server_Name.Tag = ""; + this.tb_Options_Server_Name.Text = global::AirScout.Properties.Settings.Default.Server_Name; + // // tab_Options_SpecLab // this.tab_Options_SpecLab.BackColor = System.Drawing.SystemColors.Control; @@ -4022,6 +5283,48 @@ this.groupBox3.TabStop = false; this.groupBox3.Text = "Spectrum Lab Settings"; // + // tb_Options_SpecLab_UpdateInterval + // + this.tb_Options_SpecLab_UpdateInterval.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "SpecLab_Update", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.tb_Options_SpecLab_UpdateInterval.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_Options_SpecLab_UpdateInterval.FormatSpecifier = "F1"; + this.tb_Options_SpecLab_UpdateInterval.Location = new System.Drawing.Point(106, 230); + this.tb_Options_SpecLab_UpdateInterval.MaxValue = 100D; + this.tb_Options_SpecLab_UpdateInterval.MinValue = 0D; + this.tb_Options_SpecLab_UpdateInterval.Name = "tb_Options_SpecLab_UpdateInterval"; + this.tb_Options_SpecLab_UpdateInterval.Size = new System.Drawing.Size(63, 22); + this.tb_Options_SpecLab_UpdateInterval.TabIndex = 18; + this.tb_Options_SpecLab_UpdateInterval.Text = "1.0"; + this.tb_Options_SpecLab_UpdateInterval.Value = global::AirScout.Properties.Settings.Default.SpecLab_Update; + // + // tb_Options_SpecLab_F2 + // + this.tb_Options_SpecLab_F2.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "SpecLab_F2", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.tb_Options_SpecLab_F2.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_Options_SpecLab_F2.FormatSpecifier = "F0"; + this.tb_Options_SpecLab_F2.Location = new System.Drawing.Point(109, 205); + this.tb_Options_SpecLab_F2.MaxValue = 10000; + this.tb_Options_SpecLab_F2.MinValue = 0; + this.tb_Options_SpecLab_F2.Name = "tb_Options_SpecLab_F2"; + this.tb_Options_SpecLab_F2.Size = new System.Drawing.Size(60, 22); + this.tb_Options_SpecLab_F2.TabIndex = 17; + this.tb_Options_SpecLab_F2.Text = "1600"; + this.tb_Options_SpecLab_F2.Value = global::AirScout.Properties.Settings.Default.SpecLab_F2; + // + // tb_Options_SpecLab_F1 + // + this.tb_Options_SpecLab_F1.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "SpecLab_F1", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.tb_Options_SpecLab_F1.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_Options_SpecLab_F1.FormatSpecifier = "F0"; + this.tb_Options_SpecLab_F1.Location = new System.Drawing.Point(109, 179); + this.tb_Options_SpecLab_F1.MaxValue = 10000; + this.tb_Options_SpecLab_F1.MinValue = 0; + this.tb_Options_SpecLab_F1.Name = "tb_Options_SpecLab_F1"; + this.tb_Options_SpecLab_F1.Size = new System.Drawing.Size(60, 22); + this.tb_Options_SpecLab_F1.TabIndex = 16; + this.tb_Options_SpecLab_F1.Text = "400"; + this.tb_Options_SpecLab_F1.Value = global::AirScout.Properties.Settings.Default.SpecLab_F1; + // // label70 // this.label70.AutoSize = true; @@ -4082,6 +5385,18 @@ this.label66.TabIndex = 8; this.label66.Text = "F1:"; // + // tb_SpecLab_FileName + // + this.tb_SpecLab_FileName.BackColor = System.Drawing.Color.FloralWhite; + this.tb_SpecLab_FileName.DataBindings.Add(new System.Windows.Forms.Binding("Text", global::AirScout.Properties.Settings.Default, "SpecLab_FileName", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.tb_SpecLab_FileName.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_SpecLab_FileName.Location = new System.Drawing.Point(109, 153); + this.tb_SpecLab_FileName.Name = "tb_SpecLab_FileName"; + this.tb_SpecLab_FileName.Size = new System.Drawing.Size(347, 20); + this.tb_SpecLab_FileName.TabIndex = 6; + this.tb_SpecLab_FileName.Tag = ""; + this.tb_SpecLab_FileName.Text = global::AirScout.Properties.Settings.Default.SpecLab_FileName; + // // label63 // this.label63.AutoSize = true; @@ -4111,68 +5426,637 @@ this.label65.TabIndex = 3; this.label65.Text = resources.GetString("label65.Text"); // + // tb_SpecLab_URL + // + this.tb_SpecLab_URL.BackColor = System.Drawing.Color.FloralWhite; + this.tb_SpecLab_URL.DataBindings.Add(new System.Windows.Forms.Binding("Text", global::AirScout.Properties.Settings.Default, "SpecLab_URL", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.tb_SpecLab_URL.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_SpecLab_URL.Location = new System.Drawing.Point(109, 126); + this.tb_SpecLab_URL.Name = "tb_SpecLab_URL"; + this.tb_SpecLab_URL.Size = new System.Drawing.Size(347, 20); + this.tb_SpecLab_URL.TabIndex = 2; + this.tb_SpecLab_URL.Tag = ""; + this.tb_SpecLab_URL.Text = global::AirScout.Properties.Settings.Default.SpecLab_URL; + // + // cb_SpecLab_Enabled + // + this.cb_SpecLab_Enabled.AutoSize = true; + this.cb_SpecLab_Enabled.Checked = global::AirScout.Properties.Settings.Default.SpecLab_Enabled; + this.cb_SpecLab_Enabled.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "SpecLab_Enabled", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.cb_SpecLab_Enabled.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_SpecLab_Enabled.Location = new System.Drawing.Point(18, 90); + this.cb_SpecLab_Enabled.Name = "cb_SpecLab_Enabled"; + this.cb_SpecLab_Enabled.Size = new System.Drawing.Size(122, 17); + this.cb_SpecLab_Enabled.TabIndex = 1; + this.cb_SpecLab_Enabled.Tag = ""; + this.cb_SpecLab_Enabled.Text = "Activate Connection"; + this.cb_SpecLab_Enabled.UseVisualStyleBackColor = true; + // // tab_Options_Track // this.tab_Options_Track.BackColor = System.Drawing.SystemColors.Control; - this.tab_Options_Track.Controls.Add(this.groupBox36); - this.tab_Options_Track.Controls.Add(this.groupBox35); - this.tab_Options_Track.Controls.Add(this.groupBox34); - this.tab_Options_Track.Controls.Add(this.groupBox33); + this.tab_Options_Track.Controls.Add(this.gb_Options_Doppler); + this.tab_Options_Track.Controls.Add(this.gb_Options_Track_File); + this.tab_Options_Track.Controls.Add(this.gb_Options_Track_DDE); + this.tab_Options_Track.Controls.Add(this.gb_Options_Track_UDP); + this.tab_Options_Track.Controls.Add(this.gb_Options_Track_Serial); this.tab_Options_Track.Controls.Add(this.groupBox28); this.tab_Options_Track.Location = new System.Drawing.Point(4, 40); this.tab_Options_Track.Name = "tab_Options_Track"; this.tab_Options_Track.Size = new System.Drawing.Size(671, 480); this.tab_Options_Track.TabIndex = 14; this.tab_Options_Track.Text = "Track"; + this.tab_Options_Track.Enter += new System.EventHandler(this.tab_Options_Track_Enter); this.tab_Options_Track.Validating += new System.ComponentModel.CancelEventHandler(this.tc_Track_Validating); // - // groupBox36 + // gb_Options_Doppler // - this.groupBox36.Controls.Add(this.rb_Options_Track_File_None); - this.groupBox36.Controls.Add(this.rb_Options_Track_File_WSJT); - this.groupBox36.Controls.Add(this.rb_Options_Track_File_Native); - this.groupBox36.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic))), System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.groupBox36.Location = new System.Drawing.Point(16, 347); - this.groupBox36.Name = "groupBox36"; - this.groupBox36.Size = new System.Drawing.Size(619, 96); - this.groupBox36.TabIndex = 12; - this.groupBox36.TabStop = false; - this.groupBox36.Text = "File Output"; + this.gb_Options_Doppler.Controls.Add(this.label150); + this.gb_Options_Doppler.Controls.Add(this.tb_Options_Track_DialFreq); + this.gb_Options_Doppler.Controls.Add(this.label180); + this.gb_Options_Doppler.Controls.Add(this.label181); + this.gb_Options_Doppler.Controls.Add(this.label182); + this.gb_Options_Doppler.Controls.Add(this.label183); + this.gb_Options_Doppler.Controls.Add(this.label184); + this.gb_Options_Doppler.Controls.Add(this.rb_Options_Doppler_Strategy_None); + this.gb_Options_Doppler.Controls.Add(this.label178); + this.gb_Options_Doppler.Controls.Add(this.label179); + this.gb_Options_Doppler.Controls.Add(this.label176); + this.gb_Options_Doppler.Controls.Add(this.label177); + this.gb_Options_Doppler.Controls.Add(this.label174); + this.gb_Options_Doppler.Controls.Add(this.label175); + this.gb_Options_Doppler.Controls.Add(this.label172); + this.gb_Options_Doppler.Controls.Add(this.label173); + this.gb_Options_Doppler.Controls.Add(this.label170); + this.gb_Options_Doppler.Controls.Add(this.label171); + this.gb_Options_Doppler.Controls.Add(this.label168); + this.gb_Options_Doppler.Controls.Add(this.label169); + this.gb_Options_Doppler.Controls.Add(this.label166); + this.gb_Options_Doppler.Controls.Add(this.label167); + this.gb_Options_Doppler.Controls.Add(this.label165); + this.gb_Options_Doppler.Controls.Add(this.label163); + this.gb_Options_Doppler.Controls.Add(this.label164); + this.gb_Options_Doppler.Controls.Add(this.label162); + this.gb_Options_Doppler.Controls.Add(this.label161); + this.gb_Options_Doppler.Controls.Add(this.label160); + this.gb_Options_Doppler.Controls.Add(this.label159); + this.gb_Options_Doppler.Controls.Add(this.label158); + this.gb_Options_Doppler.Controls.Add(this.label157); + this.gb_Options_Doppler.Controls.Add(this.label156); + this.gb_Options_Doppler.Controls.Add(this.label155); + this.gb_Options_Doppler.Controls.Add(this.rb_Options_Doppler_Strategy_D); + this.gb_Options_Doppler.Controls.Add(this.rb_Options_Doppler_Strategy_C); + this.gb_Options_Doppler.Controls.Add(this.rb_Options_Doppler_Strategy_B); + this.gb_Options_Doppler.Controls.Add(this.rb_Options_Doppler_Strategy_A); + this.gb_Options_Doppler.Controls.Add(this.label154); + this.gb_Options_Doppler.Controls.Add(this.label153); + this.gb_Options_Doppler.Controls.Add(this.label152); + this.gb_Options_Doppler.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic))), System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.gb_Options_Doppler.Location = new System.Drawing.Point(16, 246); + this.gb_Options_Doppler.Name = "gb_Options_Doppler"; + this.gb_Options_Doppler.Size = new System.Drawing.Size(640, 226); + this.gb_Options_Doppler.TabIndex = 14; + this.gb_Options_Doppler.TabStop = false; + this.gb_Options_Doppler.Text = "Doppler Compensation (requires activated CAT and Rig connected)"; // - // groupBox35 + // label150 // - this.groupBox35.Controls.Add(this.rb_Options_Track_DDE_None); - this.groupBox35.Controls.Add(this.rb_Options_Track_DDE_HRD); - this.groupBox35.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic))), System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.groupBox35.Location = new System.Drawing.Point(16, 261); - this.groupBox35.Name = "groupBox35"; - this.groupBox35.Size = new System.Drawing.Size(619, 80); - this.groupBox35.TabIndex = 11; - this.groupBox35.TabStop = false; - this.groupBox35.Text = "DDE Output"; + this.label150.AutoSize = true; + this.label150.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label150.Location = new System.Drawing.Point(584, 41); + this.label150.Name = "label150"; + this.label150.Size = new System.Drawing.Size(23, 16); + this.label150.TabIndex = 59; + this.label150.Text = "Hz"; // - // groupBox34 + // label180 // - this.groupBox34.Controls.Add(this.tb_Options_Track_UDP_AirScout_Port); - this.groupBox34.Controls.Add(this.tb_Options_Track_UDP_WinTest_Port); - this.groupBox34.Controls.Add(this.label90); - this.groupBox34.Controls.Add(this.label89); - this.groupBox34.Controls.Add(this.rb_Options_Track_UDP_None); - this.groupBox34.Controls.Add(this.rb_Options_Track_UDP_AirScout); - this.groupBox34.Controls.Add(this.rb_Options_Track_UDP_WinTest); - this.groupBox34.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic))), System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.groupBox34.Location = new System.Drawing.Point(16, 157); - this.groupBox34.Name = "groupBox34"; - this.groupBox34.Size = new System.Drawing.Size(619, 98); - this.groupBox34.TabIndex = 10; - this.groupBox34.TabStop = false; - this.groupBox34.Text = "Network Output"; + this.label180.AutoSize = true; + this.label180.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label180.Location = new System.Drawing.Point(538, 123); + this.label180.Name = "label180"; + this.label180.Size = new System.Drawing.Size(19, 13); + this.label180.TabIndex = 58; + this.label180.Text = "no"; + // + // label181 + // + this.label181.AutoSize = true; + this.label181.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label181.Location = new System.Drawing.Point(585, 123); + this.label181.Name = "label181"; + this.label181.Size = new System.Drawing.Size(19, 13); + this.label181.TabIndex = 57; + this.label181.Text = "no"; + // + // label182 + // + this.label182.AutoSize = true; + this.label182.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label182.Location = new System.Drawing.Point(55, 123); + this.label182.Name = "label182"; + this.label182.Size = new System.Drawing.Size(19, 13); + this.label182.TabIndex = 56; + this.label182.Text = "no"; + // + // label183 + // + this.label183.AutoSize = true; + this.label183.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label183.Location = new System.Drawing.Point(102, 123); + this.label183.Name = "label183"; + this.label183.Size = new System.Drawing.Size(19, 13); + this.label183.TabIndex = 55; + this.label183.Text = "no"; + // + // label184 + // + this.label184.AutoSize = true; + this.label184.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label184.Location = new System.Drawing.Point(265, 123); + this.label184.Name = "label184"; + this.label184.Size = new System.Drawing.Size(33, 13); + this.label184.TabIndex = 54; + this.label184.Text = "None"; + // + // rb_Options_Doppler_Strategy_None + // + this.rb_Options_Doppler_Strategy_None.AutoSize = true; + this.rb_Options_Doppler_Strategy_None.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.rb_Options_Doppler_Strategy_None.Location = new System.Drawing.Point(16, 123); + this.rb_Options_Doppler_Strategy_None.Name = "rb_Options_Doppler_Strategy_None"; + this.rb_Options_Doppler_Strategy_None.Size = new System.Drawing.Size(14, 13); + this.rb_Options_Doppler_Strategy_None.TabIndex = 53; + this.rb_Options_Doppler_Strategy_None.Tag = ""; + this.rb_Options_Doppler_Strategy_None.UseVisualStyleBackColor = true; + this.rb_Options_Doppler_Strategy_None.CheckedChanged += new System.EventHandler(this.gb_Options_Doppler_CheckedChanged); + // + // label178 + // + this.label178.AutoSize = true; + this.label178.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label178.Location = new System.Drawing.Point(538, 200); + this.label178.Name = "label178"; + this.label178.Size = new System.Drawing.Size(23, 13); + this.label178.TabIndex = 52; + this.label178.Text = "yes"; + // + // label179 + // + this.label179.AutoSize = true; + this.label179.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label179.Location = new System.Drawing.Point(585, 200); + this.label179.Name = "label179"; + this.label179.Size = new System.Drawing.Size(23, 13); + this.label179.TabIndex = 51; + this.label179.Text = "yes"; + // + // label176 + // + this.label176.AutoSize = true; + this.label176.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label176.Location = new System.Drawing.Point(538, 182); + this.label176.Name = "label176"; + this.label176.Size = new System.Drawing.Size(19, 13); + this.label176.TabIndex = 50; + this.label176.Text = "no"; + // + // label177 + // + this.label177.AutoSize = true; + this.label177.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label177.Location = new System.Drawing.Point(585, 182); + this.label177.Name = "label177"; + this.label177.Size = new System.Drawing.Size(19, 13); + this.label177.TabIndex = 49; + this.label177.Text = "no"; + // + // label174 + // + this.label174.AutoSize = true; + this.label174.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label174.Location = new System.Drawing.Point(538, 162); + this.label174.Name = "label174"; + this.label174.Size = new System.Drawing.Size(23, 13); + this.label174.TabIndex = 48; + this.label174.Text = "yes"; + // + // label175 + // + this.label175.AutoSize = true; + this.label175.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label175.Location = new System.Drawing.Point(585, 162); + this.label175.Name = "label175"; + this.label175.Size = new System.Drawing.Size(19, 13); + this.label175.TabIndex = 47; + this.label175.Text = "no"; + // + // label172 + // + this.label172.AutoSize = true; + this.label172.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label172.Location = new System.Drawing.Point(538, 142); + this.label172.Name = "label172"; + this.label172.Size = new System.Drawing.Size(19, 13); + this.label172.TabIndex = 46; + this.label172.Text = "no"; + // + // label173 + // + this.label173.AutoSize = true; + this.label173.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label173.Location = new System.Drawing.Point(585, 142); + this.label173.Name = "label173"; + this.label173.Size = new System.Drawing.Size(23, 13); + this.label173.TabIndex = 45; + this.label173.Text = "yes"; + // + // label170 + // + this.label170.AutoSize = true; + this.label170.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label170.Location = new System.Drawing.Point(55, 202); + this.label170.Name = "label170"; + this.label170.Size = new System.Drawing.Size(23, 13); + this.label170.TabIndex = 44; + this.label170.Text = "yes"; + // + // label171 + // + this.label171.AutoSize = true; + this.label171.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label171.Location = new System.Drawing.Point(102, 202); + this.label171.Name = "label171"; + this.label171.Size = new System.Drawing.Size(23, 13); + this.label171.TabIndex = 43; + this.label171.Text = "yes"; + // + // label168 + // + this.label168.AutoSize = true; + this.label168.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label168.Location = new System.Drawing.Point(55, 182); + this.label168.Name = "label168"; + this.label168.Size = new System.Drawing.Size(23, 13); + this.label168.TabIndex = 42; + this.label168.Text = "yes"; + // + // label169 + // + this.label169.AutoSize = true; + this.label169.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label169.Location = new System.Drawing.Point(102, 182); + this.label169.Name = "label169"; + this.label169.Size = new System.Drawing.Size(23, 13); + this.label169.TabIndex = 41; + this.label169.Text = "yes"; + // + // label166 + // + this.label166.AutoSize = true; + this.label166.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label166.Location = new System.Drawing.Point(55, 162); + this.label166.Name = "label166"; + this.label166.Size = new System.Drawing.Size(23, 13); + this.label166.TabIndex = 40; + this.label166.Text = "yes"; + // + // label167 + // + this.label167.AutoSize = true; + this.label167.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label167.Location = new System.Drawing.Point(102, 162); + this.label167.Name = "label167"; + this.label167.Size = new System.Drawing.Size(19, 13); + this.label167.TabIndex = 39; + this.label167.Text = "no"; + // + // label165 + // + this.label165.AutoSize = true; + this.label165.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label165.Location = new System.Drawing.Point(55, 142); + this.label165.Name = "label165"; + this.label165.Size = new System.Drawing.Size(19, 13); + this.label165.TabIndex = 38; + this.label165.Text = "no"; + // + // label163 + // + this.label163.AutoSize = true; + this.label163.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label163.Location = new System.Drawing.Point(581, 103); + this.label163.Name = "label163"; + this.label163.Size = new System.Drawing.Size(24, 13); + this.label163.TabIndex = 37; + this.label163.Text = "RX"; + // + // label164 + // + this.label164.AutoSize = true; + this.label164.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label164.Location = new System.Drawing.Point(538, 103); + this.label164.Name = "label164"; + this.label164.Size = new System.Drawing.Size(23, 13); + this.label164.TabIndex = 36; + this.label164.Text = "TX"; + // + // label162 + // + this.label162.AutoSize = true; + this.label162.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label162.Location = new System.Drawing.Point(94, 103); + this.label162.Name = "label162"; + this.label162.Size = new System.Drawing.Size(24, 13); + this.label162.TabIndex = 35; + this.label162.Text = "RX"; + // + // label161 + // + this.label161.AutoSize = true; + this.label161.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label161.Location = new System.Drawing.Point(51, 103); + this.label161.Name = "label161"; + this.label161.Size = new System.Drawing.Size(23, 13); + this.label161.TabIndex = 34; + this.label161.Text = "TX"; + // + // label160 + // + this.label160.AutoSize = true; + this.label160.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label160.Location = new System.Drawing.Point(102, 142); + this.label160.Name = "label160"; + this.label160.Size = new System.Drawing.Size(23, 13); + this.label160.TabIndex = 33; + this.label160.Text = "yes"; + // + // label159 + // + this.label159.AutoSize = true; + this.label159.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label159.Location = new System.Drawing.Point(138, 202); + this.label159.Name = "label159"; + this.label159.Size = new System.Drawing.Size(363, 13); + this.label159.TabIndex = 32; + this.label159.Text = "Constant frequency at aircraft: Both stations have to compensate RX + TX ."; + // + // label158 + // + this.label158.AutoSize = true; + this.label158.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label158.Location = new System.Drawing.Point(138, 182); + this.label158.Name = "label158"; + this.label158.Size = new System.Drawing.Size(343, 13); + this.label158.TabIndex = 31; + this.label158.Text = "Compensate both RX + TX at my station: DX station does nothing at all."; + // + // label157 + // + this.label157.AutoSize = true; + this.label157.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label157.Location = new System.Drawing.Point(138, 162); + this.label157.Name = "label157"; + this.label157.Size = new System.Drawing.Size(333, 13); + this.label157.TabIndex = 30; + this.label157.Text = "Constant RX: Both stations compensate their own TX frequency only."; + // + // label156 + // + this.label156.AutoSize = true; + this.label156.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label156.Location = new System.Drawing.Point(138, 142); + this.label156.Name = "label156"; + this.label156.Size = new System.Drawing.Size(333, 13); + this.label156.TabIndex = 29; + this.label156.Text = "Constant TX: Both stations compensate their own RX frequency only."; + // + // label155 + // + this.label155.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Italic, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label155.Location = new System.Drawing.Point(5, 24); + this.label155.Name = "label155"; + this.label155.Size = new System.Drawing.Size(267, 60); + this.label155.TabIndex = 28; + this.label155.Text = "You can see the dial frequency from rig here and choose how to compensate Doppler" + + " shift on your site and on DX site."; + // + // rb_Options_Doppler_Strategy_D + // + this.rb_Options_Doppler_Strategy_D.AutoSize = true; + this.rb_Options_Doppler_Strategy_D.Location = new System.Drawing.Point(16, 204); + this.rb_Options_Doppler_Strategy_D.Name = "rb_Options_Doppler_Strategy_D"; + this.rb_Options_Doppler_Strategy_D.Size = new System.Drawing.Size(14, 13); + this.rb_Options_Doppler_Strategy_D.TabIndex = 27; + this.rb_Options_Doppler_Strategy_D.UseVisualStyleBackColor = true; + this.rb_Options_Doppler_Strategy_D.CheckedChanged += new System.EventHandler(this.gb_Options_Doppler_CheckedChanged); + // + // rb_Options_Doppler_Strategy_C + // + this.rb_Options_Doppler_Strategy_C.AutoSize = true; + this.rb_Options_Doppler_Strategy_C.Location = new System.Drawing.Point(16, 182); + this.rb_Options_Doppler_Strategy_C.Name = "rb_Options_Doppler_Strategy_C"; + this.rb_Options_Doppler_Strategy_C.Size = new System.Drawing.Size(14, 13); + this.rb_Options_Doppler_Strategy_C.TabIndex = 26; + this.rb_Options_Doppler_Strategy_C.UseVisualStyleBackColor = true; + this.rb_Options_Doppler_Strategy_C.CheckedChanged += new System.EventHandler(this.gb_Options_Doppler_CheckedChanged); + // + // rb_Options_Doppler_Strategy_B + // + this.rb_Options_Doppler_Strategy_B.AutoSize = true; + this.rb_Options_Doppler_Strategy_B.Checked = true; + this.rb_Options_Doppler_Strategy_B.Location = new System.Drawing.Point(16, 162); + this.rb_Options_Doppler_Strategy_B.Name = "rb_Options_Doppler_Strategy_B"; + this.rb_Options_Doppler_Strategy_B.Size = new System.Drawing.Size(14, 13); + this.rb_Options_Doppler_Strategy_B.TabIndex = 25; + this.rb_Options_Doppler_Strategy_B.TabStop = true; + this.rb_Options_Doppler_Strategy_B.UseVisualStyleBackColor = true; + this.rb_Options_Doppler_Strategy_B.CheckedChanged += new System.EventHandler(this.gb_Options_Doppler_CheckedChanged); + // + // rb_Options_Doppler_Strategy_A + // + this.rb_Options_Doppler_Strategy_A.AutoSize = true; + this.rb_Options_Doppler_Strategy_A.Location = new System.Drawing.Point(16, 142); + this.rb_Options_Doppler_Strategy_A.Name = "rb_Options_Doppler_Strategy_A"; + this.rb_Options_Doppler_Strategy_A.Size = new System.Drawing.Size(14, 13); + this.rb_Options_Doppler_Strategy_A.TabIndex = 24; + this.rb_Options_Doppler_Strategy_A.UseVisualStyleBackColor = true; + this.rb_Options_Doppler_Strategy_A.CheckedChanged += new System.EventHandler(this.gb_Options_Doppler_CheckedChanged); + // + // label154 + // + this.label154.AutoSize = true; + this.label154.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label154.Location = new System.Drawing.Point(223, 85); + this.label154.Name = "label154"; + this.label154.Size = new System.Drawing.Size(134, 13); + this.label154.TabIndex = 23; + this.label154.Text = "Doppler Compensation"; + // + // label153 + // + this.label153.AutoSize = true; + this.label153.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label153.Location = new System.Drawing.Point(538, 85); + this.label153.Name = "label153"; + this.label153.Size = new System.Drawing.Size(68, 13); + this.label153.TabIndex = 22; + this.label153.Text = "DX Station"; + // + // label152 + // + this.label152.AutoSize = true; + this.label152.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label152.Location = new System.Drawing.Point(51, 85); + this.label152.Name = "label152"; + this.label152.Size = new System.Drawing.Size(67, 13); + this.label152.TabIndex = 21; + this.label152.Text = "My Station"; + // + // gb_Options_Track_File + // + this.gb_Options_Track_File.Controls.Add(this.rb_Options_Track_File_None); + this.gb_Options_Track_File.Controls.Add(this.rb_Options_Track_File_WSJT); + this.gb_Options_Track_File.Controls.Add(this.rb_Options_Track_File_Native); + this.gb_Options_Track_File.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic))), System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.gb_Options_Track_File.Location = new System.Drawing.Point(331, 160); + this.gb_Options_Track_File.Name = "gb_Options_Track_File"; + this.gb_Options_Track_File.Size = new System.Drawing.Size(325, 80); + this.gb_Options_Track_File.TabIndex = 12; + this.gb_Options_Track_File.TabStop = false; + this.gb_Options_Track_File.Text = "Rotator Control File Output"; + // + // rb_Options_Track_File_None + // + this.rb_Options_Track_File_None.AutoSize = true; + this.rb_Options_Track_File_None.Checked = true; + this.rb_Options_Track_File_None.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.rb_Options_Track_File_None.Location = new System.Drawing.Point(17, 19); + this.rb_Options_Track_File_None.Name = "rb_Options_Track_File_None"; + this.rb_Options_Track_File_None.Size = new System.Drawing.Size(51, 17); + this.rb_Options_Track_File_None.TabIndex = 12; + this.rb_Options_Track_File_None.TabStop = true; + this.rb_Options_Track_File_None.Tag = ""; + this.rb_Options_Track_File_None.Text = "None"; + this.rb_Options_Track_File_None.UseVisualStyleBackColor = true; + this.rb_Options_Track_File_None.CheckedChanged += new System.EventHandler(this.gb_Options_Track_File_CheckedChanged); + // + // rb_Options_Track_File_WSJT + // + this.rb_Options_Track_File_WSJT.AutoSize = true; + this.rb_Options_Track_File_WSJT.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.rb_Options_Track_File_WSJT.Location = new System.Drawing.Point(17, 55); + this.rb_Options_Track_File_WSJT.Name = "rb_Options_Track_File_WSJT"; + this.rb_Options_Track_File_WSJT.Size = new System.Drawing.Size(84, 17); + this.rb_Options_Track_File_WSJT.TabIndex = 7; + this.rb_Options_Track_File_WSJT.Tag = ""; + this.rb_Options_Track_File_WSJT.Text = "WSJT Az/El"; + this.rb_Options_Track_File_WSJT.UseVisualStyleBackColor = true; + this.rb_Options_Track_File_WSJT.CheckedChanged += new System.EventHandler(this.gb_Options_Track_File_CheckedChanged); + // + // rb_Options_Track_File_Native + // + this.rb_Options_Track_File_Native.AutoSize = true; + this.rb_Options_Track_File_Native.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.rb_Options_Track_File_Native.Location = new System.Drawing.Point(17, 37); + this.rb_Options_Track_File_Native.Name = "rb_Options_Track_File_Native"; + this.rb_Options_Track_File_Native.Size = new System.Drawing.Size(85, 17); + this.rb_Options_Track_File_Native.TabIndex = 6; + this.rb_Options_Track_File_Native.Tag = ""; + this.rb_Options_Track_File_Native.Text = "Native Az/El"; + this.rb_Options_Track_File_Native.UseVisualStyleBackColor = true; + this.rb_Options_Track_File_Native.CheckedChanged += new System.EventHandler(this.gb_Options_Track_File_CheckedChanged); + // + // gb_Options_Track_DDE + // + this.gb_Options_Track_DDE.Controls.Add(this.rb_Options_Track_DDE_None); + this.gb_Options_Track_DDE.Controls.Add(this.rb_Options_Track_DDE_HRD); + this.gb_Options_Track_DDE.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic))), System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.gb_Options_Track_DDE.Location = new System.Drawing.Point(16, 160); + this.gb_Options_Track_DDE.Name = "gb_Options_Track_DDE"; + this.gb_Options_Track_DDE.Size = new System.Drawing.Size(309, 80); + this.gb_Options_Track_DDE.TabIndex = 11; + this.gb_Options_Track_DDE.TabStop = false; + this.gb_Options_Track_DDE.Text = "Rotator Control DDE Output"; + // + // rb_Options_Track_DDE_None + // + this.rb_Options_Track_DDE_None.AutoSize = true; + this.rb_Options_Track_DDE_None.Checked = true; + this.rb_Options_Track_DDE_None.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.rb_Options_Track_DDE_None.Location = new System.Drawing.Point(17, 19); + this.rb_Options_Track_DDE_None.Name = "rb_Options_Track_DDE_None"; + this.rb_Options_Track_DDE_None.Size = new System.Drawing.Size(51, 17); + this.rb_Options_Track_DDE_None.TabIndex = 11; + this.rb_Options_Track_DDE_None.TabStop = true; + this.rb_Options_Track_DDE_None.Tag = ""; + this.rb_Options_Track_DDE_None.Text = "None"; + this.rb_Options_Track_DDE_None.UseVisualStyleBackColor = true; + this.rb_Options_Track_DDE_None.CheckedChanged += new System.EventHandler(this.gb_Options_Track_DDE_CheckedChanged); + // + // rb_Options_Track_DDE_HRD + // + this.rb_Options_Track_DDE_HRD.AutoSize = true; + this.rb_Options_Track_DDE_HRD.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.rb_Options_Track_DDE_HRD.Location = new System.Drawing.Point(17, 37); + this.rb_Options_Track_DDE_HRD.Name = "rb_Options_Track_DDE_HRD"; + this.rb_Options_Track_DDE_HRD.Size = new System.Drawing.Size(202, 17); + this.rb_Options_Track_DDE_HRD.TabIndex = 6; + this.rb_Options_Track_DDE_HRD.Tag = ""; + this.rb_Options_Track_DDE_HRD.Text = "Ham Radio Deluxe (HRDRotator.exe)"; + this.rb_Options_Track_DDE_HRD.UseVisualStyleBackColor = true; + this.rb_Options_Track_DDE_HRD.CheckedChanged += new System.EventHandler(this.gb_Options_Track_DDE_CheckedChanged); + // + // gb_Options_Track_UDP + // + this.gb_Options_Track_UDP.Controls.Add(this.tb_Options_Track_UDP_AirScout_Port); + this.gb_Options_Track_UDP.Controls.Add(this.tb_Options_Track_UDP_WinTest_Port); + this.gb_Options_Track_UDP.Controls.Add(this.label90); + this.gb_Options_Track_UDP.Controls.Add(this.label89); + this.gb_Options_Track_UDP.Controls.Add(this.rb_Options_Track_UDP_None); + this.gb_Options_Track_UDP.Controls.Add(this.rb_Options_Track_UDP_AirScout); + this.gb_Options_Track_UDP.Controls.Add(this.rb_Options_Track_UDP_WinTest); + this.gb_Options_Track_UDP.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic))), System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.gb_Options_Track_UDP.Location = new System.Drawing.Point(331, 64); + this.gb_Options_Track_UDP.Name = "gb_Options_Track_UDP"; + this.gb_Options_Track_UDP.Size = new System.Drawing.Size(325, 90); + this.gb_Options_Track_UDP.TabIndex = 10; + this.gb_Options_Track_UDP.TabStop = false; + this.gb_Options_Track_UDP.Text = "Rotator Control Network Output"; + // + // tb_Options_Track_UDP_AirScout_Port + // + this.tb_Options_Track_UDP_AirScout_Port.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Track_UDP_AirScout_Port", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.tb_Options_Track_UDP_AirScout_Port.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_Options_Track_UDP_AirScout_Port.FormatSpecifier = "F0"; + this.tb_Options_Track_UDP_AirScout_Port.Location = new System.Drawing.Point(254, 60); + this.tb_Options_Track_UDP_AirScout_Port.MaxValue = 0; + this.tb_Options_Track_UDP_AirScout_Port.MinValue = 0; + this.tb_Options_Track_UDP_AirScout_Port.Name = "tb_Options_Track_UDP_AirScout_Port"; + this.tb_Options_Track_UDP_AirScout_Port.Size = new System.Drawing.Size(43, 22); + this.tb_Options_Track_UDP_AirScout_Port.TabIndex = 17; + this.tb_Options_Track_UDP_AirScout_Port.Text = "9872"; + this.tb_Options_Track_UDP_AirScout_Port.Value = global::AirScout.Properties.Settings.Default.Track_UDP_AirScout_Port; + // + // tb_Options_Track_UDP_WinTest_Port + // + this.tb_Options_Track_UDP_WinTest_Port.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Track_UDP_WinTest_Port", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.tb_Options_Track_UDP_WinTest_Port.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_Options_Track_UDP_WinTest_Port.FormatSpecifier = "F0"; + this.tb_Options_Track_UDP_WinTest_Port.Location = new System.Drawing.Point(254, 37); + this.tb_Options_Track_UDP_WinTest_Port.MaxValue = 0; + this.tb_Options_Track_UDP_WinTest_Port.MinValue = 0; + this.tb_Options_Track_UDP_WinTest_Port.Name = "tb_Options_Track_UDP_WinTest_Port"; + this.tb_Options_Track_UDP_WinTest_Port.Size = new System.Drawing.Size(43, 22); + this.tb_Options_Track_UDP_WinTest_Port.TabIndex = 16; + this.tb_Options_Track_UDP_WinTest_Port.Text = "9871"; + this.tb_Options_Track_UDP_WinTest_Port.Value = global::AirScout.Properties.Settings.Default.Track_UDP_WinTest_Port; // // label90 // this.label90.AutoSize = true; this.label90.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label90.Location = new System.Drawing.Point(491, 75); + this.label90.Location = new System.Drawing.Point(219, 64); this.label90.Name = "label90"; this.label90.Size = new System.Drawing.Size(29, 13); this.label90.TabIndex = 15; @@ -4182,34 +6066,77 @@ // this.label89.AutoSize = true; this.label89.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label89.Location = new System.Drawing.Point(491, 46); + this.label89.Location = new System.Drawing.Point(219, 41); this.label89.Name = "label89"; this.label89.Size = new System.Drawing.Size(29, 13); this.label89.TabIndex = 13; this.label89.Text = "Port:"; // - // groupBox33 + // rb_Options_Track_UDP_None // - this.groupBox33.Controls.Add(this.tb_Options_Track_Serial_Baudrate); - this.groupBox33.Controls.Add(this.rb_Options_Track_Serial_None); - this.groupBox33.Controls.Add(this.label88); - this.groupBox33.Controls.Add(this.label87); - this.groupBox33.Controls.Add(this.tb_Options_Track_Serial_Port); - this.groupBox33.Controls.Add(this.rb_Options_Track_Serial_GS232_AZEL); - this.groupBox33.Controls.Add(this.rb_Options_Track_Serial_GS232_AZ); - this.groupBox33.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic))), System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.groupBox33.Location = new System.Drawing.Point(16, 64); - this.groupBox33.Name = "groupBox33"; - this.groupBox33.Size = new System.Drawing.Size(619, 87); - this.groupBox33.TabIndex = 9; - this.groupBox33.TabStop = false; - this.groupBox33.Text = "Serial Output"; + this.rb_Options_Track_UDP_None.AutoSize = true; + this.rb_Options_Track_UDP_None.Checked = true; + this.rb_Options_Track_UDP_None.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.rb_Options_Track_UDP_None.Location = new System.Drawing.Point(17, 19); + this.rb_Options_Track_UDP_None.Name = "rb_Options_Track_UDP_None"; + this.rb_Options_Track_UDP_None.Size = new System.Drawing.Size(51, 17); + this.rb_Options_Track_UDP_None.TabIndex = 11; + this.rb_Options_Track_UDP_None.TabStop = true; + this.rb_Options_Track_UDP_None.Tag = ""; + this.rb_Options_Track_UDP_None.Text = "None"; + this.rb_Options_Track_UDP_None.UseVisualStyleBackColor = true; + this.rb_Options_Track_UDP_None.CheckedChanged += new System.EventHandler(this.gb_Options_Track_UDP_CheckedChanged); + // + // rb_Options_Track_UDP_WinTest + // + this.rb_Options_Track_UDP_WinTest.AutoSize = true; + this.rb_Options_Track_UDP_WinTest.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.rb_Options_Track_UDP_WinTest.Location = new System.Drawing.Point(17, 42); + this.rb_Options_Track_UDP_WinTest.Name = "rb_Options_Track_UDP_WinTest"; + this.rb_Options_Track_UDP_WinTest.Size = new System.Drawing.Size(188, 17); + this.rb_Options_Track_UDP_WinTest.TabIndex = 6; + this.rb_Options_Track_UDP_WinTest.Tag = ""; + this.rb_Options_Track_UDP_WinTest.Text = "UDP Broadcast (Win-Test) Az only"; + this.rb_Options_Track_UDP_WinTest.UseVisualStyleBackColor = true; + this.rb_Options_Track_UDP_WinTest.CheckedChanged += new System.EventHandler(this.gb_Options_Track_UDP_CheckedChanged); + // + // gb_Options_Track_Serial + // + this.gb_Options_Track_Serial.Controls.Add(this.tb_Options_Track_Serial_Baudrate); + this.gb_Options_Track_Serial.Controls.Add(this.rb_Options_Track_Serial_None); + this.gb_Options_Track_Serial.Controls.Add(this.label88); + this.gb_Options_Track_Serial.Controls.Add(this.label87); + this.gb_Options_Track_Serial.Controls.Add(this.tb_Options_Track_Serial_Port); + this.gb_Options_Track_Serial.Controls.Add(this.rb_Options_Track_Serial_GS232_AZEL); + this.gb_Options_Track_Serial.Controls.Add(this.rb_Options_Track_Serial_GS232_AZ); + this.gb_Options_Track_Serial.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic))), System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.gb_Options_Track_Serial.Location = new System.Drawing.Point(16, 64); + this.gb_Options_Track_Serial.Name = "gb_Options_Track_Serial"; + this.gb_Options_Track_Serial.Size = new System.Drawing.Size(309, 90); + this.gb_Options_Track_Serial.TabIndex = 9; + this.gb_Options_Track_Serial.TabStop = false; + this.gb_Options_Track_Serial.Text = "Rotator Control Serial Output"; + // + // rb_Options_Track_Serial_None + // + this.rb_Options_Track_Serial_None.AutoSize = true; + this.rb_Options_Track_Serial_None.Checked = true; + this.rb_Options_Track_Serial_None.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.rb_Options_Track_Serial_None.Location = new System.Drawing.Point(17, 19); + this.rb_Options_Track_Serial_None.Name = "rb_Options_Track_Serial_None"; + this.rb_Options_Track_Serial_None.Size = new System.Drawing.Size(51, 17); + this.rb_Options_Track_Serial_None.TabIndex = 10; + this.rb_Options_Track_Serial_None.TabStop = true; + this.rb_Options_Track_Serial_None.Tag = ""; + this.rb_Options_Track_Serial_None.Text = "None"; + this.rb_Options_Track_Serial_None.UseVisualStyleBackColor = true; + this.rb_Options_Track_Serial_None.CheckedChanged += new System.EventHandler(this.gb_Options_Track_Serial_CheckedChanged); // // label88 // this.label88.AutoSize = true; this.label88.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label88.Location = new System.Drawing.Point(467, 17); + this.label88.Location = new System.Drawing.Point(128, 44); this.label88.Name = "label88"; this.label88.Size = new System.Drawing.Size(53, 13); this.label88.TabIndex = 9; @@ -4219,24 +6146,550 @@ // this.label87.AutoSize = true; this.label87.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label87.Location = new System.Drawing.Point(373, 17); + this.label87.Location = new System.Drawing.Point(134, 21); this.label87.Name = "label87"; this.label87.Size = new System.Drawing.Size(29, 13); this.label87.TabIndex = 7; this.label87.Text = "Port:"; // + // rb_Options_Track_Serial_GS232_AZEL + // + this.rb_Options_Track_Serial_GS232_AZEL.AutoSize = true; + this.rb_Options_Track_Serial_GS232_AZEL.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.rb_Options_Track_Serial_GS232_AZEL.Location = new System.Drawing.Point(17, 65); + this.rb_Options_Track_Serial_GS232_AZEL.Name = "rb_Options_Track_Serial_GS232_AZEL"; + this.rb_Options_Track_Serial_GS232_AZEL.Size = new System.Drawing.Size(97, 17); + this.rb_Options_Track_Serial_GS232_AZEL.TabIndex = 5; + this.rb_Options_Track_Serial_GS232_AZEL.Tag = ""; + this.rb_Options_Track_Serial_GS232_AZEL.Text = "GS-232A Az/El"; + this.rb_Options_Track_Serial_GS232_AZEL.UseVisualStyleBackColor = true; + this.rb_Options_Track_Serial_GS232_AZEL.CheckedChanged += new System.EventHandler(this.gb_Options_Track_Serial_CheckedChanged); + // + // rb_Options_Track_Serial_GS232_AZ + // + this.rb_Options_Track_Serial_GS232_AZ.AutoSize = true; + this.rb_Options_Track_Serial_GS232_AZ.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.rb_Options_Track_Serial_GS232_AZ.Location = new System.Drawing.Point(17, 42); + this.rb_Options_Track_Serial_GS232_AZ.Name = "rb_Options_Track_Serial_GS232_AZ"; + this.rb_Options_Track_Serial_GS232_AZ.Size = new System.Drawing.Size(105, 17); + this.rb_Options_Track_Serial_GS232_AZ.TabIndex = 0; + this.rb_Options_Track_Serial_GS232_AZ.Tag = ""; + this.rb_Options_Track_Serial_GS232_AZ.Text = "GS-232A Az only"; + this.rb_Options_Track_Serial_GS232_AZ.UseVisualStyleBackColor = true; + this.rb_Options_Track_Serial_GS232_AZ.CheckedChanged += new System.EventHandler(this.gb_Options_Track_Serial_CheckedChanged); + // // groupBox28 // + this.groupBox28.Controls.Add(this.label186); + this.groupBox28.Controls.Add(this.label187); + this.groupBox28.Controls.Add(this.tb_Options_Track_Offset); + this.groupBox28.Controls.Add(this.label185); + this.groupBox28.Controls.Add(this.label151); + this.groupBox28.Controls.Add(this.int32TextBox2); this.groupBox28.Controls.Add(this.cb_Options_Track_Activate); this.groupBox28.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic))), System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.groupBox28.Location = new System.Drawing.Point(3, 13); + this.groupBox28.Location = new System.Drawing.Point(16, 13); this.groupBox28.Name = "groupBox28"; - this.groupBox28.Size = new System.Drawing.Size(632, 45); + this.groupBox28.Size = new System.Drawing.Size(640, 45); this.groupBox28.TabIndex = 8; this.groupBox28.TabStop = false; - this.groupBox28.Text = "Activate Antenna Tracking"; + this.groupBox28.Text = "Activate Tracking"; this.groupBox28.Enter += new System.EventHandler(this.tab_Options_Track_Enter); // + // label186 + // + this.label186.AutoSize = true; + this.label186.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label186.Location = new System.Drawing.Point(622, 20); + this.label186.Name = "label186"; + this.label186.Size = new System.Drawing.Size(12, 13); + this.label186.TabIndex = 59; + this.label186.Text = "s"; + // + // label187 + // + this.label187.AutoSize = true; + this.label187.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label187.Location = new System.Drawing.Point(454, 20); + this.label187.Name = "label187"; + this.label187.Size = new System.Drawing.Size(109, 13); + this.label187.TabIndex = 58; + this.label187.Text = "Tracking Time Offset:"; + // + // label185 + // + this.label185.AutoSize = true; + this.label185.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label185.Location = new System.Drawing.Point(386, 21); + this.label185.Name = "label185"; + this.label185.Size = new System.Drawing.Size(20, 13); + this.label185.TabIndex = 56; + this.label185.Text = "ms"; + // + // label151 + // + this.label151.AutoSize = true; + this.label151.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label151.Location = new System.Drawing.Point(205, 20); + this.label151.Name = "label151"; + this.label151.Size = new System.Drawing.Size(104, 13); + this.label151.TabIndex = 55; + this.label151.Text = "Track Refresh Rate:"; + // + // tab_Options_CAT + // + this.tab_Options_CAT.BackColor = System.Drawing.SystemColors.Control; + this.tab_Options_CAT.Controls.Add(this.gb_Options_CAT_PortSettings); + this.tab_Options_CAT.Controls.Add(this.gb_Options_CAT_RigType); + this.tab_Options_CAT.Controls.Add(this.gb_Options_CAT_OperatingInstructions); + this.tab_Options_CAT.Controls.Add(this.groupBox57); + this.tab_Options_CAT.Location = new System.Drawing.Point(4, 40); + this.tab_Options_CAT.Name = "tab_Options_CAT"; + this.tab_Options_CAT.Size = new System.Drawing.Size(671, 480); + this.tab_Options_CAT.TabIndex = 20; + this.tab_Options_CAT.Text = "CAT"; + this.tab_Options_CAT.Enter += new System.EventHandler(this.tab_Options_CAT_Enter); + // + // gb_Options_CAT_PortSettings + // + this.gb_Options_CAT_PortSettings.Controls.Add(this.ud_Options_CAT_Timeout); + this.gb_Options_CAT_PortSettings.Controls.Add(this.label149); + this.gb_Options_CAT_PortSettings.Controls.Add(this.ud_Options_CAT_Poll); + this.gb_Options_CAT_PortSettings.Controls.Add(this.label190); + this.gb_Options_CAT_PortSettings.Controls.Add(this.label191); + this.gb_Options_CAT_PortSettings.Controls.Add(this.cb_Options_CAT_DTR); + this.gb_Options_CAT_PortSettings.Controls.Add(this.label192); + this.gb_Options_CAT_PortSettings.Controls.Add(this.cb_Options_CAT_RTS); + this.gb_Options_CAT_PortSettings.Controls.Add(this.label193); + this.gb_Options_CAT_PortSettings.Controls.Add(this.cb_Options_CAT_StopBits); + this.gb_Options_CAT_PortSettings.Controls.Add(this.label194); + this.gb_Options_CAT_PortSettings.Controls.Add(this.cb_Options_CAT_Parity); + this.gb_Options_CAT_PortSettings.Controls.Add(this.label195); + this.gb_Options_CAT_PortSettings.Controls.Add(this.cb_Options_CAT_DataBits); + this.gb_Options_CAT_PortSettings.Controls.Add(this.label196); + this.gb_Options_CAT_PortSettings.Controls.Add(this.cb_Options_CAT_Baudrate); + this.gb_Options_CAT_PortSettings.Controls.Add(this.label197); + this.gb_Options_CAT_PortSettings.Controls.Add(this.cb_Options_CAT_PortName); + this.gb_Options_CAT_PortSettings.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic))), System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.gb_Options_CAT_PortSettings.Location = new System.Drawing.Point(423, 67); + this.gb_Options_CAT_PortSettings.Name = "gb_Options_CAT_PortSettings"; + this.gb_Options_CAT_PortSettings.Size = new System.Drawing.Size(231, 277); + this.gb_Options_CAT_PortSettings.TabIndex = 3; + this.gb_Options_CAT_PortSettings.TabStop = false; + this.gb_Options_CAT_PortSettings.Text = "Serial Port Settings"; + // + // ud_Options_CAT_Timeout + // + this.ud_Options_CAT_Timeout.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.ud_Options_CAT_Timeout.Increment = new decimal(new int[] { + 100, + 0, + 0, + 0}); + this.ud_Options_CAT_Timeout.Location = new System.Drawing.Point(146, 235); + this.ud_Options_CAT_Timeout.Maximum = new decimal(new int[] { + 10000, + 0, + 0, + 0}); + this.ud_Options_CAT_Timeout.Minimum = new decimal(new int[] { + 100, + 0, + 0, + 0}); + this.ud_Options_CAT_Timeout.Name = "ud_Options_CAT_Timeout"; + this.ud_Options_CAT_Timeout.Size = new System.Drawing.Size(69, 20); + this.ud_Options_CAT_Timeout.TabIndex = 46; + this.ud_Options_CAT_Timeout.Value = new decimal(new int[] { + 5000, + 0, + 0, + 0}); + this.ud_Options_CAT_Timeout.ValueChanged += new System.EventHandler(this.ud_Options_CAT_Timeout_ValueChanged); + // + // label149 + // + this.label149.AutoSize = true; + this.label149.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label149.Location = new System.Drawing.Point(30, 237); + this.label149.Name = "label149"; + this.label149.Size = new System.Drawing.Size(70, 13); + this.label149.TabIndex = 47; + this.label149.Text = "Timeout [ms]:"; + // + // ud_Options_CAT_Poll + // + this.ud_Options_CAT_Poll.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.ud_Options_CAT_Poll.Increment = new decimal(new int[] { + 100, + 0, + 0, + 0}); + this.ud_Options_CAT_Poll.Location = new System.Drawing.Point(146, 209); + this.ud_Options_CAT_Poll.Maximum = new decimal(new int[] { + 10000, + 0, + 0, + 0}); + this.ud_Options_CAT_Poll.Minimum = new decimal(new int[] { + 100, + 0, + 0, + 0}); + this.ud_Options_CAT_Poll.Name = "ud_Options_CAT_Poll"; + this.ud_Options_CAT_Poll.Size = new System.Drawing.Size(69, 20); + this.ud_Options_CAT_Poll.TabIndex = 29; + this.ud_Options_CAT_Poll.Value = new decimal(new int[] { + 500, + 0, + 0, + 0}); + this.ud_Options_CAT_Poll.ValueChanged += new System.EventHandler(this.ud_Options_CAT_Poll_ValueChanged); + // + // label190 + // + this.label190.AutoSize = true; + this.label190.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label190.Location = new System.Drawing.Point(30, 211); + this.label190.Name = "label190"; + this.label190.Size = new System.Drawing.Size(64, 13); + this.label190.TabIndex = 45; + this.label190.Text = "Poll Int [ms]:"; + // + // label191 + // + this.label191.AutoSize = true; + this.label191.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label191.Location = new System.Drawing.Point(30, 184); + this.label191.Name = "label191"; + this.label191.Size = new System.Drawing.Size(33, 13); + this.label191.TabIndex = 44; + this.label191.Text = "DTR:"; + // + // cb_Options_CAT_DTR + // + this.cb_Options_CAT_DTR.DisplayMember = "Text"; + this.cb_Options_CAT_DTR.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cb_Options_CAT_DTR.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_CAT_DTR.FormattingEnabled = true; + this.cb_Options_CAT_DTR.Location = new System.Drawing.Point(108, 181); + this.cb_Options_CAT_DTR.Name = "cb_Options_CAT_DTR"; + this.cb_Options_CAT_DTR.Size = new System.Drawing.Size(107, 21); + this.cb_Options_CAT_DTR.TabIndex = 43; + this.cb_Options_CAT_DTR.ValueMember = "Value"; + this.cb_Options_CAT_DTR.SelectedIndexChanged += new System.EventHandler(this.cb_Options_CAT_DTR_SelectedIndexChanged); + // + // label192 + // + this.label192.AutoSize = true; + this.label192.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label192.Location = new System.Drawing.Point(30, 157); + this.label192.Name = "label192"; + this.label192.Size = new System.Drawing.Size(32, 13); + this.label192.TabIndex = 42; + this.label192.Text = "RTS:"; + // + // cb_Options_CAT_RTS + // + this.cb_Options_CAT_RTS.DisplayMember = "Text"; + this.cb_Options_CAT_RTS.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cb_Options_CAT_RTS.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_CAT_RTS.FormattingEnabled = true; + this.cb_Options_CAT_RTS.Location = new System.Drawing.Point(108, 154); + this.cb_Options_CAT_RTS.Name = "cb_Options_CAT_RTS"; + this.cb_Options_CAT_RTS.Size = new System.Drawing.Size(107, 21); + this.cb_Options_CAT_RTS.TabIndex = 41; + this.cb_Options_CAT_RTS.ValueMember = "Value"; + this.cb_Options_CAT_RTS.SelectedIndexChanged += new System.EventHandler(this.cb_Options_CAT_RTS_SelectedIndexChanged); + // + // label193 + // + this.label193.AutoSize = true; + this.label193.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label193.Location = new System.Drawing.Point(30, 130); + this.label193.Name = "label193"; + this.label193.Size = new System.Drawing.Size(48, 13); + this.label193.TabIndex = 40; + this.label193.Text = "Stopbits:"; + // + // cb_Options_CAT_StopBits + // + this.cb_Options_CAT_StopBits.DisplayMember = "Text"; + this.cb_Options_CAT_StopBits.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cb_Options_CAT_StopBits.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_CAT_StopBits.FormattingEnabled = true; + this.cb_Options_CAT_StopBits.Location = new System.Drawing.Point(108, 127); + this.cb_Options_CAT_StopBits.Name = "cb_Options_CAT_StopBits"; + this.cb_Options_CAT_StopBits.Size = new System.Drawing.Size(107, 21); + this.cb_Options_CAT_StopBits.TabIndex = 39; + this.cb_Options_CAT_StopBits.ValueMember = "Value"; + this.cb_Options_CAT_StopBits.SelectedIndexChanged += new System.EventHandler(this.cb_Options_CAT_Stopbits_SelectedIndexChanged); + // + // label194 + // + this.label194.AutoSize = true; + this.label194.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label194.Location = new System.Drawing.Point(30, 103); + this.label194.Name = "label194"; + this.label194.Size = new System.Drawing.Size(36, 13); + this.label194.TabIndex = 38; + this.label194.Text = "Parity:"; + // + // cb_Options_CAT_Parity + // + this.cb_Options_CAT_Parity.DisplayMember = "Text"; + this.cb_Options_CAT_Parity.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cb_Options_CAT_Parity.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_CAT_Parity.FormattingEnabled = true; + this.cb_Options_CAT_Parity.Location = new System.Drawing.Point(108, 100); + this.cb_Options_CAT_Parity.Name = "cb_Options_CAT_Parity"; + this.cb_Options_CAT_Parity.Size = new System.Drawing.Size(107, 21); + this.cb_Options_CAT_Parity.TabIndex = 37; + this.cb_Options_CAT_Parity.ValueMember = "Value"; + this.cb_Options_CAT_Parity.SelectedIndexChanged += new System.EventHandler(this.cb_Parity_SelectedIndexChanged); + // + // label195 + // + this.label195.AutoSize = true; + this.label195.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label195.Location = new System.Drawing.Point(30, 76); + this.label195.Name = "label195"; + this.label195.Size = new System.Drawing.Size(49, 13); + this.label195.TabIndex = 36; + this.label195.Text = "Databits:"; + // + // cb_Options_CAT_DataBits + // + this.cb_Options_CAT_DataBits.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cb_Options_CAT_DataBits.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_CAT_DataBits.FormattingEnabled = true; + this.cb_Options_CAT_DataBits.Location = new System.Drawing.Point(108, 73); + this.cb_Options_CAT_DataBits.Name = "cb_Options_CAT_DataBits"; + this.cb_Options_CAT_DataBits.Size = new System.Drawing.Size(107, 21); + this.cb_Options_CAT_DataBits.TabIndex = 35; + this.cb_Options_CAT_DataBits.SelectedIndexChanged += new System.EventHandler(this.cb_Options_CAT_DataBits_SelectedIndexChanged); + // + // label196 + // + this.label196.AutoSize = true; + this.label196.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label196.Location = new System.Drawing.Point(30, 49); + this.label196.Name = "label196"; + this.label196.Size = new System.Drawing.Size(53, 13); + this.label196.TabIndex = 34; + this.label196.Text = "Baudrate:"; + // + // cb_Options_CAT_Baudrate + // + this.cb_Options_CAT_Baudrate.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cb_Options_CAT_Baudrate.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_CAT_Baudrate.FormattingEnabled = true; + this.cb_Options_CAT_Baudrate.Location = new System.Drawing.Point(108, 46); + this.cb_Options_CAT_Baudrate.Name = "cb_Options_CAT_Baudrate"; + this.cb_Options_CAT_Baudrate.Size = new System.Drawing.Size(107, 21); + this.cb_Options_CAT_Baudrate.TabIndex = 33; + this.cb_Options_CAT_Baudrate.SelectedIndexChanged += new System.EventHandler(this.cb_Options_CAT_Baudrate_SelectedIndexChanged); + // + // label197 + // + this.label197.AutoSize = true; + this.label197.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label197.Location = new System.Drawing.Point(30, 22); + this.label197.Name = "label197"; + this.label197.Size = new System.Drawing.Size(57, 13); + this.label197.TabIndex = 32; + this.label197.Text = "PortName:"; + // + // cb_Options_CAT_PortName + // + this.cb_Options_CAT_PortName.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cb_Options_CAT_PortName.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_CAT_PortName.FormattingEnabled = true; + this.cb_Options_CAT_PortName.Location = new System.Drawing.Point(108, 19); + this.cb_Options_CAT_PortName.Name = "cb_Options_CAT_PortName"; + this.cb_Options_CAT_PortName.Size = new System.Drawing.Size(107, 21); + this.cb_Options_CAT_PortName.TabIndex = 31; + this.cb_Options_CAT_PortName.SelectedIndexChanged += new System.EventHandler(this.cb_Options_CAT_PortName_SelectedIndexChanged); + // + // gb_Options_CAT_RigType + // + this.gb_Options_CAT_RigType.Controls.Add(this.richTextBox5); + this.gb_Options_CAT_RigType.Controls.Add(this.richTextBox4); + this.gb_Options_CAT_RigType.Controls.Add(this.richTextBox3); + this.gb_Options_CAT_RigType.Controls.Add(this.label199); + this.gb_Options_CAT_RigType.Controls.Add(this.richTextBox2); + this.gb_Options_CAT_RigType.Controls.Add(this.cb_Options_CAT_Rig); + this.gb_Options_CAT_RigType.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic))), System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.gb_Options_CAT_RigType.Location = new System.Drawing.Point(21, 67); + this.gb_Options_CAT_RigType.Name = "gb_Options_CAT_RigType"; + this.gb_Options_CAT_RigType.Size = new System.Drawing.Size(396, 277); + this.gb_Options_CAT_RigType.TabIndex = 2; + this.gb_Options_CAT_RigType.TabStop = false; + this.gb_Options_CAT_RigType.Text = "Rig Type"; + // + // richTextBox5 + // + this.richTextBox5.BackColor = System.Drawing.SystemColors.Control; + this.richTextBox5.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.richTextBox5.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Italic, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.richTextBox5.ForeColor = System.Drawing.Color.RoyalBlue; + this.richTextBox5.Location = new System.Drawing.Point(18, 121); + this.richTextBox5.Name = "richTextBox5"; + this.richTextBox5.ReadOnly = true; + this.richTextBox5.Size = new System.Drawing.Size(372, 32); + this.richTextBox5.TabIndex = 35; + this.richTextBox5.Text = "2. ScoutBase.CAT via serial port (Windows/Linux)\n(with OmniRig rig definitions, r" + + "equires exclusive access to rig)"; + // + // richTextBox4 + // + this.richTextBox4.BackColor = System.Drawing.SystemColors.Control; + this.richTextBox4.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.richTextBox4.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Italic, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.richTextBox4.Location = new System.Drawing.Point(18, 170); + this.richTextBox4.Name = "richTextBox4"; + this.richTextBox4.ReadOnly = true; + this.richTextBox4.Size = new System.Drawing.Size(372, 96); + this.richTextBox4.TabIndex = 34; + this.richTextBox4.Text = resources.GetString("richTextBox4.Text"); + // + // richTextBox3 + // + this.richTextBox3.BackColor = System.Drawing.SystemColors.Control; + this.richTextBox3.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.richTextBox3.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Italic, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.richTextBox3.ForeColor = System.Drawing.Color.RoyalBlue; + this.richTextBox3.Location = new System.Drawing.Point(18, 77); + this.richTextBox3.Name = "richTextBox3"; + this.richTextBox3.ReadOnly = true; + this.richTextBox3.Size = new System.Drawing.Size(372, 43); + this.richTextBox3.TabIndex = 32; + this.richTextBox3.Text = "1. OmniRig V1.19 or V2.x via ActiveX (Windows only)\n(multiple access to rig from " + + "different applications possible)"; + // + // label199 + // + this.label199.AutoSize = true; + this.label199.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label199.Location = new System.Drawing.Point(27, 22); + this.label199.Name = "label199"; + this.label199.Size = new System.Drawing.Size(155, 13); + this.label199.TabIndex = 31; + this.label199.Text = "Select CAT-Engine & Rig-Type:"; + this.label199.UseMnemonic = false; + // + // richTextBox2 + // + this.richTextBox2.BackColor = System.Drawing.SystemColors.Control; + this.richTextBox2.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.richTextBox2.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Italic, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.richTextBox2.Location = new System.Drawing.Point(18, 49); + this.richTextBox2.Name = "richTextBox2"; + this.richTextBox2.ReadOnly = true; + this.richTextBox2.Size = new System.Drawing.Size(372, 18); + this.richTextBox2.TabIndex = 1; + this.richTextBox2.Text = "AirScout supports the following CAT-Engines:"; + // + // cb_Options_CAT_Rig + // + this.cb_Options_CAT_Rig.DisplayMember = "Type"; + this.cb_Options_CAT_Rig.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cb_Options_CAT_Rig.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_CAT_Rig.FormattingEnabled = true; + this.cb_Options_CAT_Rig.Location = new System.Drawing.Point(194, 19); + this.cb_Options_CAT_Rig.Name = "cb_Options_CAT_Rig"; + this.cb_Options_CAT_Rig.Size = new System.Drawing.Size(170, 21); + this.cb_Options_CAT_Rig.TabIndex = 0; + this.cb_Options_CAT_Rig.ValueMember = "Type"; + this.cb_Options_CAT_Rig.SelectedIndexChanged += new System.EventHandler(this.cb_Options_CAT_Rig_SelectedIndexChanged); + // + // gb_Options_CAT_OperatingInstructions + // + this.gb_Options_CAT_OperatingInstructions.Controls.Add(this.richTextBox1); + this.gb_Options_CAT_OperatingInstructions.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic))), System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.gb_Options_CAT_OperatingInstructions.Location = new System.Drawing.Point(21, 350); + this.gb_Options_CAT_OperatingInstructions.Name = "gb_Options_CAT_OperatingInstructions"; + this.gb_Options_CAT_OperatingInstructions.Size = new System.Drawing.Size(633, 121); + this.gb_Options_CAT_OperatingInstructions.TabIndex = 1; + this.gb_Options_CAT_OperatingInstructions.TabStop = false; + this.gb_Options_CAT_OperatingInstructions.Text = "Operating Instructions"; + // + // richTextBox1 + // + this.richTextBox1.BackColor = System.Drawing.SystemColors.Control; + this.richTextBox1.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.richTextBox1.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Italic, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.richTextBox1.Location = new System.Drawing.Point(18, 19); + this.richTextBox1.Name = "richTextBox1"; + this.richTextBox1.ReadOnly = true; + this.richTextBox1.Size = new System.Drawing.Size(609, 109); + this.richTextBox1.TabIndex = 0; + this.richTextBox1.Text = resources.GetString("richTextBox1.Text"); + // + // groupBox57 + // + this.groupBox57.Controls.Add(this.ud_Options_CAT_Update); + this.groupBox57.Controls.Add(this.label189); + this.groupBox57.Controls.Add(this.cb_Options_CAT_Activate); + this.groupBox57.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic))), System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.groupBox57.Location = new System.Drawing.Point(20, 12); + this.groupBox57.Name = "groupBox57"; + this.groupBox57.Size = new System.Drawing.Size(634, 49); + this.groupBox57.TabIndex = 0; + this.groupBox57.TabStop = false; + this.groupBox57.Text = "Activate CAT Interface"; + // + // ud_Options_CAT_Update + // + this.ud_Options_CAT_Update.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.ud_Options_CAT_Update.Increment = new decimal(new int[] { + 100, + 0, + 0, + 0}); + this.ud_Options_CAT_Update.Location = new System.Drawing.Point(549, 18); + this.ud_Options_CAT_Update.Maximum = new decimal(new int[] { + 10000, + 0, + 0, + 0}); + this.ud_Options_CAT_Update.Minimum = new decimal(new int[] { + 100, + 0, + 0, + 0}); + this.ud_Options_CAT_Update.Name = "ud_Options_CAT_Update"; + this.ud_Options_CAT_Update.Size = new System.Drawing.Size(69, 20); + this.ud_Options_CAT_Update.TabIndex = 61; + this.ud_Options_CAT_Update.Value = new decimal(new int[] { + 500, + 0, + 0, + 0}); + // + // label189 + // + this.label189.AutoSize = true; + this.label189.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label189.Location = new System.Drawing.Point(433, 20); + this.label189.Name = "label189"; + this.label189.Size = new System.Drawing.Size(93, 13); + this.label189.TabIndex = 60; + this.label189.Text = "CAT Refresh [ms]:"; + // + // cb_Options_CAT_Activate + // + this.cb_Options_CAT_Activate.AutoSize = true; + this.cb_Options_CAT_Activate.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_CAT_Activate.Location = new System.Drawing.Point(19, 19); + this.cb_Options_CAT_Activate.Name = "cb_Options_CAT_Activate"; + this.cb_Options_CAT_Activate.Size = new System.Drawing.Size(134, 17); + this.cb_Options_CAT_Activate.TabIndex = 2; + this.cb_Options_CAT_Activate.Tag = ""; + this.cb_Options_CAT_Activate.Text = "Activate CAT Interface"; + this.cb_Options_CAT_Activate.UseVisualStyleBackColor = true; + this.cb_Options_CAT_Activate.CheckedChanged += new System.EventHandler(this.cb_Options_CAT_Activate_CheckedChanged); + // // tab_Options_Watchlist // this.tab_Options_Watchlist.BackColor = System.Drawing.SystemColors.Control; @@ -4266,6 +6719,26 @@ this.groupBox50.TabStop = false; this.groupBox50.Text = "Info"; // + // pictureBox3 + // + this.pictureBox3.Image = global::AirScout.Properties.Resources.AirScout_Watchlist; + this.pictureBox3.Location = new System.Drawing.Point(520, 19); + this.pictureBox3.Name = "pictureBox3"; + this.pictureBox3.Size = new System.Drawing.Size(113, 344); + this.pictureBox3.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage; + this.pictureBox3.TabIndex = 3; + this.pictureBox3.TabStop = false; + // + // pictureBox2 + // + this.pictureBox2.Image = global::AirScout.Properties.Resources.AirScout_Marker; + this.pictureBox2.Location = new System.Drawing.Point(281, 36); + this.pictureBox2.Name = "pictureBox2"; + this.pictureBox2.Size = new System.Drawing.Size(210, 118); + this.pictureBox2.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage; + this.pictureBox2.TabIndex = 2; + this.pictureBox2.TabStop = false; + // // label37 // this.label37.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Italic, System.Drawing.GraphicsUnit.Point, ((byte)(0))); @@ -4276,6 +6749,17 @@ this.label37.Text = resources.GetString("label37.Text"); this.label37.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; // + // pictureBox1 + // + this.pictureBox1.Image = global::AirScout.Properties.Resources.AirScout_Multi; + this.pictureBox1.InitialImage = global::AirScout.Properties.Resources.AirScout_Multi; + this.pictureBox1.Location = new System.Drawing.Point(6, 15); + this.pictureBox1.Name = "pictureBox1"; + this.pictureBox1.Size = new System.Drawing.Size(283, 153); + this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage; + this.pictureBox1.TabIndex = 0; + this.pictureBox1.TabStop = false; + // // btn_Options_Watchlist_Clear // this.btn_Options_Watchlist_Clear.Enabled = false; @@ -4301,6 +6785,39 @@ this.groupBox17.TabStop = false; this.groupBox17.Text = "General"; // + // cb_Options_Watchlist_SyncWithKST + // + this.cb_Options_Watchlist_SyncWithKST.AutoSize = true; + this.cb_Options_Watchlist_SyncWithKST.CheckAlign = System.Drawing.ContentAlignment.MiddleRight; + this.cb_Options_Watchlist_SyncWithKST.Checked = global::AirScout.Properties.Settings.Default.Watchlist_SyncWithKST; + this.cb_Options_Watchlist_SyncWithKST.CheckState = System.Windows.Forms.CheckState.Checked; + this.cb_Options_Watchlist_SyncWithKST.DataBindings.Add(new System.Windows.Forms.Binding("Enabled", global::AirScout.Properties.Settings.Default, "Server_Activate", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.cb_Options_Watchlist_SyncWithKST.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Watchlist_SyncWithKST", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.cb_Options_Watchlist_SyncWithKST.Enabled = global::AirScout.Properties.Settings.Default.Server_Activate; + this.cb_Options_Watchlist_SyncWithKST.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_Watchlist_SyncWithKST.Location = new System.Drawing.Point(6, 47); + this.cb_Options_Watchlist_SyncWithKST.Name = "cb_Options_Watchlist_SyncWithKST"; + this.cb_Options_Watchlist_SyncWithKST.Size = new System.Drawing.Size(436, 17); + this.cb_Options_Watchlist_SyncWithKST.TabIndex = 6; + this.cb_Options_Watchlist_SyncWithKST.Text = "Keep in sync with KST user list (needs wtKST > V3.1 and network functions activat" + + "ed):"; + this.cb_Options_Watchlist_SyncWithKST.UseVisualStyleBackColor = true; + this.cb_Options_Watchlist_SyncWithKST.CheckedChanged += new System.EventHandler(this.cb_Options_Watchlist_SyncWithKST_CheckedChanged); + // + // tb_Options_Watchlist_MaxCount + // + this.tb_Options_Watchlist_MaxCount.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Watchlist_MaxCount", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.tb_Options_Watchlist_MaxCount.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_Options_Watchlist_MaxCount.FormatSpecifier = "F0"; + this.tb_Options_Watchlist_MaxCount.Location = new System.Drawing.Point(395, 20); + this.tb_Options_Watchlist_MaxCount.MaxValue = 1000; + this.tb_Options_Watchlist_MaxCount.MinValue = 1; + this.tb_Options_Watchlist_MaxCount.Name = "tb_Options_Watchlist_MaxCount"; + this.tb_Options_Watchlist_MaxCount.Size = new System.Drawing.Size(47, 22); + this.tb_Options_Watchlist_MaxCount.TabIndex = 5; + this.tb_Options_Watchlist_MaxCount.Text = "1000"; + this.tb_Options_Watchlist_MaxCount.Value = global::AirScout.Properties.Settings.Default.Watchlist_MaxCount; + // // label31 // this.label31.AutoSize = true; @@ -4336,6 +6853,18 @@ this.tab_Options_Misc.TabIndex = 17; this.tab_Options_Misc.Text = "Misc."; // + // pictureBox4 + // + this.pictureBox4.BackColor = System.Drawing.Color.White; + this.pictureBox4.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pictureBox4.Image = global::AirScout.Properties.Resources.Settings; + this.pictureBox4.Location = new System.Drawing.Point(343, 108); + this.pictureBox4.Name = "pictureBox4"; + this.pictureBox4.Size = new System.Drawing.Size(306, 277); + this.pictureBox4.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage; + this.pictureBox4.TabIndex = 5; + this.pictureBox4.TabStop = false; + // // label143 // this.label143.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Italic, System.Drawing.GraphicsUnit.Point, ((byte)(0))); @@ -4426,7 +6955,7 @@ this.lbl_Options_Elevation_SRTM1.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic))), System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.lbl_Options_Elevation_SRTM1.Location = new System.Drawing.Point(89, 314); this.lbl_Options_Elevation_SRTM1.Name = "lbl_Options_Elevation_SRTM1"; - this.lbl_Options_Elevation_SRTM1.Size = new System.Drawing.Size(478, 16); + this.lbl_Options_Elevation_SRTM1.Size = new System.Drawing.Size(477, 16); this.lbl_Options_Elevation_SRTM1.TabIndex = 41; this.lbl_Options_Elevation_SRTM1.TabStop = true; this.lbl_Options_Elevation_SRTM1.Text = "1arsec (30m x 30m) Elevation Data from SRTM - Project and ASTER"; @@ -4447,7 +6976,7 @@ this.lbl_Options_Elevation_SRTM3.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic))), System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.lbl_Options_Elevation_SRTM3.Location = new System.Drawing.Point(89, 250); this.lbl_Options_Elevation_SRTM3.Name = "lbl_Options_Elevation_SRTM3"; - this.lbl_Options_Elevation_SRTM3.Size = new System.Drawing.Size(478, 16); + this.lbl_Options_Elevation_SRTM3.Size = new System.Drawing.Size(477, 16); this.lbl_Options_Elevation_SRTM3.TabIndex = 39; this.lbl_Options_Elevation_SRTM3.TabStop = true; this.lbl_Options_Elevation_SRTM3.Text = "3arsec (90m x 90m) Elevation Data from SRTM - Project and ASTER"; @@ -4458,7 +6987,7 @@ this.lbl_Options_Elevation_GLOBE.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic))), System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.lbl_Options_Elevation_GLOBE.Location = new System.Drawing.Point(164, 211); this.lbl_Options_Elevation_GLOBE.Name = "lbl_Options_Elevation_GLOBE"; - this.lbl_Options_Elevation_GLOBE.Size = new System.Drawing.Size(340, 16); + this.lbl_Options_Elevation_GLOBE.Size = new System.Drawing.Size(339, 16); this.lbl_Options_Elevation_GLOBE.TabIndex = 38; this.lbl_Options_Elevation_GLOBE.TabStop = true; this.lbl_Options_Elevation_GLOBE.Text = "1km based Elevation Data from GLOBE - Project"; @@ -4489,7 +7018,7 @@ this.label25.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.label25.Location = new System.Drawing.Point(105, 391); this.label25.Name = "label25"; - this.label25.Size = new System.Drawing.Size(495, 16); + this.label25.Size = new System.Drawing.Size(494, 16); this.label25.TabIndex = 33; this.label25.Text = "special tnx to DF9IC and DL8AAU for extensive discussions and testing"; // @@ -4649,1442 +7178,32 @@ this.bw_ASTER1_MapUpdater.ProgressChanged += new System.ComponentModel.ProgressChangedEventHandler(this.bw_ASTER1_MapUpdater_ProgressChanged); this.bw_ASTER1_MapUpdater.RunWorkerCompleted += new System.ComponentModel.RunWorkerCompletedEventHandler(this.bw_ASTER1_MapUpdater_RunWorkerCompleted); // - // label148 - // - this.label148.AutoSize = true; - this.label148.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label148.Location = new System.Drawing.Point(218, 20); - this.label148.Name = "label148"; - this.label148.Size = new System.Drawing.Size(96, 13); - this.label148.TabIndex = 7; - this.label148.Text = "Main Map Opacity:"; - // - // tb_Coverage_MaxLat - // - this.tb_Coverage_MaxLat.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "MaxLat", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.tb_Coverage_MaxLat.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.tb_Coverage_MaxLat.FormatSpecifier = "F0"; - this.tb_Coverage_MaxLat.Location = new System.Drawing.Point(589, 416); - this.tb_Coverage_MaxLat.MaxValue = 90D; - this.tb_Coverage_MaxLat.MinValue = -90D; - this.tb_Coverage_MaxLat.Name = "tb_Coverage_MaxLat"; - this.tb_Coverage_MaxLat.Size = new System.Drawing.Size(50, 22); - this.tb_Coverage_MaxLat.TabIndex = 4; - this.tb_Coverage_MaxLat.Text = "60"; - this.tb_Coverage_MaxLat.Value = global::AirScout.Properties.Settings.Default.MaxLat; - this.tb_Coverage_MaxLat.TextChanged += new System.EventHandler(this.tab_Options_General_Update); - // - // tb_Coverage_MinLat - // - this.tb_Coverage_MinLat.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "MinLat", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.tb_Coverage_MinLat.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.tb_Coverage_MinLat.FormatSpecifier = "F0"; - this.tb_Coverage_MinLat.Location = new System.Drawing.Point(589, 391); - this.tb_Coverage_MinLat.MaxValue = 90D; - this.tb_Coverage_MinLat.MinValue = -90D; - this.tb_Coverage_MinLat.Name = "tb_Coverage_MinLat"; - this.tb_Coverage_MinLat.Size = new System.Drawing.Size(50, 22); - this.tb_Coverage_MinLat.TabIndex = 3; - this.tb_Coverage_MinLat.Text = "35"; - this.tb_Coverage_MinLat.Value = global::AirScout.Properties.Settings.Default.MinLat; - this.tb_Coverage_MinLat.TextChanged += new System.EventHandler(this.tab_Options_General_Update); - // - // tb_Coverage_MaxLon - // - this.tb_Coverage_MaxLon.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "MaxLon", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.tb_Coverage_MaxLon.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.tb_Coverage_MaxLon.FormatSpecifier = "F0"; - this.tb_Coverage_MaxLon.Location = new System.Drawing.Point(589, 364); - this.tb_Coverage_MaxLon.MaxValue = 180D; - this.tb_Coverage_MaxLon.MinValue = -180D; - this.tb_Coverage_MaxLon.Name = "tb_Coverage_MaxLon"; - this.tb_Coverage_MaxLon.Size = new System.Drawing.Size(50, 22); - this.tb_Coverage_MaxLon.TabIndex = 2; - this.tb_Coverage_MaxLon.Text = "30"; - this.tb_Coverage_MaxLon.Value = global::AirScout.Properties.Settings.Default.MaxLon; - this.tb_Coverage_MaxLon.TextChanged += new System.EventHandler(this.tab_Options_General_Update); - // - // tb_Coverage_MinLon - // - this.tb_Coverage_MinLon.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "MinLon", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.tb_Coverage_MinLon.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.tb_Coverage_MinLon.FormatSpecifier = "F0"; - this.tb_Coverage_MinLon.Location = new System.Drawing.Point(589, 337); - this.tb_Coverage_MinLon.MaxValue = 180D; - this.tb_Coverage_MinLon.MinValue = -180D; - this.tb_Coverage_MinLon.Name = "tb_Coverage_MinLon"; - this.tb_Coverage_MinLon.Size = new System.Drawing.Size(50, 22); - this.tb_Coverage_MinLon.TabIndex = 1; - this.tb_Coverage_MinLon.Text = "-15"; - this.tb_Coverage_MinLon.Value = global::AirScout.Properties.Settings.Default.MinLon; - this.tb_Coverage_MinLon.TextChanged += new System.EventHandler(this.tab_Options_General_Update); - // - // cb_Options_Background_Calculations_Enable - // - this.cb_Options_Background_Calculations_Enable.AutoSize = true; - this.cb_Options_Background_Calculations_Enable.Checked = global::AirScout.Properties.Settings.Default.Background_Calculations_Enable; - this.cb_Options_Background_Calculations_Enable.CheckState = System.Windows.Forms.CheckState.Checked; - this.cb_Options_Background_Calculations_Enable.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Background_Calculations_Enable", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.cb_Options_Background_Calculations_Enable.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cb_Options_Background_Calculations_Enable.Location = new System.Drawing.Point(22, 126); - this.cb_Options_Background_Calculations_Enable.Name = "cb_Options_Background_Calculations_Enable"; - this.cb_Options_Background_Calculations_Enable.Size = new System.Drawing.Size(308, 17); - this.cb_Options_Background_Calculations_Enable.TabIndex = 6; - this.cb_Options_Background_Calculations_Enable.Text = "Enable Background Pre-Calculations for paths/horizons etc."; - this.cb_Options_Background_Calculations_Enable.UseVisualStyleBackColor = true; - // - // ud_Options_Database_Update_Period - // - this.ud_Options_Database_Update_Period.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Background_Update_Period", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.ud_Options_Database_Update_Period.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.ud_Options_Database_Update_Period.Location = new System.Drawing.Point(278, 84); - this.ud_Options_Database_Update_Period.Maximum = new decimal(new int[] { - 6000, - 0, - 0, - 0}); - this.ud_Options_Database_Update_Period.Minimum = new decimal(new int[] { - 1, - 0, - 0, - 0}); - this.ud_Options_Database_Update_Period.Name = "ud_Options_Database_Update_Period"; - this.ud_Options_Database_Update_Period.Size = new System.Drawing.Size(39, 20); - this.ud_Options_Database_Update_Period.TabIndex = 3; - this.ud_Options_Database_Update_Period.Value = global::AirScout.Properties.Settings.Default.Background_Update_Period; - // - // cb_Options_Locations_RestrictToAreaOfInterest - // - this.cb_Options_Locations_RestrictToAreaOfInterest.AutoSize = true; - this.cb_Options_Locations_RestrictToAreaOfInterest.Checked = global::AirScout.Properties.Settings.Default.Location_RestrictToAreaOfInterest; - this.cb_Options_Locations_RestrictToAreaOfInterest.CheckState = System.Windows.Forms.CheckState.Checked; - this.cb_Options_Locations_RestrictToAreaOfInterest.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Location_RestrictToAreaOfInterest", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.cb_Options_Locations_RestrictToAreaOfInterest.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cb_Options_Locations_RestrictToAreaOfInterest.Location = new System.Drawing.Point(12, 58); - this.cb_Options_Locations_RestrictToAreaOfInterest.Name = "cb_Options_Locations_RestrictToAreaOfInterest"; - this.cb_Options_Locations_RestrictToAreaOfInterest.Size = new System.Drawing.Size(230, 17); - this.cb_Options_Locations_RestrictToAreaOfInterest.TabIndex = 12; - this.cb_Options_Locations_RestrictToAreaOfInterest.Text = "Restrict locations to current Area of Interest"; - this.tt_Options.SetToolTip(this.cb_Options_Locations_RestrictToAreaOfInterest, "Restrict stations kept in the database to Area of Interest \r\n(all other stations" + - " will be removed during the update process)"); - this.cb_Options_Locations_RestrictToAreaOfInterest.UseVisualStyleBackColor = true; - // - // cb_Options_SmallLettersForSubSquares - // - this.cb_Options_SmallLettersForSubSquares.AutoSize = true; - this.cb_Options_SmallLettersForSubSquares.Checked = global::AirScout.Properties.Settings.Default.Locator_SmallLettersForSubsquares; - this.cb_Options_SmallLettersForSubSquares.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Locator_SmallLettersForSubsquares", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.cb_Options_SmallLettersForSubSquares.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cb_Options_SmallLettersForSubSquares.Location = new System.Drawing.Point(239, 16); - this.cb_Options_SmallLettersForSubSquares.Name = "cb_Options_SmallLettersForSubSquares"; - this.cb_Options_SmallLettersForSubSquares.Size = new System.Drawing.Size(157, 17); - this.cb_Options_SmallLettersForSubSquares.TabIndex = 11; - this.cb_Options_SmallLettersForSubSquares.Text = "Small letters for subsquares:"; - this.cb_Options_SmallLettersForSubSquares.UseVisualStyleBackColor = true; - this.cb_Options_SmallLettersForSubSquares.CheckedChanged += new System.EventHandler(this.cb_Options_SmallLettersForSubSquares_CheckedChanged); - // - // cb_Options_Locator_AutoLength - // - this.cb_Options_Locator_AutoLength.AutoSize = true; - this.cb_Options_Locator_AutoLength.Checked = global::AirScout.Properties.Settings.Default.Locator_AutoLength; - this.cb_Options_Locator_AutoLength.CheckState = System.Windows.Forms.CheckState.Checked; - this.cb_Options_Locator_AutoLength.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Locator_AutoLength", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.cb_Options_Locator_AutoLength.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cb_Options_Locator_AutoLength.Location = new System.Drawing.Point(12, 38); - this.cb_Options_Locator_AutoLength.Name = "cb_Options_Locator_AutoLength"; - this.cb_Options_Locator_AutoLength.Size = new System.Drawing.Size(319, 17); - this.cb_Options_Locator_AutoLength.TabIndex = 10; - this.cb_Options_Locator_AutoLength.Text = "Cut locator to significant digits automatically (Minimum 6 digits):"; - this.cb_Options_Locator_AutoLength.UseVisualStyleBackColor = true; - // - // ud_Options_Locator_MaxLength - // - this.ud_Options_Locator_MaxLength.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Locator_MaxLength", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.ud_Options_Locator_MaxLength.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.ud_Options_Locator_MaxLength.Increment = new decimal(new int[] { - 2, - 0, - 0, - 0}); - this.ud_Options_Locator_MaxLength.Location = new System.Drawing.Point(180, 15); - this.ud_Options_Locator_MaxLength.Maximum = new decimal(new int[] { - 14, - 0, - 0, - 0}); - this.ud_Options_Locator_MaxLength.Minimum = new decimal(new int[] { - 6, - 0, - 0, - 0}); - this.ud_Options_Locator_MaxLength.Name = "ud_Options_Locator_MaxLength"; - this.ud_Options_Locator_MaxLength.Size = new System.Drawing.Size(50, 20); - this.ud_Options_Locator_MaxLength.TabIndex = 9; - this.ud_Options_Locator_MaxLength.Value = global::AirScout.Properties.Settings.Default.Locator_MaxLength; - // - // tb_Options_DXLoc - // - this.tb_Options_DXLoc.BackColor = System.Drawing.SystemColors.Window; - this.tb_Options_DXLoc.DataBindings.Add(new System.Windows.Forms.Binding("SmallLettersForSubsquares", global::AirScout.Properties.Settings.Default, "Locator_SmallLettersForSubsquares", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.tb_Options_DXLoc.ErrorBackColor = System.Drawing.Color.Red; - this.tb_Options_DXLoc.ErrorForeColor = System.Drawing.Color.White; - this.tb_Options_DXLoc.Font = new System.Drawing.Font("Courier New", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.tb_Options_DXLoc.ForeColor = System.Drawing.SystemColors.WindowText; - this.tb_Options_DXLoc.Location = new System.Drawing.Point(90, 36); - this.tb_Options_DXLoc.Name = "tb_Options_DXLoc"; - this.tb_Options_DXLoc.Size = new System.Drawing.Size(100, 21); - this.tb_Options_DXLoc.SmallLettersForSubsquares = global::AirScout.Properties.Settings.Default.Locator_SmallLettersForSubsquares; - this.tb_Options_DXLoc.TabIndex = 6; - this.tb_Options_DXLoc.TextChanged += new System.EventHandler(this.tb_Options_DXLoc_TextChanged); - // - // tb_Options_MyLoc - // - this.tb_Options_MyLoc.BackColor = System.Drawing.SystemColors.Window; - this.tb_Options_MyLoc.DataBindings.Add(new System.Windows.Forms.Binding("SmallLettersForSubsquares", global::AirScout.Properties.Settings.Default, "Locator_SmallLettersForSubsquares", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.tb_Options_MyLoc.ErrorBackColor = System.Drawing.Color.Red; - this.tb_Options_MyLoc.ErrorForeColor = System.Drawing.Color.White; - this.tb_Options_MyLoc.Font = new System.Drawing.Font("Courier New", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.tb_Options_MyLoc.ForeColor = System.Drawing.SystemColors.WindowText; - this.tb_Options_MyLoc.Location = new System.Drawing.Point(89, 36); - this.tb_Options_MyLoc.Name = "tb_Options_MyLoc"; - this.tb_Options_MyLoc.Size = new System.Drawing.Size(100, 21); - this.tb_Options_MyLoc.SmallLettersForSubsquares = global::AirScout.Properties.Settings.Default.Locator_SmallLettersForSubsquares; - this.tb_Options_MyLoc.TabIndex = 2; - this.tb_Options_MyLoc.TextChanged += new System.EventHandler(this.tb_Options_MyLoc_TextChanged); - // - // cb_Options_Map_SmallMarkers - // - this.cb_Options_Map_SmallMarkers.AutoSize = true; - this.cb_Options_Map_SmallMarkers.Checked = global::AirScout.Properties.Settings.Default.Map_SmallMarkers; - this.cb_Options_Map_SmallMarkers.CheckState = System.Windows.Forms.CheckState.Checked; - this.cb_Options_Map_SmallMarkers.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Map_SmallMarkers", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.cb_Options_Map_SmallMarkers.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cb_Options_Map_SmallMarkers.Location = new System.Drawing.Point(18, 22); - this.cb_Options_Map_SmallMarkers.Name = "cb_Options_Map_SmallMarkers"; - this.cb_Options_Map_SmallMarkers.Size = new System.Drawing.Size(199, 17); - this.cb_Options_Map_SmallMarkers.TabIndex = 2; - this.cb_Options_Map_SmallMarkers.Text = "Use Small Markers for all Path Marks"; - this.cb_Options_Map_SmallMarkers.UseVisualStyleBackColor = true; - // - // cb_Options_Map_LabelCalls - // - this.cb_Options_Map_LabelCalls.AutoSize = true; - this.cb_Options_Map_LabelCalls.Checked = global::AirScout.Properties.Settings.Default.Map_LabelCalls; - this.cb_Options_Map_LabelCalls.CheckState = System.Windows.Forms.CheckState.Checked; - this.cb_Options_Map_LabelCalls.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Map_LabelCalls", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.cb_Options_Map_LabelCalls.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cb_Options_Map_LabelCalls.Location = new System.Drawing.Point(18, 45); - this.cb_Options_Map_LabelCalls.Name = "cb_Options_Map_LabelCalls"; - this.cb_Options_Map_LabelCalls.Size = new System.Drawing.Size(209, 17); - this.cb_Options_Map_LabelCalls.TabIndex = 3; - this.cb_Options_Map_LabelCalls.Text = "Show Labels with Callsign at Locations"; - this.cb_Options_Map_LabelCalls.UseVisualStyleBackColor = true; - // - // ud_Options_Charts_FontSize - // - this.ud_Options_Charts_FontSize.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Charts_FontSize", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.ud_Options_Charts_FontSize.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.ud_Options_Charts_FontSize.Location = new System.Drawing.Point(192, 15); - this.ud_Options_Charts_FontSize.Maximum = new decimal(new int[] { - 16, - 0, - 0, - 0}); - this.ud_Options_Charts_FontSize.Minimum = new decimal(new int[] { - 6, - 0, - 0, - 0}); - this.ud_Options_Charts_FontSize.Name = "ud_Options_Charts_FontSize"; - this.ud_Options_Charts_FontSize.Size = new System.Drawing.Size(45, 22); - this.ud_Options_Charts_FontSize.TabIndex = 0; - this.ud_Options_Charts_FontSize.Value = global::AirScout.Properties.Settings.Default.Charts_FontSize; - // - // tb_Options_Map_Update_Interval - // - this.tb_Options_Map_Update_Interval.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Map_Update", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.tb_Options_Map_Update_Interval.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.tb_Options_Map_Update_Interval.FormatSpecifier = "F0"; - this.tb_Options_Map_Update_Interval.Location = new System.Drawing.Point(119, 33); - this.tb_Options_Map_Update_Interval.MaxValue = 3600; - this.tb_Options_Map_Update_Interval.MinValue = 0; - this.tb_Options_Map_Update_Interval.Name = "tb_Options_Map_Update_Interval"; - this.tb_Options_Map_Update_Interval.Size = new System.Drawing.Size(37, 22); - this.tb_Options_Map_Update_Interval.TabIndex = 23; - this.tb_Options_Map_Update_Interval.Text = "1"; - this.tb_Options_Map_Update_Interval.Value = global::AirScout.Properties.Settings.Default.Map_Update; - // - // ud_Options_Map_Preloader_MaxZoom - // - this.ud_Options_Map_Preloader_MaxZoom.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Map_Preloader_MaxZoom", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.ud_Options_Map_Preloader_MaxZoom.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.ud_Options_Map_Preloader_MaxZoom.Location = new System.Drawing.Point(319, 66); - this.ud_Options_Map_Preloader_MaxZoom.Maximum = new decimal(new int[] { - 11, - 0, - 0, - 0}); - this.ud_Options_Map_Preloader_MaxZoom.Name = "ud_Options_Map_Preloader_MaxZoom"; - this.ud_Options_Map_Preloader_MaxZoom.Size = new System.Drawing.Size(54, 22); - this.ud_Options_Map_Preloader_MaxZoom.TabIndex = 6; - this.ud_Options_Map_Preloader_MaxZoom.Value = global::AirScout.Properties.Settings.Default.Map_Preloader_MaxZoom; - // - // cb_Options_Map_Preloader_Enabled - // - this.cb_Options_Map_Preloader_Enabled.AutoSize = true; - this.cb_Options_Map_Preloader_Enabled.Checked = global::AirScout.Properties.Settings.Default.Map_Preloader_Enabled; - this.cb_Options_Map_Preloader_Enabled.CheckState = System.Windows.Forms.CheckState.Checked; - this.cb_Options_Map_Preloader_Enabled.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Map_Preloader_Enabled", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.cb_Options_Map_Preloader_Enabled.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cb_Options_Map_Preloader_Enabled.Location = new System.Drawing.Point(15, 63); - this.cb_Options_Map_Preloader_Enabled.Name = "cb_Options_Map_Preloader_Enabled"; - this.cb_Options_Map_Preloader_Enabled.Size = new System.Drawing.Size(205, 30); - this.cb_Options_Map_Preloader_Enabled.TabIndex = 4; - this.cb_Options_Map_Preloader_Enabled.Text = "Enable Map Preloading from AirScout \r\nWeb Server or Selected Provider"; - this.cb_Options_Map_Preloader_Enabled.UseVisualStyleBackColor = true; - // - // cb_Options_Watchlist_Activate - // - this.cb_Options_Watchlist_Activate.AutoSize = true; - this.cb_Options_Watchlist_Activate.Checked = global::AirScout.Properties.Settings.Default.Watchlist_Activated; - this.cb_Options_Watchlist_Activate.CheckState = System.Windows.Forms.CheckState.Checked; - this.cb_Options_Watchlist_Activate.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Watchlist_Activated", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.cb_Options_Watchlist_Activate.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cb_Options_Watchlist_Activate.Location = new System.Drawing.Point(15, 43); - this.cb_Options_Watchlist_Activate.Name = "cb_Options_Watchlist_Activate"; - this.cb_Options_Watchlist_Activate.Size = new System.Drawing.Size(144, 17); - this.cb_Options_Watchlist_Activate.TabIndex = 1; - this.cb_Options_Watchlist_Activate.Text = "Show Watchlist Callsigns"; - this.cb_Options_Watchlist_Activate.UseVisualStyleBackColor = true; - // - // cb_Options_Airports_Activate - // - this.cb_Options_Airports_Activate.AutoSize = true; - this.cb_Options_Airports_Activate.Checked = global::AirScout.Properties.Settings.Default.Airports_Activate; - this.cb_Options_Airports_Activate.CheckState = System.Windows.Forms.CheckState.Checked; - this.cb_Options_Airports_Activate.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Airports_Activate", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.cb_Options_Airports_Activate.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cb_Options_Airports_Activate.Location = new System.Drawing.Point(16, 19); - this.cb_Options_Airports_Activate.Name = "cb_Options_Airports_Activate"; - this.cb_Options_Airports_Activate.Size = new System.Drawing.Size(91, 17); - this.cb_Options_Airports_Activate.TabIndex = 0; - this.cb_Options_Airports_Activate.Text = "Show Airports"; - this.cb_Options_Airports_Activate.UseVisualStyleBackColor = true; - // - // tb_Options_Planes_IconSize_S - // - this.tb_Options_Planes_IconSize_S.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Planes_IconSize_S", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.tb_Options_Planes_IconSize_S.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.tb_Options_Planes_IconSize_S.FormatSpecifier = "F0"; - this.tb_Options_Planes_IconSize_S.Location = new System.Drawing.Point(183, 47); - this.tb_Options_Planes_IconSize_S.MaxValue = 128; - this.tb_Options_Planes_IconSize_S.MinValue = 0; - this.tb_Options_Planes_IconSize_S.Name = "tb_Options_Planes_IconSize_S"; - this.tb_Options_Planes_IconSize_S.Size = new System.Drawing.Size(37, 22); - this.tb_Options_Planes_IconSize_S.TabIndex = 16; - this.tb_Options_Planes_IconSize_S.Text = "48"; - this.tb_Options_Planes_IconSize_S.Value = global::AirScout.Properties.Settings.Default.Planes_IconSize_S; - // - // tb_Options_Planes_IconSize_H - // - this.tb_Options_Planes_IconSize_H.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Planes_IconSize_H", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.tb_Options_Planes_IconSize_H.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.tb_Options_Planes_IconSize_H.FormatSpecifier = "F0"; - this.tb_Options_Planes_IconSize_H.Location = new System.Drawing.Point(183, 19); - this.tb_Options_Planes_IconSize_H.MaxValue = 128; - this.tb_Options_Planes_IconSize_H.MinValue = 0; - this.tb_Options_Planes_IconSize_H.Name = "tb_Options_Planes_IconSize_H"; - this.tb_Options_Planes_IconSize_H.Size = new System.Drawing.Size(37, 22); - this.tb_Options_Planes_IconSize_H.TabIndex = 15; - this.tb_Options_Planes_IconSize_H.Text = "36"; - this.tb_Options_Planes_IconSize_H.Value = global::AirScout.Properties.Settings.Default.Planes_IconSize_H; - // - // tb_Options_Planes_IconSize_M - // - this.tb_Options_Planes_IconSize_M.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Planes_IconSize_M", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.tb_Options_Planes_IconSize_M.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.tb_Options_Planes_IconSize_M.FormatSpecifier = "F0"; - this.tb_Options_Planes_IconSize_M.Location = new System.Drawing.Point(63, 47); - this.tb_Options_Planes_IconSize_M.MaxValue = 128; - this.tb_Options_Planes_IconSize_M.MinValue = 0; - this.tb_Options_Planes_IconSize_M.Name = "tb_Options_Planes_IconSize_M"; - this.tb_Options_Planes_IconSize_M.Size = new System.Drawing.Size(37, 22); - this.tb_Options_Planes_IconSize_M.TabIndex = 14; - this.tb_Options_Planes_IconSize_M.Text = "24"; - this.tb_Options_Planes_IconSize_M.Value = global::AirScout.Properties.Settings.Default.Planes_IconSize_M; - // - // tb_Options_Planes_IconSize_L - // - this.tb_Options_Planes_IconSize_L.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Planes_IconSize_L", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.tb_Options_Planes_IconSize_L.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.tb_Options_Planes_IconSize_L.FormatSpecifier = "F0"; - this.tb_Options_Planes_IconSize_L.Location = new System.Drawing.Point(63, 21); - this.tb_Options_Planes_IconSize_L.MaxValue = 128; - this.tb_Options_Planes_IconSize_L.MinValue = 0; - this.tb_Options_Planes_IconSize_L.Name = "tb_Options_Planes_IconSize_L"; - this.tb_Options_Planes_IconSize_L.Size = new System.Drawing.Size(37, 22); - this.tb_Options_Planes_IconSize_L.TabIndex = 13; - this.tb_Options_Planes_IconSize_L.Text = "16"; - this.tb_Options_Planes_IconSize_L.Value = global::AirScout.Properties.Settings.Default.Planes_IconSize_L; - // - // cb_Options_InfoWin_Angle - // - this.cb_Options_InfoWin_Angle.AutoSize = true; - this.cb_Options_InfoWin_Angle.Checked = global::AirScout.Properties.Settings.Default.InfoWin_Angle; - this.cb_Options_InfoWin_Angle.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "InfoWin_Angle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.cb_Options_InfoWin_Angle.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cb_Options_InfoWin_Angle.Location = new System.Drawing.Point(139, 75); - this.cb_Options_InfoWin_Angle.Name = "cb_Options_InfoWin_Angle"; - this.cb_Options_InfoWin_Angle.Size = new System.Drawing.Size(96, 17); - this.cb_Options_InfoWin_Angle.TabIndex = 15; - this.cb_Options_InfoWin_Angle.Tag = ""; - this.cb_Options_InfoWin_Angle.Text = "Crossing Angle"; - this.cb_Options_InfoWin_Angle.UseVisualStyleBackColor = true; - // - // cb_Options_InfoWin_Speed - // - this.cb_Options_InfoWin_Speed.AutoSize = true; - this.cb_Options_InfoWin_Speed.Checked = global::AirScout.Properties.Settings.Default.InfoWin_Speed; - this.cb_Options_InfoWin_Speed.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "InfoWin_Speed", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.cb_Options_InfoWin_Speed.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cb_Options_InfoWin_Speed.Location = new System.Drawing.Point(26, 100); - this.cb_Options_InfoWin_Speed.Name = "cb_Options_InfoWin_Speed"; - this.cb_Options_InfoWin_Speed.Size = new System.Drawing.Size(87, 17); - this.cb_Options_InfoWin_Speed.TabIndex = 14; - this.cb_Options_InfoWin_Speed.Tag = ""; - this.cb_Options_InfoWin_Speed.Text = "Plane Speed"; - this.cb_Options_InfoWin_Speed.UseVisualStyleBackColor = true; - // - // cb_Options_InfoWin_Squint - // - this.cb_Options_InfoWin_Squint.AutoSize = true; - this.cb_Options_InfoWin_Squint.Checked = global::AirScout.Properties.Settings.Default.InfoWin_Squint; - this.cb_Options_InfoWin_Squint.CheckState = System.Windows.Forms.CheckState.Checked; - this.cb_Options_InfoWin_Squint.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "InfoWin_Squint", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.cb_Options_InfoWin_Squint.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cb_Options_InfoWin_Squint.Location = new System.Drawing.Point(139, 121); - this.cb_Options_InfoWin_Squint.Name = "cb_Options_InfoWin_Squint"; - this.cb_Options_InfoWin_Squint.Size = new System.Drawing.Size(86, 17); - this.cb_Options_InfoWin_Squint.TabIndex = 13; - this.cb_Options_InfoWin_Squint.Tag = ""; - this.cb_Options_InfoWin_Squint.Text = "Squint Angle"; - this.cb_Options_InfoWin_Squint.UseVisualStyleBackColor = true; - // - // cb_Options_InfoWin_Epsilon - // - this.cb_Options_InfoWin_Epsilon.AutoSize = true; - this.cb_Options_InfoWin_Epsilon.Checked = global::AirScout.Properties.Settings.Default.InfoWin_Epsilon; - this.cb_Options_InfoWin_Epsilon.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "InfoWin_Epsilon", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.cb_Options_InfoWin_Epsilon.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cb_Options_InfoWin_Epsilon.Location = new System.Drawing.Point(139, 98); - this.cb_Options_InfoWin_Epsilon.Name = "cb_Options_InfoWin_Epsilon"; - this.cb_Options_InfoWin_Epsilon.Size = new System.Drawing.Size(105, 17); - this.cb_Options_InfoWin_Epsilon.TabIndex = 12; - this.cb_Options_InfoWin_Epsilon.Tag = ""; - this.cb_Options_InfoWin_Epsilon.Text = "Elevation Angles"; - this.cb_Options_InfoWin_Epsilon.UseVisualStyleBackColor = true; - // - // cb_Options_InfoWin_Dist - // - this.cb_Options_InfoWin_Dist.AutoSize = true; - this.cb_Options_InfoWin_Dist.Checked = global::AirScout.Properties.Settings.Default.InfoWin_Dist; - this.cb_Options_InfoWin_Dist.CheckState = System.Windows.Forms.CheckState.Checked; - this.cb_Options_InfoWin_Dist.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "InfoWin_Dist", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.cb_Options_InfoWin_Dist.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cb_Options_InfoWin_Dist.Location = new System.Drawing.Point(139, 29); - this.cb_Options_InfoWin_Dist.Name = "cb_Options_InfoWin_Dist"; - this.cb_Options_InfoWin_Dist.Size = new System.Drawing.Size(111, 17); - this.cb_Options_InfoWin_Dist.TabIndex = 11; - this.cb_Options_InfoWin_Dist.Tag = ""; - this.cb_Options_InfoWin_Dist.Text = "Crossing Distance"; - this.cb_Options_InfoWin_Dist.UseVisualStyleBackColor = true; - // - // cb_Options_InfoWin_Time - // - this.cb_Options_InfoWin_Time.AutoSize = true; - this.cb_Options_InfoWin_Time.Checked = global::AirScout.Properties.Settings.Default.InfoWin_Time; - this.cb_Options_InfoWin_Time.CheckState = System.Windows.Forms.CheckState.Checked; - this.cb_Options_InfoWin_Time.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "InfoWin_Time", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.cb_Options_InfoWin_Time.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cb_Options_InfoWin_Time.Location = new System.Drawing.Point(139, 52); - this.cb_Options_InfoWin_Time.Name = "cb_Options_InfoWin_Time"; - this.cb_Options_InfoWin_Time.Size = new System.Drawing.Size(92, 17); - this.cb_Options_InfoWin_Time.TabIndex = 10; - this.cb_Options_InfoWin_Time.Tag = ""; - this.cb_Options_InfoWin_Time.Text = "Crossing Time"; - this.cb_Options_InfoWin_Time.UseVisualStyleBackColor = true; - // - // cb_Options_InfoWin_Type - // - this.cb_Options_InfoWin_Type.AutoSize = true; - this.cb_Options_InfoWin_Type.Checked = global::AirScout.Properties.Settings.Default.InfoWin_Type; - this.cb_Options_InfoWin_Type.CheckState = System.Windows.Forms.CheckState.Checked; - this.cb_Options_InfoWin_Type.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "InfoWin_Type", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.cb_Options_InfoWin_Type.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cb_Options_InfoWin_Type.Location = new System.Drawing.Point(26, 123); - this.cb_Options_InfoWin_Type.Name = "cb_Options_InfoWin_Type"; - this.cb_Options_InfoWin_Type.Size = new System.Drawing.Size(90, 17); - this.cb_Options_InfoWin_Type.TabIndex = 9; - this.cb_Options_InfoWin_Type.Tag = ""; - this.cb_Options_InfoWin_Type.Text = "Plane Type"; - this.cb_Options_InfoWin_Type.UseVisualStyleBackColor = true; - // - // cb_Options_InfoWin_Track - // - this.cb_Options_InfoWin_Track.AutoSize = true; - this.cb_Options_InfoWin_Track.Checked = global::AirScout.Properties.Settings.Default.InfoWin_Track; - this.cb_Options_InfoWin_Track.CheckState = System.Windows.Forms.CheckState.Checked; - this.cb_Options_InfoWin_Track.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "InfoWin_Track", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.cb_Options_InfoWin_Track.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cb_Options_InfoWin_Track.Location = new System.Drawing.Point(26, 77); - this.cb_Options_InfoWin_Track.Name = "cb_Options_InfoWin_Track"; - this.cb_Options_InfoWin_Track.Size = new System.Drawing.Size(95, 17); - this.cb_Options_InfoWin_Track.TabIndex = 8; - this.cb_Options_InfoWin_Track.Tag = ""; - this.cb_Options_InfoWin_Track.Text = "Plane Track"; - this.cb_Options_InfoWin_Track.UseVisualStyleBackColor = true; - // - // cb_Options_InfoWin_Alt - // - this.cb_Options_InfoWin_Alt.AutoSize = true; - this.cb_Options_InfoWin_Alt.Checked = global::AirScout.Properties.Settings.Default.InfoWin_Alt; - this.cb_Options_InfoWin_Alt.CheckState = System.Windows.Forms.CheckState.Checked; - this.cb_Options_InfoWin_Alt.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "InfoWin_Alt", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.cb_Options_InfoWin_Alt.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cb_Options_InfoWin_Alt.Location = new System.Drawing.Point(26, 54); - this.cb_Options_InfoWin_Alt.Name = "cb_Options_InfoWin_Alt"; - this.cb_Options_InfoWin_Alt.Size = new System.Drawing.Size(105, 17); - this.cb_Options_InfoWin_Alt.TabIndex = 7; - this.cb_Options_InfoWin_Alt.Tag = ""; - this.cb_Options_InfoWin_Alt.Text = "Plane Altitude"; - this.cb_Options_InfoWin_Alt.UseVisualStyleBackColor = true; - // - // cb_Options_InfoWin_Position - // - this.cb_Options_InfoWin_Position.AutoSize = true; - this.cb_Options_InfoWin_Position.Checked = global::AirScout.Properties.Settings.Default.InfoWin_Position; - this.cb_Options_InfoWin_Position.CheckState = System.Windows.Forms.CheckState.Checked; - this.cb_Options_InfoWin_Position.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "InfoWin_Position", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.cb_Options_InfoWin_Position.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cb_Options_InfoWin_Position.Location = new System.Drawing.Point(26, 31); - this.cb_Options_InfoWin_Position.Name = "cb_Options_InfoWin_Position"; - this.cb_Options_InfoWin_Position.Size = new System.Drawing.Size(107, 17); - this.cb_Options_InfoWin_Position.TabIndex = 6; - this.cb_Options_InfoWin_Position.Tag = ""; - this.cb_Options_InfoWin_Position.Text = "Plane Position"; - this.cb_Options_InfoWin_Position.UseVisualStyleBackColor = true; - // - // rb_Options_InfoWin_Imperial - // - this.rb_Options_InfoWin_Imperial.AutoSize = true; - this.rb_Options_InfoWin_Imperial.Checked = global::AirScout.Properties.Settings.Default.InfoWin_Imperial; - this.rb_Options_InfoWin_Imperial.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "InfoWin_Imperial", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.rb_Options_InfoWin_Imperial.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.rb_Options_InfoWin_Imperial.Location = new System.Drawing.Point(156, 18); - this.rb_Options_InfoWin_Imperial.Name = "rb_Options_InfoWin_Imperial"; - this.rb_Options_InfoWin_Imperial.Size = new System.Drawing.Size(61, 17); - this.rb_Options_InfoWin_Imperial.TabIndex = 5; - this.rb_Options_InfoWin_Imperial.Tag = ""; - this.rb_Options_InfoWin_Imperial.Text = "Imperial"; - this.rb_Options_InfoWin_Imperial.UseVisualStyleBackColor = true; - // - // rb_Options_InfoWin_Metric - // - this.rb_Options_InfoWin_Metric.AutoSize = true; - this.rb_Options_InfoWin_Metric.Checked = global::AirScout.Properties.Settings.Default.InfoWin_Metric; - this.rb_Options_InfoWin_Metric.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "InfoWin_Metric", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.rb_Options_InfoWin_Metric.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.rb_Options_InfoWin_Metric.Location = new System.Drawing.Point(83, 18); - this.rb_Options_InfoWin_Metric.Name = "rb_Options_InfoWin_Metric"; - this.rb_Options_InfoWin_Metric.Size = new System.Drawing.Size(54, 17); - this.rb_Options_InfoWin_Metric.TabIndex = 4; - this.rb_Options_InfoWin_Metric.TabStop = true; - this.rb_Options_InfoWin_Metric.Tag = ""; - this.rb_Options_InfoWin_Metric.Text = "Metric"; - this.rb_Options_InfoWin_Metric.UseVisualStyleBackColor = true; - // - // tb_Options_Map_ToolTipFont - // - this.tb_Options_Map_ToolTipFont.DataBindings.Add(new System.Windows.Forms.Binding("Text", global::AirScout.Properties.Settings.Default, "Map_ToolTipFont", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.tb_Options_Map_ToolTipFont.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.tb_Options_Map_ToolTipFont.Location = new System.Drawing.Point(72, 39); - this.tb_Options_Map_ToolTipFont.Name = "tb_Options_Map_ToolTipFont"; - this.tb_Options_Map_ToolTipFont.ReadOnly = true; - this.tb_Options_Map_ToolTipFont.Size = new System.Drawing.Size(179, 20); - this.tb_Options_Map_ToolTipFont.TabIndex = 0; - this.tb_Options_Map_ToolTipFont.Text = global::AirScout.Properties.Settings.Default.Map_ToolTipFont; - // - // cb_Options_Elevation_GLOBE_EnableCache - // - this.cb_Options_Elevation_GLOBE_EnableCache.AutoSize = true; - this.cb_Options_Elevation_GLOBE_EnableCache.Checked = global::AirScout.Properties.Settings.Default.Elevation_GLOBE_EnableCache; - this.cb_Options_Elevation_GLOBE_EnableCache.CheckState = System.Windows.Forms.CheckState.Checked; - this.cb_Options_Elevation_GLOBE_EnableCache.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Elevation_GLOBE_EnableCache", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.cb_Options_Elevation_GLOBE_EnableCache.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cb_Options_Elevation_GLOBE_EnableCache.Location = new System.Drawing.Point(12, 42); - this.cb_Options_Elevation_GLOBE_EnableCache.Name = "cb_Options_Elevation_GLOBE_EnableCache"; - this.cb_Options_Elevation_GLOBE_EnableCache.Size = new System.Drawing.Size(179, 17); - this.cb_Options_Elevation_GLOBE_EnableCache.TabIndex = 8; - this.cb_Options_Elevation_GLOBE_EnableCache.Tag = ""; - this.cb_Options_Elevation_GLOBE_EnableCache.Text = "Keep downloaded elevation tiles"; - this.cb_Options_Elevation_GLOBE_EnableCache.UseVisualStyleBackColor = true; - // - // cb_Options_Elevation_GLOBE - // - this.cb_Options_Elevation_GLOBE.AutoSize = true; - this.cb_Options_Elevation_GLOBE.Checked = global::AirScout.Properties.Settings.Default.Elevation_GLOBE_Enabled; - this.cb_Options_Elevation_GLOBE.CheckState = System.Windows.Forms.CheckState.Checked; - this.cb_Options_Elevation_GLOBE.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Elevation_GLOBE_Enabled", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.cb_Options_Elevation_GLOBE.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cb_Options_Elevation_GLOBE.Location = new System.Drawing.Point(12, 19); - this.cb_Options_Elevation_GLOBE.Name = "cb_Options_Elevation_GLOBE"; - this.cb_Options_Elevation_GLOBE.Size = new System.Drawing.Size(154, 17); - this.cb_Options_Elevation_GLOBE.TabIndex = 7; - this.cb_Options_Elevation_GLOBE.Tag = ""; - this.cb_Options_Elevation_GLOBE.Text = "Use GLOBE elevation data"; - this.cb_Options_Elevation_GLOBE.UseVisualStyleBackColor = true; - // - // cb_Options_Elevation_SRTM3_EnableCache - // - this.cb_Options_Elevation_SRTM3_EnableCache.AutoSize = true; - this.cb_Options_Elevation_SRTM3_EnableCache.Checked = global::AirScout.Properties.Settings.Default.Elevation_SRTM3_EnableCache; - this.cb_Options_Elevation_SRTM3_EnableCache.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Elevation_SRTM3_EnableCache", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.cb_Options_Elevation_SRTM3_EnableCache.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cb_Options_Elevation_SRTM3_EnableCache.Location = new System.Drawing.Point(6, 42); - this.cb_Options_Elevation_SRTM3_EnableCache.Name = "cb_Options_Elevation_SRTM3_EnableCache"; - this.cb_Options_Elevation_SRTM3_EnableCache.Size = new System.Drawing.Size(179, 17); - this.cb_Options_Elevation_SRTM3_EnableCache.TabIndex = 13; - this.cb_Options_Elevation_SRTM3_EnableCache.Tag = ""; - this.cb_Options_Elevation_SRTM3_EnableCache.Text = "Keep downloaded elevation tiles"; - this.cb_Options_Elevation_SRTM3_EnableCache.UseVisualStyleBackColor = true; - // - // cb_Options_Elevation_SRTM3 - // - this.cb_Options_Elevation_SRTM3.AutoSize = true; - this.cb_Options_Elevation_SRTM3.Checked = global::AirScout.Properties.Settings.Default.Elevation_SRTM3_Enabled; - this.cb_Options_Elevation_SRTM3.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Elevation_SRTM3_Enabled", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.cb_Options_Elevation_SRTM3.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cb_Options_Elevation_SRTM3.Location = new System.Drawing.Point(6, 19); - this.cb_Options_Elevation_SRTM3.Name = "cb_Options_Elevation_SRTM3"; - this.cb_Options_Elevation_SRTM3.Size = new System.Drawing.Size(155, 17); - this.cb_Options_Elevation_SRTM3.TabIndex = 12; - this.cb_Options_Elevation_SRTM3.Tag = ""; - this.cb_Options_Elevation_SRTM3.Text = "Use SRTM3 elevation data"; - this.cb_Options_Elevation_SRTM3.UseVisualStyleBackColor = true; - // - // cb_Options_Elevation_SRTM1_EnableCache - // - this.cb_Options_Elevation_SRTM1_EnableCache.AutoSize = true; - this.cb_Options_Elevation_SRTM1_EnableCache.Checked = global::AirScout.Properties.Settings.Default.Elevation_SRTM1_EnableCache; - this.cb_Options_Elevation_SRTM1_EnableCache.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Elevation_SRTM1_EnableCache", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.cb_Options_Elevation_SRTM1_EnableCache.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cb_Options_Elevation_SRTM1_EnableCache.Location = new System.Drawing.Point(6, 42); - this.cb_Options_Elevation_SRTM1_EnableCache.Name = "cb_Options_Elevation_SRTM1_EnableCache"; - this.cb_Options_Elevation_SRTM1_EnableCache.Size = new System.Drawing.Size(179, 17); - this.cb_Options_Elevation_SRTM1_EnableCache.TabIndex = 17; - this.cb_Options_Elevation_SRTM1_EnableCache.Tag = ""; - this.cb_Options_Elevation_SRTM1_EnableCache.Text = "Keep downloaded elevation tiles"; - this.cb_Options_Elevation_SRTM1_EnableCache.UseVisualStyleBackColor = true; - // - // cb_Options_Elevation_SRTM1 - // - this.cb_Options_Elevation_SRTM1.AutoSize = true; - this.cb_Options_Elevation_SRTM1.Checked = global::AirScout.Properties.Settings.Default.Elevation_SRTM1_Enabled; - this.cb_Options_Elevation_SRTM1.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Elevation_SRTM1_Enabled", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.cb_Options_Elevation_SRTM1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cb_Options_Elevation_SRTM1.Location = new System.Drawing.Point(6, 19); - this.cb_Options_Elevation_SRTM1.Name = "cb_Options_Elevation_SRTM1"; - this.cb_Options_Elevation_SRTM1.Size = new System.Drawing.Size(155, 17); - this.cb_Options_Elevation_SRTM1.TabIndex = 16; - this.cb_Options_Elevation_SRTM1.Tag = ""; - this.cb_Options_Elevation_SRTM1.Text = "Use SRTM1 elevation data"; - this.cb_Options_Elevation_SRTM1.UseVisualStyleBackColor = true; - // - // cb_Options_Elevation_ASTER3_EnableCache - // - this.cb_Options_Elevation_ASTER3_EnableCache.AutoSize = true; - this.cb_Options_Elevation_ASTER3_EnableCache.Checked = global::AirScout.Properties.Settings.Default.Elevation_ASTER3_EnableCache; - this.cb_Options_Elevation_ASTER3_EnableCache.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Elevation_ASTER3_EnableCache", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.cb_Options_Elevation_ASTER3_EnableCache.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cb_Options_Elevation_ASTER3_EnableCache.Location = new System.Drawing.Point(6, 42); - this.cb_Options_Elevation_ASTER3_EnableCache.Name = "cb_Options_Elevation_ASTER3_EnableCache"; - this.cb_Options_Elevation_ASTER3_EnableCache.Size = new System.Drawing.Size(179, 17); - this.cb_Options_Elevation_ASTER3_EnableCache.TabIndex = 13; - this.cb_Options_Elevation_ASTER3_EnableCache.Tag = ""; - this.cb_Options_Elevation_ASTER3_EnableCache.Text = "Keep downloaded elevation tiles"; - this.cb_Options_Elevation_ASTER3_EnableCache.UseVisualStyleBackColor = true; - // - // cb_Options_Elevation_ASTER3 - // - this.cb_Options_Elevation_ASTER3.AutoSize = true; - this.cb_Options_Elevation_ASTER3.Checked = global::AirScout.Properties.Settings.Default.Elevation_ASTER3_Enabled; - this.cb_Options_Elevation_ASTER3.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Elevation_ASTER3_Enabled", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.cb_Options_Elevation_ASTER3.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cb_Options_Elevation_ASTER3.Location = new System.Drawing.Point(6, 19); - this.cb_Options_Elevation_ASTER3.Name = "cb_Options_Elevation_ASTER3"; - this.cb_Options_Elevation_ASTER3.Size = new System.Drawing.Size(160, 17); - this.cb_Options_Elevation_ASTER3.TabIndex = 12; - this.cb_Options_Elevation_ASTER3.Tag = ""; - this.cb_Options_Elevation_ASTER3.Text = "Use ASTER3 elevation data"; - this.cb_Options_Elevation_ASTER3.UseVisualStyleBackColor = true; - // - // cb_Options_Elevation_ASTER1_EnableCache - // - this.cb_Options_Elevation_ASTER1_EnableCache.AutoSize = true; - this.cb_Options_Elevation_ASTER1_EnableCache.Checked = global::AirScout.Properties.Settings.Default.Elevation_ASTER1_EnableCache; - this.cb_Options_Elevation_ASTER1_EnableCache.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Elevation_ASTER1_EnableCache", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.cb_Options_Elevation_ASTER1_EnableCache.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cb_Options_Elevation_ASTER1_EnableCache.Location = new System.Drawing.Point(6, 42); - this.cb_Options_Elevation_ASTER1_EnableCache.Name = "cb_Options_Elevation_ASTER1_EnableCache"; - this.cb_Options_Elevation_ASTER1_EnableCache.Size = new System.Drawing.Size(179, 17); - this.cb_Options_Elevation_ASTER1_EnableCache.TabIndex = 13; - this.cb_Options_Elevation_ASTER1_EnableCache.Tag = ""; - this.cb_Options_Elevation_ASTER1_EnableCache.Text = "Keep downloaded elevation tiles"; - this.cb_Options_Elevation_ASTER1_EnableCache.UseVisualStyleBackColor = true; - // - // cb_Options_Elevation_ASTER1 - // - this.cb_Options_Elevation_ASTER1.AutoSize = true; - this.cb_Options_Elevation_ASTER1.Checked = global::AirScout.Properties.Settings.Default.Elevation_ASTER1_Enabled; - this.cb_Options_Elevation_ASTER1.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Elevation_ASTER1_Enabled", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.cb_Options_Elevation_ASTER1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cb_Options_Elevation_ASTER1.Location = new System.Drawing.Point(6, 19); - this.cb_Options_Elevation_ASTER1.Name = "cb_Options_Elevation_ASTER1"; - this.cb_Options_Elevation_ASTER1.Size = new System.Drawing.Size(160, 17); - this.cb_Options_Elevation_ASTER1.TabIndex = 12; - this.cb_Options_Elevation_ASTER1.Tag = ""; - this.cb_Options_Elevation_ASTER1.Text = "Use ASTER1 elevation data"; - this.cb_Options_Elevation_ASTER1.UseVisualStyleBackColor = true; - // - // tb_Options_Path_MaxLength - // - this.tb_Options_Path_MaxLength.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Path_MaxLength", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.tb_Options_Path_MaxLength.Font = new System.Drawing.Font("Courier New", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.tb_Options_Path_MaxLength.FormatSpecifier = "F0"; - this.tb_Options_Path_MaxLength.Location = new System.Drawing.Point(318, 385); - this.tb_Options_Path_MaxLength.MaxValue = double.NaN; - this.tb_Options_Path_MaxLength.MinValue = double.NaN; - this.tb_Options_Path_MaxLength.Name = "tb_Options_Path_MaxLength"; - this.tb_Options_Path_MaxLength.Size = new System.Drawing.Size(57, 20); - this.tb_Options_Path_MaxLength.TabIndex = 39; - this.tb_Options_Path_MaxLength.Text = "1000"; - this.tb_Options_Path_MaxLength.Value = global::AirScout.Properties.Settings.Default.Path_MaxLength; - // - // cb_Options_Path_BestCaseElevation - // - this.cb_Options_Path_BestCaseElevation.AutoSize = true; - this.cb_Options_Path_BestCaseElevation.Checked = global::AirScout.Properties.Settings.Default.Path_BestCaseElevation; - this.cb_Options_Path_BestCaseElevation.CheckState = System.Windows.Forms.CheckState.Checked; - this.cb_Options_Path_BestCaseElevation.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Path_BestCaseElevation", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.cb_Options_Path_BestCaseElevation.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cb_Options_Path_BestCaseElevation.Location = new System.Drawing.Point(6, 411); - this.cb_Options_Path_BestCaseElevation.Name = "cb_Options_Path_BestCaseElevation"; - this.cb_Options_Path_BestCaseElevation.Size = new System.Drawing.Size(438, 17); - this.cb_Options_Path_BestCaseElevation.TabIndex = 28; - this.cb_Options_Path_BestCaseElevation.Tag = ""; - this.cb_Options_Path_BestCaseElevation.Text = "Use best case elevation from grid square for both stations if precise location is" + - " unknown"; - this.tt_Options.SetToolTip(this.cb_Options_Path_BestCaseElevation, "If an exact position of a station is not available, use highest available elevati" + - "on within the given grid square. \r\nThis position is ONLY used for path calculati" + - "on and is not kept in database."); - this.cb_Options_Path_BestCaseElevation.UseVisualStyleBackColor = true; - // - // int32TextBox1 - // - this.int32TextBox1.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Planes_ExtendedPlausibilityCheck_MaxErrorDist", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.int32TextBox1.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.int32TextBox1.FormatSpecifier = "F0"; - this.int32TextBox1.Location = new System.Drawing.Point(199, 84); - this.int32TextBox1.MaxValue = 600; - this.int32TextBox1.MinValue = 10; - this.int32TextBox1.Name = "int32TextBox1"; - this.int32TextBox1.Size = new System.Drawing.Size(52, 22); - this.int32TextBox1.TabIndex = 46; - this.int32TextBox1.Text = "10"; - this.int32TextBox1.Value = global::AirScout.Properties.Settings.Default.Planes_ExtendedPlausibilityCheck_MaxErrorDist; - // - // cb_Options_Planes_ExtendedPlausibilityCheck_Enabled - // - this.cb_Options_Planes_ExtendedPlausibilityCheck_Enabled.AutoSize = true; - this.cb_Options_Planes_ExtendedPlausibilityCheck_Enabled.Checked = global::AirScout.Properties.Settings.Default.Planes_ExtendedPlausibilityCheck_Enabled; - this.cb_Options_Planes_ExtendedPlausibilityCheck_Enabled.CheckState = System.Windows.Forms.CheckState.Checked; - this.cb_Options_Planes_ExtendedPlausibilityCheck_Enabled.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Planes_ExtendedPlausibilityCheck_Enabled", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.cb_Options_Planes_ExtendedPlausibilityCheck_Enabled.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cb_Options_Planes_ExtendedPlausibilityCheck_Enabled.Location = new System.Drawing.Point(13, 53); - this.cb_Options_Planes_ExtendedPlausibilityCheck_Enabled.Name = "cb_Options_Planes_ExtendedPlausibilityCheck_Enabled"; - this.cb_Options_Planes_ExtendedPlausibilityCheck_Enabled.Size = new System.Drawing.Size(256, 17); - this.cb_Options_Planes_ExtendedPlausibilityCheck_Enabled.TabIndex = 44; - this.cb_Options_Planes_ExtendedPlausibilityCheck_Enabled.Text = "Enable extended plausibility check of aircraft info"; - this.cb_Options_Planes_ExtendedPlausibilityCheck_Enabled.UseVisualStyleBackColor = true; - // - // tb_Options_Planes_Interval - // - this.tb_Options_Planes_Interval.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Planes_Interval", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.tb_Options_Planes_Interval.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.tb_Options_Planes_Interval.FormatSpecifier = "F0"; - this.tb_Options_Planes_Interval.Location = new System.Drawing.Point(199, 22); - this.tb_Options_Planes_Interval.MaxValue = 600; - this.tb_Options_Planes_Interval.MinValue = 10; - this.tb_Options_Planes_Interval.Name = "tb_Options_Planes_Interval"; - this.tb_Options_Planes_Interval.Size = new System.Drawing.Size(52, 22); - this.tb_Options_Planes_Interval.TabIndex = 43; - this.tb_Options_Planes_Interval.Text = "60"; - this.tb_Options_Planes_Interval.Value = global::AirScout.Properties.Settings.Default.Planes_Interval; - // - // cb_Options_Planes_LogErrors - // - this.cb_Options_Planes_LogErrors.AutoSize = true; - this.cb_Options_Planes_LogErrors.Checked = global::AirScout.Properties.Settings.Default.Planes_LogErrors; - this.cb_Options_Planes_LogErrors.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Planes_LogErrors", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.cb_Options_Planes_LogErrors.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cb_Options_Planes_LogErrors.Location = new System.Drawing.Point(12, 118); - this.cb_Options_Planes_LogErrors.Name = "cb_Options_Planes_LogErrors"; - this.cb_Options_Planes_LogErrors.Size = new System.Drawing.Size(249, 17); - this.cb_Options_Planes_LogErrors.TabIndex = 0; - this.cb_Options_Planes_LogErrors.Text = "Log errors as warnings to AirScout\'s main logfile"; - this.cb_Options_Planes_LogErrors.UseVisualStyleBackColor = true; - // - // cb_Options_Planes_KeepHistory - // - this.cb_Options_Planes_KeepHistory.AutoSize = true; - this.cb_Options_Planes_KeepHistory.Checked = global::AirScout.Properties.Settings.Default.Planes_KeepHistory; - this.cb_Options_Planes_KeepHistory.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Planes_KeepHistory", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.cb_Options_Planes_KeepHistory.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cb_Options_Planes_KeepHistory.Location = new System.Drawing.Point(18, 81); - this.cb_Options_Planes_KeepHistory.Name = "cb_Options_Planes_KeepHistory"; - this.cb_Options_Planes_KeepHistory.Size = new System.Drawing.Size(156, 17); - this.cb_Options_Planes_KeepHistory.TabIndex = 4; - this.cb_Options_Planes_KeepHistory.Text = "Keep Plane Position History"; - this.tt_Options.SetToolTip(this.cb_Options_Planes_KeepHistory, "Check this option to keep plane positions in database for history analysis.\r\nCAUT" + - "ION! This will need lot of CPU performance and space on disk!"); - this.cb_Options_Planes_KeepHistory.UseVisualStyleBackColor = true; - // - // ud_Options_Planes_Position_DatabaseLifetime - // - this.ud_Options_Planes_Position_DatabaseLifetime.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "AircraftDatabase_MaxDaysLifetime", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.ud_Options_Planes_Position_DatabaseLifetime.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.ud_Options_Planes_Position_DatabaseLifetime.Location = new System.Drawing.Point(199, 14); - this.ud_Options_Planes_Position_DatabaseLifetime.Maximum = new decimal(new int[] { - 365, - 0, - 0, - 0}); - this.ud_Options_Planes_Position_DatabaseLifetime.Minimum = new decimal(new int[] { - 1, - 0, - 0, - 0}); - this.ud_Options_Planes_Position_DatabaseLifetime.Name = "ud_Options_Planes_Position_DatabaseLifetime"; - this.ud_Options_Planes_Position_DatabaseLifetime.Size = new System.Drawing.Size(49, 22); - this.ud_Options_Planes_Position_DatabaseLifetime.TabIndex = 2; - this.ud_Options_Planes_Position_DatabaseLifetime.Value = global::AirScout.Properties.Settings.Default.AircraftDatabase_MaxDaysLifetime; - // - // tb_Options_Planes_Positions_TTL - // - this.tb_Options_Planes_Positions_TTL.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Planes_Position_TTL", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.tb_Options_Planes_Positions_TTL.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.tb_Options_Planes_Positions_TTL.FormatSpecifier = "F0"; - this.tb_Options_Planes_Positions_TTL.Location = new System.Drawing.Point(192, 65); - this.tb_Options_Planes_Positions_TTL.MaxValue = 30; - this.tb_Options_Planes_Positions_TTL.MinValue = 0; - this.tb_Options_Planes_Positions_TTL.Name = "tb_Options_Planes_Positions_TTL"; - this.tb_Options_Planes_Positions_TTL.Size = new System.Drawing.Size(52, 22); - this.tb_Options_Planes_Positions_TTL.TabIndex = 43; - this.tb_Options_Planes_Positions_TTL.Text = "5"; - this.tb_Options_Planes_Positions_TTL.Value = global::AirScout.Properties.Settings.Default.Planes_Position_TTL; - // - // tb_Options_Planes_MaxAlt - // - this.tb_Options_Planes_MaxAlt.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Planes_MaxAlt", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.tb_Options_Planes_MaxAlt.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.tb_Options_Planes_MaxAlt.FormatSpecifier = "F0"; - this.tb_Options_Planes_MaxAlt.Location = new System.Drawing.Point(192, 39); - this.tb_Options_Planes_MaxAlt.MaxValue = 20000; - this.tb_Options_Planes_MaxAlt.MinValue = 0; - this.tb_Options_Planes_MaxAlt.Name = "tb_Options_Planes_MaxAlt"; - this.tb_Options_Planes_MaxAlt.Size = new System.Drawing.Size(52, 22); - this.tb_Options_Planes_MaxAlt.TabIndex = 42; - this.tb_Options_Planes_MaxAlt.Text = "12200"; - this.tb_Options_Planes_MaxAlt.Value = global::AirScout.Properties.Settings.Default.Planes_MaxAlt; - // - // tb_Options_Planes_MinAlt - // - this.tb_Options_Planes_MinAlt.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Planes_MinAlt", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.tb_Options_Planes_MinAlt.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.tb_Options_Planes_MinAlt.FormatSpecifier = "F0"; - this.tb_Options_Planes_MinAlt.Location = new System.Drawing.Point(192, 14); - this.tb_Options_Planes_MinAlt.MaxValue = 20000; - this.tb_Options_Planes_MinAlt.MinValue = 0; - this.tb_Options_Planes_MinAlt.Name = "tb_Options_Planes_MinAlt"; - this.tb_Options_Planes_MinAlt.Size = new System.Drawing.Size(52, 22); - this.tb_Options_Planes_MinAlt.TabIndex = 41; - this.tb_Options_Planes_MinAlt.Text = "5000"; - this.tb_Options_Planes_MinAlt.Value = global::AirScout.Properties.Settings.Default.Planes_MinAlt; - // - // tb_Options_Planes_Filter_MinAlt - // - this.tb_Options_Planes_Filter_MinAlt.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Planes_Filter_Min_Alt", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.tb_Options_Planes_Filter_MinAlt.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.tb_Options_Planes_Filter_MinAlt.FormatSpecifier = "F0"; - this.tb_Options_Planes_Filter_MinAlt.Location = new System.Drawing.Point(192, 86); - this.tb_Options_Planes_Filter_MinAlt.MaxValue = 12000; - this.tb_Options_Planes_Filter_MinAlt.MinValue = 0; - this.tb_Options_Planes_Filter_MinAlt.Name = "tb_Options_Planes_Filter_MinAlt"; - this.tb_Options_Planes_Filter_MinAlt.Size = new System.Drawing.Size(52, 22); - this.tb_Options_Planes_Filter_MinAlt.TabIndex = 43; - this.tb_Options_Planes_Filter_MinAlt.Text = "0"; - this.tb_Options_Planes_Filter_MinAlt.Value = global::AirScout.Properties.Settings.Default.Planes_Filter_Min_Alt; - // - // tb_Options_Planes_Filter_Max_Circumcircle - // - this.tb_Options_Planes_Filter_Max_Circumcircle.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Planes_Filter_Max_Circumcircle", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.tb_Options_Planes_Filter_Max_Circumcircle.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.tb_Options_Planes_Filter_Max_Circumcircle.FormatSpecifier = "F0"; - this.tb_Options_Planes_Filter_Max_Circumcircle.Location = new System.Drawing.Point(192, 59); - this.tb_Options_Planes_Filter_Max_Circumcircle.MaxValue = 1000; - this.tb_Options_Planes_Filter_Max_Circumcircle.MinValue = -1; - this.tb_Options_Planes_Filter_Max_Circumcircle.Name = "tb_Options_Planes_Filter_Max_Circumcircle"; - this.tb_Options_Planes_Filter_Max_Circumcircle.Size = new System.Drawing.Size(52, 22); - this.tb_Options_Planes_Filter_Max_Circumcircle.TabIndex = 42; - this.tb_Options_Planes_Filter_Max_Circumcircle.Text = "0"; - this.tb_Options_Planes_Filter_Max_Circumcircle.Value = global::AirScout.Properties.Settings.Default.Planes_Filter_Max_Circumcircle; - // - // cb_Options_Alarm_Activate - // - this.cb_Options_Alarm_Activate.AutoSize = true; - this.cb_Options_Alarm_Activate.Checked = global::AirScout.Properties.Settings.Default.Alarm_Activate; - this.cb_Options_Alarm_Activate.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Alarm_Activate", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.cb_Options_Alarm_Activate.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cb_Options_Alarm_Activate.Location = new System.Drawing.Point(13, 19); - this.cb_Options_Alarm_Activate.Name = "cb_Options_Alarm_Activate"; - this.cb_Options_Alarm_Activate.Size = new System.Drawing.Size(94, 17); - this.cb_Options_Alarm_Activate.TabIndex = 1; - this.cb_Options_Alarm_Activate.Tag = ""; - this.cb_Options_Alarm_Activate.Text = "Activate Alarm"; - this.cb_Options_Alarm_Activate.UseVisualStyleBackColor = true; - // - // cb_Options_Alarm_PlaySound - // - this.cb_Options_Alarm_PlaySound.AutoSize = true; - this.cb_Options_Alarm_PlaySound.Checked = global::AirScout.Properties.Settings.Default.Alarm_PlaySound; - this.cb_Options_Alarm_PlaySound.CheckState = System.Windows.Forms.CheckState.Checked; - this.cb_Options_Alarm_PlaySound.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Alarm_PlaySound", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.cb_Options_Alarm_PlaySound.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cb_Options_Alarm_PlaySound.Location = new System.Drawing.Point(13, 53); - this.cb_Options_Alarm_PlaySound.Name = "cb_Options_Alarm_PlaySound"; - this.cb_Options_Alarm_PlaySound.Size = new System.Drawing.Size(78, 17); - this.cb_Options_Alarm_PlaySound.TabIndex = 1; - this.cb_Options_Alarm_PlaySound.Tag = ""; - this.cb_Options_Alarm_PlaySound.Text = "Play sound"; - this.cb_Options_Alarm_PlaySound.UseVisualStyleBackColor = true; - // - // tb_Options_Alarm_Distance - // - this.tb_Options_Alarm_Distance.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Alarm_Distance", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.tb_Options_Alarm_Distance.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.tb_Options_Alarm_Distance.FormatSpecifier = "F0"; - this.tb_Options_Alarm_Distance.Location = new System.Drawing.Point(143, 49); - this.tb_Options_Alarm_Distance.MaxValue = 1000D; - this.tb_Options_Alarm_Distance.MinValue = 0D; - this.tb_Options_Alarm_Distance.Name = "tb_Options_Alarm_Distance"; - this.tb_Options_Alarm_Distance.Size = new System.Drawing.Size(75, 22); - this.tb_Options_Alarm_Distance.TabIndex = 3; - this.tb_Options_Alarm_Distance.Text = "100"; - this.tb_Options_Alarm_Distance.Value = global::AirScout.Properties.Settings.Default.Alarm_Distance; - // - // tb_Options_Webserver_Port - // - this.tb_Options_Webserver_Port.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Webserver_Port", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.tb_Options_Webserver_Port.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.tb_Options_Webserver_Port.FormatSpecifier = "F0"; - this.tb_Options_Webserver_Port.Location = new System.Drawing.Point(150, 28); - this.tb_Options_Webserver_Port.MaxValue = 65535; - this.tb_Options_Webserver_Port.MinValue = 0; - this.tb_Options_Webserver_Port.Name = "tb_Options_Webserver_Port"; - this.tb_Options_Webserver_Port.Size = new System.Drawing.Size(57, 22); - this.tb_Options_Webserver_Port.TabIndex = 8; - this.tb_Options_Webserver_Port.Text = "9880"; - this.tb_Options_Webserver_Port.Value = global::AirScout.Properties.Settings.Default.Webserver_Port; - // - // cb_Options_Server_Activate - // - this.cb_Options_Server_Activate.AutoSize = true; - this.cb_Options_Server_Activate.Checked = global::AirScout.Properties.Settings.Default.Server_Activate; - this.cb_Options_Server_Activate.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Server_Activate", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.cb_Options_Server_Activate.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cb_Options_Server_Activate.Location = new System.Drawing.Point(13, 23); - this.cb_Options_Server_Activate.Name = "cb_Options_Server_Activate"; - this.cb_Options_Server_Activate.Size = new System.Drawing.Size(142, 17); - this.cb_Options_Server_Activate.TabIndex = 1; - this.cb_Options_Server_Activate.Tag = ""; - this.cb_Options_Server_Activate.Text = "Activate Network Server"; - this.cb_Options_Server_Activate.UseVisualStyleBackColor = true; - // - // tb_Options_Server_Port - // - this.tb_Options_Server_Port.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Server_Port", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.tb_Options_Server_Port.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.tb_Options_Server_Port.FormatSpecifier = "F0"; - this.tb_Options_Server_Port.Location = new System.Drawing.Point(153, 56); - this.tb_Options_Server_Port.MaxValue = 65535; - this.tb_Options_Server_Port.MinValue = 0; - this.tb_Options_Server_Port.Name = "tb_Options_Server_Port"; - this.tb_Options_Server_Port.Size = new System.Drawing.Size(57, 22); - this.tb_Options_Server_Port.TabIndex = 6; - this.tb_Options_Server_Port.Text = "9872"; - this.tb_Options_Server_Port.Value = global::AirScout.Properties.Settings.Default.Server_Port; - // - // tb_Options_Server_Name - // - this.tb_Options_Server_Name.BackColor = System.Drawing.Color.FloralWhite; - this.tb_Options_Server_Name.DataBindings.Add(new System.Windows.Forms.Binding("Text", global::AirScout.Properties.Settings.Default, "Server_Name", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.tb_Options_Server_Name.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.tb_Options_Server_Name.Location = new System.Drawing.Point(153, 30); - this.tb_Options_Server_Name.Name = "tb_Options_Server_Name"; - this.tb_Options_Server_Name.Size = new System.Drawing.Size(57, 20); - this.tb_Options_Server_Name.TabIndex = 2; - this.tb_Options_Server_Name.Tag = ""; - this.tb_Options_Server_Name.Text = global::AirScout.Properties.Settings.Default.Server_Name; - // - // tb_Options_SpecLab_UpdateInterval - // - this.tb_Options_SpecLab_UpdateInterval.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "SpecLab_Update", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.tb_Options_SpecLab_UpdateInterval.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.tb_Options_SpecLab_UpdateInterval.FormatSpecifier = "F1"; - this.tb_Options_SpecLab_UpdateInterval.Location = new System.Drawing.Point(106, 230); - this.tb_Options_SpecLab_UpdateInterval.MaxValue = 100D; - this.tb_Options_SpecLab_UpdateInterval.MinValue = 0D; - this.tb_Options_SpecLab_UpdateInterval.Name = "tb_Options_SpecLab_UpdateInterval"; - this.tb_Options_SpecLab_UpdateInterval.Size = new System.Drawing.Size(63, 22); - this.tb_Options_SpecLab_UpdateInterval.TabIndex = 18; - this.tb_Options_SpecLab_UpdateInterval.Text = "1.0"; - this.tb_Options_SpecLab_UpdateInterval.Value = global::AirScout.Properties.Settings.Default.SpecLab_Update; - // - // tb_Options_SpecLab_F2 - // - this.tb_Options_SpecLab_F2.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "SpecLab_F2", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.tb_Options_SpecLab_F2.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.tb_Options_SpecLab_F2.FormatSpecifier = "F0"; - this.tb_Options_SpecLab_F2.Location = new System.Drawing.Point(109, 205); - this.tb_Options_SpecLab_F2.MaxValue = 10000; - this.tb_Options_SpecLab_F2.MinValue = 0; - this.tb_Options_SpecLab_F2.Name = "tb_Options_SpecLab_F2"; - this.tb_Options_SpecLab_F2.Size = new System.Drawing.Size(60, 22); - this.tb_Options_SpecLab_F2.TabIndex = 17; - this.tb_Options_SpecLab_F2.Text = "1600"; - this.tb_Options_SpecLab_F2.Value = global::AirScout.Properties.Settings.Default.SpecLab_F2; - // - // tb_Options_SpecLab_F1 - // - this.tb_Options_SpecLab_F1.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "SpecLab_F1", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.tb_Options_SpecLab_F1.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.tb_Options_SpecLab_F1.FormatSpecifier = "F0"; - this.tb_Options_SpecLab_F1.Location = new System.Drawing.Point(109, 179); - this.tb_Options_SpecLab_F1.MaxValue = 10000; - this.tb_Options_SpecLab_F1.MinValue = 0; - this.tb_Options_SpecLab_F1.Name = "tb_Options_SpecLab_F1"; - this.tb_Options_SpecLab_F1.Size = new System.Drawing.Size(60, 22); - this.tb_Options_SpecLab_F1.TabIndex = 16; - this.tb_Options_SpecLab_F1.Text = "400"; - this.tb_Options_SpecLab_F1.Value = global::AirScout.Properties.Settings.Default.SpecLab_F1; - // - // tb_SpecLab_FileName - // - this.tb_SpecLab_FileName.BackColor = System.Drawing.Color.FloralWhite; - this.tb_SpecLab_FileName.DataBindings.Add(new System.Windows.Forms.Binding("Text", global::AirScout.Properties.Settings.Default, "SpecLab_FileName", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.tb_SpecLab_FileName.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.tb_SpecLab_FileName.Location = new System.Drawing.Point(109, 153); - this.tb_SpecLab_FileName.Name = "tb_SpecLab_FileName"; - this.tb_SpecLab_FileName.Size = new System.Drawing.Size(347, 20); - this.tb_SpecLab_FileName.TabIndex = 6; - this.tb_SpecLab_FileName.Tag = ""; - this.tb_SpecLab_FileName.Text = global::AirScout.Properties.Settings.Default.SpecLab_FileName; - // - // tb_SpecLab_URL - // - this.tb_SpecLab_URL.BackColor = System.Drawing.Color.FloralWhite; - this.tb_SpecLab_URL.DataBindings.Add(new System.Windows.Forms.Binding("Text", global::AirScout.Properties.Settings.Default, "SpecLab_URL", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.tb_SpecLab_URL.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.tb_SpecLab_URL.Location = new System.Drawing.Point(109, 126); - this.tb_SpecLab_URL.Name = "tb_SpecLab_URL"; - this.tb_SpecLab_URL.Size = new System.Drawing.Size(347, 20); - this.tb_SpecLab_URL.TabIndex = 2; - this.tb_SpecLab_URL.Tag = ""; - this.tb_SpecLab_URL.Text = global::AirScout.Properties.Settings.Default.SpecLab_URL; - // - // cb_SpecLab_Enabled - // - this.cb_SpecLab_Enabled.AutoSize = true; - this.cb_SpecLab_Enabled.Checked = global::AirScout.Properties.Settings.Default.SpecLab_Enabled; - this.cb_SpecLab_Enabled.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "SpecLab_Enabled", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.cb_SpecLab_Enabled.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cb_SpecLab_Enabled.Location = new System.Drawing.Point(18, 90); - this.cb_SpecLab_Enabled.Name = "cb_SpecLab_Enabled"; - this.cb_SpecLab_Enabled.Size = new System.Drawing.Size(122, 17); - this.cb_SpecLab_Enabled.TabIndex = 1; - this.cb_SpecLab_Enabled.Tag = ""; - this.cb_SpecLab_Enabled.Text = "Activate Connection"; - this.cb_SpecLab_Enabled.UseVisualStyleBackColor = true; - // - // rb_Options_Track_File_None - // - this.rb_Options_Track_File_None.AutoSize = true; - this.rb_Options_Track_File_None.Checked = global::AirScout.Properties.Settings.Default.Track_File_None; - this.rb_Options_Track_File_None.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Track_File_None", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.rb_Options_Track_File_None.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.rb_Options_Track_File_None.Location = new System.Drawing.Point(17, 19); - this.rb_Options_Track_File_None.Name = "rb_Options_Track_File_None"; - this.rb_Options_Track_File_None.Size = new System.Drawing.Size(51, 17); - this.rb_Options_Track_File_None.TabIndex = 12; - this.rb_Options_Track_File_None.TabStop = true; - this.rb_Options_Track_File_None.Tag = ""; - this.rb_Options_Track_File_None.Text = "None"; - this.rb_Options_Track_File_None.UseVisualStyleBackColor = true; - // - // rb_Options_Track_File_WSJT - // - this.rb_Options_Track_File_WSJT.AutoSize = true; - this.rb_Options_Track_File_WSJT.Checked = global::AirScout.Properties.Settings.Default.Track_File_WSJT; - this.rb_Options_Track_File_WSJT.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Track_File_WSJT", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.rb_Options_Track_File_WSJT.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.rb_Options_Track_File_WSJT.Location = new System.Drawing.Point(17, 66); - this.rb_Options_Track_File_WSJT.Name = "rb_Options_Track_File_WSJT"; - this.rb_Options_Track_File_WSJT.Size = new System.Drawing.Size(84, 17); - this.rb_Options_Track_File_WSJT.TabIndex = 7; - this.rb_Options_Track_File_WSJT.Tag = ""; - this.rb_Options_Track_File_WSJT.Text = "WSJT Az/El"; - this.rb_Options_Track_File_WSJT.UseVisualStyleBackColor = true; - // - // rb_Options_Track_File_Native - // - this.rb_Options_Track_File_Native.AutoSize = true; - this.rb_Options_Track_File_Native.Checked = global::AirScout.Properties.Settings.Default.Track_File_Native; - this.rb_Options_Track_File_Native.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Track_File_Native", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.rb_Options_Track_File_Native.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.rb_Options_Track_File_Native.Location = new System.Drawing.Point(17, 43); - this.rb_Options_Track_File_Native.Name = "rb_Options_Track_File_Native"; - this.rb_Options_Track_File_Native.Size = new System.Drawing.Size(85, 17); - this.rb_Options_Track_File_Native.TabIndex = 6; - this.rb_Options_Track_File_Native.Tag = ""; - this.rb_Options_Track_File_Native.Text = "Native Az/El"; - this.rb_Options_Track_File_Native.UseVisualStyleBackColor = true; - // - // rb_Options_Track_DDE_None - // - this.rb_Options_Track_DDE_None.AutoSize = true; - this.rb_Options_Track_DDE_None.Checked = global::AirScout.Properties.Settings.Default.Track_DDE_None; - this.rb_Options_Track_DDE_None.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Track_DDE_None", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.rb_Options_Track_DDE_None.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.rb_Options_Track_DDE_None.Location = new System.Drawing.Point(17, 19); - this.rb_Options_Track_DDE_None.Name = "rb_Options_Track_DDE_None"; - this.rb_Options_Track_DDE_None.Size = new System.Drawing.Size(51, 17); - this.rb_Options_Track_DDE_None.TabIndex = 11; - this.rb_Options_Track_DDE_None.TabStop = true; - this.rb_Options_Track_DDE_None.Tag = ""; - this.rb_Options_Track_DDE_None.Text = "None"; - this.rb_Options_Track_DDE_None.UseVisualStyleBackColor = true; - // - // rb_Options_Track_DDE_HRD - // - this.rb_Options_Track_DDE_HRD.AutoSize = true; - this.rb_Options_Track_DDE_HRD.Checked = global::AirScout.Properties.Settings.Default.Track_DDE_HRD; - this.rb_Options_Track_DDE_HRD.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Track_DDE_HRD", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.rb_Options_Track_DDE_HRD.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.rb_Options_Track_DDE_HRD.Location = new System.Drawing.Point(17, 42); - this.rb_Options_Track_DDE_HRD.Name = "rb_Options_Track_DDE_HRD"; - this.rb_Options_Track_DDE_HRD.Size = new System.Drawing.Size(202, 17); - this.rb_Options_Track_DDE_HRD.TabIndex = 6; - this.rb_Options_Track_DDE_HRD.Tag = ""; - this.rb_Options_Track_DDE_HRD.Text = "Ham Radio Deluxe (HRDRotator.exe)"; - this.rb_Options_Track_DDE_HRD.UseVisualStyleBackColor = true; - // - // tb_Options_Track_UDP_AirScout_Port - // - this.tb_Options_Track_UDP_AirScout_Port.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Track_UDP_AirScout_Port", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.tb_Options_Track_UDP_AirScout_Port.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.tb_Options_Track_UDP_AirScout_Port.FormatSpecifier = "F0"; - this.tb_Options_Track_UDP_AirScout_Port.Location = new System.Drawing.Point(526, 71); - this.tb_Options_Track_UDP_AirScout_Port.MaxValue = 0; - this.tb_Options_Track_UDP_AirScout_Port.MinValue = 0; - this.tb_Options_Track_UDP_AirScout_Port.Name = "tb_Options_Track_UDP_AirScout_Port"; - this.tb_Options_Track_UDP_AirScout_Port.Size = new System.Drawing.Size(43, 22); - this.tb_Options_Track_UDP_AirScout_Port.TabIndex = 17; - this.tb_Options_Track_UDP_AirScout_Port.Text = "9872"; - this.tb_Options_Track_UDP_AirScout_Port.Value = global::AirScout.Properties.Settings.Default.Track_UDP_AirScout_Port; - // - // tb_Options_Track_UDP_WinTest_Port - // - this.tb_Options_Track_UDP_WinTest_Port.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Track_UDP_WinTest_Port", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.tb_Options_Track_UDP_WinTest_Port.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.tb_Options_Track_UDP_WinTest_Port.FormatSpecifier = "F0"; - this.tb_Options_Track_UDP_WinTest_Port.Location = new System.Drawing.Point(526, 42); - this.tb_Options_Track_UDP_WinTest_Port.MaxValue = 0; - this.tb_Options_Track_UDP_WinTest_Port.MinValue = 0; - this.tb_Options_Track_UDP_WinTest_Port.Name = "tb_Options_Track_UDP_WinTest_Port"; - this.tb_Options_Track_UDP_WinTest_Port.Size = new System.Drawing.Size(43, 22); - this.tb_Options_Track_UDP_WinTest_Port.TabIndex = 16; - this.tb_Options_Track_UDP_WinTest_Port.Text = "9871"; - this.tb_Options_Track_UDP_WinTest_Port.Value = global::AirScout.Properties.Settings.Default.Track_UDP_WinTest_Port; - // - // rb_Options_Track_UDP_None - // - this.rb_Options_Track_UDP_None.AutoSize = true; - this.rb_Options_Track_UDP_None.Checked = global::AirScout.Properties.Settings.Default.Track_UDP_None; - this.rb_Options_Track_UDP_None.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Track_UDP_None", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.rb_Options_Track_UDP_None.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.rb_Options_Track_UDP_None.Location = new System.Drawing.Point(17, 19); - this.rb_Options_Track_UDP_None.Name = "rb_Options_Track_UDP_None"; - this.rb_Options_Track_UDP_None.Size = new System.Drawing.Size(51, 17); - this.rb_Options_Track_UDP_None.TabIndex = 11; - this.rb_Options_Track_UDP_None.TabStop = true; - this.rb_Options_Track_UDP_None.Tag = ""; - this.rb_Options_Track_UDP_None.Text = "None"; - this.rb_Options_Track_UDP_None.UseVisualStyleBackColor = true; - // - // rb_Options_Track_UDP_AirScout - // - this.rb_Options_Track_UDP_AirScout.AutoSize = true; - this.rb_Options_Track_UDP_AirScout.Checked = global::AirScout.Properties.Settings.Default.Track_UDP_AirScout; - this.rb_Options_Track_UDP_AirScout.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Track_UDP_AirScout", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.rb_Options_Track_UDP_AirScout.Enabled = false; - this.rb_Options_Track_UDP_AirScout.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.rb_Options_Track_UDP_AirScout.Location = new System.Drawing.Point(17, 65); - this.rb_Options_Track_UDP_AirScout.Name = "rb_Options_Track_UDP_AirScout"; - this.rb_Options_Track_UDP_AirScout.Size = new System.Drawing.Size(280, 17); - this.rb_Options_Track_UDP_AirScout.TabIndex = 7; - this.rb_Options_Track_UDP_AirScout.Tag = ""; - this.rb_Options_Track_UDP_AirScout.Text = "UDP Broadcast (AirScout) Az/El (not implemented yet)"; - this.rb_Options_Track_UDP_AirScout.UseVisualStyleBackColor = true; - // - // rb_Options_Track_UDP_WinTest - // - this.rb_Options_Track_UDP_WinTest.AutoSize = true; - this.rb_Options_Track_UDP_WinTest.Checked = global::AirScout.Properties.Settings.Default.Track_UDP_WinTest; - this.rb_Options_Track_UDP_WinTest.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Track_UDP_WinTest", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.rb_Options_Track_UDP_WinTest.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.rb_Options_Track_UDP_WinTest.Location = new System.Drawing.Point(17, 42); - this.rb_Options_Track_UDP_WinTest.Name = "rb_Options_Track_UDP_WinTest"; - this.rb_Options_Track_UDP_WinTest.Size = new System.Drawing.Size(188, 17); - this.rb_Options_Track_UDP_WinTest.TabIndex = 6; - this.rb_Options_Track_UDP_WinTest.Tag = ""; - this.rb_Options_Track_UDP_WinTest.Text = "UDP Broadcast (Win-Test) Az only"; - this.rb_Options_Track_UDP_WinTest.UseVisualStyleBackColor = true; - // - // tb_Options_Track_Serial_Baudrate - // - this.tb_Options_Track_Serial_Baudrate.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Track_Serial_Baudrate", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.tb_Options_Track_Serial_Baudrate.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.tb_Options_Track_Serial_Baudrate.FormatSpecifier = "F0"; - this.tb_Options_Track_Serial_Baudrate.Location = new System.Drawing.Point(526, 13); - this.tb_Options_Track_Serial_Baudrate.MaxValue = 115200; - this.tb_Options_Track_Serial_Baudrate.MinValue = 0; - this.tb_Options_Track_Serial_Baudrate.Name = "tb_Options_Track_Serial_Baudrate"; - this.tb_Options_Track_Serial_Baudrate.Size = new System.Drawing.Size(72, 22); - this.tb_Options_Track_Serial_Baudrate.TabIndex = 11; - this.tb_Options_Track_Serial_Baudrate.Text = "4800"; - this.tb_Options_Track_Serial_Baudrate.Value = global::AirScout.Properties.Settings.Default.Track_Serial_Baudrate; - // - // rb_Options_Track_Serial_None - // - this.rb_Options_Track_Serial_None.AutoSize = true; - this.rb_Options_Track_Serial_None.Checked = global::AirScout.Properties.Settings.Default.Track_Serial_None; - this.rb_Options_Track_Serial_None.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Track_Serial_None", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.rb_Options_Track_Serial_None.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.rb_Options_Track_Serial_None.Location = new System.Drawing.Point(17, 15); - this.rb_Options_Track_Serial_None.Name = "rb_Options_Track_Serial_None"; - this.rb_Options_Track_Serial_None.Size = new System.Drawing.Size(51, 17); - this.rb_Options_Track_Serial_None.TabIndex = 10; - this.rb_Options_Track_Serial_None.TabStop = true; - this.rb_Options_Track_Serial_None.Tag = ""; - this.rb_Options_Track_Serial_None.Text = "None"; - this.rb_Options_Track_Serial_None.UseVisualStyleBackColor = true; - // - // tb_Options_Track_Serial_Port - // - this.tb_Options_Track_Serial_Port.CharacterCasing = System.Windows.Forms.CharacterCasing.Upper; - this.tb_Options_Track_Serial_Port.DataBindings.Add(new System.Windows.Forms.Binding("Text", global::AirScout.Properties.Settings.Default, "Track_Serial_Port", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.tb_Options_Track_Serial_Port.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.tb_Options_Track_Serial_Port.Location = new System.Drawing.Point(407, 14); - this.tb_Options_Track_Serial_Port.Name = "tb_Options_Track_Serial_Port"; - this.tb_Options_Track_Serial_Port.Size = new System.Drawing.Size(54, 22); - this.tb_Options_Track_Serial_Port.TabIndex = 6; - this.tb_Options_Track_Serial_Port.Tag = ""; - this.tb_Options_Track_Serial_Port.Text = global::AirScout.Properties.Settings.Default.Track_Serial_Port; - // - // rb_Options_Track_Serial_GS232_AZEL - // - this.rb_Options_Track_Serial_GS232_AZEL.AutoSize = true; - this.rb_Options_Track_Serial_GS232_AZEL.Checked = global::AirScout.Properties.Settings.Default.Track_Serial_GS232_AZEL; - this.rb_Options_Track_Serial_GS232_AZEL.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Track_Serial_GS232_AZEL", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.rb_Options_Track_Serial_GS232_AZEL.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.rb_Options_Track_Serial_GS232_AZEL.Location = new System.Drawing.Point(17, 61); - this.rb_Options_Track_Serial_GS232_AZEL.Name = "rb_Options_Track_Serial_GS232_AZEL"; - this.rb_Options_Track_Serial_GS232_AZEL.Size = new System.Drawing.Size(97, 17); - this.rb_Options_Track_Serial_GS232_AZEL.TabIndex = 5; - this.rb_Options_Track_Serial_GS232_AZEL.Tag = ""; - this.rb_Options_Track_Serial_GS232_AZEL.Text = "GS-232A Az/El"; - this.rb_Options_Track_Serial_GS232_AZEL.UseVisualStyleBackColor = true; - // - // rb_Options_Track_Serial_GS232_AZ - // - this.rb_Options_Track_Serial_GS232_AZ.AutoSize = true; - this.rb_Options_Track_Serial_GS232_AZ.Checked = global::AirScout.Properties.Settings.Default.Track_Serial_GS232_AZ; - this.rb_Options_Track_Serial_GS232_AZ.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Track_Serial_GS232_AZ", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.rb_Options_Track_Serial_GS232_AZ.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.rb_Options_Track_Serial_GS232_AZ.Location = new System.Drawing.Point(17, 38); - this.rb_Options_Track_Serial_GS232_AZ.Name = "rb_Options_Track_Serial_GS232_AZ"; - this.rb_Options_Track_Serial_GS232_AZ.Size = new System.Drawing.Size(105, 17); - this.rb_Options_Track_Serial_GS232_AZ.TabIndex = 0; - this.rb_Options_Track_Serial_GS232_AZ.Tag = ""; - this.rb_Options_Track_Serial_GS232_AZ.Text = "GS-232A Az only"; - this.rb_Options_Track_Serial_GS232_AZ.UseVisualStyleBackColor = true; - // - // cb_Options_Track_Activate - // - this.cb_Options_Track_Activate.AutoSize = true; - this.cb_Options_Track_Activate.Checked = global::AirScout.Properties.Settings.Default.Track_Activate; - this.cb_Options_Track_Activate.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Track_Activate", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.cb_Options_Track_Activate.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cb_Options_Track_Activate.Location = new System.Drawing.Point(13, 19); - this.cb_Options_Track_Activate.Name = "cb_Options_Track_Activate"; - this.cb_Options_Track_Activate.Size = new System.Drawing.Size(153, 17); - this.cb_Options_Track_Activate.TabIndex = 1; - this.cb_Options_Track_Activate.Tag = ""; - this.cb_Options_Track_Activate.Text = "Activate Antenna Tracking"; - this.cb_Options_Track_Activate.UseVisualStyleBackColor = true; - // - // cb_Options_Watchlist_SyncWithKST - // - this.cb_Options_Watchlist_SyncWithKST.AutoSize = true; - this.cb_Options_Watchlist_SyncWithKST.CheckAlign = System.Drawing.ContentAlignment.MiddleRight; - this.cb_Options_Watchlist_SyncWithKST.Checked = global::AirScout.Properties.Settings.Default.Watchlist_SyncWithKST; - this.cb_Options_Watchlist_SyncWithKST.CheckState = System.Windows.Forms.CheckState.Checked; - this.cb_Options_Watchlist_SyncWithKST.DataBindings.Add(new System.Windows.Forms.Binding("Enabled", global::AirScout.Properties.Settings.Default, "Server_Activate", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.cb_Options_Watchlist_SyncWithKST.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Watchlist_SyncWithKST", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.cb_Options_Watchlist_SyncWithKST.Enabled = global::AirScout.Properties.Settings.Default.Server_Activate; - this.cb_Options_Watchlist_SyncWithKST.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.cb_Options_Watchlist_SyncWithKST.Location = new System.Drawing.Point(6, 47); - this.cb_Options_Watchlist_SyncWithKST.Name = "cb_Options_Watchlist_SyncWithKST"; - this.cb_Options_Watchlist_SyncWithKST.Size = new System.Drawing.Size(436, 17); - this.cb_Options_Watchlist_SyncWithKST.TabIndex = 6; - this.cb_Options_Watchlist_SyncWithKST.Text = "Keep in sync with KST user list (needs wtKST > V3.1 and network functions activat" + - "ed):"; - this.cb_Options_Watchlist_SyncWithKST.UseVisualStyleBackColor = true; - this.cb_Options_Watchlist_SyncWithKST.CheckedChanged += new System.EventHandler(this.cb_Options_Watchlist_SyncWithKST_CheckedChanged); - // - // tb_Options_Watchlist_MaxCount - // - this.tb_Options_Watchlist_MaxCount.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Watchlist_MaxCount", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.tb_Options_Watchlist_MaxCount.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.tb_Options_Watchlist_MaxCount.FormatSpecifier = "F0"; - this.tb_Options_Watchlist_MaxCount.Location = new System.Drawing.Point(395, 20); - this.tb_Options_Watchlist_MaxCount.MaxValue = 1000; - this.tb_Options_Watchlist_MaxCount.MinValue = 1; - this.tb_Options_Watchlist_MaxCount.Name = "tb_Options_Watchlist_MaxCount"; - this.tb_Options_Watchlist_MaxCount.Size = new System.Drawing.Size(47, 22); - this.tb_Options_Watchlist_MaxCount.TabIndex = 5; - this.tb_Options_Watchlist_MaxCount.Text = "1000"; - this.tb_Options_Watchlist_MaxCount.Value = global::AirScout.Properties.Settings.Default.Watchlist_MaxCount; - // - // btn_Options_DXMap - // - this.btn_Options_DXMap.BackgroundImage = global::AirScout.Properties.Resources.Map2; - this.btn_Options_DXMap.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch; - this.btn_Options_DXMap.Location = new System.Drawing.Point(8, 135); - this.btn_Options_DXMap.Name = "btn_Options_DXMap"; - this.btn_Options_DXMap.Size = new System.Drawing.Size(75, 81); - this.btn_Options_DXMap.TabIndex = 29; - this.btn_Options_DXMap.Text = "\r\nMap"; - this.btn_Options_DXMap.UseVisualStyleBackColor = true; - this.btn_Options_DXMap.Click += new System.EventHandler(this.btn_Options_DXMap_Click); - // - // btn_Options_MyMap - // - this.btn_Options_MyMap.BackgroundImage = global::AirScout.Properties.Resources.Map2; - this.btn_Options_MyMap.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch; - this.btn_Options_MyMap.Location = new System.Drawing.Point(7, 134); - this.btn_Options_MyMap.Name = "btn_Options_MyMap"; - this.btn_Options_MyMap.Size = new System.Drawing.Size(75, 81); - this.btn_Options_MyMap.TabIndex = 30; - this.btn_Options_MyMap.Text = "\r\nMap"; - this.btn_Options_MyMap.UseVisualStyleBackColor = true; - this.btn_Options_MyMap.Click += new System.EventHandler(this.btn_Options_MyMap_Click); - // - // pictureBox3 - // - this.pictureBox3.Image = global::AirScout.Properties.Resources.AirScout_Watchlist; - this.pictureBox3.Location = new System.Drawing.Point(520, 19); - this.pictureBox3.Name = "pictureBox3"; - this.pictureBox3.Size = new System.Drawing.Size(113, 344); - this.pictureBox3.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage; - this.pictureBox3.TabIndex = 3; - this.pictureBox3.TabStop = false; - // - // pictureBox2 - // - this.pictureBox2.Image = global::AirScout.Properties.Resources.AirScout_Marker; - this.pictureBox2.Location = new System.Drawing.Point(281, 36); - this.pictureBox2.Name = "pictureBox2"; - this.pictureBox2.Size = new System.Drawing.Size(210, 118); - this.pictureBox2.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage; - this.pictureBox2.TabIndex = 2; - this.pictureBox2.TabStop = false; - // - // pictureBox1 - // - this.pictureBox1.Image = global::AirScout.Properties.Resources.AirScout_Multi; - this.pictureBox1.InitialImage = global::AirScout.Properties.Resources.AirScout_Multi; - this.pictureBox1.Location = new System.Drawing.Point(6, 15); - this.pictureBox1.Name = "pictureBox1"; - this.pictureBox1.Size = new System.Drawing.Size(283, 153); - this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage; - this.pictureBox1.TabIndex = 0; - this.pictureBox1.TabStop = false; - // - // pb_Donate - // - this.pb_Donate.Image = ((System.Drawing.Image)(resources.GetObject("pb_Donate.Image"))); - this.pb_Donate.InitialImage = ((System.Drawing.Image)(resources.GetObject("pb_Donate.InitialImage"))); - this.pb_Donate.Location = new System.Drawing.Point(18, 272); - this.pb_Donate.Name = "pb_Donate"; - this.pb_Donate.Size = new System.Drawing.Size(306, 113); - this.pb_Donate.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage; - this.pb_Donate.TabIndex = 38; - this.pb_Donate.TabStop = false; - this.tt_Options.SetToolTip(this.pb_Donate, "Click here to open a browser window with link."); - this.pb_Donate.Click += new System.EventHandler(this.pb_Donate_Click); - // - // pictureBox4 - // - this.pictureBox4.BackColor = System.Drawing.Color.White; - this.pictureBox4.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.pictureBox4.Image = global::AirScout.Properties.Resources.Settings; - this.pictureBox4.Location = new System.Drawing.Point(343, 108); - this.pictureBox4.Name = "pictureBox4"; - this.pictureBox4.Size = new System.Drawing.Size(306, 277); - this.pictureBox4.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage; - this.pictureBox4.TabIndex = 5; - this.pictureBox4.TabStop = false; - // - // ud_Options_Map_Opacity - // - this.ud_Options_Map_Opacity.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScout.Properties.Settings.Default, "Map_Opacity", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.ud_Options_Map_Opacity.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.ud_Options_Map_Opacity.Increment = new decimal(new int[] { - 1, - 0, - 0, - 65536}); - this.ud_Options_Map_Opacity.Location = new System.Drawing.Point(320, 18); - this.ud_Options_Map_Opacity.Maximum = new decimal(new int[] { - 1, - 0, - 0, - 0}); - this.ud_Options_Map_Opacity.Name = "ud_Options_Map_Opacity"; - this.ud_Options_Map_Opacity.Size = new System.Drawing.Size(54, 20); - this.ud_Options_Map_Opacity.TabIndex = 10; - this.ud_Options_Map_Opacity.Value = global::AirScout.Properties.Settings.Default.Map_Opacity; + // cb_Options_Locators_Activate + // + this.cb_Options_Locators_Activate.AutoSize = true; + this.cb_Options_Locators_Activate.Checked = global::AirScout.Properties.Settings.Default.Map_ShowLocators; + this.cb_Options_Locators_Activate.CheckState = System.Windows.Forms.CheckState.Checked; + this.cb_Options_Locators_Activate.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Map_ShowLocators", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.cb_Options_Locators_Activate.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_Locators_Activate.Location = new System.Drawing.Point(16, 37); + this.cb_Options_Locators_Activate.Name = "cb_Options_Locators_Activate"; + this.cb_Options_Locators_Activate.Size = new System.Drawing.Size(114, 17); + this.cb_Options_Locators_Activate.TabIndex = 11; + this.cb_Options_Locators_Activate.Text = "Show Locator Grid"; + this.cb_Options_Locators_Activate.UseVisualStyleBackColor = true; + // + // cb_Options_Distances_Activated + // + this.cb_Options_Distances_Activated.AutoSize = true; + this.cb_Options_Distances_Activated.Checked = global::AirScout.Properties.Settings.Default.Map_ShowDistances; + this.cb_Options_Distances_Activated.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::AirScout.Properties.Settings.Default, "Map_ShowDistances", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.cb_Options_Distances_Activated.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_Distances_Activated.Location = new System.Drawing.Point(16, 54); + this.cb_Options_Distances_Activated.Name = "cb_Options_Distances_Activated"; + this.cb_Options_Distances_Activated.Size = new System.Drawing.Size(132, 17); + this.cb_Options_Distances_Activated.TabIndex = 12; + this.cb_Options_Distances_Activated.Text = "Show Distance Circles"; + this.cb_Options_Distances_Activated.UseVisualStyleBackColor = true; // // OptionsDlg // @@ -6103,11 +7222,13 @@ this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.OptionsDlg_FormClosing); this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.OptionsDlg_FormClosed); this.Load += new System.EventHandler(this.OptionsDlg_Load); + ((System.ComponentModel.ISupportInitialize)(this.pb_Donate)).EndInit(); this.tab_Options_Planes.ResumeLayout(false); this.groupBox48.ResumeLayout(false); this.groupBox48.PerformLayout(); this.groupBox40.ResumeLayout(false); this.groupBox40.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.ud_Options_Planes_Position_DatabaseLifetime)).EndInit(); this.groupBox38.ResumeLayout(false); this.groupBox38.PerformLayout(); this.groupBox26.ResumeLayout(false); @@ -6141,10 +7262,13 @@ this.groupBox49.PerformLayout(); this.groupBox37.ResumeLayout(false); this.groupBox37.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.ud_Options_Charts_FontSize)).EndInit(); this.groupBox39.ResumeLayout(false); this.groupBox39.PerformLayout(); this.groupBox23.ResumeLayout(false); this.groupBox23.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.ud_Options_Map_Opacity)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.ud_Options_Map_Preloader_MaxZoom)).EndInit(); this.groupBox30.ResumeLayout(false); this.groupBox30.PerformLayout(); this.groupBox7.ResumeLayout(false); @@ -6165,6 +7289,7 @@ this.groupBox44.PerformLayout(); this.groupBox14.ResumeLayout(false); this.groupBox14.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.ud_Options_Locator_MaxLength)).EndInit(); this.groupBox16.ResumeLayout(false); this.groupBox5.ResumeLayout(false); this.groupBox5.PerformLayout(); @@ -6180,6 +7305,7 @@ this.groupBox27.PerformLayout(); this.gb_Options_Database_Settings.ResumeLayout(false); this.gb_Options_Database_Settings.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.ud_Options_Database_Update_Period)).EndInit(); this.gb_Options_Database_Info.ResumeLayout(false); this.gb_Options_Database_Info.PerformLayout(); this.tab_Options_ASTER3.ResumeLayout(false); @@ -6212,37 +7338,43 @@ this.groupBox3.ResumeLayout(false); this.groupBox3.PerformLayout(); this.tab_Options_Track.ResumeLayout(false); - this.groupBox36.ResumeLayout(false); - this.groupBox36.PerformLayout(); - this.groupBox35.ResumeLayout(false); - this.groupBox35.PerformLayout(); - this.groupBox34.ResumeLayout(false); - this.groupBox34.PerformLayout(); - this.groupBox33.ResumeLayout(false); - this.groupBox33.PerformLayout(); + this.gb_Options_Doppler.ResumeLayout(false); + this.gb_Options_Doppler.PerformLayout(); + this.gb_Options_Track_File.ResumeLayout(false); + this.gb_Options_Track_File.PerformLayout(); + this.gb_Options_Track_DDE.ResumeLayout(false); + this.gb_Options_Track_DDE.PerformLayout(); + this.gb_Options_Track_UDP.ResumeLayout(false); + this.gb_Options_Track_UDP.PerformLayout(); + this.gb_Options_Track_Serial.ResumeLayout(false); + this.gb_Options_Track_Serial.PerformLayout(); this.groupBox28.ResumeLayout(false); this.groupBox28.PerformLayout(); + this.tab_Options_CAT.ResumeLayout(false); + this.gb_Options_CAT_PortSettings.ResumeLayout(false); + this.gb_Options_CAT_PortSettings.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.ud_Options_CAT_Timeout)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.ud_Options_CAT_Poll)).EndInit(); + this.gb_Options_CAT_RigType.ResumeLayout(false); + this.gb_Options_CAT_RigType.PerformLayout(); + this.gb_Options_CAT_OperatingInstructions.ResumeLayout(false); + this.groupBox57.ResumeLayout(false); + this.groupBox57.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.ud_Options_CAT_Update)).EndInit(); this.tab_Options_Watchlist.ResumeLayout(false); this.groupBox50.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox3)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); this.groupBox17.ResumeLayout(false); this.groupBox17.PerformLayout(); this.tab_Options_Misc.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox4)).EndInit(); this.groupBox15.ResumeLayout(false); this.tab_Options_Info.ResumeLayout(false); this.tab_Options_Info.PerformLayout(); this.ss_Options.ResumeLayout(false); this.ss_Options.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)(this.ud_Options_Database_Update_Period)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.ud_Options_Locator_MaxLength)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.ud_Options_Charts_FontSize)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.ud_Options_Map_Preloader_MaxZoom)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.ud_Options_Planes_Position_DatabaseLifetime)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.pictureBox3)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.pb_Donate)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.pictureBox4)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.ud_Options_Map_Opacity)).EndInit(); this.ResumeLayout(false); this.PerformLayout(); @@ -6381,18 +7513,18 @@ private System.Windows.Forms.GroupBox groupBox31; private System.Windows.Forms.Label label86; private System.Windows.Forms.GroupBox groupBox32; - private System.Windows.Forms.GroupBox groupBox33; + private System.Windows.Forms.GroupBox gb_Options_Track_Serial; private System.Windows.Forms.Label label88; private System.Windows.Forms.Label label87; private System.Windows.Forms.TextBox tb_Options_Track_Serial_Port; private System.Windows.Forms.RadioButton rb_Options_Track_Serial_GS232_AZEL; private System.Windows.Forms.RadioButton rb_Options_Track_Serial_GS232_AZ; - private System.Windows.Forms.GroupBox groupBox34; + private System.Windows.Forms.GroupBox gb_Options_Track_UDP; private System.Windows.Forms.RadioButton rb_Options_Track_UDP_WinTest; - private System.Windows.Forms.GroupBox groupBox35; + private System.Windows.Forms.GroupBox gb_Options_Track_DDE; private System.Windows.Forms.RadioButton rb_Options_Track_DDE_HRD; private System.Windows.Forms.RadioButton rb_Options_Track_UDP_AirScout; - private System.Windows.Forms.GroupBox groupBox36; + private System.Windows.Forms.GroupBox gb_Options_Track_File; private System.Windows.Forms.RadioButton rb_Options_Track_File_WSJT; private System.Windows.Forms.RadioButton rb_Options_Track_File_Native; private System.Windows.Forms.RadioButton rb_Options_Track_Serial_None; @@ -6693,5 +7825,87 @@ private System.Windows.Forms.Label label147; private System.Windows.Forms.Label label148; private PercentageControl ud_Options_Map_Opacity; + private System.Windows.Forms.TabPage tab_Options_CAT; + private System.Windows.Forms.GroupBox groupBox57; + private System.Windows.Forms.ComboBox cb_Options_CAT_Rig; + private System.Windows.Forms.CheckBox cb_Options_CAT_Activate; + private System.Windows.Forms.GroupBox gb_Options_Doppler; + private ScoutBase.Core.LongTextBox tb_Options_Track_DialFreq; + private System.Windows.Forms.GroupBox gb_Options_CAT_OperatingInstructions; + private System.Windows.Forms.RichTextBox richTextBox1; + private System.Windows.Forms.Label label154; + private System.Windows.Forms.Label label153; + private System.Windows.Forms.Label label152; + private System.Windows.Forms.RadioButton rb_Options_Doppler_Strategy_D; + private System.Windows.Forms.RadioButton rb_Options_Doppler_Strategy_C; + private System.Windows.Forms.RadioButton rb_Options_Doppler_Strategy_B; + private System.Windows.Forms.RadioButton rb_Options_Doppler_Strategy_A; + private System.Windows.Forms.Label label155; + private System.Windows.Forms.Label label178; + private System.Windows.Forms.Label label179; + private System.Windows.Forms.Label label176; + private System.Windows.Forms.Label label177; + private System.Windows.Forms.Label label174; + private System.Windows.Forms.Label label175; + private System.Windows.Forms.Label label172; + private System.Windows.Forms.Label label173; + private System.Windows.Forms.Label label170; + private System.Windows.Forms.Label label171; + private System.Windows.Forms.Label label168; + private System.Windows.Forms.Label label169; + private System.Windows.Forms.Label label166; + private System.Windows.Forms.Label label167; + private System.Windows.Forms.Label label165; + private System.Windows.Forms.Label label163; + private System.Windows.Forms.Label label164; + private System.Windows.Forms.Label label162; + private System.Windows.Forms.Label label161; + private System.Windows.Forms.Label label160; + private System.Windows.Forms.Label label159; + private System.Windows.Forms.Label label158; + private System.Windows.Forms.Label label157; + private System.Windows.Forms.Label label156; + private System.Windows.Forms.RadioButton rb_Options_Doppler_Strategy_None; + private System.Windows.Forms.Label label180; + private System.Windows.Forms.Label label181; + private System.Windows.Forms.Label label182; + private System.Windows.Forms.Label label183; + private System.Windows.Forms.Label label184; + private System.Windows.Forms.Label label150; + private System.Windows.Forms.Label label185; + private System.Windows.Forms.Label label151; + private ScoutBase.Core.Int32TextBox int32TextBox2; + private System.Windows.Forms.Label label186; + private System.Windows.Forms.Label label187; + private ScoutBase.Core.Int32TextBox tb_Options_Track_Offset; + private System.Windows.Forms.Label label189; + private System.Windows.Forms.GroupBox gb_Options_CAT_PortSettings; + private System.Windows.Forms.GroupBox gb_Options_CAT_RigType; + private System.Windows.Forms.NumericUpDown ud_Options_CAT_Timeout; + private System.Windows.Forms.Label label149; + private System.Windows.Forms.NumericUpDown ud_Options_CAT_Poll; + private System.Windows.Forms.Label label190; + private System.Windows.Forms.Label label191; + private System.Windows.Forms.ComboBox cb_Options_CAT_DTR; + private System.Windows.Forms.Label label192; + private System.Windows.Forms.ComboBox cb_Options_CAT_RTS; + private System.Windows.Forms.Label label193; + private System.Windows.Forms.ComboBox cb_Options_CAT_StopBits; + private System.Windows.Forms.Label label194; + private System.Windows.Forms.ComboBox cb_Options_CAT_Parity; + private System.Windows.Forms.Label label195; + private System.Windows.Forms.ComboBox cb_Options_CAT_DataBits; + private System.Windows.Forms.Label label196; + private System.Windows.Forms.ComboBox cb_Options_CAT_Baudrate; + private System.Windows.Forms.Label label197; + private System.Windows.Forms.ComboBox cb_Options_CAT_PortName; + private System.Windows.Forms.Label label199; + private System.Windows.Forms.RichTextBox richTextBox2; + private System.Windows.Forms.NumericUpDown ud_Options_CAT_Update; + private System.Windows.Forms.RichTextBox richTextBox3; + private System.Windows.Forms.RichTextBox richTextBox5; + private System.Windows.Forms.RichTextBox richTextBox4; + private System.Windows.Forms.CheckBox cb_Options_Locators_Activate; + private System.Windows.Forms.CheckBox cb_Options_Distances_Activated; } } \ No newline at end of file diff --git a/AirScout/OptionsDlg.cs b/AirScout/OptionsDlg.cs index d3147ee..8f4067c 100644 --- a/AirScout/OptionsDlg.cs +++ b/AirScout/OptionsDlg.cs @@ -31,6 +31,7 @@ using ScoutBase; using Newtonsoft.Json; using static ScoutBase.Core.ZIP; using AirScout.PlaneFeeds.Plugin.MEFContract; +using AirScout.CAT; namespace AirScout { @@ -52,6 +53,8 @@ namespace AirScout private LogWriter Log = LogWriter.Instance; + private bool LoadingTab = false; + public OptionsDlg(MapDlg parentDlg) { InitializeComponent(); @@ -2538,7 +2541,45 @@ namespace AirScout private void tab_Options_Track_Enter(object sender, EventArgs e) { + if (AirScout.CAT.Properties.Settings.Default.CAT_Activate) + { + gb_Options_Doppler.Enabled = true; + } + else + { + gb_Options_Doppler.Enabled = false; + } + // check/uncheck radio buttons + // do not use property binding here! + if (Properties.Settings.Default.Track_Serial_None) { rb_Options_Track_Serial_None.Checked = true; } + else if (Properties.Settings.Default.Track_Serial_GS232_AZ) { rb_Options_Track_Serial_GS232_AZ.Checked = true; } + else if (Properties.Settings.Default.Track_Serial_GS232_AZEL) { rb_Options_Track_Serial_GS232_AZEL.Checked = true; } + + if (Properties.Settings.Default.Track_DDE_None) { rb_Options_Track_DDE_None.Checked = true; } + else if (Properties.Settings.Default.Track_DDE_HRD) { rb_Options_Track_DDE_HRD.Checked = true; } + + if (Properties.Settings.Default.Track_UDP_None) { rb_Options_Track_UDP_None.Checked = true; } + else if (Properties.Settings.Default.Track_UDP_WinTest) { rb_Options_Track_UDP_WinTest.Checked = true; } + else if (Properties.Settings.Default.Track_UDP_AirScout) { rb_Options_Track_UDP_AirScout.Checked = true; } + + if (Properties.Settings.Default.Track_File_None) { rb_Options_Track_File_None.Checked = true; } + else if (Properties.Settings.Default.Track_File_Native) { rb_Options_Track_File_Native.Checked = true; } + else if (Properties.Settings.Default.Track_File_WSJT) { rb_Options_Track_File_WSJT.Checked = true; } + + if (Properties.Settings.Default.Doppler_Strategy_None) { rb_Options_Doppler_Strategy_None.Checked = true; } + else if (Properties.Settings.Default.Doppler_Strategy_A) { rb_Options_Doppler_Strategy_A.Checked = true; } + else if (Properties.Settings.Default.Doppler_Strategy_B) { rb_Options_Doppler_Strategy_B.Checked = true; } + else if (Properties.Settings.Default.Doppler_Strategy_C) { rb_Options_Doppler_Strategy_C.Checked = true; } + else if (Properties.Settings.Default.Doppler_Strategy_D) { rb_Options_Doppler_Strategy_D.Checked = true; } + + ud_Options_CAT_Update.Value = AirScout.CAT.Properties.Settings.Default.CAT_Update; + tb_Options_Track_DialFreq.SilentValue = Properties.Settings.Default.Doppler_DialFreq; + cb_Options_Track_Activate_CheckedChanged(this, null); + } + + private void tb_Options_CAT_DialFreq_TextChanged(object sender, EventArgs e) + { } private void tc_Track_Validating(object sender, CancelEventArgs e) @@ -2560,8 +2601,403 @@ namespace AirScout } } + private void cb_Options_Track_Activate_CheckedChanged(object sender, EventArgs e) + { + if (cb_Options_Track_Activate.Checked) + { + gb_Options_Track_Serial.Enabled = true; + gb_Options_Track_UDP.Enabled = true; + gb_Options_Track_DDE.Enabled = true; + gb_Options_Track_File.Enabled = true; + if (AirScout.CAT.Properties.Settings.Default.CAT_Activate) + { + gb_Options_Doppler.Enabled = true; + } + } + else + { + gb_Options_Track_Serial.Enabled = false; + gb_Options_Track_UDP.Enabled = false; + gb_Options_Track_DDE.Enabled = false; + gb_Options_Track_File.Enabled = false; + gb_Options_Doppler.Enabled = false; + } + } + + private void gb_Options_Track_Serial_CheckedChanged(object sender, EventArgs e) + { + Properties.Settings.Default.Track_Serial_None = rb_Options_Track_Serial_None.Checked; + Properties.Settings.Default.Track_Serial_GS232_AZ = rb_Options_Track_Serial_GS232_AZ.Checked; + Properties.Settings.Default.Track_Serial_GS232_AZEL = rb_Options_Track_Serial_GS232_AZEL.Checked; + } + + private void gb_Options_Track_DDE_CheckedChanged(object sender, EventArgs e) + { + Properties.Settings.Default.Track_DDE_None = rb_Options_Track_DDE_None.Checked; + Properties.Settings.Default.Track_DDE_HRD = rb_Options_Track_DDE_HRD.Checked; + } + + private void gb_Options_Track_UDP_CheckedChanged(object sender, EventArgs e) + { + Properties.Settings.Default.Track_UDP_None = rb_Options_Track_UDP_None.Checked; + Properties.Settings.Default.Track_UDP_WinTest = rb_Options_Track_UDP_WinTest.Checked; + Properties.Settings.Default.Track_UDP_AirScout = rb_Options_Track_UDP_AirScout.Checked; + } + + private void gb_Options_Track_File_CheckedChanged(object sender, EventArgs e) + { + Properties.Settings.Default.Track_File_None = rb_Options_Track_File_None.Checked; + Properties.Settings.Default.Track_File_Native = rb_Options_Track_File_Native.Checked; + Properties.Settings.Default.Track_File_WSJT = rb_Options_Track_File_WSJT.Checked; + } + + private void gb_Options_Doppler_CheckedChanged(object sender, EventArgs e) + { + Properties.Settings.Default.Doppler_Strategy_None = rb_Options_Doppler_Strategy_None.Checked; + Properties.Settings.Default.Doppler_Strategy_A = rb_Options_Doppler_Strategy_A.Checked; + Properties.Settings.Default.Doppler_Strategy_B = rb_Options_Doppler_Strategy_B.Checked; + Properties.Settings.Default.Doppler_Strategy_C = rb_Options_Doppler_Strategy_C.Checked; + Properties.Settings.Default.Doppler_Strategy_D = rb_Options_Doppler_Strategy_D.Checked; + } + + #endregion + #region tab_Options_CAT + + private void tab_Options_CAT_Enter(object sender, EventArgs e) + { + LoadingTab = true; + + cb_Options_CAT_Activate.Checked = AirScout.CAT.Properties.Settings.Default.CAT_Activate; + + + // get a list of supported rigs and add them to combo box + List rigs = CATWorker.SupportedRigs(); + cb_Options_CAT_Rig.Items.Clear(); + foreach (SupportedRig rig in rigs) + { + cb_Options_CAT_Rig.Items.Add(rig); + } + + // try to select settings + if (AirScout.CAT.Properties.Settings.Default.CAT_RigType != null) + { + try + { + int index = cb_Options_CAT_Rig.FindString(AirScout.CAT.Properties.Settings.Default.CAT_RigType); + if (index >= 0) + { + cb_Options_CAT_Rig.SelectedIndex = index; + } + } + catch + { + // do nothing if something goes wrong + } + } + try + { + cb_Options_CAT_PortName.DataSource = System.IO.Ports.SerialPort.GetPortNames(); + cb_Options_CAT_PortName.SelectedItem = AirScout.CAT.Properties.Settings.Default.CAT_PortName; + } + catch (Exception ex) + { + // do nothing if fails + } + try + { + cb_Options_CAT_Baudrate.DataSource = new string[] { "110", "300", "600", "1200", "2400", "4800", "9600", "14400", "19200", "38400", "56000", "57600", "115200", "128000", "256000" }; + cb_Options_CAT_Baudrate.SelectedItem = AirScout.CAT.Properties.Settings.Default.CAT_Baudrate.ToString(); + } + catch (Exception ex) + { + // do nothing if fails + } + try + { + cb_Options_CAT_DataBits.DataSource = new string[] { "5", "6", "7", "8" }; + cb_Options_CAT_DataBits.SelectedItem = AirScout.CAT.Properties.Settings.Default.CAT_DataBits.ToString(); + } + catch (Exception ex) + { + // do nothing if fails + } + try + { + EnumHelpers.BindToEnum(cb_Options_CAT_Parity); + cb_Options_CAT_Parity.SelectedValue = (int)AirScout.CAT.Properties.Settings.Default.CAT_Parity; + } + catch (Exception ex) + { + // do nothing if fails + } + try + { + EnumHelpers.BindToEnum(cb_Options_CAT_StopBits); + cb_Options_CAT_StopBits.SelectedValue = (int)AirScout.CAT.Properties.Settings.Default.CAT_StopBits; + } + catch (Exception ex) + { + // do nothing if fails + } + try + { + EnumHelpers.BindToEnum(cb_Options_CAT_RTS); + cb_Options_CAT_RTS.SelectedValue = (int)AirScout.CAT.Properties.Settings.Default.CAT_RTS; + } + catch (Exception ex) + { + // do nothing if fails + } + try + { + EnumHelpers.BindToEnum(cb_Options_CAT_DTR); + cb_Options_CAT_DTR.SelectedValue = (int)AirScout.CAT.Properties.Settings.Default.CAT_DTR; + } + catch (Exception ex) + { + // do nothing if fails + } + try + { + ud_Options_CAT_Poll.Value = AirScout.CAT.Properties.Settings.Default.CAT_Poll; + } + catch (Exception ex) + { + // do nothing if fails + } + try + { + ud_Options_CAT_Timeout.Value = AirScout.CAT.Properties.Settings.Default.CAT_Timeout; + } + catch (Exception ex) + { + // do nothing if fails + } + + cb_Options_CAT_Activate_CheckedChanged(this, null); + + LoadingTab = false; + } + + private void cb_Options_CAT_Activate_CheckedChanged(object sender, EventArgs e) + { + AirScout.CAT.Properties.Settings.Default.CAT_Activate = cb_Options_CAT_Activate.Checked; + + // check if port settings must be enabled (depending on rig type) + bool portenabled = true; + try + { + SupportedRig rig = (SupportedRig)cb_Options_CAT_Rig.SelectedItem; + if (rig.CATEngine == CATENGINE.OMNIRIGX) + portenabled = false; + } + catch + { + + } + + if (cb_Options_CAT_Activate.Checked) + { + ud_Options_CAT_Update.Enabled = true; + gb_Options_CAT_RigType.Enabled = true; + if (portenabled) + gb_Options_CAT_PortSettings.Enabled = true; + else + gb_Options_CAT_PortSettings.Enabled = false; + gb_Options_CAT_OperatingInstructions.Enabled = true; + if (Properties.Settings.Default.Track_Activate) + { + gb_Options_Doppler.Enabled = true; + } + } + else + { + ud_Options_CAT_Update.Enabled = false; + gb_Options_CAT_RigType.Enabled = false; + gb_Options_CAT_PortSettings.Enabled = false; + gb_Options_CAT_OperatingInstructions.Enabled = false; + gb_Options_Doppler.Enabled = false; + } + } + + private void cb_Options_CAT_Rig_SelectedIndexChanged(object sender, EventArgs e) + { + if (LoadingTab) + return; + + try + { + SupportedRig rig = (SupportedRig)cb_Options_CAT_Rig.SelectedItem; + if (rig != null) + { + AirScout.CAT.Properties.Settings.Default.CAT_RigType = rig.Type; + + // disable port settings when using OmniRig ActiveX + if (rig.CATEngine == CATENGINE.OMNIRIGX) + { + gb_Options_CAT_PortSettings.Enabled = false; + } + else + { + gb_Options_CAT_PortSettings.Enabled = true; + } + } + + } + catch + { + // do nothing if fails + } + } + + private void ud_Options_CAT_Update_ValueChanged(object sender, EventArgs e) + { + if (LoadingTab) + return; + + AirScout.CAT.Properties.Settings.Default.CAT_Update = (int)ud_Options_CAT_Update.Value; + } + + private void cb_Options_CAT_PortName_SelectedIndexChanged(object sender, EventArgs e) + { + if (LoadingTab) + return; + + try + { + AirScout.CAT.Properties.Settings.Default.CAT_PortName = (string)cb_Options_CAT_PortName.SelectedItem; + } + catch + { + // do nothing if fails + } + } + + private void cb_Options_CAT_Baudrate_SelectedIndexChanged(object sender, EventArgs e) + { + if (LoadingTab) + return; + + try + { + AirScout.CAT.Properties.Settings.Default.CAT_Baudrate = System.Convert.ToInt32(cb_Options_CAT_Baudrate.SelectedItem); + } + catch + { + // do nothing if fails + } + } + + private void cb_Options_CAT_DataBits_SelectedIndexChanged(object sender, EventArgs e) + { + if (LoadingTab) + return; + + try + { + AirScout.CAT.Properties.Settings.Default.CAT_DataBits = System.Convert.ToInt32(cb_Options_CAT_DataBits.SelectedItem); + } + catch + { + // do nothing if fails + } + } + + private void cb_Parity_SelectedIndexChanged(object sender, EventArgs e) + { + if (LoadingTab) + return; + + try + { + AirScout.CAT.Properties.Settings.Default.CAT_Parity = (PARITY)cb_Options_CAT_Parity.SelectedValue; + } + catch + { + // do nothing if fails + } + } + + private void cb_Options_CAT_Stopbits_SelectedIndexChanged(object sender, EventArgs e) + { + if (LoadingTab) + return; + + try + { + AirScout.CAT.Properties.Settings.Default.CAT_StopBits = (STOPBITS)cb_Options_CAT_StopBits.SelectedValue; + } + catch + { + // do nothing if fails + } + } + + private void cb_Options_CAT_RTS_SelectedIndexChanged(object sender, EventArgs e) + { + if (LoadingTab) + return; + + try + { + AirScout.CAT.Properties.Settings.Default.CAT_RTS = (FLOWCONTROL)cb_Options_CAT_RTS.SelectedValue; + } + catch + { + // do nothing if fails + } + } + + private void cb_Options_CAT_DTR_SelectedIndexChanged(object sender, EventArgs e) + { + if (LoadingTab) + return; + + try + { + AirScout.CAT.Properties.Settings.Default.CAT_DTR = (FLOWCONTROL)cb_Options_CAT_DTR.SelectedValue; + } + catch + { + // do nothing if fails + } + } + + private void ud_Options_CAT_Poll_ValueChanged(object sender, EventArgs e) + { + if (LoadingTab) + return; + + try + { + AirScout.CAT.Properties.Settings.Default.CAT_Poll = (int)ud_Options_CAT_Poll.Value; } + catch + { + // do nothing if fails + } + + } + + private void ud_Options_CAT_Timeout_ValueChanged(object sender, EventArgs e) + { + if (LoadingTab) + return; + + try + { + AirScout.CAT.Properties.Settings.Default.CAT_Timeout = (int)ud_Options_CAT_Timeout.Value; + } + catch + { + // do nothing if fails + } + } + + #endregion + + #region tab_Options_Info private void tab_Options_Info_Enter(object sender, EventArgs e) diff --git a/AirScout/OptionsDlg.resx b/AirScout/OptionsDlg.resx index 69701ef..dd52d3d 100644 --- a/AirScout/OptionsDlg.resx +++ b/AirScout/OptionsDlg.resx @@ -120,65 +120,6 @@ 17, 17 - - You can select different map provider from the list below. Depending on your selection some maps may not be available for your choosen area. Please note that the selection of maps is taken from Great Maps regardless of their legal status. Some of them might be copyrighted or otherwise restricted in use. -You were asked to agree with the terms of use first. -Open Street Map is recommended as a default. - - - Information from callsign database and other sources are used to prefill fields. You can overwrite and complete entries here. Your local database is updated. If you want to share the information with the AirScout community please use the "Send Update!" buttons. - - - CAUTION: Running a web service is a potential security hole! You should activate this function only inside a private network. - -Depending on your user profile you will prompted several times by the Operating System on first run. Please accept all security queries with "Yes" or "Accept". -Otherwise the web service will not run properly. - - - AirScout can work as a server in a network. - -UDP Server: -You can ask for a path calculation between two stations and AirScout will return the planes near path and their portential for a reflection. - -HTTP Server: -You can ask for latest plane positions via simple http-request (e.g. from a web browser. The result is delivered as a JSON file which can used to run own services and calculations. - -See documentation for further details. - - - AirScout can get FFT data from Spectrum Lab software via Network. You must have Spectrum Lab software installed with default settings. Do not forget to activate http - server functionaltiy in Spectrum Lab. - - - Watchlist allows you to pick a number of stations out of your database. -This is very helpful especially when working in Multi-Path Mode. - -All stations on watchlist can be shown on map with small markers and callsign labels for quick showing/hiding path to them. - -If a station is selected from watchlist by checking the assigned checkbox, path is shown on map and entry is coloured according to aircraft scatter potential. - -Watchlist can be synchronized with ON4KST chat user list instead of a local managed list to show all stations currently logged in in chat (Needs wtKST software and network functions enabbled). - - - 130, 17 - - - 353, 17 - - - 483, 17 - - - 706, 17 - - - 890, 17 - - - 1071, 17 - - - 1259, 17 - @@ -298,4 +239,77 @@ Watchlist can be synchronized with ON4KST chat user list instead of a local mana bOQwu7KRw+zKRg6zKxs5zK5s5DC7spHD7MpGDrMrGznMrkwUwn8BkAmqaXV391cAAAAASUVORK5CYII= + + You can select different map provider from the list below. Depending on your selection some maps may not be available for your choosen area. Please note that the selection of maps is taken from Great Maps regardless of their legal status. Some of them might be copyrighted or otherwise restricted in use. +You were asked to agree with the terms of use first. +Open Street Map is recommended as a default. + + + Information from callsign database and other sources are used to prefill fields. You can overwrite and complete entries here. Your local database is updated. If you want to share the information with the AirScout community please use the "Send Update!" buttons. + + + CAUTION: Running a web service is a potential security hole! You should activate this function only inside a private network. + +Depending on your user profile you will prompted several times by the Operating System on first run. Please accept all security queries with "Yes" or "Accept". +Otherwise the web service will not run properly. + + + AirScout can work as a server in a network. + +UDP Server: +You can ask for a path calculation between two stations and AirScout will return the planes near path and their portential for a reflection. + +HTTP Server: +You can ask for latest plane positions via simple http-request (e.g. from a web browser. The result is delivered as a JSON file which can used to run own services and calculations. + +See documentation for further details. + + + AirScout can get FFT data from Spectrum Lab software via Network. You must have Spectrum Lab software installed with default settings. Do not forget to activate http - server functionaltiy in Spectrum Lab. + + + Rig must support a minimum of CAT control capabilities: +- set frequency of VFO A and VFO B +- set/reset Split Mode + +A restart of AirScout might be required after settings change, especially when changing between different CAT engines. + + + CAT control is introduced for Doppler shift compensation (see "Track" tab for details). +AirScout is calculating tracking and Doppler shifts once per second by default. Each communication with rig must be completed within this period. The recommended settings for OmniRig are: + +- Polling interval: 100ms ...500ms +- Timeout: 500ms .. 1sec (essential for OmniRig) + + + Watchlist allows you to pick a number of stations out of your database. +This is very helpful especially when working in Multi-Path Mode. + +All stations on watchlist can be shown on map with small markers and callsign labels for quick showing/hiding path to them. + +If a station is selected from watchlist by checking the assigned checkbox, path is shown on map and entry is coloured according to aircraft scatter potential. + +Watchlist can be synchronized with ON4KST chat user list instead of a local managed list to show all stations currently logged in in chat (Needs wtKST software and network functions enabbled). + + + 130, 17 + + + 353, 17 + + + 483, 17 + + + 706, 17 + + + 890, 17 + + + 1071, 17 + + + 1259, 17 + \ No newline at end of file diff --git a/AirScout/PathCalculator.cs b/AirScout/PathCalculator.cs index 7f471c7..39b4fa2 100644 --- a/AirScout/PathCalculator.cs +++ b/AirScout/PathCalculator.cs @@ -263,7 +263,7 @@ namespace AirScout Log.WriteMessage(Name + " error processing call [" + ld.Call + "]: " + ex.ToString()); } // keep cpu load low --> TODO: find better solution here - Thread.Sleep(10); + Thread.Sleep(100); } // save station database timestamp SaveDatabaseTimeStamp(); diff --git a/AirScout/Properties/AssemblyInfo.cs b/AirScout/Properties/AssemblyInfo.cs index 1c79759..66cf7c2 100644 --- a/AirScout/Properties/AssemblyInfo.cs +++ b/AirScout/Properties/AssemblyInfo.cs @@ -32,5 +32,5 @@ using System.Runtime.InteropServices; // Sie können alle Werte angeben oder die standardmäßigen Build- und Revisionsnummern // übernehmen, indem Sie "*" eingeben: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.4.0.0")] -[assembly: AssemblyFileVersion("1.4.0.0")] +[assembly: AssemblyVersion("1.4.1.0")] +[assembly: AssemblyFileVersion("1.4.1.0")] diff --git a/AirScout/Properties/Settings.Designer.cs b/AirScout/Properties/Settings.Designer.cs index 51186ec..0df2f54 100644 --- a/AirScout/Properties/Settings.Designer.cs +++ b/AirScout/Properties/Settings.Designer.cs @@ -12,7 +12,7 @@ namespace AirScout.Properties { [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.5.0.0")] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.0.3.0")] internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); @@ -2455,5 +2455,233 @@ Digital data base on the World Wide Web (URL: http://www.ngdc.noaa.gov/mgg/topo/ this["Map_Opacity"] = value; } } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("0")] + public long Doppler_DialFreq { + get { + return ((long)(this["Doppler_DialFreq"])); + } + set { + this["Doppler_DialFreq"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("0")] + public double Doppler_MyDoppler { + get { + return ((double)(this["Doppler_MyDoppler"])); + } + set { + this["Doppler_MyDoppler"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("0")] + public double Doppler_DXDoppler { + get { + return ((double)(this["Doppler_DXDoppler"])); + } + set { + this["Doppler_DXDoppler"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("False")] + public bool Doppler_Strategy_A { + get { + return ((bool)(this["Doppler_Strategy_A"])); + } + set { + this["Doppler_Strategy_A"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("False")] + public bool Doppler_Strategy_B { + get { + return ((bool)(this["Doppler_Strategy_B"])); + } + set { + this["Doppler_Strategy_B"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("False")] + public bool Doppler_Strategy_C { + get { + return ((bool)(this["Doppler_Strategy_C"])); + } + set { + this["Doppler_Strategy_C"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("False")] + public bool Doppler_Strategy_D { + get { + return ((bool)(this["Doppler_Strategy_D"])); + } + set { + this["Doppler_Strategy_D"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("0")] + public long Doppler_RXFreq { + get { + return ((long)(this["Doppler_RXFreq"])); + } + set { + this["Doppler_RXFreq"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("0")] + public long Doppler_TXFreq { + get { + return ((long)(this["Doppler_TXFreq"])); + } + set { + this["Doppler_TXFreq"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("")] + public string Track_CurrentPlane { + get { + return ((string)(this["Track_CurrentPlane"])); + } + set { + this["Track_CurrentPlane"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("0")] + public int Track_Offset { + get { + return ((int)(this["Track_Offset"])); + } + set { + this["Track_Offset"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("True")] + public bool Doppler_Strategy_None { + get { + return ((bool)(this["Doppler_Strategy_None"])); + } + set { + this["Doppler_Strategy_None"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("NONE")] + public global::AirScout.CAT.RIGSPLIT Doppler_DialSplit { + get { + return ((global::AirScout.CAT.RIGSPLIT)(this["Doppler_DialSplit"])); + } + set { + this["Doppler_DialSplit"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("NONE")] + public global::AirScout.CAT.RIGMODE Doppler_DialMode { + get { + return ((global::AirScout.CAT.RIGMODE)(this["Doppler_DialMode"])); + } + set { + this["Doppler_DialMode"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("NONE")] + public global::AirScout.CAT.RIGRIT Doppler_DialRit { + get { + return ((global::AirScout.CAT.RIGRIT)(this["Doppler_DialRit"])); + } + set { + this["Doppler_DialRit"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("1000")] + public int Track_Update { + get { + return ((int)(this["Track_Update"])); + } + set { + this["Track_Update"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("\\ScoutBase\\RigData")] + public string Rig_Directory { + get { + return ((string)(this["Rig_Directory"])); + } + set { + this["Rig_Directory"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("False")] + public bool Map_ShowLocators { + get { + return ((bool)(this["Map_ShowLocators"])); + } + set { + this["Map_ShowLocators"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("False")] + public bool Map_ShowDistances { + get { + return ((bool)(this["Map_ShowDistances"])); + } + set { + this["Map_ShowDistances"] = value; + } + } } } diff --git a/AirScout/Properties/Settings.settings b/AirScout/Properties/Settings.settings index 7547043..59567ed 100644 --- a/AirScout/Properties/Settings.settings +++ b/AirScout/Properties/Settings.settings @@ -664,5 +664,62 @@ NASA/METI/AIST/Japan Spacesystems, and U.S./Japan ASTER Science Team (2019). AST 1 + + 0 + + + 0 + + + 0 + + + False + + + False + + + False + + + False + + + 0 + + + 0 + + + + + + 0 + + + True + + + NONE + + + NONE + + + NONE + + + 1000 + + + \ScoutBase\RigData + + + False + + + False + \ No newline at end of file diff --git a/AirScout/Requirements.txt b/AirScout/Requirements.txt new file mode 100644 index 0000000..69bf623 --- /dev/null +++ b/AirScout/Requirements.txt @@ -0,0 +1,5 @@ +***************** AirScout Requirements ************************** + +- Snooze button for alarm on main window, clickable in PLAY mode () + + diff --git a/AirScout/TrackValues.cs b/AirScout/TrackValues.cs new file mode 100644 index 0000000..842bbc0 --- /dev/null +++ b/AirScout/TrackValues.cs @@ -0,0 +1,30 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Windows.Forms; + +namespace AirScout +{ + // keeps tracking values + public class TrackValues + { + public DateTime Timestamp = DateTime.UtcNow; + public string Hex = ""; + + public double MyAzimuth = double.NaN; + public double MyElevation = double.NaN; + public double MyDistance = double.NaN; + public double MySlantRange = double.NaN; + public double MyDoppler = 0; + + public double DXAzimuth = double.NaN; + public double DXElevation = double.NaN; + public double DXDistance = double.NaN; + public double DXSlantRange = double.NaN; + public double DXDoppler = 0; + + public long RXFrequency = 0; + public long TXFrequency = 0; + } +} diff --git a/AirScout/VersionHistory.txt b/AirScout/VersionHistory.txt index 18b517a..295e0d8 100644 --- a/AirScout/VersionHistory.txt +++ b/AirScout/VersionHistory.txt @@ -1,10 +1,51 @@ -2020-xx-xx: V1.4.0.0 +2021-xx-xx: V1.4.1.0 +==================== + +- Bugfix: RIT on rig is reset when tracking started --> fixed +- Bugfix: Exceptions while accessing elevation database from background processes and more than one elevation model was ticked --> database status shows "Error" --> fixed +- Bugfix: Exceptions while accessing elevation database and local obstructions have NULL values --> fixed +- Bugfix: Database update was not started when last status was "Error" and no other changes occured +- Bugfix: Exceptions were thrown sometimes on concurrent database access from different threads, missing database locks --> fixed +- Feature: configurable update rate for tracking +- Feature: configurable time offset for tracking +- Feature: optional show a locator grid on map +- Feature: optional show distance circles around own location + +2021-04-13: V1.4.0.2 +==================== + +- Feature: complete rework of tracking module with Status visualization +- Feature: CAT now handles OmniRi V1.19 or V2.x dynamically +- Feature: refined extrapolation of plane positions +- Bugfix: Planes were shown as hot when crossing path "behind" the DX station --> fixed + +2021-04-5: V1.4.0.1 +==================== + +- Feature: introducing CAT Interface with OmniRig V2.1 +- Feature: introducing Doppler shift compensation with CAT + +2021-xx-xx: V1.4.0.0 (not published) ==================== - Feature: introducing ASTER Digital Elevation Model covering earth surface almost complete, but data are very raw and have to filtered, only useful when coverage > 60° needed -- Feature: new OpenTopoMap provider, not really suitable for surpervising aircraft travel but has very nice contour levels (based on SRTM) +- Feature: new OpenTopoMap provider, not really suitable for supervising aircraft travel but has very nice contour levels (based on SRTM) - Feature: adjust main map opacity via "Options/Map" which is helpful in case map colors are very prominent +2021-12-23: V1.3.3.6 +==================== + +- Feature: Elevation grid overlay on "Optionms/Stations/Map" to better understand elevation resolution issues and local situation (for zoom levels >= 17) +- Bugfix: AirScout crashes when opening Crossing History Dialog window --> fixed (tnx PU34HAG) +- Bugfix: Near field suppression did not work correctly, showing strange local obstructions under some circumstances --> fixed +- Bugfix: No more planes visible (Exception messages shown in status bar and log file) with some language settings (at least Turkish) --> fixed (tnx TA2NC) + +2020-04-25: V1.3.3.5 +==================== + +- Bugfix: Chunked transport of web content failed while fetching plane feeds (OpenSky, Virtual Radar Server) --> fixed +- Bugfix: Drawing map throws an exception under some circumstances --> fixed, added some error handling (tnx SM7LCB) + 2020-04-25: V1.3.3.4 ==================== diff --git a/AirScout/WatchlistDlg.Designer.cs b/AirScout/WatchlistDlg.Designer.cs index a8beef6..8219f8c 100644 --- a/AirScout/WatchlistDlg.Designer.cs +++ b/AirScout/WatchlistDlg.Designer.cs @@ -228,7 +228,7 @@ this.label2.Name = "label2"; this.label2.Size = new System.Drawing.Size(180, 25); this.label2.TabIndex = 15; - this.label2.Text = "Availbale Callsigns"; + this.label2.Text = "Available Callsigns"; this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; // // label3 diff --git a/AirScout/app.config b/AirScout/app.config index 94f48c2..d6ec38b 100644 --- a/AirScout/app.config +++ b/AirScout/app.config @@ -663,6 +663,63 @@ NASA/METI/AIST/Japan Spacesystems, and U.S./Japan ASTER Science Team (2019). AST 1 + + 0 + + + 0 + + + 0 + + + False + + + False + + + False + + + False + + + 0 + + + 0 + + + + + + 0 + + + True + + + NONE + + + NONE + + + NONE + + + 1000 + + + \ScoutBase\RigData + + + False + + + False + diff --git a/AirScout/packages.config b/AirScout/packages.config index 79fcfe6..00bb9da 100644 --- a/AirScout/packages.config +++ b/AirScout/packages.config @@ -2,5 +2,6 @@ - + + \ No newline at end of file diff --git a/AirScoutDatabaseManager/MainDlg.Designer.cs b/AirScoutDatabaseManager/MainDlg.Designer.cs deleted file mode 100644 index c5def3d..0000000 --- a/AirScoutDatabaseManager/MainDlg.Designer.cs +++ /dev/null @@ -1,1423 +0,0 @@ -namespace AirScoutDatabaseManager -{ - partial class MainDlg - { - /// - /// Erforderliche Designervariable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Verwendete Ressourcen bereinigen. - /// - /// True, wenn verwaltete Ressourcen gelöscht werden sollen; andernfalls False. - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Vom Windows Form-Designer generierter Code - - /// - /// Erforderliche Methode für die Designerunterstützung. - /// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden. - /// - private void InitializeComponent() - { - this.ss_Main = new System.Windows.Forms.StatusStrip(); - this.tsl_Status = new System.Windows.Forms.ToolStripStatusLabel(); - this.tc_Main = new System.Windows.Forms.TabControl(); - this.tp_General = new System.Windows.Forms.TabPage(); - this.gm_Coverage = new GMap.NET.WindowsForms.GMapControl(); - this.panel1 = new System.Windows.Forms.Panel(); - this.label35 = new System.Windows.Forms.Label(); - this.label54 = new System.Windows.Forms.Label(); - this.label59 = new System.Windows.Forms.Label(); - this.label60 = new System.Windows.Forms.Label(); - this.tp_Locations = new System.Windows.Forms.TabPage(); - this.splitContainer1 = new System.Windows.Forms.SplitContainer(); - this.dgv_Locations = new System.Windows.Forms.DataGridView(); - this.gm_Locations = new GMap.NET.WindowsForms.GMapControl(); - this.panel2 = new System.Windows.Forms.Panel(); - this.label2 = new System.Windows.Forms.Label(); - this.label1 = new System.Windows.Forms.Label(); - this.tb_Locations_Callsign_Filter = new System.Windows.Forms.TextBox(); - this.cb_Locations_ChangedOnly = new System.Windows.Forms.CheckBox(); - this.btn_Locations_Sort = new System.Windows.Forms.Button(); - this.groupBox2 = new System.Windows.Forms.GroupBox(); - this.btn_Locations_Import_USR = new System.Windows.Forms.Button(); - this.btn_Locations_Import_CSV = new System.Windows.Forms.Button(); - this.btn_Locations_Import_DTB = new System.Windows.Forms.Button(); - this.btn_Locations_Import_CALL3 = new System.Windows.Forms.Button(); - this.btn_Locations_Import_AirScout = new System.Windows.Forms.Button(); - this.btn_Locations_Export = new System.Windows.Forms.Button(); - this.btn_Locations_Save = new System.Windows.Forms.Button(); - this.groupBox1 = new System.Windows.Forms.GroupBox(); - this.btn_QRZ_Stop = new System.Windows.Forms.Button(); - this.btn_QRZ_Start = new System.Windows.Forms.Button(); - this.tb_Locations_Status = new System.Windows.Forms.TextBox(); - this.tp_QRV = new System.Windows.Forms.TabPage(); - this.dgv_QRV = new System.Windows.Forms.DataGridView(); - this.panel4 = new System.Windows.Forms.Panel(); - this.cb_QRV_ChangedOnly = new System.Windows.Forms.CheckBox(); - this.btn_QRV_Sort = new System.Windows.Forms.Button(); - this.btn_QRV_Export = new System.Windows.Forms.Button(); - this.btn_QRV_Save = new System.Windows.Forms.Button(); - this.label4 = new System.Windows.Forms.Label(); - this.label3 = new System.Windows.Forms.Label(); - this.tb_QRV_Callsign_Filter = new System.Windows.Forms.TextBox(); - this.tb_QRV_Status = new System.Windows.Forms.TextBox(); - this.groupBox3 = new System.Windows.Forms.GroupBox(); - this.btn_QRV_Import_EDI = new System.Windows.Forms.Button(); - this.btn_QRV_Import_WinTest = new System.Windows.Forms.Button(); - this.tp_Aircrafts = new System.Windows.Forms.TabPage(); - this.lbl_Aircrafts_UnkownHex = new System.Windows.Forms.Label(); - this.lbl_Aircrafts_UnkownType = new System.Windows.Forms.Label(); - this.lbl_Aircrafts_UnkownCall = new System.Windows.Forms.Label(); - this.lbl_Aircrafts_Total = new System.Windows.Forms.Label(); - this.label8 = new System.Windows.Forms.Label(); - this.button1 = new System.Windows.Forms.Button(); - this.btn_Update_Aircrafts_Stop = new System.Windows.Forms.Button(); - this.btn_Update_Aicrafts_Start = new System.Windows.Forms.Button(); - this.btn_Update_Airports = new System.Windows.Forms.Button(); - this.btn_Update_Airlines = new System.Windows.Forms.Button(); - this.tp_Upload = new System.Windows.Forms.TabPage(); - this.groupBox5 = new System.Windows.Forms.GroupBox(); - this.label13 = new System.Windows.Forms.Label(); - this.label12 = new System.Windows.Forms.Label(); - this.label11 = new System.Windows.Forms.Label(); - this.btn_StationDatabase_Export = new System.Windows.Forms.Button(); - this.label10 = new System.Windows.Forms.Label(); - this.label9 = new System.Windows.Forms.Label(); - this.tp_Extras = new System.Windows.Forms.TabPage(); - this.groupBox4 = new System.Windows.Forms.GroupBox(); - this.btn_SFTP_GenarateFile = new System.Windows.Forms.Button(); - this.label7 = new System.Windows.Forms.Label(); - this.label6 = new System.Windows.Forms.Label(); - this.label5 = new System.Windows.Forms.Label(); - this.bw_QRZ = new System.ComponentModel.BackgroundWorker(); - this.bw_DatabaseUpdater = new System.ComponentModel.BackgroundWorker(); - this.bw_AircraftUpdater = new System.ComponentModel.BackgroundWorker(); - this.groupBox6 = new System.Windows.Forms.GroupBox(); - this.label14 = new System.Windows.Forms.Label(); - this.label15 = new System.Windows.Forms.Label(); - this.label16 = new System.Windows.Forms.Label(); - this.btn_AircraftDatabase_Export = new System.Windows.Forms.Button(); - this.label17 = new System.Windows.Forms.Label(); - this.label18 = new System.Windows.Forms.Label(); - this.tb_Coverage_MaxLat = new ScoutBase.Core.DoubleTextBox(); - this.tb_Coverage_MinLat = new ScoutBase.Core.DoubleTextBox(); - this.tb_Coverage_MaxLon = new ScoutBase.Core.DoubleTextBox(); - this.tb_Coverage_MinLon = new ScoutBase.Core.DoubleTextBox(); - this.tb_Update_Aircrafts = new System.Windows.Forms.TextBox(); - this.tb_Update_Airports = new System.Windows.Forms.TextBox(); - this.tb_Update_Airlines = new System.Windows.Forms.TextBox(); - this.tb_AircraftDatabase_RemoteHost = new System.Windows.Forms.TextBox(); - this.tb_AircraftDatabase_Password = new System.Windows.Forms.TextBox(); - this.tb_AircraftDatabase_User = new System.Windows.Forms.TextBox(); - this.tb_AircraftDatabase_RemoteDir = new System.Windows.Forms.TextBox(); - this.tb_AircraftDabase_LocalDir = new System.Windows.Forms.TextBox(); - this.tb_StationDatabase_RemoteHost = new System.Windows.Forms.TextBox(); - this.tb_StationDatabase_Export_Password = new System.Windows.Forms.TextBox(); - this.tb_StationDatabase_Export_User = new System.Windows.Forms.TextBox(); - this.tb_StationDatabase_RemoteDir = new System.Windows.Forms.TextBox(); - this.tb_StationDatabase_LocalDir = new System.Windows.Forms.TextBox(); - this.tb_SFTP_Password = new System.Windows.Forms.TextBox(); - this.tb_SFTP_User = new System.Windows.Forms.TextBox(); - this.tb_SFTP_URL = new System.Windows.Forms.TextBox(); - this.ss_Main.SuspendLayout(); - this.tc_Main.SuspendLayout(); - this.tp_General.SuspendLayout(); - this.panel1.SuspendLayout(); - this.tp_Locations.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit(); - this.splitContainer1.Panel1.SuspendLayout(); - this.splitContainer1.Panel2.SuspendLayout(); - this.splitContainer1.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.dgv_Locations)).BeginInit(); - this.panel2.SuspendLayout(); - this.groupBox2.SuspendLayout(); - this.groupBox1.SuspendLayout(); - this.tp_QRV.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.dgv_QRV)).BeginInit(); - this.panel4.SuspendLayout(); - this.groupBox3.SuspendLayout(); - this.tp_Aircrafts.SuspendLayout(); - this.tp_Upload.SuspendLayout(); - this.groupBox5.SuspendLayout(); - this.tp_Extras.SuspendLayout(); - this.groupBox4.SuspendLayout(); - this.groupBox6.SuspendLayout(); - this.SuspendLayout(); - // - // ss_Main - // - this.ss_Main.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.tsl_Status}); - this.ss_Main.Location = new System.Drawing.Point(0, 575); - this.ss_Main.Name = "ss_Main"; - this.ss_Main.Size = new System.Drawing.Size(1106, 22); - this.ss_Main.TabIndex = 0; - this.ss_Main.Text = "statusStrip1"; - // - // tsl_Status - // - this.tsl_Status.Name = "tsl_Status"; - this.tsl_Status.Size = new System.Drawing.Size(39, 17); - this.tsl_Status.Text = "Status"; - // - // tc_Main - // - this.tc_Main.Controls.Add(this.tp_General); - this.tc_Main.Controls.Add(this.tp_Locations); - this.tc_Main.Controls.Add(this.tp_QRV); - this.tc_Main.Controls.Add(this.tp_Aircrafts); - this.tc_Main.Controls.Add(this.tp_Upload); - this.tc_Main.Controls.Add(this.tp_Extras); - this.tc_Main.Dock = System.Windows.Forms.DockStyle.Fill; - this.tc_Main.Location = new System.Drawing.Point(0, 0); - this.tc_Main.Name = "tc_Main"; - this.tc_Main.SelectedIndex = 0; - this.tc_Main.Size = new System.Drawing.Size(1106, 575); - this.tc_Main.TabIndex = 1; - // - // tp_General - // - this.tp_General.BackColor = System.Drawing.SystemColors.Control; - this.tp_General.Controls.Add(this.gm_Coverage); - this.tp_General.Controls.Add(this.panel1); - this.tp_General.Location = new System.Drawing.Point(4, 22); - this.tp_General.Name = "tp_General"; - this.tp_General.Padding = new System.Windows.Forms.Padding(3); - this.tp_General.Size = new System.Drawing.Size(1098, 549); - this.tp_General.TabIndex = 0; - this.tp_General.Text = "General"; - this.tp_General.Enter += new System.EventHandler(this.tp_General_Enter); - // - // gm_Coverage - // - this.gm_Coverage.Bearing = 0F; - this.gm_Coverage.CanDragMap = true; - this.gm_Coverage.Dock = System.Windows.Forms.DockStyle.Fill; - this.gm_Coverage.EmptyTileColor = System.Drawing.Color.Navy; - this.gm_Coverage.GrayScaleMode = false; - this.gm_Coverage.HelperLineOption = GMap.NET.WindowsForms.HelperLineOptions.DontShow; - this.gm_Coverage.LevelsKeepInMemmory = 5; - this.gm_Coverage.Location = new System.Drawing.Point(3, 3); - this.gm_Coverage.MarkersEnabled = true; - this.gm_Coverage.MaxZoom = 2; - this.gm_Coverage.MinZoom = 2; - this.gm_Coverage.MouseWheelZoomType = GMap.NET.MouseWheelZoomType.MousePositionAndCenter; - this.gm_Coverage.Name = "gm_Coverage"; - this.gm_Coverage.NegativeMode = false; - this.gm_Coverage.PolygonsEnabled = true; - this.gm_Coverage.RetryLoadTile = 0; - this.gm_Coverage.RoutesEnabled = true; - this.gm_Coverage.SelectedAreaFillColor = System.Drawing.Color.FromArgb(((int)(((byte)(33)))), ((int)(((byte)(65)))), ((int)(((byte)(105)))), ((int)(((byte)(225))))); - this.gm_Coverage.ShowTileGridLines = false; - this.gm_Coverage.Size = new System.Drawing.Size(917, 543); - this.gm_Coverage.TabIndex = 1; - this.gm_Coverage.Zoom = 0D; - // - // panel1 - // - this.panel1.Controls.Add(this.tb_Coverage_MaxLat); - this.panel1.Controls.Add(this.tb_Coverage_MinLat); - this.panel1.Controls.Add(this.tb_Coverage_MaxLon); - this.panel1.Controls.Add(this.tb_Coverage_MinLon); - this.panel1.Controls.Add(this.label35); - this.panel1.Controls.Add(this.label54); - this.panel1.Controls.Add(this.label59); - this.panel1.Controls.Add(this.label60); - this.panel1.Dock = System.Windows.Forms.DockStyle.Right; - this.panel1.Location = new System.Drawing.Point(920, 3); - this.panel1.Name = "panel1"; - this.panel1.Size = new System.Drawing.Size(175, 543); - this.panel1.TabIndex = 0; - // - // label35 - // - this.label35.AutoSize = true; - this.label35.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label35.Location = new System.Drawing.Point(19, 109); - this.label35.Name = "label35"; - this.label35.Size = new System.Drawing.Size(74, 13); - this.label35.TabIndex = 32; - this.label35.Text = "Max. Latitude:"; - // - // label54 - // - this.label54.AutoSize = true; - this.label54.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label54.Location = new System.Drawing.Point(19, 83); - this.label54.Name = "label54"; - this.label54.Size = new System.Drawing.Size(71, 13); - this.label54.TabIndex = 31; - this.label54.Text = "Min. Latitude:"; - // - // label59 - // - this.label59.AutoSize = true; - this.label59.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label59.Location = new System.Drawing.Point(19, 56); - this.label59.Name = "label59"; - this.label59.Size = new System.Drawing.Size(83, 13); - this.label59.TabIndex = 30; - this.label59.Text = "Max. Longitude:"; - // - // label60 - // - this.label60.AutoSize = true; - this.label60.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label60.Location = new System.Drawing.Point(19, 30); - this.label60.Name = "label60"; - this.label60.Size = new System.Drawing.Size(80, 13); - this.label60.TabIndex = 29; - this.label60.Text = "Min. Longitude:"; - // - // tp_Locations - // - this.tp_Locations.BackColor = System.Drawing.SystemColors.Control; - this.tp_Locations.Controls.Add(this.splitContainer1); - this.tp_Locations.Controls.Add(this.panel2); - this.tp_Locations.Location = new System.Drawing.Point(4, 22); - this.tp_Locations.Name = "tp_Locations"; - this.tp_Locations.Padding = new System.Windows.Forms.Padding(3); - this.tp_Locations.Size = new System.Drawing.Size(1098, 549); - this.tp_Locations.TabIndex = 1; - this.tp_Locations.Text = "Locations"; - this.tp_Locations.Enter += new System.EventHandler(this.tp_Locations_Enter); - // - // splitContainer1 - // - this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill; - this.splitContainer1.Location = new System.Drawing.Point(3, 3); - this.splitContainer1.Name = "splitContainer1"; - // - // splitContainer1.Panel1 - // - this.splitContainer1.Panel1.Controls.Add(this.dgv_Locations); - // - // splitContainer1.Panel2 - // - this.splitContainer1.Panel2.Controls.Add(this.gm_Locations); - this.splitContainer1.Size = new System.Drawing.Size(1092, 414); - this.splitContainer1.SplitterDistance = 363; - this.splitContainer1.TabIndex = 3; - // - // dgv_Locations - // - this.dgv_Locations.AllowUserToResizeRows = false; - this.dgv_Locations.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; - this.dgv_Locations.Dock = System.Windows.Forms.DockStyle.Fill; - this.dgv_Locations.Location = new System.Drawing.Point(0, 0); - this.dgv_Locations.Name = "dgv_Locations"; - this.dgv_Locations.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; - this.dgv_Locations.Size = new System.Drawing.Size(363, 414); - this.dgv_Locations.TabIndex = 1; - this.dgv_Locations.CellFormatting += new System.Windows.Forms.DataGridViewCellFormattingEventHandler(this.dgv_Locations_CellFormatting); - this.dgv_Locations.SelectionChanged += new System.EventHandler(this.dgv_Locations_SelectionChanged); - // - // gm_Locations - // - this.gm_Locations.Bearing = 0F; - this.gm_Locations.CanDragMap = true; - this.gm_Locations.Dock = System.Windows.Forms.DockStyle.Fill; - this.gm_Locations.EmptyTileColor = System.Drawing.Color.Navy; - this.gm_Locations.GrayScaleMode = false; - this.gm_Locations.HelperLineOption = GMap.NET.WindowsForms.HelperLineOptions.DontShow; - this.gm_Locations.LevelsKeepInMemmory = 5; - this.gm_Locations.Location = new System.Drawing.Point(0, 0); - this.gm_Locations.MarkersEnabled = true; - this.gm_Locations.MaxZoom = 2; - this.gm_Locations.MinZoom = 2; - this.gm_Locations.MouseWheelZoomType = GMap.NET.MouseWheelZoomType.MousePositionAndCenter; - this.gm_Locations.Name = "gm_Locations"; - this.gm_Locations.NegativeMode = false; - this.gm_Locations.PolygonsEnabled = true; - this.gm_Locations.RetryLoadTile = 0; - this.gm_Locations.RoutesEnabled = true; - this.gm_Locations.SelectedAreaFillColor = System.Drawing.Color.FromArgb(((int)(((byte)(33)))), ((int)(((byte)(65)))), ((int)(((byte)(105)))), ((int)(((byte)(225))))); - this.gm_Locations.ShowTileGridLines = false; - this.gm_Locations.Size = new System.Drawing.Size(725, 414); - this.gm_Locations.TabIndex = 2; - this.gm_Locations.Zoom = 0D; - this.gm_Locations.OnMarkerEnter += new GMap.NET.WindowsForms.MarkerEnter(this.gm_Locations_OnMarkerEnter); - this.gm_Locations.OnMarkerLeave += new GMap.NET.WindowsForms.MarkerLeave(this.gm_Locations_OnMarkerLeave); - this.gm_Locations.MouseDown += new System.Windows.Forms.MouseEventHandler(this.gm_Locations_MouseDown); - this.gm_Locations.MouseMove += new System.Windows.Forms.MouseEventHandler(this.gm_Locations_MouseMove); - this.gm_Locations.MouseUp += new System.Windows.Forms.MouseEventHandler(this.gm_Locations_MouseUp); - // - // panel2 - // - this.panel2.Controls.Add(this.label2); - this.panel2.Controls.Add(this.label1); - this.panel2.Controls.Add(this.tb_Locations_Callsign_Filter); - this.panel2.Controls.Add(this.cb_Locations_ChangedOnly); - this.panel2.Controls.Add(this.btn_Locations_Sort); - this.panel2.Controls.Add(this.groupBox2); - this.panel2.Controls.Add(this.btn_Locations_Export); - this.panel2.Controls.Add(this.btn_Locations_Save); - this.panel2.Controls.Add(this.groupBox1); - this.panel2.Controls.Add(this.tb_Locations_Status); - this.panel2.Dock = System.Windows.Forms.DockStyle.Bottom; - this.panel2.Location = new System.Drawing.Point(3, 417); - this.panel2.Name = "panel2"; - this.panel2.Size = new System.Drawing.Size(1092, 129); - this.panel2.TabIndex = 0; - // - // label2 - // - this.label2.AutoSize = true; - this.label2.Location = new System.Drawing.Point(668, 12); - this.label2.Name = "label2"; - this.label2.Size = new System.Drawing.Size(68, 13); - this.label2.TabIndex = 10; - this.label2.Text = "Callsign Filter"; - // - // label1 - // - this.label1.AutoSize = true; - this.label1.Location = new System.Drawing.Point(17, 12); - this.label1.Name = "label1"; - this.label1.Size = new System.Drawing.Size(37, 13); - this.label1.TabIndex = 9; - this.label1.Text = "Status"; - // - // tb_Locations_Callsign_Filter - // - this.tb_Locations_Callsign_Filter.CharacterCasing = System.Windows.Forms.CharacterCasing.Upper; - this.tb_Locations_Callsign_Filter.Location = new System.Drawing.Point(671, 36); - this.tb_Locations_Callsign_Filter.Name = "tb_Locations_Callsign_Filter"; - this.tb_Locations_Callsign_Filter.Size = new System.Drawing.Size(100, 20); - this.tb_Locations_Callsign_Filter.TabIndex = 8; - this.tb_Locations_Callsign_Filter.TextChanged += new System.EventHandler(this.tb_Locations_Callsign_Filter_TextChanged); - // - // cb_Locations_ChangedOnly - // - this.cb_Locations_ChangedOnly.AutoSize = true; - this.cb_Locations_ChangedOnly.Location = new System.Drawing.Point(797, 38); - this.cb_Locations_ChangedOnly.Name = "cb_Locations_ChangedOnly"; - this.cb_Locations_ChangedOnly.Size = new System.Drawing.Size(145, 17); - this.cb_Locations_ChangedOnly.TabIndex = 7; - this.cb_Locations_ChangedOnly.Text = "Show changed rows only"; - this.cb_Locations_ChangedOnly.UseVisualStyleBackColor = true; - this.cb_Locations_ChangedOnly.CheckedChanged += new System.EventHandler(this.cb_Locations_ChangedOnly_CheckedChanged); - // - // btn_Locations_Sort - // - this.btn_Locations_Sort.Location = new System.Drawing.Point(735, 94); - this.btn_Locations_Sort.Name = "btn_Locations_Sort"; - this.btn_Locations_Sort.Size = new System.Drawing.Size(75, 23); - this.btn_Locations_Sort.TabIndex = 6; - this.btn_Locations_Sort.Text = "Sort"; - this.btn_Locations_Sort.UseVisualStyleBackColor = true; - this.btn_Locations_Sort.Click += new System.EventHandler(this.btn_Locations_Sort_Click); - // - // groupBox2 - // - this.groupBox2.Controls.Add(this.btn_Locations_Import_USR); - this.groupBox2.Controls.Add(this.btn_Locations_Import_CSV); - this.groupBox2.Controls.Add(this.btn_Locations_Import_DTB); - this.groupBox2.Controls.Add(this.btn_Locations_Import_CALL3); - this.groupBox2.Controls.Add(this.btn_Locations_Import_AirScout); - this.groupBox2.Location = new System.Drawing.Point(188, 68); - this.groupBox2.Name = "groupBox2"; - this.groupBox2.Size = new System.Drawing.Size(531, 55); - this.groupBox2.TabIndex = 5; - this.groupBox2.TabStop = false; - this.groupBox2.Text = "Import"; - // - // btn_Locations_Import_USR - // - this.btn_Locations_Import_USR.Location = new System.Drawing.Point(113, 26); - this.btn_Locations_Import_USR.Name = "btn_Locations_Import_USR"; - this.btn_Locations_Import_USR.Size = new System.Drawing.Size(92, 23); - this.btn_Locations_Import_USR.TabIndex = 4; - this.btn_Locations_Import_USR.Text = "AirScout (USR)"; - this.btn_Locations_Import_USR.UseVisualStyleBackColor = true; - this.btn_Locations_Import_USR.Click += new System.EventHandler(this.btn_Locations_Import_USR_Click); - // - // btn_Locations_Import_CSV - // - this.btn_Locations_Import_CSV.Location = new System.Drawing.Point(432, 26); - this.btn_Locations_Import_CSV.Name = "btn_Locations_Import_CSV"; - this.btn_Locations_Import_CSV.Size = new System.Drawing.Size(93, 23); - this.btn_Locations_Import_CSV.TabIndex = 3; - this.btn_Locations_Import_CSV.Text = "LOC (CSV)"; - this.btn_Locations_Import_CSV.UseVisualStyleBackColor = true; - this.btn_Locations_Import_CSV.Click += new System.EventHandler(this.btn_Locations_Import_CSV_Click); - // - // btn_Locations_Import_DTB - // - this.btn_Locations_Import_DTB.Location = new System.Drawing.Point(333, 26); - this.btn_Locations_Import_DTB.Name = "btn_Locations_Import_DTB"; - this.btn_Locations_Import_DTB.Size = new System.Drawing.Size(93, 23); - this.btn_Locations_Import_DTB.TabIndex = 2; - this.btn_Locations_Import_DTB.Text = "DTB (Win-Test)"; - this.btn_Locations_Import_DTB.UseVisualStyleBackColor = true; - this.btn_Locations_Import_DTB.Click += new System.EventHandler(this.btn_Locations_Import_DTB_Click); - // - // btn_Locations_Import_CALL3 - // - this.btn_Locations_Import_CALL3.Location = new System.Drawing.Point(239, 26); - this.btn_Locations_Import_CALL3.Name = "btn_Locations_Import_CALL3"; - this.btn_Locations_Import_CALL3.Size = new System.Drawing.Size(88, 23); - this.btn_Locations_Import_CALL3.TabIndex = 1; - this.btn_Locations_Import_CALL3.Text = "CALL3 (WSJT)"; - this.btn_Locations_Import_CALL3.UseVisualStyleBackColor = true; - this.btn_Locations_Import_CALL3.Click += new System.EventHandler(this.btn_Locations_Import_CALL3_Click); - // - // btn_Locations_Import_AirScout - // - this.btn_Locations_Import_AirScout.Location = new System.Drawing.Point(15, 26); - this.btn_Locations_Import_AirScout.Name = "btn_Locations_Import_AirScout"; - this.btn_Locations_Import_AirScout.Size = new System.Drawing.Size(92, 23); - this.btn_Locations_Import_AirScout.TabIndex = 0; - this.btn_Locations_Import_AirScout.Text = "AirScout (TXT)"; - this.btn_Locations_Import_AirScout.UseVisualStyleBackColor = true; - this.btn_Locations_Import_AirScout.Click += new System.EventHandler(this.btn_Locations_Import_AirScout_Click); - // - // btn_Locations_Export - // - this.btn_Locations_Export.Location = new System.Drawing.Point(897, 94); - this.btn_Locations_Export.Name = "btn_Locations_Export"; - this.btn_Locations_Export.Size = new System.Drawing.Size(75, 23); - this.btn_Locations_Export.TabIndex = 4; - this.btn_Locations_Export.Text = "Export"; - this.btn_Locations_Export.UseVisualStyleBackColor = true; - this.btn_Locations_Export.Click += new System.EventHandler(this.btn_Locations_Export_Click); - // - // btn_Locations_Save - // - this.btn_Locations_Save.Location = new System.Drawing.Point(816, 94); - this.btn_Locations_Save.Name = "btn_Locations_Save"; - this.btn_Locations_Save.Size = new System.Drawing.Size(75, 23); - this.btn_Locations_Save.TabIndex = 3; - this.btn_Locations_Save.Text = "Save"; - this.btn_Locations_Save.UseVisualStyleBackColor = true; - this.btn_Locations_Save.Click += new System.EventHandler(this.btn_Locations_Save_Click); - // - // groupBox1 - // - this.groupBox1.Controls.Add(this.btn_QRZ_Stop); - this.groupBox1.Controls.Add(this.btn_QRZ_Start); - this.groupBox1.Location = new System.Drawing.Point(5, 68); - this.groupBox1.Name = "groupBox1"; - this.groupBox1.Size = new System.Drawing.Size(177, 55); - this.groupBox1.TabIndex = 0; - this.groupBox1.TabStop = false; - this.groupBox1.Text = "QRZ.COM Update"; - // - // btn_QRZ_Stop - // - this.btn_QRZ_Stop.Location = new System.Drawing.Point(96, 26); - this.btn_QRZ_Stop.Name = "btn_QRZ_Stop"; - this.btn_QRZ_Stop.Size = new System.Drawing.Size(75, 23); - this.btn_QRZ_Stop.TabIndex = 1; - this.btn_QRZ_Stop.Text = "Stop"; - this.btn_QRZ_Stop.UseVisualStyleBackColor = true; - this.btn_QRZ_Stop.Click += new System.EventHandler(this.btn_QRZ_Stop_Click); - // - // btn_QRZ_Start - // - this.btn_QRZ_Start.Location = new System.Drawing.Point(15, 26); - this.btn_QRZ_Start.Name = "btn_QRZ_Start"; - this.btn_QRZ_Start.Size = new System.Drawing.Size(75, 23); - this.btn_QRZ_Start.TabIndex = 0; - this.btn_QRZ_Start.Text = "Start"; - this.btn_QRZ_Start.UseVisualStyleBackColor = true; - this.btn_QRZ_Start.Click += new System.EventHandler(this.btn_QRZ_Start_Click); - // - // tb_Locations_Status - // - this.tb_Locations_Status.Location = new System.Drawing.Point(20, 35); - this.tb_Locations_Status.Name = "tb_Locations_Status"; - this.tb_Locations_Status.ReadOnly = true; - this.tb_Locations_Status.Size = new System.Drawing.Size(608, 20); - this.tb_Locations_Status.TabIndex = 2; - // - // tp_QRV - // - this.tp_QRV.Controls.Add(this.dgv_QRV); - this.tp_QRV.Controls.Add(this.panel4); - this.tp_QRV.Location = new System.Drawing.Point(4, 22); - this.tp_QRV.Name = "tp_QRV"; - this.tp_QRV.Size = new System.Drawing.Size(1098, 549); - this.tp_QRV.TabIndex = 2; - this.tp_QRV.Text = "QRV"; - this.tp_QRV.UseVisualStyleBackColor = true; - this.tp_QRV.Enter += new System.EventHandler(this.tp_QRV_Enter); - // - // dgv_QRV - // - this.dgv_QRV.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; - this.dgv_QRV.Dock = System.Windows.Forms.DockStyle.Fill; - this.dgv_QRV.Location = new System.Drawing.Point(0, 0); - this.dgv_QRV.Name = "dgv_QRV"; - this.dgv_QRV.Size = new System.Drawing.Size(1098, 404); - this.dgv_QRV.TabIndex = 2; - this.dgv_QRV.CellEndEdit += new System.Windows.Forms.DataGridViewCellEventHandler(this.dgv_QRV_CellEndEdit); - this.dgv_QRV.CellFormatting += new System.Windows.Forms.DataGridViewCellFormattingEventHandler(this.dgv_QRV_CellFormatting); - this.dgv_QRV.CellValueChanged += new System.Windows.Forms.DataGridViewCellEventHandler(this.dgv_QRV_CellValueChanged); - // - // panel4 - // - this.panel4.BackColor = System.Drawing.SystemColors.ControlLight; - this.panel4.Controls.Add(this.cb_QRV_ChangedOnly); - this.panel4.Controls.Add(this.btn_QRV_Sort); - this.panel4.Controls.Add(this.btn_QRV_Export); - this.panel4.Controls.Add(this.btn_QRV_Save); - this.panel4.Controls.Add(this.label4); - this.panel4.Controls.Add(this.label3); - this.panel4.Controls.Add(this.tb_QRV_Callsign_Filter); - this.panel4.Controls.Add(this.tb_QRV_Status); - this.panel4.Controls.Add(this.groupBox3); - this.panel4.Dock = System.Windows.Forms.DockStyle.Bottom; - this.panel4.Location = new System.Drawing.Point(0, 404); - this.panel4.Name = "panel4"; - this.panel4.Size = new System.Drawing.Size(1098, 145); - this.panel4.TabIndex = 1; - // - // cb_QRV_ChangedOnly - // - this.cb_QRV_ChangedOnly.AutoSize = true; - this.cb_QRV_ChangedOnly.Location = new System.Drawing.Point(799, 38); - this.cb_QRV_ChangedOnly.Name = "cb_QRV_ChangedOnly"; - this.cb_QRV_ChangedOnly.Size = new System.Drawing.Size(145, 17); - this.cb_QRV_ChangedOnly.TabIndex = 10; - this.cb_QRV_ChangedOnly.Text = "Show changed rows only"; - this.cb_QRV_ChangedOnly.UseVisualStyleBackColor = true; - this.cb_QRV_ChangedOnly.CheckedChanged += new System.EventHandler(this.cb_QRV_ChangedOnly_CheckedChanged); - // - // btn_QRV_Sort - // - this.btn_QRV_Sort.Location = new System.Drawing.Point(707, 99); - this.btn_QRV_Sort.Name = "btn_QRV_Sort"; - this.btn_QRV_Sort.Size = new System.Drawing.Size(75, 23); - this.btn_QRV_Sort.TabIndex = 9; - this.btn_QRV_Sort.Text = "Sort"; - this.btn_QRV_Sort.UseVisualStyleBackColor = true; - this.btn_QRV_Sort.Click += new System.EventHandler(this.btn_QRV_Sort_Click); - // - // btn_QRV_Export - // - this.btn_QRV_Export.Location = new System.Drawing.Point(869, 99); - this.btn_QRV_Export.Name = "btn_QRV_Export"; - this.btn_QRV_Export.Size = new System.Drawing.Size(75, 23); - this.btn_QRV_Export.TabIndex = 8; - this.btn_QRV_Export.Text = "Export"; - this.btn_QRV_Export.UseVisualStyleBackColor = true; - this.btn_QRV_Export.Click += new System.EventHandler(this.btn_QRV_Export_Click); - // - // btn_QRV_Save - // - this.btn_QRV_Save.Location = new System.Drawing.Point(788, 99); - this.btn_QRV_Save.Name = "btn_QRV_Save"; - this.btn_QRV_Save.Size = new System.Drawing.Size(75, 23); - this.btn_QRV_Save.TabIndex = 7; - this.btn_QRV_Save.Text = "Save"; - this.btn_QRV_Save.UseVisualStyleBackColor = true; - this.btn_QRV_Save.Click += new System.EventHandler(this.btn_QRV_Save_Click); - // - // label4 - // - this.label4.AutoSize = true; - this.label4.Location = new System.Drawing.Point(628, 12); - this.label4.Name = "label4"; - this.label4.Size = new System.Drawing.Size(68, 13); - this.label4.TabIndex = 4; - this.label4.Text = "Callsign Filter"; - // - // label3 - // - this.label3.AutoSize = true; - this.label3.Location = new System.Drawing.Point(11, 12); - this.label3.Name = "label3"; - this.label3.Size = new System.Drawing.Size(37, 13); - this.label3.TabIndex = 3; - this.label3.Text = "Status"; - // - // tb_QRV_Callsign_Filter - // - this.tb_QRV_Callsign_Filter.CharacterCasing = System.Windows.Forms.CharacterCasing.Upper; - this.tb_QRV_Callsign_Filter.Location = new System.Drawing.Point(631, 38); - this.tb_QRV_Callsign_Filter.Name = "tb_QRV_Callsign_Filter"; - this.tb_QRV_Callsign_Filter.Size = new System.Drawing.Size(100, 20); - this.tb_QRV_Callsign_Filter.TabIndex = 2; - this.tb_QRV_Callsign_Filter.TextChanged += new System.EventHandler(this.tb_QRV_Callsign_Filter_TextChanged); - // - // tb_QRV_Status - // - this.tb_QRV_Status.Location = new System.Drawing.Point(14, 38); - this.tb_QRV_Status.Name = "tb_QRV_Status"; - this.tb_QRV_Status.ReadOnly = true; - this.tb_QRV_Status.Size = new System.Drawing.Size(485, 20); - this.tb_QRV_Status.TabIndex = 1; - // - // groupBox3 - // - this.groupBox3.Controls.Add(this.btn_QRV_Import_EDI); - this.groupBox3.Controls.Add(this.btn_QRV_Import_WinTest); - this.groupBox3.Location = new System.Drawing.Point(8, 76); - this.groupBox3.Name = "groupBox3"; - this.groupBox3.Size = new System.Drawing.Size(284, 52); - this.groupBox3.TabIndex = 0; - this.groupBox3.TabStop = false; - this.groupBox3.Text = "Import"; - // - // btn_QRV_Import_EDI - // - this.btn_QRV_Import_EDI.Location = new System.Drawing.Point(87, 23); - this.btn_QRV_Import_EDI.Name = "btn_QRV_Import_EDI"; - this.btn_QRV_Import_EDI.Size = new System.Drawing.Size(75, 23); - this.btn_QRV_Import_EDI.TabIndex = 1; - this.btn_QRV_Import_EDI.Text = "EDI"; - this.btn_QRV_Import_EDI.UseVisualStyleBackColor = true; - this.btn_QRV_Import_EDI.Click += new System.EventHandler(this.btn_QRV_Import_EDI_Click); - // - // btn_QRV_Import_WinTest - // - this.btn_QRV_Import_WinTest.Location = new System.Drawing.Point(6, 23); - this.btn_QRV_Import_WinTest.Name = "btn_QRV_Import_WinTest"; - this.btn_QRV_Import_WinTest.Size = new System.Drawing.Size(75, 23); - this.btn_QRV_Import_WinTest.TabIndex = 0; - this.btn_QRV_Import_WinTest.Text = "Win-Test (QRV)"; - this.btn_QRV_Import_WinTest.UseVisualStyleBackColor = true; - this.btn_QRV_Import_WinTest.Click += new System.EventHandler(this.btn_QRV_Import_WinTest_Click); - // - // tp_Aircrafts - // - this.tp_Aircrafts.BackColor = System.Drawing.SystemColors.Control; - this.tp_Aircrafts.Controls.Add(this.lbl_Aircrafts_UnkownHex); - this.tp_Aircrafts.Controls.Add(this.lbl_Aircrafts_UnkownType); - this.tp_Aircrafts.Controls.Add(this.lbl_Aircrafts_UnkownCall); - this.tp_Aircrafts.Controls.Add(this.lbl_Aircrafts_Total); - this.tp_Aircrafts.Controls.Add(this.label8); - this.tp_Aircrafts.Controls.Add(this.button1); - this.tp_Aircrafts.Controls.Add(this.btn_Update_Aircrafts_Stop); - this.tp_Aircrafts.Controls.Add(this.btn_Update_Aicrafts_Start); - this.tp_Aircrafts.Controls.Add(this.btn_Update_Airports); - this.tp_Aircrafts.Controls.Add(this.btn_Update_Airlines); - this.tp_Aircrafts.Controls.Add(this.tb_Update_Aircrafts); - this.tp_Aircrafts.Controls.Add(this.tb_Update_Airports); - this.tp_Aircrafts.Controls.Add(this.tb_Update_Airlines); - this.tp_Aircrafts.Location = new System.Drawing.Point(4, 22); - this.tp_Aircrafts.Name = "tp_Aircrafts"; - this.tp_Aircrafts.Size = new System.Drawing.Size(1098, 549); - this.tp_Aircrafts.TabIndex = 4; - this.tp_Aircrafts.Text = "Aircrafts"; - this.tp_Aircrafts.Enter += new System.EventHandler(this.tp_Aircrafts_Enter); - // - // lbl_Aircrafts_UnkownHex - // - this.lbl_Aircrafts_UnkownHex.AutoSize = true; - this.lbl_Aircrafts_UnkownHex.Location = new System.Drawing.Point(330, 133); - this.lbl_Aircrafts_UnkownHex.Name = "lbl_Aircrafts_UnkownHex"; - this.lbl_Aircrafts_UnkownHex.Size = new System.Drawing.Size(30, 13); - this.lbl_Aircrafts_UnkownHex.TabIndex = 12; - this.lbl_Aircrafts_UnkownHex.Text = "total:"; - // - // lbl_Aircrafts_UnkownType - // - this.lbl_Aircrafts_UnkownType.AutoSize = true; - this.lbl_Aircrafts_UnkownType.Location = new System.Drawing.Point(738, 133); - this.lbl_Aircrafts_UnkownType.Name = "lbl_Aircrafts_UnkownType"; - this.lbl_Aircrafts_UnkownType.Size = new System.Drawing.Size(30, 13); - this.lbl_Aircrafts_UnkownType.TabIndex = 11; - this.lbl_Aircrafts_UnkownType.Text = "total:"; - // - // lbl_Aircrafts_UnkownCall - // - this.lbl_Aircrafts_UnkownCall.AutoSize = true; - this.lbl_Aircrafts_UnkownCall.Location = new System.Drawing.Point(517, 133); - this.lbl_Aircrafts_UnkownCall.Name = "lbl_Aircrafts_UnkownCall"; - this.lbl_Aircrafts_UnkownCall.Size = new System.Drawing.Size(30, 13); - this.lbl_Aircrafts_UnkownCall.TabIndex = 10; - this.lbl_Aircrafts_UnkownCall.Text = "total:"; - // - // lbl_Aircrafts_Total - // - this.lbl_Aircrafts_Total.AutoSize = true; - this.lbl_Aircrafts_Total.Location = new System.Drawing.Point(161, 133); - this.lbl_Aircrafts_Total.Name = "lbl_Aircrafts_Total"; - this.lbl_Aircrafts_Total.Size = new System.Drawing.Size(30, 13); - this.lbl_Aircrafts_Total.TabIndex = 9; - this.lbl_Aircrafts_Total.Text = "total:"; - // - // label8 - // - this.label8.AutoSize = true; - this.label8.Location = new System.Drawing.Point(8, 133); - this.label8.Name = "label8"; - this.label8.Size = new System.Drawing.Size(134, 13); - this.label8.TabIndex = 8; - this.label8.Text = "Aircraft Database Statistics"; - // - // button1 - // - this.button1.Enabled = false; - this.button1.Location = new System.Drawing.Point(8, 96); - this.button1.Name = "button1"; - this.button1.Size = new System.Drawing.Size(150, 23); - this.button1.TabIndex = 6; - this.button1.Text = "Update Aircrafts"; - this.button1.UseVisualStyleBackColor = true; - // - // btn_Update_Aircrafts_Stop - // - this.btn_Update_Aircrafts_Stop.Location = new System.Drawing.Point(1001, 96); - this.btn_Update_Aircrafts_Stop.Name = "btn_Update_Aircrafts_Stop"; - this.btn_Update_Aircrafts_Stop.Size = new System.Drawing.Size(75, 23); - this.btn_Update_Aircrafts_Stop.TabIndex = 5; - this.btn_Update_Aircrafts_Stop.Text = "Stop"; - this.btn_Update_Aircrafts_Stop.UseVisualStyleBackColor = true; - this.btn_Update_Aircrafts_Stop.Click += new System.EventHandler(this.btn_Update_Aircrafts_Stop_Click); - // - // btn_Update_Aicrafts_Start - // - this.btn_Update_Aicrafts_Start.Location = new System.Drawing.Point(906, 96); - this.btn_Update_Aicrafts_Start.Name = "btn_Update_Aicrafts_Start"; - this.btn_Update_Aicrafts_Start.Size = new System.Drawing.Size(75, 23); - this.btn_Update_Aicrafts_Start.TabIndex = 4; - this.btn_Update_Aicrafts_Start.Text = "Start"; - this.btn_Update_Aicrafts_Start.UseVisualStyleBackColor = true; - this.btn_Update_Aicrafts_Start.Click += new System.EventHandler(this.btn_Update_Aicrafts_Start_Click); - // - // btn_Update_Airports - // - this.btn_Update_Airports.Location = new System.Drawing.Point(8, 50); - this.btn_Update_Airports.Name = "btn_Update_Airports"; - this.btn_Update_Airports.Size = new System.Drawing.Size(150, 23); - this.btn_Update_Airports.TabIndex = 2; - this.btn_Update_Airports.Text = "Update Airports"; - this.btn_Update_Airports.UseVisualStyleBackColor = true; - this.btn_Update_Airports.Click += new System.EventHandler(this.btn_Update_Airports_Click); - // - // btn_Update_Airlines - // - this.btn_Update_Airlines.Location = new System.Drawing.Point(8, 21); - this.btn_Update_Airlines.Name = "btn_Update_Airlines"; - this.btn_Update_Airlines.Size = new System.Drawing.Size(150, 23); - this.btn_Update_Airlines.TabIndex = 0; - this.btn_Update_Airlines.Text = "Update Airlines"; - this.btn_Update_Airlines.UseVisualStyleBackColor = true; - this.btn_Update_Airlines.Click += new System.EventHandler(this.btn_Update_Airlines_Click); - // - // tp_Upload - // - this.tp_Upload.BackColor = System.Drawing.SystemColors.Control; - this.tp_Upload.Controls.Add(this.groupBox6); - this.tp_Upload.Controls.Add(this.groupBox5); - this.tp_Upload.Location = new System.Drawing.Point(4, 22); - this.tp_Upload.Name = "tp_Upload"; - this.tp_Upload.Size = new System.Drawing.Size(1098, 549); - this.tp_Upload.TabIndex = 5; - this.tp_Upload.Text = "Upload"; - // - // groupBox5 - // - this.groupBox5.Controls.Add(this.tb_StationDatabase_RemoteHost); - this.groupBox5.Controls.Add(this.label13); - this.groupBox5.Controls.Add(this.tb_StationDatabase_Export_Password); - this.groupBox5.Controls.Add(this.label12); - this.groupBox5.Controls.Add(this.tb_StationDatabase_Export_User); - this.groupBox5.Controls.Add(this.label11); - this.groupBox5.Controls.Add(this.btn_StationDatabase_Export); - this.groupBox5.Controls.Add(this.tb_StationDatabase_RemoteDir); - this.groupBox5.Controls.Add(this.label10); - this.groupBox5.Controls.Add(this.tb_StationDatabase_LocalDir); - this.groupBox5.Controls.Add(this.label9); - this.groupBox5.Location = new System.Drawing.Point(8, 15); - this.groupBox5.Name = "groupBox5"; - this.groupBox5.Size = new System.Drawing.Size(881, 189); - this.groupBox5.TabIndex = 2; - this.groupBox5.TabStop = false; - this.groupBox5.Text = "Station Database"; - // - // label13 - // - this.label13.AutoSize = true; - this.label13.Location = new System.Drawing.Point(9, 48); - this.label13.Name = "label13"; - this.label13.Size = new System.Drawing.Size(72, 13); - this.label13.TabIndex = 9; - this.label13.Text = "Remote Host:"; - // - // label12 - // - this.label12.AutoSize = true; - this.label12.Location = new System.Drawing.Point(9, 127); - this.label12.Name = "label12"; - this.label12.Size = new System.Drawing.Size(56, 13); - this.label12.TabIndex = 7; - this.label12.Text = "Password:"; - // - // label11 - // - this.label11.AutoSize = true; - this.label11.Location = new System.Drawing.Point(9, 101); - this.label11.Name = "label11"; - this.label11.Size = new System.Drawing.Size(32, 13); - this.label11.TabIndex = 5; - this.label11.Text = "User:"; - // - // btn_StationDatabase_Export - // - this.btn_StationDatabase_Export.Location = new System.Drawing.Point(107, 150); - this.btn_StationDatabase_Export.Name = "btn_StationDatabase_Export"; - this.btn_StationDatabase_Export.Size = new System.Drawing.Size(178, 23); - this.btn_StationDatabase_Export.TabIndex = 4; - this.btn_StationDatabase_Export.Text = "Export to JSON and Upload"; - this.btn_StationDatabase_Export.UseVisualStyleBackColor = true; - this.btn_StationDatabase_Export.Click += new System.EventHandler(this.btn_StationDatabase_Export_Click); - // - // label10 - // - this.label10.AutoSize = true; - this.label10.Location = new System.Drawing.Point(9, 74); - this.label10.Name = "label10"; - this.label10.Size = new System.Drawing.Size(92, 13); - this.label10.TabIndex = 2; - this.label10.Text = "Remote Directory:"; - // - // label9 - // - this.label9.AutoSize = true; - this.label9.Location = new System.Drawing.Point(9, 22); - this.label9.Name = "label9"; - this.label9.Size = new System.Drawing.Size(81, 13); - this.label9.TabIndex = 0; - this.label9.Text = "Local Directory:"; - // - // tp_Extras - // - this.tp_Extras.BackColor = System.Drawing.SystemColors.Control; - this.tp_Extras.Controls.Add(this.groupBox4); - this.tp_Extras.Location = new System.Drawing.Point(4, 22); - this.tp_Extras.Name = "tp_Extras"; - this.tp_Extras.Size = new System.Drawing.Size(1098, 549); - this.tp_Extras.TabIndex = 3; - this.tp_Extras.Text = "Extras"; - // - // groupBox4 - // - this.groupBox4.Controls.Add(this.btn_SFTP_GenarateFile); - this.groupBox4.Controls.Add(this.tb_SFTP_Password); - this.groupBox4.Controls.Add(this.label7); - this.groupBox4.Controls.Add(this.tb_SFTP_User); - this.groupBox4.Controls.Add(this.label6); - this.groupBox4.Controls.Add(this.tb_SFTP_URL); - this.groupBox4.Controls.Add(this.label5); - this.groupBox4.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic))), System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.groupBox4.Location = new System.Drawing.Point(8, 14); - this.groupBox4.Name = "groupBox4"; - this.groupBox4.Size = new System.Drawing.Size(778, 111); - this.groupBox4.TabIndex = 0; - this.groupBox4.TabStop = false; - this.groupBox4.Text = "SFTP Password File"; - // - // btn_SFTP_GenarateFile - // - this.btn_SFTP_GenarateFile.Location = new System.Drawing.Point(423, 23); - this.btn_SFTP_GenarateFile.Name = "btn_SFTP_GenarateFile"; - this.btn_SFTP_GenarateFile.Size = new System.Drawing.Size(252, 72); - this.btn_SFTP_GenarateFile.TabIndex = 6; - this.btn_SFTP_GenarateFile.Text = "Generate File"; - this.btn_SFTP_GenarateFile.UseVisualStyleBackColor = true; - this.btn_SFTP_GenarateFile.Click += new System.EventHandler(this.btn_SFTP_GenerateFile_Click); - // - // label7 - // - this.label7.AutoSize = true; - this.label7.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label7.Location = new System.Drawing.Point(6, 78); - this.label7.Name = "label7"; - this.label7.Size = new System.Drawing.Size(56, 13); - this.label7.TabIndex = 4; - this.label7.Text = "Password:"; - // - // label6 - // - this.label6.AutoSize = true; - this.label6.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label6.Location = new System.Drawing.Point(6, 52); - this.label6.Name = "label6"; - this.label6.Size = new System.Drawing.Size(32, 13); - this.label6.TabIndex = 2; - this.label6.Text = "User:"; - // - // label5 - // - this.label5.AutoSize = true; - this.label5.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.label5.Location = new System.Drawing.Point(6, 26); - this.label5.Name = "label5"; - this.label5.Size = new System.Drawing.Size(32, 13); - this.label5.TabIndex = 0; - this.label5.Text = "URL:"; - // - // bw_QRZ - // - this.bw_QRZ.WorkerReportsProgress = true; - this.bw_QRZ.WorkerSupportsCancellation = true; - this.bw_QRZ.DoWork += new System.ComponentModel.DoWorkEventHandler(this.bw_QRZ_DoWork); - this.bw_QRZ.ProgressChanged += new System.ComponentModel.ProgressChangedEventHandler(this.bw_QRZ_ProgressChanged); - this.bw_QRZ.RunWorkerCompleted += new System.ComponentModel.RunWorkerCompletedEventHandler(this.bw_QRZ_RunWorkerCompleted); - // - // bw_DatabaseUpdater - // - this.bw_DatabaseUpdater.WorkerReportsProgress = true; - this.bw_DatabaseUpdater.WorkerSupportsCancellation = true; - this.bw_DatabaseUpdater.DoWork += new System.ComponentModel.DoWorkEventHandler(this.bw_DatabaseUpdater_DoWork); - this.bw_DatabaseUpdater.ProgressChanged += new System.ComponentModel.ProgressChangedEventHandler(this.bw_DatabaseUpdater_ProgressChanged); - this.bw_DatabaseUpdater.RunWorkerCompleted += new System.ComponentModel.RunWorkerCompletedEventHandler(this.bw_DatabaseUpdater_RunWorkerCompleted); - // - // bw_AircraftUpdater - // - this.bw_AircraftUpdater.WorkerReportsProgress = true; - this.bw_AircraftUpdater.WorkerSupportsCancellation = true; - this.bw_AircraftUpdater.DoWork += new System.ComponentModel.DoWorkEventHandler(this.bw_AircraftUpdater_DoWork); - this.bw_AircraftUpdater.ProgressChanged += new System.ComponentModel.ProgressChangedEventHandler(this.bw_AircraftUpdater_ProgressChanged); - this.bw_AircraftUpdater.RunWorkerCompleted += new System.ComponentModel.RunWorkerCompletedEventHandler(this.bw_AircraftUpdater_RunWorkerCompleted); - // - // groupBox6 - // - this.groupBox6.Controls.Add(this.tb_AircraftDatabase_RemoteHost); - this.groupBox6.Controls.Add(this.label14); - this.groupBox6.Controls.Add(this.tb_AircraftDatabase_Password); - this.groupBox6.Controls.Add(this.label15); - this.groupBox6.Controls.Add(this.tb_AircraftDatabase_User); - this.groupBox6.Controls.Add(this.label16); - this.groupBox6.Controls.Add(this.btn_AircraftDatabase_Export); - this.groupBox6.Controls.Add(this.tb_AircraftDatabase_RemoteDir); - this.groupBox6.Controls.Add(this.label17); - this.groupBox6.Controls.Add(this.tb_AircraftDabase_LocalDir); - this.groupBox6.Controls.Add(this.label18); - this.groupBox6.Location = new System.Drawing.Point(8, 210); - this.groupBox6.Name = "groupBox6"; - this.groupBox6.Size = new System.Drawing.Size(881, 189); - this.groupBox6.TabIndex = 3; - this.groupBox6.TabStop = false; - this.groupBox6.Text = "Aicraft Database"; - // - // label14 - // - this.label14.AutoSize = true; - this.label14.Location = new System.Drawing.Point(9, 48); - this.label14.Name = "label14"; - this.label14.Size = new System.Drawing.Size(72, 13); - this.label14.TabIndex = 9; - this.label14.Text = "Remote Host:"; - // - // label15 - // - this.label15.AutoSize = true; - this.label15.Location = new System.Drawing.Point(9, 127); - this.label15.Name = "label15"; - this.label15.Size = new System.Drawing.Size(56, 13); - this.label15.TabIndex = 7; - this.label15.Text = "Password:"; - // - // label16 - // - this.label16.AutoSize = true; - this.label16.Location = new System.Drawing.Point(9, 101); - this.label16.Name = "label16"; - this.label16.Size = new System.Drawing.Size(32, 13); - this.label16.TabIndex = 5; - this.label16.Text = "User:"; - // - // btn_AircraftDatabase_Export - // - this.btn_AircraftDatabase_Export.Location = new System.Drawing.Point(107, 150); - this.btn_AircraftDatabase_Export.Name = "btn_AircraftDatabase_Export"; - this.btn_AircraftDatabase_Export.Size = new System.Drawing.Size(178, 23); - this.btn_AircraftDatabase_Export.TabIndex = 4; - this.btn_AircraftDatabase_Export.Text = "Export to JSON and Upload"; - this.btn_AircraftDatabase_Export.UseVisualStyleBackColor = true; - this.btn_AircraftDatabase_Export.Click += new System.EventHandler(this.btn_AircraftDatabase_Export_Click); - // - // label17 - // - this.label17.AutoSize = true; - this.label17.Location = new System.Drawing.Point(9, 74); - this.label17.Name = "label17"; - this.label17.Size = new System.Drawing.Size(92, 13); - this.label17.TabIndex = 2; - this.label17.Text = "Remote Directory:"; - // - // label18 - // - this.label18.AutoSize = true; - this.label18.Location = new System.Drawing.Point(9, 22); - this.label18.Name = "label18"; - this.label18.Size = new System.Drawing.Size(81, 13); - this.label18.TabIndex = 0; - this.label18.Text = "Local Directory:"; - // - // tb_Coverage_MaxLat - // - this.tb_Coverage_MaxLat.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScoutDatabaseManager.Properties.Settings.Default, "MaxLat", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.tb_Coverage_MaxLat.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.tb_Coverage_MaxLat.FormatSpecifier = "F0"; - this.tb_Coverage_MaxLat.Location = new System.Drawing.Point(105, 104); - this.tb_Coverage_MaxLat.MaxValue = 90D; - this.tb_Coverage_MaxLat.MinValue = -90D; - this.tb_Coverage_MaxLat.Name = "tb_Coverage_MaxLat"; - this.tb_Coverage_MaxLat.Size = new System.Drawing.Size(50, 22); - this.tb_Coverage_MaxLat.TabIndex = 28; - this.tb_Coverage_MaxLat.Text = "60"; - this.tb_Coverage_MaxLat.Value = global::AirScoutDatabaseManager.Properties.Settings.Default.MaxLat; - this.tb_Coverage_MaxLat.TextChanged += new System.EventHandler(this.tp_General_Update); - // - // tb_Coverage_MinLat - // - this.tb_Coverage_MinLat.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScoutDatabaseManager.Properties.Settings.Default, "MinLat", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.tb_Coverage_MinLat.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.tb_Coverage_MinLat.FormatSpecifier = "F0"; - this.tb_Coverage_MinLat.Location = new System.Drawing.Point(105, 79); - this.tb_Coverage_MinLat.MaxValue = 90D; - this.tb_Coverage_MinLat.MinValue = -90D; - this.tb_Coverage_MinLat.Name = "tb_Coverage_MinLat"; - this.tb_Coverage_MinLat.Size = new System.Drawing.Size(50, 22); - this.tb_Coverage_MinLat.TabIndex = 27; - this.tb_Coverage_MinLat.Text = "35"; - this.tb_Coverage_MinLat.Value = global::AirScoutDatabaseManager.Properties.Settings.Default.MinLat; - this.tb_Coverage_MinLat.TextChanged += new System.EventHandler(this.tp_General_Update); - // - // tb_Coverage_MaxLon - // - this.tb_Coverage_MaxLon.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScoutDatabaseManager.Properties.Settings.Default, "MaxLon", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.tb_Coverage_MaxLon.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.tb_Coverage_MaxLon.FormatSpecifier = "F0"; - this.tb_Coverage_MaxLon.Location = new System.Drawing.Point(105, 52); - this.tb_Coverage_MaxLon.MaxValue = 180D; - this.tb_Coverage_MaxLon.MinValue = -180D; - this.tb_Coverage_MaxLon.Name = "tb_Coverage_MaxLon"; - this.tb_Coverage_MaxLon.Size = new System.Drawing.Size(50, 22); - this.tb_Coverage_MaxLon.TabIndex = 26; - this.tb_Coverage_MaxLon.Text = "30"; - this.tb_Coverage_MaxLon.Value = global::AirScoutDatabaseManager.Properties.Settings.Default.MaxLon; - this.tb_Coverage_MaxLon.TextChanged += new System.EventHandler(this.tp_General_Update); - // - // tb_Coverage_MinLon - // - this.tb_Coverage_MinLon.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::AirScoutDatabaseManager.Properties.Settings.Default, "MinLon", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.tb_Coverage_MinLon.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.tb_Coverage_MinLon.FormatSpecifier = "F0"; - this.tb_Coverage_MinLon.Location = new System.Drawing.Point(105, 25); - this.tb_Coverage_MinLon.MaxValue = 180D; - this.tb_Coverage_MinLon.MinValue = -180D; - this.tb_Coverage_MinLon.Name = "tb_Coverage_MinLon"; - this.tb_Coverage_MinLon.Size = new System.Drawing.Size(50, 22); - this.tb_Coverage_MinLon.TabIndex = 25; - this.tb_Coverage_MinLon.Text = "-15"; - this.tb_Coverage_MinLon.Value = global::AirScoutDatabaseManager.Properties.Settings.Default.MinLon; - this.tb_Coverage_MinLon.TextChanged += new System.EventHandler(this.tp_General_Update); - // - // tb_Update_Aircrafts - // - this.tb_Update_Aircrafts.DataBindings.Add(new System.Windows.Forms.Binding("Text", global::AirScoutDatabaseManager.Properties.Settings.Default, "Aircrafts_BaseURL", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.tb_Update_Aircrafts.Location = new System.Drawing.Point(164, 98); - this.tb_Update_Aircrafts.Name = "tb_Update_Aircrafts"; - this.tb_Update_Aircrafts.Size = new System.Drawing.Size(722, 20); - this.tb_Update_Aircrafts.TabIndex = 7; - this.tb_Update_Aircrafts.Text = global::AirScoutDatabaseManager.Properties.Settings.Default.Aircrafts_BaseURL; - // - // tb_Update_Airports - // - this.tb_Update_Airports.DataBindings.Add(new System.Windows.Forms.Binding("Text", global::AirScoutDatabaseManager.Properties.Settings.Default, "Airports_Update_URL", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.tb_Update_Airports.Location = new System.Drawing.Point(164, 53); - this.tb_Update_Airports.Name = "tb_Update_Airports"; - this.tb_Update_Airports.Size = new System.Drawing.Size(722, 20); - this.tb_Update_Airports.TabIndex = 3; - this.tb_Update_Airports.Text = global::AirScoutDatabaseManager.Properties.Settings.Default.Airports_Update_URL; - // - // tb_Update_Airlines - // - this.tb_Update_Airlines.DataBindings.Add(new System.Windows.Forms.Binding("Text", global::AirScoutDatabaseManager.Properties.Settings.Default, "Airlines_Update_URL", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.tb_Update_Airlines.Location = new System.Drawing.Point(164, 24); - this.tb_Update_Airlines.Name = "tb_Update_Airlines"; - this.tb_Update_Airlines.Size = new System.Drawing.Size(722, 20); - this.tb_Update_Airlines.TabIndex = 1; - this.tb_Update_Airlines.Text = global::AirScoutDatabaseManager.Properties.Settings.Default.Airlines_Update_URL; - // - // tb_AircraftDatabase_RemoteHost - // - this.tb_AircraftDatabase_RemoteHost.DataBindings.Add(new System.Windows.Forms.Binding("Text", global::AirScoutDatabaseManager.Properties.Settings.Default, "AircraftDatabase_Export_RemoteHost", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.tb_AircraftDatabase_RemoteHost.Location = new System.Drawing.Point(107, 45); - this.tb_AircraftDatabase_RemoteHost.Name = "tb_AircraftDatabase_RemoteHost"; - this.tb_AircraftDatabase_RemoteHost.Size = new System.Drawing.Size(543, 20); - this.tb_AircraftDatabase_RemoteHost.TabIndex = 10; - this.tb_AircraftDatabase_RemoteHost.Text = global::AirScoutDatabaseManager.Properties.Settings.Default.AircraftDatabase_Export_RemoteHost; - // - // tb_AircraftDatabase_Password - // - this.tb_AircraftDatabase_Password.DataBindings.Add(new System.Windows.Forms.Binding("Text", global::AirScoutDatabaseManager.Properties.Settings.Default, "AircraftDatabase_Export_Password", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.tb_AircraftDatabase_Password.Location = new System.Drawing.Point(107, 124); - this.tb_AircraftDatabase_Password.Name = "tb_AircraftDatabase_Password"; - this.tb_AircraftDatabase_Password.Size = new System.Drawing.Size(107, 20); - this.tb_AircraftDatabase_Password.TabIndex = 8; - this.tb_AircraftDatabase_Password.Text = global::AirScoutDatabaseManager.Properties.Settings.Default.AircraftDatabase_Export_Password; - // - // tb_AircraftDatabase_User - // - this.tb_AircraftDatabase_User.DataBindings.Add(new System.Windows.Forms.Binding("Text", global::AirScoutDatabaseManager.Properties.Settings.Default, "AircraftDatabase_Export_User", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.tb_AircraftDatabase_User.Location = new System.Drawing.Point(107, 98); - this.tb_AircraftDatabase_User.Name = "tb_AircraftDatabase_User"; - this.tb_AircraftDatabase_User.Size = new System.Drawing.Size(107, 20); - this.tb_AircraftDatabase_User.TabIndex = 6; - this.tb_AircraftDatabase_User.Text = global::AirScoutDatabaseManager.Properties.Settings.Default.AircraftDatabase_Export_User; - // - // tb_AircraftDatabase_RemoteDir - // - this.tb_AircraftDatabase_RemoteDir.DataBindings.Add(new System.Windows.Forms.Binding("Text", global::AirScoutDatabaseManager.Properties.Settings.Default, "AircraftDatabase_Export_RemoteDir", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.tb_AircraftDatabase_RemoteDir.Location = new System.Drawing.Point(107, 71); - this.tb_AircraftDatabase_RemoteDir.Name = "tb_AircraftDatabase_RemoteDir"; - this.tb_AircraftDatabase_RemoteDir.Size = new System.Drawing.Size(543, 20); - this.tb_AircraftDatabase_RemoteDir.TabIndex = 3; - this.tb_AircraftDatabase_RemoteDir.Text = global::AirScoutDatabaseManager.Properties.Settings.Default.AircraftDatabase_Export_RemoteDir; - // - // tb_AircraftDabase_LocalDir - // - this.tb_AircraftDabase_LocalDir.DataBindings.Add(new System.Windows.Forms.Binding("Text", global::AirScoutDatabaseManager.Properties.Settings.Default, "AircraftDatabase_Export_LocalDir", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.tb_AircraftDabase_LocalDir.Location = new System.Drawing.Point(107, 19); - this.tb_AircraftDabase_LocalDir.Name = "tb_AircraftDabase_LocalDir"; - this.tb_AircraftDabase_LocalDir.Size = new System.Drawing.Size(543, 20); - this.tb_AircraftDabase_LocalDir.TabIndex = 1; - this.tb_AircraftDabase_LocalDir.Text = global::AirScoutDatabaseManager.Properties.Settings.Default.AircraftDatabase_Export_LocalDir; - // - // tb_StationDatabase_RemoteHost - // - this.tb_StationDatabase_RemoteHost.DataBindings.Add(new System.Windows.Forms.Binding("Text", global::AirScoutDatabaseManager.Properties.Settings.Default, "StationDatabase_Export_RemoteHost", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.tb_StationDatabase_RemoteHost.Location = new System.Drawing.Point(107, 45); - this.tb_StationDatabase_RemoteHost.Name = "tb_StationDatabase_RemoteHost"; - this.tb_StationDatabase_RemoteHost.Size = new System.Drawing.Size(543, 20); - this.tb_StationDatabase_RemoteHost.TabIndex = 10; - this.tb_StationDatabase_RemoteHost.Text = global::AirScoutDatabaseManager.Properties.Settings.Default.StationDatabase_Export_RemoteHost; - // - // tb_StationDatabase_Export_Password - // - this.tb_StationDatabase_Export_Password.DataBindings.Add(new System.Windows.Forms.Binding("Text", global::AirScoutDatabaseManager.Properties.Settings.Default, "StationDatabase_Export_Password", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.tb_StationDatabase_Export_Password.Location = new System.Drawing.Point(107, 124); - this.tb_StationDatabase_Export_Password.Name = "tb_StationDatabase_Export_Password"; - this.tb_StationDatabase_Export_Password.Size = new System.Drawing.Size(107, 20); - this.tb_StationDatabase_Export_Password.TabIndex = 8; - this.tb_StationDatabase_Export_Password.Text = global::AirScoutDatabaseManager.Properties.Settings.Default.StationDatabase_Export_Password; - // - // tb_StationDatabase_Export_User - // - this.tb_StationDatabase_Export_User.DataBindings.Add(new System.Windows.Forms.Binding("Text", global::AirScoutDatabaseManager.Properties.Settings.Default, "StationDatabase_Export_User", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.tb_StationDatabase_Export_User.Location = new System.Drawing.Point(107, 98); - this.tb_StationDatabase_Export_User.Name = "tb_StationDatabase_Export_User"; - this.tb_StationDatabase_Export_User.Size = new System.Drawing.Size(107, 20); - this.tb_StationDatabase_Export_User.TabIndex = 6; - this.tb_StationDatabase_Export_User.Text = global::AirScoutDatabaseManager.Properties.Settings.Default.StationDatabase_Export_User; - // - // tb_StationDatabase_RemoteDir - // - this.tb_StationDatabase_RemoteDir.DataBindings.Add(new System.Windows.Forms.Binding("Text", global::AirScoutDatabaseManager.Properties.Settings.Default, "StationDatabase_Export_RemoteDir", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.tb_StationDatabase_RemoteDir.Location = new System.Drawing.Point(107, 71); - this.tb_StationDatabase_RemoteDir.Name = "tb_StationDatabase_RemoteDir"; - this.tb_StationDatabase_RemoteDir.Size = new System.Drawing.Size(543, 20); - this.tb_StationDatabase_RemoteDir.TabIndex = 3; - this.tb_StationDatabase_RemoteDir.Text = global::AirScoutDatabaseManager.Properties.Settings.Default.StationDatabase_Export_RemoteDir; - // - // tb_StationDatabase_LocalDir - // - this.tb_StationDatabase_LocalDir.DataBindings.Add(new System.Windows.Forms.Binding("Text", global::AirScoutDatabaseManager.Properties.Settings.Default, "StationDatabase_Export_LocalDir", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.tb_StationDatabase_LocalDir.Location = new System.Drawing.Point(107, 19); - this.tb_StationDatabase_LocalDir.Name = "tb_StationDatabase_LocalDir"; - this.tb_StationDatabase_LocalDir.Size = new System.Drawing.Size(543, 20); - this.tb_StationDatabase_LocalDir.TabIndex = 1; - this.tb_StationDatabase_LocalDir.Text = global::AirScoutDatabaseManager.Properties.Settings.Default.StationDatabase_Export_LocalDir; - // - // tb_SFTP_Password - // - this.tb_SFTP_Password.DataBindings.Add(new System.Windows.Forms.Binding("Text", global::AirScoutDatabaseManager.Properties.Settings.Default, "SFTP_Password", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.tb_SFTP_Password.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.tb_SFTP_Password.Location = new System.Drawing.Point(71, 75); - this.tb_SFTP_Password.Name = "tb_SFTP_Password"; - this.tb_SFTP_Password.Size = new System.Drawing.Size(318, 20); - this.tb_SFTP_Password.TabIndex = 5; - this.tb_SFTP_Password.Text = global::AirScoutDatabaseManager.Properties.Settings.Default.SFTP_Password; - // - // tb_SFTP_User - // - this.tb_SFTP_User.DataBindings.Add(new System.Windows.Forms.Binding("Text", global::AirScoutDatabaseManager.Properties.Settings.Default, "SFTP_User", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.tb_SFTP_User.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.tb_SFTP_User.Location = new System.Drawing.Point(71, 49); - this.tb_SFTP_User.Name = "tb_SFTP_User"; - this.tb_SFTP_User.Size = new System.Drawing.Size(318, 20); - this.tb_SFTP_User.TabIndex = 3; - this.tb_SFTP_User.Text = global::AirScoutDatabaseManager.Properties.Settings.Default.SFTP_User; - // - // tb_SFTP_URL - // - this.tb_SFTP_URL.DataBindings.Add(new System.Windows.Forms.Binding("Text", global::AirScoutDatabaseManager.Properties.Settings.Default, "SFTP_URL", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); - this.tb_SFTP_URL.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.tb_SFTP_URL.Location = new System.Drawing.Point(71, 23); - this.tb_SFTP_URL.Name = "tb_SFTP_URL"; - this.tb_SFTP_URL.Size = new System.Drawing.Size(318, 20); - this.tb_SFTP_URL.TabIndex = 1; - this.tb_SFTP_URL.Text = global::AirScoutDatabaseManager.Properties.Settings.Default.SFTP_URL; - // - // MainDlg - // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(1106, 597); - this.Controls.Add(this.tc_Main); - this.Controls.Add(this.ss_Main); - this.Name = "MainDlg"; - this.Text = "AirScout Database Manager"; - this.WindowState = System.Windows.Forms.FormWindowState.Maximized; - this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.MainDlg_FormClosing); - this.Load += new System.EventHandler(this.MainDlg_Load); - this.ss_Main.ResumeLayout(false); - this.ss_Main.PerformLayout(); - this.tc_Main.ResumeLayout(false); - this.tp_General.ResumeLayout(false); - this.panel1.ResumeLayout(false); - this.panel1.PerformLayout(); - this.tp_Locations.ResumeLayout(false); - this.splitContainer1.Panel1.ResumeLayout(false); - this.splitContainer1.Panel2.ResumeLayout(false); - ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit(); - this.splitContainer1.ResumeLayout(false); - ((System.ComponentModel.ISupportInitialize)(this.dgv_Locations)).EndInit(); - this.panel2.ResumeLayout(false); - this.panel2.PerformLayout(); - this.groupBox2.ResumeLayout(false); - this.groupBox1.ResumeLayout(false); - this.tp_QRV.ResumeLayout(false); - ((System.ComponentModel.ISupportInitialize)(this.dgv_QRV)).EndInit(); - this.panel4.ResumeLayout(false); - this.panel4.PerformLayout(); - this.groupBox3.ResumeLayout(false); - this.tp_Aircrafts.ResumeLayout(false); - this.tp_Aircrafts.PerformLayout(); - this.tp_Upload.ResumeLayout(false); - this.groupBox5.ResumeLayout(false); - this.groupBox5.PerformLayout(); - this.tp_Extras.ResumeLayout(false); - this.groupBox4.ResumeLayout(false); - this.groupBox4.PerformLayout(); - this.groupBox6.ResumeLayout(false); - this.groupBox6.PerformLayout(); - this.ResumeLayout(false); - this.PerformLayout(); - - } - - #endregion - - private System.Windows.Forms.StatusStrip ss_Main; - private System.Windows.Forms.ToolStripStatusLabel tsl_Status; - private System.Windows.Forms.TabControl tc_Main; - private System.Windows.Forms.TabPage tp_General; - private System.Windows.Forms.TabPage tp_Locations; - private System.Windows.Forms.Panel panel1; - private GMap.NET.WindowsForms.GMapControl gm_Coverage; - private ScoutBase.Core.DoubleTextBox tb_Coverage_MaxLat; - private ScoutBase.Core.DoubleTextBox tb_Coverage_MinLat; - private ScoutBase.Core.DoubleTextBox tb_Coverage_MaxLon; - private ScoutBase.Core.DoubleTextBox tb_Coverage_MinLon; - private System.Windows.Forms.Label label35; - private System.Windows.Forms.Label label54; - private System.Windows.Forms.Label label59; - private System.Windows.Forms.Label label60; - private System.Windows.Forms.Panel panel2; - private System.Windows.Forms.DataGridView dgv_Locations; - private System.Windows.Forms.GroupBox groupBox1; - private System.Windows.Forms.TextBox tb_Locations_Status; - private System.Windows.Forms.Button btn_QRZ_Stop; - private System.Windows.Forms.Button btn_QRZ_Start; - private System.ComponentModel.BackgroundWorker bw_QRZ; - private System.Windows.Forms.Button btn_Locations_Export; - private System.Windows.Forms.Button btn_Locations_Save; - private System.ComponentModel.BackgroundWorker bw_DatabaseUpdater; - private System.Windows.Forms.GroupBox groupBox2; - private System.Windows.Forms.Button btn_Locations_Import_CALL3; - private System.Windows.Forms.Button btn_Locations_Sort; - private System.Windows.Forms.Button btn_Locations_Import_DTB; - private System.Windows.Forms.Button btn_Locations_Import_CSV; - private System.Windows.Forms.CheckBox cb_Locations_ChangedOnly; - private GMap.NET.WindowsForms.GMapControl gm_Locations; - private System.Windows.Forms.SplitContainer splitContainer1; - private System.Windows.Forms.TextBox tb_Locations_Callsign_Filter; - private System.Windows.Forms.Button btn_Locations_Import_USR; - private System.Windows.Forms.Button btn_Locations_Import_AirScout; - private System.Windows.Forms.Label label2; - private System.Windows.Forms.Label label1; - private System.Windows.Forms.TabPage tp_QRV; - private System.Windows.Forms.Panel panel4; - private System.Windows.Forms.GroupBox groupBox3; - private System.Windows.Forms.Button btn_QRV_Import_WinTest; - private System.Windows.Forms.DataGridView dgv_QRV; - private System.Windows.Forms.Label label4; - private System.Windows.Forms.Label label3; - private System.Windows.Forms.TextBox tb_QRV_Callsign_Filter; - private System.Windows.Forms.TextBox tb_QRV_Status; - private System.Windows.Forms.Button btn_QRV_Sort; - private System.Windows.Forms.Button btn_QRV_Export; - private System.Windows.Forms.Button btn_QRV_Save; - private System.Windows.Forms.CheckBox cb_QRV_ChangedOnly; - private System.Windows.Forms.Button btn_QRV_Import_EDI; - private System.Windows.Forms.TabPage tp_Extras; - private System.Windows.Forms.GroupBox groupBox4; - private System.Windows.Forms.Button btn_SFTP_GenarateFile; - private System.Windows.Forms.TextBox tb_SFTP_Password; - private System.Windows.Forms.Label label7; - private System.Windows.Forms.TextBox tb_SFTP_User; - private System.Windows.Forms.Label label6; - private System.Windows.Forms.TextBox tb_SFTP_URL; - private System.Windows.Forms.Label label5; - private System.Windows.Forms.TabPage tp_Aircrafts; - private System.Windows.Forms.TextBox tb_Update_Airlines; - private System.Windows.Forms.Button btn_Update_Airlines; - private System.Windows.Forms.TextBox tb_Update_Airports; - private System.Windows.Forms.Button btn_Update_Airports; - private System.ComponentModel.BackgroundWorker bw_AircraftUpdater; - private System.Windows.Forms.Button btn_Update_Aircrafts_Stop; - private System.Windows.Forms.Button btn_Update_Aicrafts_Start; - private System.Windows.Forms.TextBox tb_Update_Aircrafts; - private System.Windows.Forms.Button button1; - private System.Windows.Forms.Label lbl_Aircrafts_UnkownHex; - private System.Windows.Forms.Label lbl_Aircrafts_UnkownType; - private System.Windows.Forms.Label lbl_Aircrafts_UnkownCall; - private System.Windows.Forms.Label lbl_Aircrafts_Total; - private System.Windows.Forms.Label label8; - private System.Windows.Forms.TabPage tp_Upload; - private System.Windows.Forms.GroupBox groupBox5; - private System.Windows.Forms.Button btn_StationDatabase_Export; - private System.Windows.Forms.TextBox tb_StationDatabase_RemoteDir; - private System.Windows.Forms.Label label10; - private System.Windows.Forms.TextBox tb_StationDatabase_LocalDir; - private System.Windows.Forms.Label label9; - private System.Windows.Forms.TextBox tb_StationDatabase_Export_User; - private System.Windows.Forms.Label label11; - private System.Windows.Forms.TextBox tb_StationDatabase_Export_Password; - private System.Windows.Forms.Label label12; - private System.Windows.Forms.TextBox tb_StationDatabase_RemoteHost; - private System.Windows.Forms.Label label13; - private System.Windows.Forms.GroupBox groupBox6; - private System.Windows.Forms.TextBox tb_AircraftDatabase_RemoteHost; - private System.Windows.Forms.Label label14; - private System.Windows.Forms.TextBox tb_AircraftDatabase_Password; - private System.Windows.Forms.Label label15; - private System.Windows.Forms.TextBox tb_AircraftDatabase_User; - private System.Windows.Forms.Label label16; - private System.Windows.Forms.Button btn_AircraftDatabase_Export; - private System.Windows.Forms.TextBox tb_AircraftDatabase_RemoteDir; - private System.Windows.Forms.Label label17; - private System.Windows.Forms.TextBox tb_AircraftDabase_LocalDir; - private System.Windows.Forms.Label label18; - } -} - diff --git a/AirScoutDatabaseManager/MainDlg.cs b/AirScoutDatabaseManager/MainDlg.cs deleted file mode 100644 index 7b06588..0000000 --- a/AirScoutDatabaseManager/MainDlg.cs +++ /dev/null @@ -1,1902 +0,0 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Data; -using System.Drawing; -using System.Linq; -using System.Text; -using System.Windows.Forms; -using System.Net; -using System.IO; -using System.Globalization; -using System.Threading; -using System.Xml; -using System.Xml.Linq; -using GMap.NET; -using GMap.NET.MapProviders; -using GMap.NET.WindowsForms; -using GMap.NET.WindowsForms.Markers; -using GMap.NET.WindowsForms.ToolTips; -using ScoutBase; -using ScoutBase.Core; -using ScoutBase.Elevation; -using ScoutBase.Stations; -using SQLiteDatabase; -using Newtonsoft.Json; -using HtmlAgilityPack; -using AirScout.Aircrafts; -using Newtonsoft.Json.Linq; -using Renci.SshNet.Sftp; -using Renci.SshNet; - -namespace AirScoutDatabaseManager -{ - public partial class MainDlg : Form - { - - [CategoryAttribute("Directories")] - [DescriptionAttribute("Application Directory")] - public string AppDirectory - { - get - { - return Application.StartupPath.TrimEnd(Path.DirectorySeparatorChar).Replace('\\', Path.DirectorySeparatorChar); - } - } - - [CategoryAttribute("Directories")] - [DescriptionAttribute("Local Application Data Directory")] - public string AppDataDirectory - { - get - { - return Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), Application.CompanyName, Application.ProductName).TrimEnd(Path.DirectorySeparatorChar); - } - } - - [CategoryAttribute("Directories")] - [DescriptionAttribute("Logfile Directory")] - public string LogDirectory - { - get - { - // get Property - string logdir = Properties.Settings.Default.Log_Directory; - // replace Windows/Linux directory spearator chars - logdir = logdir.Replace('\\', Path.DirectorySeparatorChar); - logdir = logdir.Replace('/', Path.DirectorySeparatorChar); - // set to default value if empty - if (String.IsNullOrEmpty(logdir)) - logdir = "Log"; - // replace variables, if any - logdir = VC.ReplaceAllVars(logdir); - // remove directory separator chars at begin and end - logdir = logdir.TrimStart(Path.DirectorySeparatorChar); - logdir = logdir.TrimEnd(Path.DirectorySeparatorChar); - // fully qualify path - if (!logdir.Contains(Path.VolumeSeparatorChar)) - logdir = Path.Combine(AppDataDirectory, logdir); - return logdir; - } - } - - [CategoryAttribute("Directories")] - [DescriptionAttribute("Tempfile Directory")] - public string TmpDirectory - { - get - { - // get Property - string tmpdir = Properties.Settings.Default.Tmp_Directory; - // replace Windows/Linux directory spearator chars - tmpdir = tmpdir.Replace('\\', Path.DirectorySeparatorChar); - tmpdir = tmpdir.Replace('/', Path.DirectorySeparatorChar); - // set to default value if empty - if (String.IsNullOrEmpty(tmpdir)) - tmpdir = "Tmp"; - // replace variables, if any - tmpdir = VC.ReplaceAllVars(tmpdir); - // remove directory separator chars at begin and end - tmpdir = tmpdir.TrimStart(Path.DirectorySeparatorChar); - tmpdir = tmpdir.TrimEnd(Path.DirectorySeparatorChar); - // fully qualify path - if (!tmpdir.Contains(Path.VolumeSeparatorChar)) - tmpdir = Path.Combine(AppDataDirectory, tmpdir); - return tmpdir; - } - } - - [CategoryAttribute("Directories")] - [DescriptionAttribute("Database Directory")] - public string DatabaseDirectory - { - get - { - // get Property - string databasedir = Properties.Settings.Default.Database_Directory; - // replace Windows/Linux directory spearator chars - databasedir = databasedir.Replace('\\', Path.DirectorySeparatorChar); - databasedir = databasedir.Replace('/', Path.DirectorySeparatorChar); - // set to default value if empty - if (String.IsNullOrEmpty(databasedir)) - databasedir = "Database"; - // replace variables, if any - databasedir = VC.ReplaceAllVars(databasedir); - // remove directory separator chars at begin and end - databasedir = databasedir.TrimStart(Path.DirectorySeparatorChar); - databasedir = databasedir.TrimEnd(Path.DirectorySeparatorChar); - // fully qualify path - if (!databasedir.Contains(Path.VolumeSeparatorChar)) - databasedir = Path.Combine(AppDataDirectory, databasedir); - return databasedir; - } - } - - - [CategoryAttribute("Directories")] - [DescriptionAttribute("Tempfile Directory")] - public string ExportDirectory - { - get - { - // get Property - string expdir = Properties.Settings.Default.Export_Directory; - // replace Windows/Linux directory spearator chars - expdir = expdir.Replace('\\', Path.DirectorySeparatorChar); - expdir = expdir.Replace('/', Path.DirectorySeparatorChar); - // set to default value if empty - if (String.IsNullOrEmpty(expdir)) - expdir = "Tmp"; - // replace variables, if any - expdir = VC.ReplaceAllVars(expdir); - // remove directory separator chars at begin and end - expdir = expdir.TrimStart(Path.DirectorySeparatorChar); - expdir = expdir.TrimEnd(Path.DirectorySeparatorChar); - // fully qualify path - if (!expdir.Contains(Path.VolumeSeparatorChar)) - expdir = Path.Combine(AppDataDirectory, expdir); - return expdir; - } - } - - GMapOverlay Coverageoverlay = new GMapOverlay("Coveragepolygons"); - GMapOverlay Locationsoverlay = new GMapOverlay("Locations"); - - DataSet SB = new DataSet(); - - DataTableLocations Locations = new DataTableLocations(); - DataView LocationsView; - - DataTable QRV = new DataTable(); - DataView QRVView; - - NumberFormatInfo ENprovider; - - public LogWriter Log = LogWriter.Instance; - public VarConverter VC = new VarConverter(); - - private bool IsMarkerDragging = false; - private bool IsMarkerDragged = false; - - private GMarkerGoogle CurrentMarker = null; - private double CurrentMarkerLat; - private double CurrentMarkerLon; - - private double OfsLat, OfsLon; - - public MainDlg() - { - InitializeComponent(); - ENprovider = new NumberFormatInfo(); - ENprovider.NumberDecimalSeparator = "."; - ENprovider.NumberGroupSeparator = ","; - CheckDirectories(); - // set directories and formats for logfile - ScoutBase.Core.Properties.Settings.Default.LogWriter_Directory = LogDirectory; - ScoutBase.Core.Properties.Settings.Default.LogWriter_FileFormat = "Log_{0:yyyy_MM_dd}.log"; - ScoutBase.Core.Properties.Settings.Default.LogWriter_MessageFormat = "{0:u} {1}"; - Locations.RowChanged += new DataRowChangeEventHandler(Locations_Row_Changed); - QRV.RowChanged += new DataRowChangeEventHandler(QRV_Row_Changed); - tc_Main.Enabled = false; - } - - private void MainDlg_Load(object sender, EventArgs e) - { - Log.WriteMessage("Starting up."); - // set initial settings for CoverageMap - GMap.NET.MapProviders.GMapProvider.UserAgent = "AirScout"; - // clearing referrer URL issue 2019-12-14 - gm_Coverage.MapProvider.RefererUrl = ""; - gm_Coverage.MapProvider = GMapProviders.Find(Properties.Settings.Default.Map_Provider); - gm_Coverage.IgnoreMarkerOnMouseWheel = true; - gm_Coverage.MinZoom = 0; - gm_Coverage.MaxZoom = 20; - gm_Coverage.Zoom = 6; - gm_Coverage.DragButton = System.Windows.Forms.MouseButtons.Left; - gm_Coverage.CanDragMap = true; - gm_Coverage.ScalePen = new Pen(Color.Black, 3); - gm_Coverage.HelperLinePen = null; - gm_Coverage.SelectionPen = null; - gm_Coverage.MapScaleInfoEnabled = true; - gm_Coverage.Overlays.Add(Coverageoverlay); - // set initial settings for locations map - GMap.NET.MapProviders.GMapProvider.UserAgent = "AirScout"; - // clearing referrer URL issue 2019-12-14 - gm_Locations.MapProvider.RefererUrl = ""; - gm_Locations.MapProvider = GMapProviders.Find(Properties.Settings.Default.Map_Provider); - gm_Locations.IgnoreMarkerOnMouseWheel = true; - gm_Locations.MinZoom = 0; - gm_Locations.MaxZoom = 20; - gm_Locations.Zoom = 6; - gm_Locations.DragButton = System.Windows.Forms.MouseButtons.Left; - gm_Locations.CanDragMap = true; - gm_Locations.ScalePen = new Pen(Color.Black, 3); - gm_Locations.HelperLinePen = null; - gm_Locations.SelectionPen = null; - gm_Locations.MapScaleInfoEnabled = true; - gm_Locations.Overlays.Add(Locationsoverlay); - gm_Locations.ShowCenter = false; - // initialize QRV table - DataColumn qrv_call = new DataColumn("Call", typeof(string)); - QRV.Columns.Add(qrv_call); - DataColumn qrv_loc = new DataColumn("Loc", typeof(string)); - QRV.Columns.Add(qrv_loc); - QRV.PrimaryKey = new DataColumn[2] { qrv_call, qrv_loc }; - string[] bands = Bands.GetStringValuesExceptNoneAndAll(); - foreach (string band in bands) - { - if (!band.StartsWith("50M") && !band.StartsWith("70M")) - { - QRV.Columns.Add(band + "_AH", typeof(double)); - QRV.Columns.Add(band + "_AG", typeof(double)); - QRV.Columns.Add(band + "_P", typeof(double)); - } - } - QRV.Columns.Add("LastUpdated", typeof(DateTime)); - // initilize databases - AircraftData.Database.GetDBLocation(); - StationData.Database.GetDBLocation(); - bw_DatabaseUpdater.RunWorkerAsync(); - } - - private void MainDlg_FormClosing(object sender, FormClosingEventArgs e) - { - Properties.Settings.Default.Save(); - bw_QRZ.CancelAsync(); - Log.WriteMessage("Closing."); - } - - public void CheckDirectories() - { - // check if directories exist - if (!Directory.Exists(TmpDirectory)) - Directory.CreateDirectory(TmpDirectory); - if (!Directory.Exists(LogDirectory)) - Directory.CreateDirectory(LogDirectory); - if (!Directory.Exists(ExportDirectory)) - Directory.CreateDirectory(ExportDirectory); - } - - - private void Say(string text) - { - if (tsl_Status.Text != text) - { - tsl_Status.Text = text; - ss_Main.Refresh(); - } - } - - private void SayLocations(string text) - { - if (tb_Locations_Status.Text != text) - { - tb_Locations_Status.Text = text; - tb_Locations_Status.Refresh(); - Application.DoEvents(); - } - } - - private void SayQRV(string text) - { - if (tb_QRV_Status.Text != text) - { - tb_QRV_Status.Text = text; - tb_QRV_Status.Refresh(); - Application.DoEvents(); - } - } - - #region tp_General - - private void tp_General_Enter(object sender, EventArgs e) - { - tp_General_Update(this, null); - } - - private void tp_General_Update(object sender, EventArgs e) - { - Coverageoverlay.Clear(); - // add tile to map polygons - List l = new List(); - l.Add(new PointLatLng(tb_Coverage_MinLat.Value, tb_Coverage_MinLon.Value)); - l.Add(new PointLatLng(tb_Coverage_MinLat.Value, tb_Coverage_MaxLon.Value)); - l.Add(new PointLatLng(tb_Coverage_MaxLat.Value, tb_Coverage_MaxLon.Value)); - l.Add(new PointLatLng(tb_Coverage_MaxLat.Value, tb_Coverage_MinLon.Value)); - GMapPolygon p = new GMapPolygon(l, "Coverage"); - p.Stroke = new Pen(Color.FromArgb(255, Color.Magenta), 3); - p.Fill = new SolidBrush(Color.FromArgb(0, Color.Magenta)); - Coverageoverlay.Polygons.Add(p); - // zoom the map - gm_Coverage.SetZoomToFitRect(RectLatLng.FromLTRB(tb_Coverage_MinLon.Value - 1, tb_Coverage_MaxLat.Value + 1, tb_Coverage_MaxLon.Value + 1, tb_Coverage_MinLat.Value - 1)); - } - - - #endregion - - #region tp_Locations - - private void tp_Locations_Enter(object sender, EventArgs e) - { - // clear map - Locationsoverlay.Clear(); - Locations.Clear(); - Locations.Merge(StationData.Database.LocationToDataTable()); - Locations.AcceptChanges(); - LocationsView = new DataView(Locations); - BindingSource source = new BindingSource(); - source.DataSource = LocationsView; - dgv_Locations.DataSource = source; - dgv_Locations.ShowRowErrors = true; - } - - private void btn_QRZ_Start_Click(object sender, EventArgs e) - { - if (!bw_QRZ.IsBusy) - bw_QRZ.RunWorkerAsync(); - } - - private void btn_QRZ_Stop_Click(object sender, EventArgs e) - { - bw_QRZ.CancelAsync(); - } - - private void btn_Locations_Sort_Click(object sender, EventArgs e) - { - // sort data table - DataTableLocations sorted = (DataTableLocations)Locations.Clone(); - DataRow[] rows = Locations.Select("", "Call ASC"); - if (rows.Length > 0) - { - foreach (DataRow row in rows) - sorted.ImportRow(row); - } - Locations.Clear(); - foreach (DataRow row in sorted.Rows) - Locations.ImportRow(row); - } - - private void btn_Locations_Save_Click(object sender, EventArgs e) - { - SayLocations("Saving changes to database..."); - foreach (DataRow row in Locations.Rows) - { - LocationDesignator ld = new LocationDesignator(row); - StationData.Database.LocationInsertOrUpdateIfNewer(ld); - } - SayLocations("Finished."); - } - - private void btn_Locations_Export_Click(object sender, EventArgs e) - { - string filename = Path.Combine(ExportDirectory, "locations.json"); - SayLocations("Exporting database to " + filename); - string json = StationData.Database.LocationToJSON(); - SupportFunctions.WriteStringToFile(json, filename); - SayLocations("Finished."); - } - - private void btn_Locations_Import_AirScout_Click(object sender, EventArgs e) - { - } - - private void btn_Locations_Import_CALL3_Click(object sender, EventArgs e) - { - } - - private void btn_Locations_Import_DTB_Click(object sender, EventArgs e) - { - } - - private void btn_Locations_Import_CSV_Click(object sender, EventArgs e) - { - } - - private void btn_Locations_Import_USR_Click(object sender, EventArgs e) - { - FolderBrowserDialog Dlg = new FolderBrowserDialog(); - Dlg.ShowNewFolderButton = false; - if (Dlg.ShowDialog() == DialogResult.OK) - { - DataTableLocations dt = new DataTableLocations(); - string[] files = Directory.GetFiles(Dlg.SelectedPath, "*.usr"); - foreach (string file in files) - { - try - { - SayLocations("Importing " + file + "..."); - string s = ""; - using (StreamReader sr = new StreamReader(File.OpenRead(file))) - { - while (!sr.EndOfStream) - { - s = sr.ReadLine(); - if (!String.IsNullOrEmpty(s) && !s.StartsWith("//")) - { - string[] a = s.Split(';'); - // store array values in DataTable - DataRow row = dt.NewRow(); - string call = a[0]; - if (Callsign.Check(call)) - { - double lat = System.Convert.ToDouble(a[1], CultureInfo.InvariantCulture); - double lon = System.Convert.ToDouble(a[2], CultureInfo.InvariantCulture); - GEOSOURCE source = (MaidenheadLocator.IsPrecise(lat, lon, 3) ? GEOSOURCE.FROMUSER : GEOSOURCE.FROMLOC); - string lastupdated = a[6]; - DateTime lu = System.Convert.ToDateTime(lastupdated).ToUniversalTime(); - if (GeographicalPoint.Check(lat, lon)) - { - row["Call"] = call; - row["Lat"] = lat; - row["Lon"] = lon; - row["Source"] = source; - row["LastUpdated"] = lu; - dt.Rows.Add(row); - } - } - } - } - } - } - catch (Exception ex) - { - Log.WriteMessage(ex.ToString(), LogLevel.Error); - } - } - ImportLocations(dt); - } - } - - private void cb_Locations_ChangedOnly_CheckedChanged(object sender, EventArgs e) - { - if (cb_Locations_ChangedOnly.Checked) - { - LocationsView.RowStateFilter = DataViewRowState.ModifiedCurrent | DataViewRowState.Added; - } - else - { - LocationsView.RowStateFilter = DataViewRowState.CurrentRows; - } - } - - private void gm_Locations_MouseDown(object sender, MouseEventArgs e) - { - if (e.Button == MouseButtons.Left && CurrentMarker != null && CurrentMarker.IsMouseOver) - { - // get geographic coordinates of mouse pointer and calulate offsets - PointLatLng p = gm_Locations.FromLocalToLatLng(e.X, e.Y); - OfsLat = p.Lat - CurrentMarker.Position.Lat; - OfsLon = p.Lng - CurrentMarker.Position.Lng; - IsMarkerDragging = true; - IsMarkerDragged = false; - CurrentMarkerLat = CurrentMarker.Position.Lat; - CurrentMarkerLon = CurrentMarker.Position.Lng; - foreach (DataGridViewRow row in dgv_Locations.Rows) - { - try - { - string call = row.Cells["Call"].Value.ToString(); - string markercall = (string)CurrentMarker.Tag; - if (String.Equals(call, markercall)) - { - dgv_Locations.ClearSelection(); - row.Selected = true; - dgv_Locations.FirstDisplayedScrollingRowIndex = row.Index; - break; - } - } - catch - { - - } - } - } - } - - private void gm_Locations_MouseMove(object sender, MouseEventArgs e) - { - if (IsMarkerDragging && (CurrentMarker != null)) - { - // get geographic coordinates of mouse pointer - PointLatLng p = gm_Locations.FromLocalToLatLng(e.X, e.Y); - p.Lat = p.Lat - OfsLat; - p.Lng = p.Lng - OfsLon; - CurrentMarker.Position = p; - GPoint c = gm_Locations.FromLatLngToLocal(new PointLatLng(CurrentMarkerLat, CurrentMarkerLon)); - if ((Math.Abs(c.X - e.X) > 20) || (Math.Abs(c.Y - e.Y) > 20)) - { - IsMarkerDragged = true; - } - } - } - - private void gm_Locations_MouseUp(object sender, MouseEventArgs e) - { - if (CurrentMarker != null) - { - if (IsMarkerDragged) - { - // get geographic coordinates of mouse pointer - PointLatLng p = gm_Locations.FromLocalToLatLng(e.X, e.Y); - double lat = p.Lat - OfsLat; - double lon = p.Lng - OfsLon; - string call = CurrentMarker.Tag.ToString(); - string loc = MaidenheadLocator.LocFromLatLon(lat, lon, false, 3); - GEOSOURCE source = (MaidenheadLocator.IsPrecise(lat, lon, 3) ? GEOSOURCE.FROMUSER : GEOSOURCE.FROMLOC); - DataRow oldrow = Locations.Rows.Find(new string[] { call, loc }); - if (oldrow != null) - { - // call found --> check for update - if ((double)oldrow["Lat"] != lat) - { - oldrow["Lat"] = lat; - AddRowError(oldrow, "UPDATED", "Lat", "UpdatedValue", "OldValue:" + ((double)oldrow["Lat"]).ToString("F8", CultureInfo.InvariantCulture)); - } - if ((double)oldrow["Lon"] != lon) - { - oldrow["Lon"] = lon; - AddRowError(oldrow, "UPDATED", "Lon", "UpdatedValue", "OldValue:" + ((double)oldrow["Lon"]).ToString("F8", CultureInfo.InvariantCulture)); - } - oldrow["Source"] = source; - AddRowError(oldrow, "UPDATED", "Source", "UpdatedValue", "OldValue:" + oldrow["Source"].ToString()); - oldrow["LastUpdated"] = DateTime.UtcNow; - } - else - { - // marker is mpved beyond old locator - // create new line - if (MessageBox.Show("Marker is moved to a different locator which is not in database so far. Create new entry?","Create new entry", MessageBoxButtons.YesNo) == DialogResult.Yes) - { - DataRow row = Locations.NewRow(); - row["Call"] = call; - row["Loc"] = loc; - row["Lat"] = lat; - row["Lon"] = lon; - row["Source"] = source; - row["Hits"] = 0; - row["LastUpdated"] = DateTime.UtcNow; - Locations.Rows.Add(row); - } - } - } - else - { - // restore original marker position - CurrentMarker.Position = new PointLatLng(CurrentMarkerLat, CurrentMarkerLon); - } - } - gm_Locations.CanDragMap = true; - IsMarkerDragging = false; - IsMarkerDragged = false; - } - - private void gm_Locations_OnMarkerEnter(GMapMarker item) - { - CurrentMarker = (GMarkerGoogle)item; - } - - private void gm_Locations_OnMarkerLeave(GMapMarker item) - { - // CurrentMarker = null; - } - - private void tb_Locations_Callsign_Filter_TextChanged(object sender, EventArgs e) - { - if (String.IsNullOrEmpty(tb_Locations_Callsign_Filter.Text)) - { - LocationsView.RowFilter = "Call LIKE '*'"; - return; - } - string filter = tb_Locations_Callsign_Filter.Text; - if (!filter.EndsWith("*")) - filter = filter + "*"; - LocationsView.RowFilter = "Call LIKE '" + filter + "'"; - } - - #endregion - - private void dgv_Locations_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e) - { - if ((e.RowIndex < 0) || (e.RowIndex >= dgv_Locations.Rows.Count)) - return; - DataGridViewRow dgvrow = dgv_Locations.Rows[e.RowIndex]; - if ((e.ColumnIndex < 0) || (e.ColumnIndex >= dgvrow.Cells.Count)) - return; - DataGridViewCell cell = dgvrow.Cells[e.ColumnIndex]; - if (!cell.Displayed) - return; - if (String.IsNullOrEmpty(dgvrow.ErrorText)) - return; - XElement xml = XElement.Parse(dgvrow.ErrorText); - LOCATIONSTATE state = LOCATIONSTATE.UNKNOWN; - try - { - state = (LOCATIONSTATE)Enum.Parse(typeof(LOCATIONSTATE), xml.Name.ToString()); - } - catch - { - - } - if (state == LOCATIONSTATE.ERROR) - cell.Style.BackColor = Color.Red; - else if (state == LOCATIONSTATE.LOCDIFF) - cell.Style.BackColor = Color.Khaki; - else if (state == LOCATIONSTATE.UPTODATE) - cell.Style.BackColor = Color.LightGreen; - else if (state == LOCATIONSTATE.ADDED) - cell.Style.BackColor = Color.LightBlue; - else if (state == LOCATIONSTATE.UPDATED) - { - string s = xml.ToString(); - string propertyname = dgv_Locations.Columns[e.ColumnIndex].DataPropertyName; - if (s.IndexOf("<" + propertyname + " />") >= 0) - { - cell.Style.BackColor = Color.Bisque; - } - } - } - - private void bw_QRZ_DoWork(object sender, DoWorkEventArgs e) - { - // check callsign location against QRZ.com entry - // name current thread - if (String.IsNullOrEmpty(Thread.CurrentThread.Name)) - Thread.CurrentThread.Name = "QRZ"; - int callschecked = 0; - int callsfound = 0; - int callsnotfound = 0; - int callsuptodate = 0; - int callsupdated = 0; - int callsdiffloc = 0; - int errors = 0; - // get session key - WebRequest myWebRequest = WebRequest.Create(Properties.Settings.Default.QRZ_URL_Login); - myWebRequest.Timeout = 10000; - WebResponse myWebResponse = myWebRequest.GetResponse(); - Stream ReceiveStream = myWebResponse.GetResponseStream(); - Encoding encode = System.Text.Encoding.GetEncoding("utf-8"); - StreamReader readStream = new StreamReader(ReceiveStream, encode); - string s = readStream.ReadToEnd(); - XmlDocument doc = new XmlDocument(); - doc.LoadXml(s); - var nodes = doc.GetElementsByTagName("Key"); - string sessionkey = nodes[0].InnerText; - foreach (DataRow row in Locations.Rows) - { - try - { - callschecked++; - string call = row["Call"].ToString(); - double lat = (double)row["Lat"]; - double lon = (double)row["Lon"]; - GEOSOURCE source = (GEOSOURCE)row["Source"]; - DateTime lastupdated = (DateTime)row["LastUpdated"]; - string loc = MaidenheadLocator.LocFromLatLon(lat, lon, false, 3); - string qrzloc = ""; - double qrzlat = 0; - double qrzlon = 0; - string geoloc = ""; - string addr1 = ""; - string addr2 = ""; - string zip = ""; - string country = ""; - string error = ""; - // get xml data - myWebRequest = WebRequest.Create(Properties.Settings.Default.QRZ_URL_XMLData + "?s=" + sessionkey + ";callsign=" + call); - myWebRequest.Timeout = 10000; - myWebResponse = myWebRequest.GetResponse(); - ReceiveStream = myWebResponse.GetResponseStream(); - encode = System.Text.Encoding.GetEncoding("utf-8"); - readStream = new StreamReader(ReceiveStream, encode); - s = readStream.ReadToEnd(); - // load xml document - doc = new XmlDocument(); - doc.LoadXml(s); - // check for errors - nodes = doc.GetElementsByTagName("Error"); - if (nodes.Count > 0) - { - error = nodes[0].InnerText; - if (error.ToUpper().Contains("NOT FOUND")) - { - callsnotfound++; - } - else if (error.ToUpper().Contains("SESSION TIMEOUT")) - { - // session timeout --> obtain a new session key and try again - myWebRequest = WebRequest.Create(Properties.Settings.Default.QRZ_URL_Login); - myWebRequest.Timeout = 10000; - myWebResponse = myWebRequest.GetResponse(); - ReceiveStream = myWebResponse.GetResponseStream(); - encode = System.Text.Encoding.GetEncoding("utf-8"); - readStream = new StreamReader(ReceiveStream, encode); - s = readStream.ReadToEnd(); - doc = new XmlDocument(); - doc.LoadXml(s); - nodes = doc.GetElementsByTagName("Key"); - sessionkey = nodes[0].InnerText; - bw_QRZ.ReportProgress((int)LOCATIONSTATE.INFO, "Obtained new session key: " + sessionkey); - // get xml data - myWebRequest = WebRequest.Create(Properties.Settings.Default.QRZ_URL_XMLData + "?s=" + sessionkey + ";callsign=" + call); - myWebRequest.Timeout = 10000; - myWebResponse = myWebRequest.GetResponse(); - ReceiveStream = myWebResponse.GetResponseStream(); - encode = System.Text.Encoding.GetEncoding("utf-8"); - readStream = new StreamReader(ReceiveStream, encode); - s = readStream.ReadToEnd(); - // load xml document - doc = new XmlDocument(); - doc.LoadXml(s); - } - else - { - // report error - errors++; - bw_QRZ.ReportProgress((int)LOCATIONSTATE.ERROR, error); - } - } - // write xml to file - else - { - using (StreamWriter sw = new StreamWriter(call.Replace("/", "_") + ".xml")) - { - sw.WriteLine(s); - } - callsfound++; - nodes = doc.GetElementsByTagName("lat"); - if (nodes.Count > 0) - qrzlat = System.Convert.ToDouble(nodes[0].InnerText, CultureInfo.InvariantCulture); - nodes = doc.GetElementsByTagName("lon"); - if (nodes.Count > 0) - qrzlon = System.Convert.ToDouble(nodes[0].InnerText, CultureInfo.InvariantCulture); - nodes = doc.GetElementsByTagName("grid"); - if (nodes.Count > 0) - qrzloc = nodes[0].InnerText.ToUpper().Trim(); - nodes = doc.GetElementsByTagName("geoloc"); - if (nodes.Count > 0) - geoloc = nodes[0].InnerText; - nodes = doc.GetElementsByTagName("addr1"); - if (nodes.Count > 0) - addr1 = nodes[0].InnerText; - nodes = doc.GetElementsByTagName("addr2"); - if (nodes.Count > 0) - addr2 = nodes[0].InnerText; - nodes = doc.GetElementsByTagName("zip"); - if (nodes.Count > 0) - zip = nodes[0].InnerText; - nodes = doc.GetElementsByTagName("country"); - if (nodes.Count > 0) - country = nodes[0].InnerText; - // different loc? - if (loc != qrzloc) - { - Log.WriteMessage("QRZ.COM: Locator is different [" + call + "]: " + loc + " <> " + qrzloc, LogLevel.Warning); - callsdiffloc++; - } - // precise location by user or geocode? - else if (geoloc.ToUpper().Contains("USER") || geoloc.ToUpper().Contains("GEOCODE")) - { - if ((qrzlat != lat) || (qrzlon != lon)) - { - Log.WriteMessage("QRZ.COM: Location updated [" + call + "]."); - callsupdated++; - LocationDesignator ld = new LocationDesignator(call, qrzlat, qrzlon, GEOSOURCE.FROMUSER); - bw_QRZ.ReportProgress((int)LOCATIONSTATE.UPDATED, ld); - } - else - { - // already up to date - Log.WriteMessage("QRZ.COM: Location up to date [" + call + "]."); - callsuptodate++; - } - } - else if (geoloc.ToUpper().Contains("GRID")) - { - // try to get info by OpenStreetMaps API - string url = "https://nominatim.openstreetmap.org/search?q=" + addr1 + "+" + addr2 + "+" + zip + "+" + country + "&format=xml&polygon=1&addressdetails=1"; - HttpWebRequest httpWebRequest = (HttpWebRequest)HttpWebRequest.Create(url); - httpWebRequest.UserAgent = "Mozilla / 5.0(Windows NT 10.0; Win64; x64; rv: 61.0) Gecko / 20100101 Firefox / 61.0"; - HttpWebResponse httpWebResponse= (HttpWebResponse)httpWebRequest.GetResponse(); - ReceiveStream = httpWebResponse.GetResponseStream(); - // encode = System.Text.Encoding.GetEncoding("utf-8"); - readStream = new StreamReader(ReceiveStream, encode); - s = readStream.ReadToEnd(); - // load xml document - doc = new XmlDocument(); - doc.LoadXml(s); - double glat = 0; - double glon = 0; - string gloc = ""; - nodes = doc.GetElementsByTagName("place"); - if (nodes.Count > 0) - { - glat = System.Convert.ToDouble(nodes[0].Attributes["lat"].Value.ToString(), CultureInfo.InvariantCulture); - glon = System.Convert.ToDouble(nodes[0].Attributes["lon"].Value.ToString(), CultureInfo.InvariantCulture); - } - gloc = MaidenheadLocator.LocFromLatLon(glat, glon, false, 3); - if (gloc == qrzloc) - { - // precise location from address - Log.WriteMessage("QRZ.COM: Location updated from postal address[" + call + "]."); - callsupdated++; - LocationDesignator ld = new LocationDesignator(call, glat, glon, GEOSOURCE.FROMUSER); - bw_QRZ.ReportProgress((int)LOCATIONSTATE.UPDATED, ld); - } - else - { - Log.WriteMessage("QRZ.COM: Locator is different [" + call + "]: " + loc + " <> " + qrzloc, LogLevel.Warning); - callsdiffloc++; - } - } - // alreadyup to date? - else if ((lat == qrzlat) && (lon == qrzlon)) - { - callsuptodate++; - } - } - string status = "QRZ.COM query is running: " + - callschecked.ToString() + " checked, " + - callsnotfound.ToString() + " not found, " + - callsfound.ToString() + " found, " + - callsuptodate.ToString() + " up to date, " + - callsupdated.ToString() + " updated, " + - callsdiffloc.ToString() + " different loc, " + - errors.ToString() + " errors"; - bw_QRZ.ReportProgress((int)LOCATIONSTATE.INFO, status); - if (bw_QRZ.CancellationPending) - return; - Thread.Sleep(10); - } - catch (Exception ex) - { - errors++; - bw_QRZ.ReportProgress((int)LOCATIONSTATE.ERROR, ex.Message); - Log.WriteMessage(ex.ToString(), LogLevel.Error); - } - } - } - - private void bw_QRZ_ProgressChanged(object sender, ProgressChangedEventArgs e) - { - LOCATIONSTATE state = (LOCATIONSTATE)e.ProgressPercentage; - if (state <= 0) - SayLocations((string)e.UserState); - else - { - LocationDesignator ld = (LocationDesignator)e.UserState; - // update data table - try - { - DataRow row = Locations.Rows.Find(new string[2] { ld.Call, ld.Loc }); - if (row != null) - { - if (state == LOCATIONSTATE.UPTODATE) - AddRowError(row, state.ToString(), "", "", ""); - else if (state == LOCATIONSTATE.LOCDIFF) - AddRowError(row, state.ToString(), "", "", ""); - else - { - if ((double)row["Lat"] != ld.Lat) - { - AddRowError(row, state.ToString(), "Lat", "UpdatedValue", "OldValue:" + ((double)row["Lat"]).ToString("F8", CultureInfo.InvariantCulture)); - row["Lat"] = ld.Lat; - } - if ((double)row["Lon"] != ld.Lon) - { - AddRowError(row, state.ToString(), "Lon", "UpdatedValue", "OldValue:" + ((double)row["Lon"]).ToString("F8", CultureInfo.InvariantCulture)); - row["Lon"] = ld.Lon; - } - row["Source"] = ld.Source; - row["LastUpdated"] = ld.LastUpdated; - } - } - } - catch (Exception ex) - { - Log.WriteMessage(ex.ToString(), LogLevel.Error); - } - } - } - - private void bw_QRZ_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) - { - SayLocations("Finished."); - } - - - private void AddRowError(DataRow row, string category, string node, string item, string text) - { - try - { - // create XML document if not already created - if (String.IsNullOrEmpty(row.RowError)) - { - XElement x = new XElement(category); - row.RowError = x.ToString(); - } - // read out Errors as XML from RowError - XElement xml = XElement.Parse(row.RowError); - if (String.IsNullOrEmpty(node)) - return; - xml.Add(new XElement(node)); - if (String.IsNullOrEmpty(item)) - return; - xml.Add(new XElement(item, text)); - row.RowError = xml.ToString(); - } - catch (Exception ex) - { - Log.WriteMessage(ex.ToString(), LogLevel.Error); - } - } - - private void ImportLocations(DataTable dt) - { - if (dt != null) - { - int callsimported = dt.Rows.Count; - int callsupdated = 0; - int callsadded = 0; - foreach (DataRow row in dt.Rows) - { - DataRow oldrow = Locations.Rows.Find(row["Call"].ToString()); - if (oldrow != null) - { - // call found --> check for update - if ((DateTime)row["LastUpdated"] > (DateTime)oldrow["LastUpdated"]) - { - if (oldrow["Lat"] != row["Lat"]) - { - oldrow["Lat"] = row["Lat"]; - AddRowError(oldrow, "UPDATED", "Lat", "UpdatedValue", "OldValue:" + ((double)oldrow["Lat"]).ToString("F8", CultureInfo.InvariantCulture)); - } - if (oldrow["Lon"] != row["Lon"]) - { - oldrow["Lon"] = row["Lon"]; - AddRowError(oldrow, "UPDATED", "Lon", "UpdatedValue", "OldValue:" + ((double)oldrow["Lon"]).ToString("F8", CultureInfo.InvariantCulture)); - } - if (oldrow["Source"] != row["Source"]) - { - oldrow["Source"] = row["Source"]; - AddRowError(oldrow, "UPDATED", "Source", "UpdatedValue", "OldValue:" + oldrow["Source"].ToString()); - } - oldrow["LastUpdated"] = row["LastUpdated"]; - callsupdated++; - } - } - else - { - // add new row - AddRowError(row, LOCATIONSTATE.ADDED.ToString(), "", "", ""); - Locations.ImportRow(row); - callsadded++; - } - } - SayLocations("Import of " + dt.TableName + " finished: " + callsimported.ToString() + " calls imported, " + callsadded.ToString() + " calls added, " + callsupdated.ToString() + " calls updated."); - } - } - - private void Locations_Row_Changed(object sender, DataRowChangeEventArgs e) - { - - try - { - string call = e.Row["Call"].ToString(); - double lat = (double)e.Row["Lat"]; - double lon = (double)e.Row["Lon"]; - GEOSOURCE source = (GEOSOURCE)Enum.Parse(typeof(GEOSOURCE), e.Row["Source"].ToString()); - if (e.Action == DataRowAction.Add) - { - GMarkerGoogle gm = new GMarkerGoogle(new PointLatLng(lat, lon), (source == GEOSOURCE.FROMUSER) ? GMarkerGoogleType.green_small : GMarkerGoogleType.white_small); - gm.ToolTipText = call; - gm.ToolTipMode = MarkerTooltipMode.OnMouseOver; - gm.Tag = call; - Locationsoverlay.Markers.Add(gm); - } - else if (e.Action == DataRowAction.Change) - { - GMarkerGoogle gm = (GMarkerGoogle)Locationsoverlay.Markers.First(c => (string)c.Tag == call); - if (gm != null) - gm.Position = new PointLatLng(lat, lon); - } - else if (e.Action == DataRowAction.Delete) - { - GMarkerGoogle gm = (GMarkerGoogle)Locationsoverlay.Markers.First(c => (string)c.Tag == call); - if (gm != null) - Locationsoverlay.Markers.Remove(gm); - } - } - catch (Exception ex) - { - Log.WriteMessage(ex.ToString(), LogLevel.Error); - } - } - - private void btn_QRV_Import_WinTest_Click(object sender, EventArgs e) - { - DataTable dt = QRV.Clone(); - dt.Rows.Clear(); - OpenFileDialog Dlg = new OpenFileDialog(); - Dlg.DefaultExt = ".xdt"; - Dlg.Filter = "Win-Test database|*.xdt"; - Dlg.CheckFileExists = true; - if (Dlg.ShowDialog() == DialogResult.OK) - { - try - { - int qrv_ok = 0; - int qrv_err = 0; - using (StreamReader sr = new StreamReader(File.OpenRead(Dlg.FileName))) - { - while (!sr.EndOfStream) - { - string s = sr.ReadLine().Trim(); - string[] a = s.Split(); - DataRow row = dt.NewRow(); - row["Call"] = a[0]; - SayQRV("Importing call: " + a[0] + "..."); - DateTime lastupdated = DateTime.MinValue; - try - { - a[1] = a[1].Replace("[", "").Replace("]", ""); - lastupdated = DateTime.ParseExact(a[1], "yyyy-MM-dd", CultureInfo.InvariantCulture, DateTimeStyles.AssumeUniversal); - lastupdated = lastupdated.ToUniversalTime(); - } - catch (Exception ex) - { - Log.WriteMessage(ex.ToString(), LogLevel.Error); - qrv_err++; - } - row["LastUpdated"] = lastupdated; - for (int i = 2; i < a.Length; i++) - { - a[i] = a[i].Trim(); - if (!String.IsNullOrEmpty(a[i])) - { - try - { - row[a[i] + "_AH"] = 0; - row[a[i] + "_AG"] = 0; - row[a[i] + "_P"] = 0; - } - catch (Exception ex) - { - Log.WriteMessage(ex.ToString(), LogLevel.Error); - qrv_err++; - } - } - } - dt.Rows.Add(row); - qrv_ok++; - } - } - QRV.Merge(dt); - SayQRV("Importing calls finished: " + qrv_ok + " calls, " + qrv_err + " error(s)."); - } - catch (Exception ex) - { - Log.WriteMessage(ex.ToString(), LogLevel.Error); - } - } - } - - private void tp_QRV_Enter(object sender, EventArgs e) - { - QRV.Rows.Clear(); - BAND[] bands = Bands.GetValuesExceptNoneAndAll(); - foreach (BAND band in bands) - { - if (band > BAND.B70M) - { - SayQRV("Importing band: " + Bands.GetStringValue(band) + "..."); - List qrvs = StationData.Database.QRVGetAll(band); - string band_ah = Bands.GetStringValue(band) + "_AH"; - string band_ag = Bands.GetStringValue(band) + "_AG"; - string band_p = Bands.GetStringValue(band) + "_P"; - if (qrvs != null) - { - foreach (QRVDesignator qrv in qrvs) - { - DataRow row = QRV.Rows.Find(new string[]{ qrv.Call, qrv.Loc}); - if (row == null) - { - row = QRV.NewRow(); - row["Call"] = qrv.Call; - row["Loc"] = qrv.Loc; - row["LastUpdated"] = DateTime.MinValue; - QRV.Rows.Add(row); - } - row[band_ah] = qrv.AntennaHeight; - row[band_ag] = qrv.AntennaGain; - row[band_p] = qrv.Power; - if ((DateTime)row["LastUpdated"] < qrv.LastUpdated) - row["LastUpdated"] = qrv.LastUpdated; - } - } - } - } - QRV.AcceptChanges(); - QRVView = new DataView(QRV); - BindingSource source = new BindingSource(); - source.DataSource = QRVView; - dgv_QRV.DataSource = source; - dgv_QRV.ShowRowErrors = true; - dgv_QRV.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; - for (int i = 0; i < dgv_QRV.Columns.Count; i++) - { - if (i % 2 == 0) - dgv_QRV.Columns[i].DefaultCellStyle.BackColor = Color.LightGray; - } - SayQRV("Finished."); - } - - private void tb_QRV_Callsign_Filter_TextChanged(object sender, EventArgs e) - { - if (String.IsNullOrEmpty(tb_QRV_Callsign_Filter.Text)) - { - QRVView.RowFilter = "Call LIKE '*'"; - return; - } - string filter = tb_QRV_Callsign_Filter.Text; - if (!filter.EndsWith("*")) - filter = filter + "*"; - QRVView.RowFilter = "Call LIKE '" + filter + "'"; - - } - - private void btn_QRV_Sort_Click(object sender, EventArgs e) - { - // sort data table - DataTable sorted = QRV.Clone(); - DataRow[] rows = QRV.Select("", "Call ASC"); - if (rows.Length > 0) - { - foreach (DataRow row in rows) - sorted.ImportRow(row); - } - QRV.Clear(); - foreach (DataRow row in sorted.Rows) - QRV.ImportRow(row); - } - - private void btn_QRV_Save_Click(object sender, EventArgs e) - { - SayQRV("Saving changes to database..."); - try - { - foreach (DataRow row in QRV.Rows) - { - if ((row.RowState == DataRowState.Added) || (row.RowState == DataRowState.Modified)) - { - BAND[] bands = Bands.GetValuesExceptNoneAndAll(); - foreach (BAND band in bands) - { - if (band > BAND.B70M) - { - string band_ah = Bands.GetStringValue(band) + "_AH"; - string band_ag = Bands.GetStringValue(band) + "_AG"; - string band_p = Bands.GetStringValue(band) + "_P"; - QRVDesignator qrv = new QRVDesignator(); - qrv.Call = row["Call"].ToString().ToUpper(); - qrv.Loc = row["Loc"].ToString().ToUpper(); - qrv.Band = band; - if ((row[band_ah].GetType() != typeof(DBNull)) && (row[band_ah].GetType() != typeof(DBNull)) && (row[band_ah].GetType() != typeof(DBNull))) - { - qrv.AntennaHeight = (double)row[band_ah]; - qrv.AntennaGain = (double)row[band_ag]; - qrv.Power = (double)row[band_p]; - qrv.LastUpdated = (DateTime)row["LastUpdated"]; - SayQRV("Updating " + qrv.Call + ", " + qrv.Loc + "..."); - StationData.Database.QRVInsertOrUpdateIfNewer(qrv); - } - } - } - } - } - } - catch (Exception ex) - { - Log.WriteMessage(ex.ToString(), LogLevel.Error); - } - SayQRV("Finished."); - - } - - private void btn_QRV_Export_Click(object sender, EventArgs e) - { - string filename = Path.Combine(ExportDirectory, "qrv.json"); - SayQRV("Exporting database to " + filename); - string json = StationData.Database.QRVToJSON(); - SupportFunctions.WriteStringToFile(json, filename); - SayQRV("Finished."); - } - - private void QRV_Row_Changed(object sender, DataRowChangeEventArgs e) - { - - } - - private void dgv_QRV_CellValueChanged(object sender, DataGridViewCellEventArgs e) - { - // update LastUpdated column in case of changes - if (e.ColumnIndex < dgv_QRV.Columns.Count - 1) - { - dgv_QRV.Rows[e.RowIndex].Cells["LastUpdated"].Value = DateTime.UtcNow; - } - } - - private void dgv_QRV_CellEndEdit(object sender, DataGridViewCellEventArgs e) - { - } - - private void btn_QRV_Import_EDI_Click(object sender, EventArgs e) - { - - } - - private void cb_QRV_ChangedOnly_CheckedChanged(object sender, EventArgs e) - { - if (cb_QRV_ChangedOnly.Checked) - { - QRVView.RowStateFilter = DataViewRowState.ModifiedCurrent | DataViewRowState.Added; - } - else - { - QRVView.RowStateFilter = DataViewRowState.CurrentRows; - } - } - - private void btn_SFTP_GenerateFile_Click(object sender, EventArgs e) - { - // generates password file for SFTP and other - if (String.IsNullOrEmpty(tb_SFTP_URL.Text) || String.IsNullOrEmpty(tb_SFTP_User.Text) || String.IsNullOrEmpty(tb_SFTP_Password.Text)) - { - MessageBox.Show("Invalid entries for URL, user or password!"); - return; - } - SaveFileDialog Dlg = new SaveFileDialog(); - Dlg.FileName = "airscout.pwd"; - if (Dlg.ShowDialog() == DialogResult.OK) - { - using (StreamWriter sw = new StreamWriter(Dlg.FileName,false)) - { - string s = tb_SFTP_URL.Text + "\t" + Encryption.SimpleEncryptString(tb_SFTP_User.Text) + "\t" + Encryption.SimpleEncryptString(tb_SFTP_Password.Text); - sw.WriteLine(s); - } - } - } - - private void dgv_QRV_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e) - { - if ((e.Value != null) && (e.Value != DBNull.Value)) - { - e.Value = e.Value.ToString().ToUpper(); - e.FormattingApplied = true; - } - } - - private void btn_Update_Airlines_Click(object sender, EventArgs e) - { - try - { - string json = ""; - using (var client = new WebClient()) - { - json = client.DownloadString(Properties.Settings.Default.Airlines_Update_URL); - } - JsonSerializerSettings settings = new JsonSerializerSettings(); - settings.DateTimeZoneHandling = DateTimeZoneHandling.Utc; - settings.FloatFormatHandling = FloatFormatHandling.String; - settings.Formatting = Newtonsoft.Json.Formatting.Indented; - FR24Airlines fr24airlines = (FR24Airlines)JsonConvert.DeserializeObject(json, settings); - int count = 0; - int errors = 0; - foreach (FR24AirlineDesignator fr24ad in fr24airlines.rows) - { - if (!String.IsNullOrEmpty(fr24ad.Code) && !String.IsNullOrEmpty(fr24ad.ICAO)) - { - AirlineDesignator ad = new AirlineDesignator(fr24ad.ICAO, fr24ad.Code, fr24ad.Name, "[unknown]"); - int result = AircraftData.Database.AirlineInsertOrUpdateIfNewer(ad); - if (result >= 0) - count += result; - else - errors++; - } - } - Say("Airlines updated from " + Properties.Settings.Default.Airlines_Update_URL + ": " + count.ToString() + " updated, " + errors.ToString() + " error(s)."); - } - catch (Exception ex) - { - Say(ex.Message); - } - } - - private void btn_Update_Airports_Click(object sender, EventArgs e) - { - try - { - string json = ""; - using (var client = new WebClient()) - { - json = client.DownloadString(Properties.Settings.Default.Airports_Update_URL); - } - JsonSerializerSettings settings = new JsonSerializerSettings(); - settings.DateTimeZoneHandling = DateTimeZoneHandling.Utc; - settings.FloatFormatHandling = FloatFormatHandling.String; - settings.Formatting = Newtonsoft.Json.Formatting.Indented; - FR24Airports fr24airports = (FR24Airports)JsonConvert.DeserializeObject(json, settings); - int count = 0; - int errors = 0; - foreach (FR24AirportDesignator fr24ad in fr24airports.rows) - { - if (!String.IsNullOrEmpty(fr24ad.icao) && !String.IsNullOrEmpty(fr24ad.iata)) - { - AirportDesignator ad = new AirportDesignator(fr24ad.icao, fr24ad.iata, fr24ad.lat, fr24ad.lon, fr24ad.alt, fr24ad.name.Replace("\t","").Replace("\r","").Replace("\n",""), fr24ad.country); - int result = AircraftData.Database.AirportInsertOrUpdateIfNewer(ad); - if (result >= 0) - count += result; - else - errors++; - } - } - Say("Airports updated from " + Properties.Settings.Default.Airports_Update_URL + ": " + count.ToString() + " updated, " + errors.ToString() + " error(s)."); - } - catch (Exception ex) - { - Say(ex.Message); - } - - } - - private void bw_AircraftUpdater_DoWork(object sender, DoWorkEventArgs e) - { - // Divide the earth surface into zones optimized for flights density - List world_zones = new List(new string[] { - "90, 70, -180, 180", - "70, 50, -180, -20", - "70, 50, -20, 0", - "70, 50, 0, 20", - "70, 50, 20, 40", - "70, 50, 40, 180", - "50, 30, -180, -120", - "50, 40, -120, -110", - "50, 40, -110, -100", - "40, 30, -120, -110", - "40, 30, -110, -100", - "50, 40, -100, -90", - "50, 40, -90, -80", - "40, 30, -100, -90", - "40, 30, -90, -80", - "50, 30, -80, -60", - "50, 30, -60, -40", - "50, 30, -40, -20", - "50, 30, -20, 0", - "50, 40, 0, 10", - "50, 40, 10, 20", - "40, 30, 0, 10", - "40, 30, 10, 20", - "50, 30, 20, 40", - "50, 30, 40, 60", - "50, 30, 60, 180", - "30, 10, -180, -100", - "30, 10, -100, -80", - "30, 10, -80, 100", - "30, 10, 100, 180", - "10, -10, -180, 180", - "-10, -30, -180, 180", - "-30, -90, -180, 180" - } ); - while (!bw_AircraftUpdater.CancellationPending) - { - try - { - List aircrafts = new List(); - int errors = 0; - foreach (string zone in world_zones) - { - string url = Properties.Settings.Default.Aircrafts_BaseURL + "&bounds=" + zone; - bw_AircraftUpdater.ReportProgress(0, "getting aircrafts from: " + url); - string json = ""; - using (var client = new WebClient()) - { - json = client.DownloadString(url); - } - // modify the JSON string to get a list of aircrafts - json = json.Substring(json.IndexOf(",") + 1); - json = json.Substring(json.IndexOf(",") + 1); - json = "{rows:{" + json; - json = json.Remove(json.IndexOf(",\"stats\"")); - json = json + "}}"; - JsonSerializerSettings settings = new JsonSerializerSettings(); - settings.DateTimeZoneHandling = DateTimeZoneHandling.Utc; - settings.FloatFormatHandling = FloatFormatHandling.String; - settings.Formatting = Newtonsoft.Json.Formatting.Indented; - FR24Aircrafts fr24aircrafts = (FR24Aircrafts)JsonConvert.DeserializeObject(json, new FR24AircraftConverter()); - foreach (FR24AircraftDesignator fr24ad in fr24aircrafts.rows.Values) - { - try - { - AircraftDesignator ad = new AircraftDesignator(); - ad.Hex = fr24ad.hex; - ad.Call = fr24ad.call; - ad.Reg = fr24ad.reg; - ad.TypeCode = fr24ad.typecode; - ad.LastUpdated = DateTime.UtcNow; - if (PlaneInfoChecker.Check_Hex(ad.Hex) && PlaneInfoChecker.Check_Call(ad.Call) && PlaneInfoChecker.Check_Reg(ad.Reg) && PlaneInfoChecker.Check_Type(ad.TypeCode)) - aircrafts.Add(ad); - else - { -// Console.WriteLine("Invalid aircraft data: " + fr24ad.hex + "," + fr24ad.call + "," + fr24ad.reg + "," + fr24ad.typecode); - errors++; - } - } - catch (Exception ex) - { - bw_AircraftUpdater.ReportProgress(-1, ex.Message); - } - } - Thread.Sleep(1000); - } - bw_AircraftUpdater.ReportProgress(0, "Updating aircrafts..."); - // update aircraft data - AircraftData.Database.AircraftBulkInsertOrUpdateIfNewer(aircrafts); - bw_AircraftUpdater.ReportProgress(0, "Aircafts updated from " + Properties.Settings.Default.Aircrafts_BaseURL + ": " + aircrafts.Count.ToString() + " updated, " + errors.ToString() + " error(s)."); - int timeout = 0; - while (!bw_AircraftUpdater.CancellationPending && (timeout < 600)) - { - Thread.Sleep(1000); - timeout++; - } - } - catch (Exception ex) - { - bw_AircraftUpdater.ReportProgress(-1, ex.Message); - } - } - } - - private void bw_AircraftUpdater_ProgressChanged(object sender, ProgressChangedEventArgs e) - { - if (e.ProgressPercentage < 0) - Say((string)(e.UserState)); - else if (e.ProgressPercentage == 0) - Say((string)(e.UserState)); - ReportAircraftsStats(); - } - - private void bw_AircraftUpdater_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) - { - btn_Update_Aicrafts_Start.Enabled = true; - btn_Update_Aircrafts_Stop.Enabled = false; - } - - private void ReportAircraftsStats() - { - lbl_Aircrafts_Total.Text = "total: " + AircraftData.Database.AircraftCount().ToString(); - lbl_Aircrafts_UnkownHex.Text = "unknown hex: " + AircraftData.Database.AircraftCountUnknownHex().ToString(); - lbl_Aircrafts_UnkownCall.Text = "unknown call: " + AircraftData.Database.AircraftCountUnknownCall().ToString(); - lbl_Aircrafts_UnkownType.Text = "unknown type: " + AircraftData.Database.AircraftCountUnknownType().ToString(); - } - - private void btn_Update_Aicrafts_Start_Click(object sender, EventArgs e) - { - bw_AircraftUpdater.RunWorkerAsync(); - while (!bw_AircraftUpdater.IsBusy) - Application.DoEvents(); - btn_Update_Aicrafts_Start.Enabled = false; - btn_Update_Aircrafts_Stop.Enabled = true; - } - - private void btn_Update_Aircrafts_Stop_Click(object sender, EventArgs e) - { - bw_AircraftUpdater.CancelAsync(); - } - - private void tp_Aircrafts_Enter(object sender, EventArgs e) - { - if (bw_AircraftUpdater.IsBusy) - { - btn_Update_Aicrafts_Start.Enabled = false; - btn_Update_Aircrafts_Stop.Enabled = true; - } - else - { - btn_Update_Aicrafts_Start.Enabled = true; - btn_Update_Aircrafts_Stop.Enabled = false; - } - - ReportAircraftsStats(); - } - - private void btn_StationDatabase_Export_Click(object sender, EventArgs e) - { - // export and upload station database - if (!SupportFunctions.ValidateDirectoryPath(Properties.Settings.Default.StationDatabase_Export_LocalDir)) - { - MessageBox.Show("Local Path is not valid: " + Properties.Settings.Default.StationDatabase_Export_LocalDir, " Export Station Database"); - return; - } - Say("Getting locations..."); - string locations = StationData.Database.LocationToJSON(); - string locationsfile = Path.Combine(Properties.Settings.Default.StationDatabase_Export_LocalDir, "locations.json"); - string locationszipfile = Path.Combine(Properties.Settings.Default.StationDatabase_Export_LocalDir, "locations.zip"); - SupportFunctions.WriteStringToFile(locations, locationsfile); - Say("Creating zip file..."); - ZIP.CompressFile(locationsfile, false, 60); - string qrvs = StationData.Database.QRVToJSON(); - Say("Getting qrv information..."); - string qrvfile = Path.Combine(Properties.Settings.Default.StationDatabase_Export_LocalDir, "qrv.json"); - string qrvzipfile = Path.Combine(Properties.Settings.Default.StationDatabase_Export_LocalDir, "qrv.zip"); - SupportFunctions.WriteStringToFile(qrvs, qrvfile); - Say("Creating zip file..."); - ZIP.CompressFile(qrvfile, false, 60); - Say("Upload files..."); - SftpClient client = new SftpClient(Properties.Settings.Default.StationDatabase_Export_RemoteHost, Properties.Settings.Default.StationDatabase_Export_User, Properties.Settings.Default.StationDatabase_Export_Password); - try - { - client.Connect(); - using (FileStream file = new FileStream(locationszipfile, FileMode.Open)) - { - string uploadfile = Properties.Settings.Default.StationDatabase_Export_RemoteDir + "/" + "locations.zip"; - client.BufferSize = 4 * 1024; - client.UploadFile(file, uploadfile, true); - } - using (FileStream file = new FileStream(qrvzipfile, FileMode.Open)) - { - string uploadfile = Properties.Settings.Default.StationDatabase_Export_RemoteDir + "/" + "qrv.zip"; - client.BufferSize = 4 * 1024; - client.UploadFile(file, uploadfile, true); - } - - } - catch (Exception ex) - { - Console.WriteLine(ex.Message); - } - Say("Station database exported and uploaded."); - } - - private void btn_AircraftDatabase_Export_Click(object sender, EventArgs e) - { - // export and upload aircraftdatabase - if (!SupportFunctions.ValidateDirectoryPath(Properties.Settings.Default.AircraftDatabase_Export_LocalDir)) - { - MessageBox.Show("Local Path is not valid: " + Properties.Settings.Default.AircraftDatabase_Export_LocalDir, " Export Aircraft Database"); - return; - } - Say("Getting aircraft registrations..."); - string ars = AircraftData.Database.AircraftRegistrationToJSON(); - string arsfile = Path.Combine(Properties.Settings.Default.AircraftDatabase_Export_LocalDir, "AircraftRegistrations.json"); - string arszipfile = Path.Combine(Properties.Settings.Default.AircraftDatabase_Export_LocalDir, "AircraftRegistrations.zip"); - SupportFunctions.WriteStringToFile(ars, arsfile); - Say("Creating zip file..."); - ZIP.CompressFile(arsfile, false, 60); - Say("Getting aircrafts..."); - string acs = AircraftData.Database.AircraftToJSON(); - string acsfile = Path.Combine(Properties.Settings.Default.AircraftDatabase_Export_LocalDir, "Aircrafts.json"); - string acszipfile = Path.Combine(Properties.Settings.Default.AircraftDatabase_Export_LocalDir, "Aircrafts.zip"); - SupportFunctions.WriteStringToFile(acs, acsfile); - Say("Creating zip file..."); - ZIP.CompressFile(acsfile, false, 60); - Say("Getting aircraft typess..."); - string ats = AircraftData.Database.AircraftTypeToJSON(); - string atsfile = Path.Combine(Properties.Settings.Default.AircraftDatabase_Export_LocalDir, "AircraftTypes.json"); - string atszipfile = Path.Combine(Properties.Settings.Default.AircraftDatabase_Export_LocalDir, "AircraftTypes.zip"); - SupportFunctions.WriteStringToFile(ats, atsfile); - Say("Creating zip file..."); - ZIP.CompressFile(atsfile, false, 60); - Say("Getting airlines..."); - string als = AircraftData.Database.AirlineToJSON(); - string alsfile = Path.Combine(Properties.Settings.Default.AircraftDatabase_Export_LocalDir, "Airlines.json"); - string alszipfile = Path.Combine(Properties.Settings.Default.AircraftDatabase_Export_LocalDir, "Airlines.zip"); - SupportFunctions.WriteStringToFile(als, alsfile); - Say("Creating zip file..."); - ZIP.CompressFile(alsfile, false, 60); - Say("Getting airports..."); - string aps = AircraftData.Database.AirportToJSON(); - string apsfile = Path.Combine(Properties.Settings.Default.AircraftDatabase_Export_LocalDir, "Airports.json"); - string apszipfile = Path.Combine(Properties.Settings.Default.AircraftDatabase_Export_LocalDir, "Airports.zip"); - SupportFunctions.WriteStringToFile(aps, apsfile); - Say("Creating zip file..."); - ZIP.CompressFile(apsfile, false, 60); - Say("Upload files..."); - SftpClient client = new SftpClient(Properties.Settings.Default.AircraftDatabase_Export_RemoteHost, Properties.Settings.Default.AircraftDatabase_Export_User, Properties.Settings.Default.AircraftDatabase_Export_Password); - try - { - client.Connect(); - using (FileStream file = new FileStream(arszipfile, FileMode.Open)) - { - string uploadfile = Properties.Settings.Default.AircraftDatabase_Export_RemoteDir + "/" + "AircraftRegistrations.zip"; - client.BufferSize = 4 * 1024; - client.UploadFile(file, uploadfile, true); - } - using (FileStream file = new FileStream(acszipfile, FileMode.Open)) - { - string uploadfile = Properties.Settings.Default.AircraftDatabase_Export_RemoteDir + "/" + "Aircrafts.zip"; - client.BufferSize = 4 * 1024; - client.UploadFile(file, uploadfile, true); - } - using (FileStream file = new FileStream(atszipfile, FileMode.Open)) - { - string uploadfile = Properties.Settings.Default.AircraftDatabase_Export_RemoteDir + "/" + "AircraftTypes.zip"; - client.BufferSize = 4 * 1024; - client.UploadFile(file, uploadfile, true); - } - using (FileStream file = new FileStream(alszipfile, FileMode.Open)) - { - string uploadfile = Properties.Settings.Default.AircraftDatabase_Export_RemoteDir + "/" + "Airlines.zip"; - client.BufferSize = 4 * 1024; - client.UploadFile(file, uploadfile, true); - } - using (FileStream file = new FileStream(apszipfile, FileMode.Open)) - { - string uploadfile = Properties.Settings.Default.AircraftDatabase_Export_RemoteDir + "/" + "Airports.zip"; - client.BufferSize = 4 * 1024; - client.UploadFile(file, uploadfile, true); - } - } - catch (Exception ex) - { - Console.WriteLine(ex.Message); - } - Say("Aircraft database exported and uploaded."); - } - - private void dgv_Locations_SelectionChanged(object sender, EventArgs e) - { - DataGridViewSelectedRowCollection rows = dgv_Locations.SelectedRows; - if (!IsMarkerDragging && (rows.Count > 0)) - { - try - { - // clear locations - Locationsoverlay.Clear(); - double minlat = double.MaxValue; - double maxlat = double.MinValue; - double minlon = double.MaxValue; - double maxlon = double.MinValue; - foreach (DataGridViewRow row in rows) - { - // get info - string call = row.Cells["Call"].Value.ToString(); - double lat = (double)row.Cells["Lat"].Value; - double lon = (double)row.Cells["Lon"].Value; - GEOSOURCE source = (GEOSOURCE)row.Cells["Source"].Value; - // add location - GMarkerGoogle gm = new GMarkerGoogle(new PointLatLng(lat, lon), (source == GEOSOURCE.FROMUSER) ? GMarkerGoogleType.green_small : GMarkerGoogleType.white_small); - gm.ToolTipText = call; - gm.ToolTipMode = MarkerTooltipMode.OnMouseOver; - gm.Tag = call; - Locationsoverlay.Markers.Add(gm); - if (minlat > lat) - minlat = lat; - if (maxlat < lat) - maxlat = lat; - if (minlon > lon) - minlon = lon; - if (maxlon < lon) - maxlon = lon; - } - // ensure that all location are visible - if (rows.Count > 1) - { - gm_Locations.SetZoomToFitRect(RectLatLng.FromLTRB(minlon, maxlat, maxlon, minlat)); - } - else - { - // set standard zoom if only 1 location - gm_Locations.Zoom = 15; - gm_Locations.Position = new PointLatLng(minlat,minlon); - } - } - catch (Exception ex) - { - // cannot set position -- > do nothing - } - } - } - - } - - public class FR24Airlines - { - public int version; - public FR24AirlineDesignator[] rows; - - public FR24Airlines() - { - version = 0; - rows = null; - } - } - - public class FR24AirlineDesignator - { - public string Name; - public string Code; - public string ICAO; - - public FR24AirlineDesignator() - { - Name = ""; - Code = ""; - ICAO = ""; - } - } - - public class FR24Airports - { - public int version; - public FR24AirportDesignator[] rows; - - public FR24Airports() - { - version = 0; - rows = null; - } - } - - public class FR24AirportDesignator - { - public string name; - public string iata; - public string icao; - public string city; - public double lat; - public double lon; - public string country; - public double alt; - public double size; - - public FR24AirportDesignator() - { - name = ""; - iata = ""; - icao = ""; - city = ""; - lat = 0; - lon = 0; - country = ""; - alt = 0; - size = 0; - } - } - - public class FR24Aircrafts - { - public Dictionary rows; - public FR24Aircrafts() - { - rows = null; - } - } - - public class FR24AircraftDesignator - { - public string hex; - public double lat; - public double lon; - public int track; - public int alt; - public int speed; - public string squawk; - public string radar; - public string typecode; - public string reg; - public long time; - public string src; - public string dst; - public string call; - public int dummy1; - public int dummy2; - public string flight; - public int dummy3; - public string airline; - - public FR24AircraftDesignator() - { - hex = ""; - lat = 0; - lon = 0; - track = 0; - alt = 0; - speed = 0; - squawk = ""; - radar = ""; - typecode = ""; - reg = ""; - time = 0; - src = ""; - dst = ""; - call = ""; - dummy1 = 0; - dummy2 = 0; - flight = ""; - dummy3 = 0; - airline = ""; - } - } - - class FR24AircraftConverter : JsonConverter - { - public override bool CanConvert(Type objectType) - { - return (objectType == typeof(FR24AircraftDesignator)); - } - - public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) - { - JArray array = JArray.Load(reader); - return new FR24AircraftDesignator - { - hex = (string)array[0], - lat = (double)array[1], - lon = (double)array[2], - track = (int)array[3], - alt = (int)array[4], - speed = (int)array[5], - squawk = (string)array[6], - radar = (string)array[7], - typecode = (string)array[8], - reg = (string)array[9], - time = (long)array[10], - src = (string)array[11], - dst = (string)array[12], - flight = (string)array[13], - dummy1 = (int)array[14], - dummy2 = (int)array[15], - call = (string)array[16], - dummy3 = (int)array[17], - airline = (string)array[18] - }; - } - - public override bool CanWrite - { - get { return false; } - } - - public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) - { - throw new NotImplementedException(); - } - } - public enum DATABASEUPDATERSTARTOPTIONS - { - NONE = 0, - FIRSTRUN = 1, - RUNONCE = 2, - RUNPERIODICALLY = 3 - } - - public enum LOCATIONSTATE - { - UNKNOWN = -2, - ERROR = -1, - INFO = 0, - UPTODATE = 1, - UPDATED = 2, - LOCDIFF = 3, - ADDED = 4 - } -} diff --git a/AirScoutDatabaseManager/Properties/Settings.Designer.cs b/AirScoutDatabaseManager/Properties/Settings.Designer.cs deleted file mode 100644 index c155d71..0000000 --- a/AirScoutDatabaseManager/Properties/Settings.Designer.cs +++ /dev/null @@ -1,376 +0,0 @@ -//------------------------------------------------------------------------------ -// -// Dieser Code wurde von einem Tool generiert. -// Laufzeitversion:4.0.30319.42000 -// -// Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn -// der Code erneut generiert wird. -// -//------------------------------------------------------------------------------ - -namespace AirScoutDatabaseManager.Properties { - - - [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "14.0.0.0")] - public sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { - - private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); - - public static Settings Default { - get { - return defaultInstance; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("-15")] - public double MinLon { - get { - return ((double)(this["MinLon"])); - } - set { - this["MinLon"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("30")] - public double MaxLon { - get { - return ((double)(this["MaxLon"])); - } - set { - this["MaxLon"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("35")] - public double MinLat { - get { - return ((double)(this["MinLat"])); - } - set { - this["MinLat"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("60")] - public double MaxLat { - get { - return ((double)(this["MaxLat"])); - } - set { - this["MaxLat"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("OpenStreetMap")] - public string Map_Provider { - get { - return ((string)(this["Map_Provider"])); - } - set { - this["Map_Provider"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("http://www.qrz.com/db/")] - public string QRZ_URL_Database { - get { - return ((string)(this["QRZ_URL_Database"])); - } - set { - this["QRZ_URL_Database"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("\\Log")] - public string Log_Directory { - get { - return ((string)(this["Log_Directory"])); - } - set { - this["Log_Directory"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("\\Database")] - public string Database_Directory { - get { - return ((string)(this["Database_Directory"])); - } - set { - this["Database_Directory"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("\\Tmp")] - public string Tmp_Directory { - get { - return ((string)(this["Tmp_Directory"])); - } - set { - this["Tmp_Directory"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("\\Export")] - public string Export_Directory { - get { - return ((string)(this["Export_Directory"])); - } - set { - this["Export_Directory"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("http://www.airscout.eu/downloads/ScoutBase/1/StationData/")] - public string Station_URL { - get { - return ((string)(this["Station_URL"])); - } - set { - this["Station_URL"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("https://xmldata.qrz.com/xml/current/?username=dl2alf;password=271192;agent=AirSco" + - "ut")] - public string QRZ_URL_Login { - get { - return ((string)(this["QRZ_URL_Login"])); - } - set { - this["QRZ_URL_Login"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("http://xmldata.qrz.com/xml/current/")] - public string QRZ_URL_XMLData { - get { - return ((string)(this["QRZ_URL_XMLData"])); - } - set { - this["QRZ_URL_XMLData"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("www.airscout.eu")] - public string SFTP_URL { - get { - return ((string)(this["SFTP_URL"])); - } - set { - this["SFTP_URL"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("u45565180-airscout")] - public string SFTP_User { - get { - return ((string)(this["SFTP_User"])); - } - set { - this["SFTP_User"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("airscout")] - public string SFTP_Password { - get { - return ((string)(this["SFTP_Password"])); - } - set { - this["SFTP_Password"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("https://www.flightradar24.com/_json/airlines.php")] - public string Airlines_Update_URL { - get { - return ((string)(this["Airlines_Update_URL"])); - } - set { - this["Airlines_Update_URL"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("https://www.flightradar24.com/_json/airports2.php")] - public string Airports_Update_URL { - get { - return ((string)(this["Airports_Update_URL"])); - } - set { - this["Airports_Update_URL"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("https://data.flightradar24.com/zones/fcgi/feed.js?faa=1&mlat=1&flarm=0&adsb=1&gnd" + - "=0&air=1&vehicles=0&estimated=0&maxage=0&gliders=0&stats=1")] - public string Aircrafts_BaseURL { - get { - return ((string)(this["Aircrafts_BaseURL"])); - } - set { - this["Aircrafts_BaseURL"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("Z:\\CSharp\\AirScout\\Database\\ScoutBase\\V1")] - public string StationDatabase_Export_LocalDir { - get { - return ((string)(this["StationDatabase_Export_LocalDir"])); - } - set { - this["StationDatabase_Export_LocalDir"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("/wsb4556518002/downloads/ScoutBase/1/StationData")] - public string StationDatabase_Export_RemoteDir { - get { - return ((string)(this["StationDatabase_Export_RemoteDir"])); - } - set { - this["StationDatabase_Export_RemoteDir"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("u45565180")] - public string StationDatabase_Export_User { - get { - return ((string)(this["StationDatabase_Export_User"])); - } - set { - this["StationDatabase_Export_User"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("")] - public string StationDatabase_Export_Password { - get { - return ((string)(this["StationDatabase_Export_Password"])); - } - set { - this["StationDatabase_Export_Password"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("home208518495.1and1-/data.host")] - public string StationDatabase_Export_RemoteHost { - get { - return ((string)(this["StationDatabase_Export_RemoteHost"])); - } - set { - this["StationDatabase_Export_RemoteHost"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("Z:\\CSharp\\AirScout\\Database\\AirScout\\V1")] - public string AircraftDatabase_Export_LocalDir { - get { - return ((string)(this["AircraftDatabase_Export_LocalDir"])); - } - set { - this["AircraftDatabase_Export_LocalDir"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("")] - public string AircraftDatabase_Export_Password { - get { - return ((string)(this["AircraftDatabase_Export_Password"])); - } - set { - this["AircraftDatabase_Export_Password"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("/wsb4556518002/downloads/AirScout/1/AircraftData")] - public string AircraftDatabase_Export_RemoteDir { - get { - return ((string)(this["AircraftDatabase_Export_RemoteDir"])); - } - set { - this["AircraftDatabase_Export_RemoteDir"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("home208518495.1and1-/data.host")] - public string AircraftDatabase_Export_RemoteHost { - get { - return ((string)(this["AircraftDatabase_Export_RemoteHost"])); - } - set { - this["AircraftDatabase_Export_RemoteHost"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("u45565180")] - public string AircraftDatabase_Export_User { - get { - return ((string)(this["AircraftDatabase_Export_User"])); - } - set { - this["AircraftDatabase_Export_User"] = value; - } - } - } -} diff --git a/AirScoutDatabaseManager/Properties/Settings.settings b/AirScoutDatabaseManager/Properties/Settings.settings deleted file mode 100644 index c5e540f..0000000 --- a/AirScoutDatabaseManager/Properties/Settings.settings +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - -15 - - - 30 - - - 35 - - - 60 - - - OpenStreetMap - - - http://www.qrz.com/db/ - - - \Log - - - \Database - - - \Tmp - - - \Export - - - http://www.airscout.eu/downloads/ScoutBase/1/StationData/ - - - https://xmldata.qrz.com/xml/current/?username=dl2alf;password=271192;agent=AirScout - - - http://xmldata.qrz.com/xml/current/ - - - www.airscout.eu - - - u45565180-airscout - - - airscout - - - https://www.flightradar24.com/_json/airlines.php - - - https://www.flightradar24.com/_json/airports2.php - - - https://data.flightradar24.com/zones/fcgi/feed.js?faa=1&mlat=1&flarm=0&adsb=1&gnd=0&air=1&vehicles=0&estimated=0&maxage=0&gliders=0&stats=1 - - - Z:\CSharp\AirScout\Database\ScoutBase\V1 - - - /wsb4556518002/downloads/ScoutBase/1/StationData - - - u45565180 - - - - - - home208518495.1and1-/data.host - - - Z:\CSharp\AirScout\Database\AirScout\V1 - - - - - - /wsb4556518002/downloads/AirScout/1/AircraftData - - - home208518495.1and1-/data.host - - - u45565180 - - - \ No newline at end of file diff --git a/AirScoutDatabaseManager/StationDatabaseUpdater.cs b/AirScoutDatabaseManager/StationDatabaseUpdater.cs deleted file mode 100644 index b2536f2..0000000 --- a/AirScoutDatabaseManager/StationDatabaseUpdater.cs +++ /dev/null @@ -1,132 +0,0 @@ - -using System; -using System.ComponentModel; -using System.Windows.Forms; -using System.Net; -using System.IO; -using System.Threading; -using System.Diagnostics; -using System.Collections; -using System.Collections.Generic; -using System.Data; -using System.Linq; -using System.Globalization; -using System.Drawing; -using Newtonsoft.Json; -using Newtonsoft.Json.Linq; -using ScoutBase.Core; -using ScoutBase.Elevation; -using ScoutBase.Stations; - -namespace AirScoutDatabaseManager -{ - public partial class MainDlg : Form - { - - #region StationDatabaseUpdater - - private bool ReadLocationsFromURL(string url, string filename) - { - try - { - AutoDecompressionWebClient cl = new AutoDecompressionWebClient(); - DOWNLOADFILESTATUS status = cl.DownloadFileIfNewer(url, filename, true, true); - if ((status & DOWNLOADFILESTATUS.ERROR) > 0) - { - Log.WriteMessage("Error while downloading and extracting " + filename, LogLevel.Error); - return false; - } - else if (((status & DOWNLOADFILESTATUS.NEWER) > 0) || ((status & DOWNLOADFILESTATUS.NOTNEWER) > 0)) - { - string json = ""; - using (StreamReader sr = new StreamReader(filename)) - json = sr.ReadToEnd(); - List lds = StationData.Database.LocationFromJSON(json); - // chek for empty database - if (StationData.Database.LocationCount() == 0) - { - // do bulk insert - StationData.Database.LocationBulkInsert(lds); - } - else - { - // do update on single elements - foreach(LocationDesignator ld in lds) - { - StationData.Database.LocationInsertOrUpdateIfNewer(ld); - // return if cancellation is pending - if (bw_DatabaseUpdater.CancellationPending) - return false; - } - } - return true; - } - } - catch (Exception ex) - { - // Error loading database - Log.WriteMessage("[" + url + "]: " + ex.ToString(), LogLevel.Error); - } - return false; - } - - private void bw_DatabaseUpdater_DoWork(object sender, DoWorkEventArgs e) - { - Log.WriteMessage("Started."); - // name the thread for debugging - if (String.IsNullOrEmpty(Thread.CurrentThread.Name)) - Thread.CurrentThread.Name = nameof(bw_DatabaseUpdater); - bw_DatabaseUpdater.ReportProgress(0, "Updating database..."); - // get temp directory - string TmpDirectory = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), Application.CompanyName, Application.ProductName, "Tmp").TrimEnd(Path.DirectorySeparatorChar); - if (!Directory.Exists(TmpDirectory)) - Directory.CreateDirectory(TmpDirectory); - int errors = 0; - try - { - Stopwatch st = new Stopwatch(); - st.Start(); - // update callsign database - bw_DatabaseUpdater.ReportProgress(0, "Updating callsigns from web database..."); - if (!ReadLocationsFromURL(Properties.Settings.Default.Station_URL + "locations.json", Path.Combine(TmpDirectory, "locations.json"))) - errors++; - st.Stop(); - Log.WriteMessage("Database update completed in " + st.Elapsed.ToString(@"hh\:mm\:ss") + ", errors: " + errors.ToString()); - - // sleep once to get all messages to main thread - Thread.Sleep(1000); - } - catch (Exception ex) - { - Log.WriteMessage(ex.ToString(), LogLevel.Error); - } - bw_DatabaseUpdater.ReportProgress(0, "Updating callsigns finished."); - Log.WriteMessage("Finished."); - } - - private void bw_DatabaseUpdater_ProgressChanged(object sender, ProgressChangedEventArgs e) - { - try - { - if (e.ProgressPercentage == 0) - { - // status message received - string msg = (string)e.UserState; - Say(msg); - } - } - catch (Exception ex) - { - Log.WriteMessage(ex.ToString(), LogLevel.Error); - } - } - - private void bw_DatabaseUpdater_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) - { - tc_Main.Enabled = true; - } - - #endregion - - } -} diff --git a/AirScoutDatabaseManager/app.config b/AirScoutDatabaseManager/app.config deleted file mode 100644 index fa12240..0000000 --- a/AirScoutDatabaseManager/app.config +++ /dev/null @@ -1,107 +0,0 @@ - - - - -
- - - - - - -15 - - - 30 - - - 35 - - - 60 - - - OpenStreetMap - - - http://www.qrz.com/db/ - - - \Log - - - \Database - - - \Tmp - - - \Export - - - http://www.airscout.eu/downloads/ScoutBase/1/StationData/ - - - https://xmldata.qrz.com/xml/current/?username=dl2alf;password=271192;agent=AirScout - - - http://xmldata.qrz.com/xml/current/ - - - www.airscout.eu - - - u45565180-airscout - - - airscout - - - https://www.flightradar24.com/_json/airlines.php - - - https://www.flightradar24.com/_json/airports2.php - - - https://data.flightradar24.com/zones/fcgi/feed.js?faa=1&mlat=1&flarm=0&adsb=1&gnd=0&air=1&vehicles=0&estimated=0&maxage=0&gliders=0&stats=1 - - - Z:\CSharp\AirScout\Database\ScoutBase\V1 - - - /wsb4556518002/downloads/ScoutBase/1/StationData - - - u45565180 - - - - - - home208518495.1and1-/data.host - - - Z:\CSharp\AirScout\Database\AirScout\V1 - - - - - - /wsb4556518002/downloads/AirScout/1/AircraftData - - - home208518495.1and1-/data.host - - - u45565180 - - - - - - - - - - - - \ No newline at end of file diff --git a/AirScoutDatabaseManager/packages.config b/AirScoutDatabaseManager/packages.config deleted file mode 100644 index bd583a5..0000000 --- a/AirScoutDatabaseManager/packages.config +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/AirScoutPlaneServer/AirScoutPlaneServer.csproj b/AirScoutPlaneServer/AirScoutPlaneServer.csproj index 9344b18..733ec7b 100644 --- a/AirScoutPlaneServer/AirScoutPlaneServer.csproj +++ b/AirScoutPlaneServer/AirScoutPlaneServer.csproj @@ -69,8 +69,8 @@ - - ..\packages\System.Data.SQLite.Core.1.0.112.0\lib\net40\System.Data.SQLite.dll + + ..\packages\Stub.System.Data.SQLite.Core.NetFramework.1.0.113.3\lib\net40\System.Data.SQLite.dll @@ -158,12 +158,12 @@ - + Dieses Projekt verweist auf mindestens ein NuGet-Paket, das auf diesem Computer fehlt. Verwenden Sie die Wiederherstellung von NuGet-Paketen, um die fehlenden Dateien herunterzuladen. Weitere Informationen finden Sie unter "http://go.microsoft.com/fwlink/?LinkID=322105". Die fehlende Datei ist "{0}". - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/AirScoutViewClient/packages.config b/AirScoutViewClient/packages.config index 2bc3b5b..05a4de8 100644 --- a/AirScoutViewClient/packages.config +++ b/AirScoutViewClient/packages.config @@ -1,5 +1,6 @@  - + + \ No newline at end of file diff --git a/AquaGauge/AquaGauge.csproj b/AquaGauge/AquaGauge.csproj index 16c1924..c87483a 100644 --- a/AquaGauge/AquaGauge.csproj +++ b/AquaGauge/AquaGauge.csproj @@ -42,8 +42,8 @@ - - ..\packages\System.Data.SQLite.Core.1.0.112.0\lib\net40\System.Data.SQLite.dll + + ..\packages\Stub.System.Data.SQLite.Core.NetFramework.1.0.113.3\lib\net40\System.Data.SQLite.dll @@ -69,12 +69,12 @@ - + Dieses Projekt verweist auf mindestens ein NuGet-Paket, das auf diesem Computer fehlt. Verwenden Sie die Wiederherstellung von NuGet-Paketen, um die fehlenden Dateien herunterzuladen. Weitere Informationen finden Sie unter "http://go.microsoft.com/fwlink/?LinkID=322105". Die fehlende Datei ist "{0}". - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/CATCheck/CATCheck.csproj b/CATCheck/CATCheck.csproj new file mode 100644 index 0000000..1e180ad --- /dev/null +++ b/CATCheck/CATCheck.csproj @@ -0,0 +1,571 @@ + + + + + Debug + AnyCPU + {0F0B27D0-7957-4CE0-9121-2C89746AF136} + WinExe + CATCheck + CATCheck + v4.0 + 512 + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + Form + + + AboutDlg.cs + + + + Form + + + FrequencyOfToneDlg.cs + + + + Form + + + MainDlg.cs + + + + + Form + + + SetFrequencyDlg.cs + + + + AboutDlg.cs + + + FrequencyOfToneDlg.cs + + + MainDlg.cs + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + True + Resources.resx + + + SetFrequencyDlg.cs + + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + True + Settings.settings + True + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + + + {c9291203-b5d0-4179-888d-04bc670b158f} + ScoutBase.CAT + + + {ee86e933-d883-4b18-80eb-0fba55ec67c6} + ScoutBase.Core + + + + + + + + + + + + \ No newline at end of file diff --git a/CATCheck/ComboBoxItem.cs b/CATCheck/ComboBoxItem.cs new file mode 100644 index 0000000..55af384 --- /dev/null +++ b/CATCheck/ComboBoxItem.cs @@ -0,0 +1,24 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace CATCheck +{ + public class ComboBoxItem + { + private string Text { get; set; } + public T Value { get; set; } + + public override string ToString() + { + return Text; + } + + public ComboBoxItem(string text, T value) + { + Text = text; + Value = value; + } + } +} diff --git a/CATCheck/FrequencyOfToneDlg.Designer.cs b/CATCheck/FrequencyOfToneDlg.Designer.cs new file mode 100644 index 0000000..642e684 --- /dev/null +++ b/CATCheck/FrequencyOfToneDlg.Designer.cs @@ -0,0 +1,130 @@ +namespace CATCheck +{ + partial class FrequencyOfToneDlg + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.ud_Tone = new System.Windows.Forms.NumericUpDown(); + this.label1 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.label3 = new System.Windows.Forms.Label(); + this.label4 = new System.Windows.Forms.Label(); + this.tb_Freq = new System.Windows.Forms.TextBox(); + ((System.ComponentModel.ISupportInitialize)(this.ud_Tone)).BeginInit(); + this.SuspendLayout(); + // + // ud_Tone + // + this.ud_Tone.Location = new System.Drawing.Point(271, 12); + this.ud_Tone.Maximum = new decimal(new int[] { + 10000, + 0, + 0, + 0}); + this.ud_Tone.Name = "ud_Tone"; + this.ud_Tone.Size = new System.Drawing.Size(81, 20); + this.ud_Tone.TabIndex = 0; + this.ud_Tone.Value = new decimal(new int[] { + 1, + 0, + 0, + 0}); + this.ud_Tone.ValueChanged += new System.EventHandler(this.ud_Tone_ValueChanged); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(35, 14); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(35, 13); + this.label1.TabIndex = 1; + this.label1.Text = "Tone:"; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(358, 14); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(20, 13); + this.label2.TabIndex = 2; + this.label2.Text = "Hz"; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(35, 44); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(96, 13); + this.label3.TabIndex = 3; + this.label3.Text = "Frequency of tone:"; + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Location = new System.Drawing.Point(358, 44); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(20, 13); + this.label4.TabIndex = 4; + this.label4.Text = "Hz"; + // + // tb_Freq + // + this.tb_Freq.Location = new System.Drawing.Point(177, 41); + this.tb_Freq.Name = "tb_Freq"; + this.tb_Freq.ReadOnly = true; + this.tb_Freq.Size = new System.Drawing.Size(175, 20); + this.tb_Freq.TabIndex = 5; + // + // FrequencyOfToneDlg + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(390, 90); + this.Controls.Add(this.tb_Freq); + this.Controls.Add(this.label4); + this.Controls.Add(this.label3); + this.Controls.Add(this.label2); + this.Controls.Add(this.label1); + this.Controls.Add(this.ud_Tone); + this.Name = "FrequencyOfToneDlg"; + this.Text = "Calculate Frequency of Tone"; + ((System.ComponentModel.ISupportInitialize)(this.ud_Tone)).EndInit(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.NumericUpDown ud_Tone; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.TextBox tb_Freq; + } +} \ No newline at end of file diff --git a/CATCheck/FrequencyOfToneDlg.cs b/CATCheck/FrequencyOfToneDlg.cs new file mode 100644 index 0000000..7556962 --- /dev/null +++ b/CATCheck/FrequencyOfToneDlg.cs @@ -0,0 +1,41 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; +using ScoutBase.CAT; + +namespace CATCheck +{ + public partial class FrequencyOfToneDlg : Form + { + Rig Rig = null; + + public FrequencyOfToneDlg(Rig rig) + { + Rig = rig; + + InitializeComponent(); + + if ((Rig != null) && Rig.Online) + { + ud_Tone.Value = Rig.Pitch; + } + } + + private void ud_Tone_ValueChanged(object sender, EventArgs e) + { + if ((Rig != null) && Rig.Online) + { + tb_Freq.Text = Rig.FrequencyOfTone((int)ud_Tone.Value).ToString(); + } + else + { + tb_Freq.Text = "Rig not avalibale"; + } + } + } +} diff --git a/CATCheck/FrequencyOfToneDlg.resx b/CATCheck/FrequencyOfToneDlg.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/CATCheck/FrequencyOfToneDlg.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/CATCheck/Helpers.cs b/CATCheck/Helpers.cs new file mode 100644 index 0000000..3951938 --- /dev/null +++ b/CATCheck/Helpers.cs @@ -0,0 +1,70 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Windows.Forms; + +namespace CATCheck +{ + public static class Helpers + { + public static string GetEnumDescription(this Enum value) + { + Type type = value.GetType(); + string name = Enum.GetName(type, value); + if (name != null) + { + FieldInfo field = type.GetField(name); + if (field != null) + { + DescriptionAttribute attr = + Attribute.GetCustomAttribute(field, + typeof(DescriptionAttribute)) as DescriptionAttribute; + if (attr != null) + { + return attr.Description; + } + } + } + return null; + } + + public static void BindToEnum(this ComboBox comboBox) + { + var enumType = typeof(TEnum); + + var fields = enumType.GetMembers() + .OfType() + .Where(p => p.MemberType == MemberTypes.Field) + .Where(p => p.IsLiteral) + .ToList(); + + var valuesByName = new Dictionary(); + + foreach (var field in fields) + { + var descriptionAttribute = field.GetCustomAttributes(typeof(DescriptionAttribute), false)[0] as DescriptionAttribute; + + var value = (int)field.GetValue(null); + var description = string.Empty; + + if (!string.IsNullOrEmpty(descriptionAttribute?.Description)) + { + description = descriptionAttribute.Description; + } + else + { + description = field.Name; + } + + valuesByName[description] = value; + } + + comboBox.DataSource = valuesByName.ToList(); + comboBox.DisplayMember = "Key"; + comboBox.ValueMember = "Value"; + } + } +} diff --git a/CATCheck/MainDlg.Designer.cs b/CATCheck/MainDlg.Designer.cs new file mode 100644 index 0000000..a47f3bb --- /dev/null +++ b/CATCheck/MainDlg.Designer.cs @@ -0,0 +1,1320 @@ +namespace CATCheck +{ + partial class MainDlg + { + /// + /// Erforderliche Designervariable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Verwendete Ressourcen bereinigen. + /// + /// True, wenn verwaltete Ressourcen gelöscht werden sollen; andernfalls False. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Vom Windows Form-Designer generierter Code + + /// + /// Erforderliche Methode für die Designerunterstützung. + /// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainDlg)); + this.tt_Set = new System.Windows.Forms.ToolTip(this.components); + this.mnu_Main = new System.Windows.Forms.MenuStrip(); + this.mni_Exit = new System.Windows.Forms.ToolStripMenuItem(); + this.mni_Commands = new System.Windows.Forms.ToolStripMenuItem(); + this.mni_ClearRIT = new System.Windows.Forms.ToolStripMenuItem(); + this.mni_FrequencyOfTone = new System.Windows.Forms.ToolStripMenuItem(); + this.mni_About = new System.Windows.Forms.ToolStripMenuItem(); + this.gb_Log = new System.Windows.Forms.GroupBox(); + this.lv_Messages = new System.Windows.Forms.ListView(); + this.ch_LogLevel = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.ch_TimeStamp = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.ch_Message = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.il_MessageStates = new System.Windows.Forms.ImageList(this.components); + this.lbl_Queue = new System.Windows.Forms.Label(); + this.label15 = new System.Windows.Forms.Label(); + this.label1 = new System.Windows.Forms.Label(); + this.cb_LogVerbosity = new System.Windows.Forms.ComboBox(); + this.btn_Log_Show = new System.Windows.Forms.Button(); + this.btn_Log_Clear = new System.Windows.Forms.Button(); + this.btn_Log_StartStop = new System.Windows.Forms.Button(); + this.gb_RigControl = new System.Windows.Forms.GroupBox(); + this.lbl_RIT_OFS = new System.Windows.Forms.Label(); + this.lbl_FreqB = new System.Windows.Forms.Label(); + this.lbl_FreqA = new System.Windows.Forms.Label(); + this.lbl_Freq = new System.Windows.Forms.Label(); + this.lbl_RIT_OFF = new System.Windows.Forms.Label(); + this.lbl_RIT_ON = new System.Windows.Forms.Label(); + this.lbl_SPLIT_OFF = new System.Windows.Forms.Label(); + this.lbl_SPLIT_ON = new System.Windows.Forms.Label(); + this.lbl_XIT_OFF = new System.Windows.Forms.Label(); + this.lbl_XIT_ON = new System.Windows.Forms.Label(); + this.lbl_VFO_Swap = new System.Windows.Forms.Label(); + this.lbl_VFO_Equal = new System.Windows.Forms.Label(); + this.lbl_VFO_B = new System.Windows.Forms.Label(); + this.lbl_VFO_A = new System.Windows.Forms.Label(); + this.lbl_VFO_AB = new System.Windows.Forms.Label(); + this.lbl_VFO_AA = new System.Windows.Forms.Label(); + this.lbl_VFO_BB = new System.Windows.Forms.Label(); + this.lbl_VFO_BA = new System.Windows.Forms.Label(); + this.lbl_TX = new System.Windows.Forms.Label(); + this.lbl_RX = new System.Windows.Forms.Label(); + this.lbl_FM = new System.Windows.Forms.Label(); + this.lbl_AM = new System.Windows.Forms.Label(); + this.lbl_DIG_L = new System.Windows.Forms.Label(); + this.lbl_DIG_U = new System.Windows.Forms.Label(); + this.lbl_CW_U = new System.Windows.Forms.Label(); + this.lbl_CW_L = new System.Windows.Forms.Label(); + this.lbl_SSB_L = new System.Windows.Forms.Label(); + this.lbl_SSB_U = new System.Windows.Forms.Label(); + this.tb_Freq = new System.Windows.Forms.TextBox(); + this.label14 = new System.Windows.Forms.Label(); + this.tb_Status = new System.Windows.Forms.TextBox(); + this.tb_FreqA = new System.Windows.Forms.TextBox(); + this.label3 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.tb_FreqB = new System.Windows.Forms.TextBox(); + this.gb_RigSettings = new System.Windows.Forms.GroupBox(); + this.btn_Restart = new System.Windows.Forms.Button(); + this.ud_TimeoutMs = new System.Windows.Forms.NumericUpDown(); + this.label13 = new System.Windows.Forms.Label(); + this.ud_PollMs = new System.Windows.Forms.NumericUpDown(); + this.label12 = new System.Windows.Forms.Label(); + this.label11 = new System.Windows.Forms.Label(); + this.cb_DTR = new System.Windows.Forms.ComboBox(); + this.label10 = new System.Windows.Forms.Label(); + this.cb_RTS = new System.Windows.Forms.ComboBox(); + this.label9 = new System.Windows.Forms.Label(); + this.cb_Stopbits = new System.Windows.Forms.ComboBox(); + this.label8 = new System.Windows.Forms.Label(); + this.cb_Parity = new System.Windows.Forms.ComboBox(); + this.label7 = new System.Windows.Forms.Label(); + this.cb_Databits = new System.Windows.Forms.ComboBox(); + this.label6 = new System.Windows.Forms.Label(); + this.cb_Baudrate = new System.Windows.Forms.ComboBox(); + this.label5 = new System.Windows.Forms.Label(); + this.cb_PortName = new System.Windows.Forms.ComboBox(); + this.label4 = new System.Windows.Forms.Label(); + this.cb_Rig = new System.Windows.Forms.ComboBox(); + this.gb_RigSettingsFolder = new System.Windows.Forms.GroupBox(); + this.btn_RigDefinitions_Folder = new System.Windows.Forms.Button(); + this.tb_RigDefinitionsFolder = new System.Windows.Forms.TextBox(); + this.ti_Main = new System.Windows.Forms.Timer(this.components); + this.gb_COM = new System.Windows.Forms.GroupBox(); + this.lbl_RTS = new System.Windows.Forms.Label(); + this.lbl_DTR = new System.Windows.Forms.Label(); + this.lbl_CTS = new System.Windows.Forms.Label(); + this.lbl_DSR = new System.Windows.Forms.Label(); + this.mnu_Main.SuspendLayout(); + this.gb_Log.SuspendLayout(); + this.gb_RigControl.SuspendLayout(); + this.gb_RigSettings.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.ud_TimeoutMs)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.ud_PollMs)).BeginInit(); + this.gb_RigSettingsFolder.SuspendLayout(); + this.gb_COM.SuspendLayout(); + this.SuspendLayout(); + // + // mnu_Main + // + this.mnu_Main.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.mni_Exit, + this.mni_Commands, + this.mni_About}); + this.mnu_Main.Location = new System.Drawing.Point(0, 0); + this.mnu_Main.Name = "mnu_Main"; + this.mnu_Main.Size = new System.Drawing.Size(1008, 24); + this.mnu_Main.TabIndex = 10; + this.mnu_Main.Text = "menuStrip1"; + // + // mni_Exit + // + this.mni_Exit.Name = "mni_Exit"; + this.mni_Exit.Size = new System.Drawing.Size(38, 20); + this.mni_Exit.Text = "E&xit"; + this.mni_Exit.Click += new System.EventHandler(this.mni_Exit_Click); + // + // mni_Commands + // + this.mni_Commands.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.mni_ClearRIT, + this.mni_FrequencyOfTone}); + this.mni_Commands.Name = "mni_Commands"; + this.mni_Commands.Size = new System.Drawing.Size(81, 20); + this.mni_Commands.Text = "Commands"; + // + // mni_ClearRIT + // + this.mni_ClearRIT.Name = "mni_ClearRIT"; + this.mni_ClearRIT.Size = new System.Drawing.Size(170, 22); + this.mni_ClearRIT.Text = "Clear RIT"; + this.mni_ClearRIT.Click += new System.EventHandler(this.mni_ClearRIT_Click); + // + // mni_FrequencyOfTone + // + this.mni_FrequencyOfTone.Name = "mni_FrequencyOfTone"; + this.mni_FrequencyOfTone.Size = new System.Drawing.Size(170, 22); + this.mni_FrequencyOfTone.Text = "Frequency of tone"; + this.mni_FrequencyOfTone.Click += new System.EventHandler(this.mni_FrequencyOfTone_Click); + // + // mni_About + // + this.mni_About.Name = "mni_About"; + this.mni_About.Size = new System.Drawing.Size(52, 20); + this.mni_About.Text = "&About"; + this.mni_About.Click += new System.EventHandler(this.mni_About_Click); + // + // gb_Log + // + this.gb_Log.Controls.Add(this.lv_Messages); + this.gb_Log.Controls.Add(this.lbl_Queue); + this.gb_Log.Controls.Add(this.label15); + this.gb_Log.Controls.Add(this.label1); + this.gb_Log.Controls.Add(this.cb_LogVerbosity); + this.gb_Log.Controls.Add(this.btn_Log_Show); + this.gb_Log.Controls.Add(this.btn_Log_Clear); + this.gb_Log.Controls.Add(this.btn_Log_StartStop); + this.gb_Log.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic))), System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.gb_Log.Location = new System.Drawing.Point(234, 191); + this.gb_Log.Name = "gb_Log"; + this.gb_Log.Size = new System.Drawing.Size(774, 358); + this.gb_Log.TabIndex = 14; + this.gb_Log.TabStop = false; + this.gb_Log.Text = "Log"; + // + // lv_Messages + // + this.lv_Messages.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { + this.ch_LogLevel, + this.ch_TimeStamp, + this.ch_Message}); + this.lv_Messages.Dock = System.Windows.Forms.DockStyle.Top; + this.lv_Messages.Font = new System.Drawing.Font("Courier New", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lv_Messages.FullRowSelect = true; + this.lv_Messages.GridLines = true; + this.lv_Messages.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable; + this.lv_Messages.HideSelection = false; + this.lv_Messages.Location = new System.Drawing.Point(3, 16); + this.lv_Messages.Name = "lv_Messages"; + this.lv_Messages.OwnerDraw = true; + this.lv_Messages.Size = new System.Drawing.Size(768, 280); + this.lv_Messages.SmallImageList = this.il_MessageStates; + this.lv_Messages.TabIndex = 13; + this.lv_Messages.UseCompatibleStateImageBehavior = false; + this.lv_Messages.View = System.Windows.Forms.View.Details; + this.lv_Messages.DrawColumnHeader += new System.Windows.Forms.DrawListViewColumnHeaderEventHandler(this.lv_Messages_DrawColumnHeader); + this.lv_Messages.DrawItem += new System.Windows.Forms.DrawListViewItemEventHandler(this.lv_Messages_DrawItem); + this.lv_Messages.DrawSubItem += new System.Windows.Forms.DrawListViewSubItemEventHandler(this.lv_Messages_DrawSubItem); + // + // ch_LogLevel + // + this.ch_LogLevel.Text = "L"; + this.ch_LogLevel.Width = 30; + // + // ch_TimeStamp + // + this.ch_TimeStamp.Text = "UTC"; + this.ch_TimeStamp.Width = 180; + // + // ch_Message + // + this.ch_Message.Text = "Message"; + this.ch_Message.Width = 540; + // + // il_MessageStates + // + this.il_MessageStates.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("il_MessageStates.ImageStream"))); + this.il_MessageStates.TransparentColor = System.Drawing.Color.Transparent; + this.il_MessageStates.Images.SetKeyName(0, "CAT.png"); + this.il_MessageStates.Images.SetKeyName(1, "eventlogInfo.ico"); + this.il_MessageStates.Images.SetKeyName(2, "eventlogWarn.ico"); + this.il_MessageStates.Images.SetKeyName(3, "eventlogError.ico"); + // + // lbl_Queue + // + this.lbl_Queue.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lbl_Queue.Location = new System.Drawing.Point(291, 324); + this.lbl_Queue.Name = "lbl_Queue"; + this.lbl_Queue.Size = new System.Drawing.Size(61, 19); + this.lbl_Queue.TabIndex = 12; + this.lbl_Queue.Text = "0"; + // + // label15 + // + this.label15.AutoSize = true; + this.label15.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label15.Location = new System.Drawing.Point(231, 325); + this.label15.Name = "label15"; + this.label15.Size = new System.Drawing.Size(54, 13); + this.label15.TabIndex = 11; + this.label15.Text = "In Queue:"; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label1.Location = new System.Drawing.Point(368, 325); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(74, 13); + this.label1.TabIndex = 10; + this.label1.Text = "Log Verbosity:"; + // + // cb_LogVerbosity + // + this.cb_LogVerbosity.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cb_LogVerbosity.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_LogVerbosity.FormattingEnabled = true; + this.cb_LogVerbosity.Location = new System.Drawing.Point(448, 322); + this.cb_LogVerbosity.Name = "cb_LogVerbosity"; + this.cb_LogVerbosity.Size = new System.Drawing.Size(121, 21); + this.cb_LogVerbosity.TabIndex = 7; + this.cb_LogVerbosity.SelectedIndexChanged += new System.EventHandler(this.cb_LogVerbosity_SelectedIndexChanged); + // + // btn_Log_Show + // + this.btn_Log_Show.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btn_Log_Show.Location = new System.Drawing.Point(608, 318); + this.btn_Log_Show.Name = "btn_Log_Show"; + this.btn_Log_Show.Size = new System.Drawing.Size(148, 27); + this.btn_Log_Show.TabIndex = 5; + this.btn_Log_Show.Text = "Show Log File in Explorer"; + this.btn_Log_Show.UseVisualStyleBackColor = true; + this.btn_Log_Show.Click += new System.EventHandler(this.btn_Log_Show_Click); + // + // btn_Log_Clear + // + this.btn_Log_Clear.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btn_Log_Clear.Location = new System.Drawing.Point(115, 318); + this.btn_Log_Clear.Name = "btn_Log_Clear"; + this.btn_Log_Clear.Size = new System.Drawing.Size(103, 27); + this.btn_Log_Clear.TabIndex = 4; + this.btn_Log_Clear.Text = "Clear Log"; + this.btn_Log_Clear.UseVisualStyleBackColor = true; + this.btn_Log_Clear.Click += new System.EventHandler(this.btn_Log_Clear_Click); + // + // btn_Log_StartStop + // + this.btn_Log_StartStop.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btn_Log_StartStop.Location = new System.Drawing.Point(6, 318); + this.btn_Log_StartStop.Name = "btn_Log_StartStop"; + this.btn_Log_StartStop.Size = new System.Drawing.Size(103, 27); + this.btn_Log_StartStop.TabIndex = 3; + this.btn_Log_StartStop.Text = "Stop Log"; + this.btn_Log_StartStop.UseVisualStyleBackColor = true; + this.btn_Log_StartStop.Click += new System.EventHandler(this.btn_Log_StartStop_Click); + // + // gb_RigControl + // + this.gb_RigControl.Controls.Add(this.lbl_RIT_OFS); + this.gb_RigControl.Controls.Add(this.lbl_FreqB); + this.gb_RigControl.Controls.Add(this.lbl_FreqA); + this.gb_RigControl.Controls.Add(this.lbl_Freq); + this.gb_RigControl.Controls.Add(this.lbl_RIT_OFF); + this.gb_RigControl.Controls.Add(this.lbl_RIT_ON); + this.gb_RigControl.Controls.Add(this.lbl_SPLIT_OFF); + this.gb_RigControl.Controls.Add(this.lbl_SPLIT_ON); + this.gb_RigControl.Controls.Add(this.lbl_XIT_OFF); + this.gb_RigControl.Controls.Add(this.lbl_XIT_ON); + this.gb_RigControl.Controls.Add(this.lbl_VFO_Swap); + this.gb_RigControl.Controls.Add(this.lbl_VFO_Equal); + this.gb_RigControl.Controls.Add(this.lbl_VFO_B); + this.gb_RigControl.Controls.Add(this.lbl_VFO_A); + this.gb_RigControl.Controls.Add(this.lbl_VFO_AB); + this.gb_RigControl.Controls.Add(this.lbl_VFO_AA); + this.gb_RigControl.Controls.Add(this.lbl_VFO_BB); + this.gb_RigControl.Controls.Add(this.lbl_VFO_BA); + this.gb_RigControl.Controls.Add(this.lbl_TX); + this.gb_RigControl.Controls.Add(this.lbl_RX); + this.gb_RigControl.Controls.Add(this.lbl_FM); + this.gb_RigControl.Controls.Add(this.lbl_AM); + this.gb_RigControl.Controls.Add(this.lbl_DIG_L); + this.gb_RigControl.Controls.Add(this.lbl_DIG_U); + this.gb_RigControl.Controls.Add(this.lbl_CW_U); + this.gb_RigControl.Controls.Add(this.lbl_CW_L); + this.gb_RigControl.Controls.Add(this.lbl_SSB_L); + this.gb_RigControl.Controls.Add(this.lbl_SSB_U); + this.gb_RigControl.Controls.Add(this.tb_Freq); + this.gb_RigControl.Controls.Add(this.label14); + this.gb_RigControl.Controls.Add(this.tb_Status); + this.gb_RigControl.Controls.Add(this.tb_FreqA); + this.gb_RigControl.Controls.Add(this.label3); + this.gb_RigControl.Controls.Add(this.label2); + this.gb_RigControl.Controls.Add(this.tb_FreqB); + this.gb_RigControl.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic))), System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.gb_RigControl.Location = new System.Drawing.Point(0, 77); + this.gb_RigControl.Name = "gb_RigControl"; + this.gb_RigControl.Size = new System.Drawing.Size(938, 114); + this.gb_RigControl.TabIndex = 13; + this.gb_RigControl.TabStop = false; + this.gb_RigControl.Text = "Rig Control"; + // + // lbl_RIT_OFS + // + this.lbl_RIT_OFS.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.lbl_RIT_OFS.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lbl_RIT_OFS.ForeColor = System.Drawing.Color.Gray; + this.lbl_RIT_OFS.Location = new System.Drawing.Point(792, 84); + this.lbl_RIT_OFS.Name = "lbl_RIT_OFS"; + this.lbl_RIT_OFS.Size = new System.Drawing.Size(65, 20); + this.lbl_RIT_OFS.TabIndex = 46; + this.lbl_RIT_OFS.Text = "0.00"; + this.lbl_RIT_OFS.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lbl_FreqB + // + this.lbl_FreqB.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.lbl_FreqB.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lbl_FreqB.ForeColor = System.Drawing.Color.Gray; + this.lbl_FreqB.Location = new System.Drawing.Point(462, 79); + this.lbl_FreqB.Name = "lbl_FreqB"; + this.lbl_FreqB.Size = new System.Drawing.Size(45, 25); + this.lbl_FreqB.TabIndex = 45; + this.lbl_FreqB.Text = "Set"; + this.lbl_FreqB.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.lbl_FreqB.Click += new System.EventHandler(this.lbl_FreqB_Click); + // + // lbl_FreqA + // + this.lbl_FreqA.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.lbl_FreqA.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lbl_FreqA.ForeColor = System.Drawing.Color.Gray; + this.lbl_FreqA.Location = new System.Drawing.Point(462, 47); + this.lbl_FreqA.Name = "lbl_FreqA"; + this.lbl_FreqA.Size = new System.Drawing.Size(45, 25); + this.lbl_FreqA.TabIndex = 44; + this.lbl_FreqA.Text = "Set"; + this.lbl_FreqA.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.lbl_FreqA.Click += new System.EventHandler(this.lbl_FreqA_Click); + // + // lbl_Freq + // + this.lbl_Freq.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.lbl_Freq.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lbl_Freq.ForeColor = System.Drawing.Color.Gray; + this.lbl_Freq.Location = new System.Drawing.Point(462, 15); + this.lbl_Freq.Name = "lbl_Freq"; + this.lbl_Freq.Size = new System.Drawing.Size(45, 25); + this.lbl_Freq.TabIndex = 43; + this.lbl_Freq.Text = "Set"; + this.lbl_Freq.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.lbl_Freq.Click += new System.EventHandler(this.lbl_Freq_Click); + // + // lbl_RIT_OFF + // + this.lbl_RIT_OFF.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.lbl_RIT_OFF.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lbl_RIT_OFF.ForeColor = System.Drawing.Color.Gray; + this.lbl_RIT_OFF.Location = new System.Drawing.Point(863, 61); + this.lbl_RIT_OFF.Name = "lbl_RIT_OFF"; + this.lbl_RIT_OFF.Size = new System.Drawing.Size(65, 20); + this.lbl_RIT_OFF.TabIndex = 42; + this.lbl_RIT_OFF.Text = "RIT OFF"; + this.lbl_RIT_OFF.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.lbl_RIT_OFF.Click += new System.EventHandler(this.lbl_RIT_OFF_Click); + // + // lbl_RIT_ON + // + this.lbl_RIT_ON.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.lbl_RIT_ON.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lbl_RIT_ON.ForeColor = System.Drawing.Color.Gray; + this.lbl_RIT_ON.Location = new System.Drawing.Point(792, 61); + this.lbl_RIT_ON.Name = "lbl_RIT_ON"; + this.lbl_RIT_ON.Size = new System.Drawing.Size(65, 20); + this.lbl_RIT_ON.TabIndex = 41; + this.lbl_RIT_ON.Text = "RIT ON"; + this.lbl_RIT_ON.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.lbl_RIT_ON.Click += new System.EventHandler(this.lbl_RIT_ON_Click); + // + // lbl_SPLIT_OFF + // + this.lbl_SPLIT_OFF.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.lbl_SPLIT_OFF.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lbl_SPLIT_OFF.ForeColor = System.Drawing.Color.Gray; + this.lbl_SPLIT_OFF.Location = new System.Drawing.Point(863, 15); + this.lbl_SPLIT_OFF.Name = "lbl_SPLIT_OFF"; + this.lbl_SPLIT_OFF.Size = new System.Drawing.Size(65, 20); + this.lbl_SPLIT_OFF.TabIndex = 40; + this.lbl_SPLIT_OFF.Text = "SPLIT OFF"; + this.lbl_SPLIT_OFF.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.lbl_SPLIT_OFF.Click += new System.EventHandler(this.lbl_SPLIT_OFF_Click); + // + // lbl_SPLIT_ON + // + this.lbl_SPLIT_ON.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.lbl_SPLIT_ON.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lbl_SPLIT_ON.ForeColor = System.Drawing.Color.Gray; + this.lbl_SPLIT_ON.Location = new System.Drawing.Point(792, 15); + this.lbl_SPLIT_ON.Name = "lbl_SPLIT_ON"; + this.lbl_SPLIT_ON.Size = new System.Drawing.Size(65, 20); + this.lbl_SPLIT_ON.TabIndex = 39; + this.lbl_SPLIT_ON.Text = "SPLIT ON"; + this.lbl_SPLIT_ON.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.lbl_SPLIT_ON.Click += new System.EventHandler(this.lbl_SPLIT_ON_Click); + // + // lbl_XIT_OFF + // + this.lbl_XIT_OFF.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.lbl_XIT_OFF.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lbl_XIT_OFF.ForeColor = System.Drawing.Color.Gray; + this.lbl_XIT_OFF.Location = new System.Drawing.Point(863, 38); + this.lbl_XIT_OFF.Name = "lbl_XIT_OFF"; + this.lbl_XIT_OFF.Size = new System.Drawing.Size(65, 20); + this.lbl_XIT_OFF.TabIndex = 38; + this.lbl_XIT_OFF.Text = "XIT OFF"; + this.lbl_XIT_OFF.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.lbl_XIT_OFF.Click += new System.EventHandler(this.lbl_XIT_OFF_Click); + // + // lbl_XIT_ON + // + this.lbl_XIT_ON.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.lbl_XIT_ON.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lbl_XIT_ON.ForeColor = System.Drawing.Color.Gray; + this.lbl_XIT_ON.Location = new System.Drawing.Point(792, 38); + this.lbl_XIT_ON.Name = "lbl_XIT_ON"; + this.lbl_XIT_ON.Size = new System.Drawing.Size(65, 20); + this.lbl_XIT_ON.TabIndex = 37; + this.lbl_XIT_ON.Text = "XIT ON"; + this.lbl_XIT_ON.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.lbl_XIT_ON.Click += new System.EventHandler(this.lbl_XIT_ON_Click); + // + // lbl_VFO_Swap + // + this.lbl_VFO_Swap.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.lbl_VFO_Swap.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lbl_VFO_Swap.ForeColor = System.Drawing.Color.Gray; + this.lbl_VFO_Swap.Location = new System.Drawing.Point(721, 84); + this.lbl_VFO_Swap.Name = "lbl_VFO_Swap"; + this.lbl_VFO_Swap.Size = new System.Drawing.Size(55, 20); + this.lbl_VFO_Swap.TabIndex = 36; + this.lbl_VFO_Swap.Text = "A <> B"; + this.lbl_VFO_Swap.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.lbl_VFO_Swap.Click += new System.EventHandler(this.lbl_VFO_Swap_Click); + // + // lbl_VFO_Equal + // + this.lbl_VFO_Equal.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.lbl_VFO_Equal.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lbl_VFO_Equal.ForeColor = System.Drawing.Color.Gray; + this.lbl_VFO_Equal.Location = new System.Drawing.Point(660, 84); + this.lbl_VFO_Equal.Name = "lbl_VFO_Equal"; + this.lbl_VFO_Equal.Size = new System.Drawing.Size(55, 20); + this.lbl_VFO_Equal.TabIndex = 35; + this.lbl_VFO_Equal.Text = "A = B"; + this.lbl_VFO_Equal.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.lbl_VFO_Equal.Click += new System.EventHandler(this.lbl_VFO_Equal_Click); + // + // lbl_VFO_B + // + this.lbl_VFO_B.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.lbl_VFO_B.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lbl_VFO_B.ForeColor = System.Drawing.Color.Gray; + this.lbl_VFO_B.Location = new System.Drawing.Point(721, 61); + this.lbl_VFO_B.Name = "lbl_VFO_B"; + this.lbl_VFO_B.Size = new System.Drawing.Size(55, 20); + this.lbl_VFO_B.TabIndex = 34; + this.lbl_VFO_B.Text = "VFO B"; + this.lbl_VFO_B.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.lbl_VFO_B.Click += new System.EventHandler(this.lbl_VFO_B_Click); + // + // lbl_VFO_A + // + this.lbl_VFO_A.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.lbl_VFO_A.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lbl_VFO_A.ForeColor = System.Drawing.Color.Gray; + this.lbl_VFO_A.Location = new System.Drawing.Point(660, 61); + this.lbl_VFO_A.Name = "lbl_VFO_A"; + this.lbl_VFO_A.Size = new System.Drawing.Size(55, 20); + this.lbl_VFO_A.TabIndex = 33; + this.lbl_VFO_A.Text = "VFO A"; + this.lbl_VFO_A.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.lbl_VFO_A.Click += new System.EventHandler(this.lbl_VFO_A_Click); + // + // lbl_VFO_AB + // + this.lbl_VFO_AB.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.lbl_VFO_AB.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lbl_VFO_AB.ForeColor = System.Drawing.Color.Gray; + this.lbl_VFO_AB.Location = new System.Drawing.Point(721, 15); + this.lbl_VFO_AB.Name = "lbl_VFO_AB"; + this.lbl_VFO_AB.Size = new System.Drawing.Size(55, 20); + this.lbl_VFO_AB.TabIndex = 32; + this.lbl_VFO_AB.Text = "VFA AB"; + this.lbl_VFO_AB.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.lbl_VFO_AB.Click += new System.EventHandler(this.lbl_VFO_AB_Click); + // + // lbl_VFO_AA + // + this.lbl_VFO_AA.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.lbl_VFO_AA.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lbl_VFO_AA.ForeColor = System.Drawing.Color.Gray; + this.lbl_VFO_AA.Location = new System.Drawing.Point(660, 15); + this.lbl_VFO_AA.Name = "lbl_VFO_AA"; + this.lbl_VFO_AA.Size = new System.Drawing.Size(55, 20); + this.lbl_VFO_AA.TabIndex = 31; + this.lbl_VFO_AA.Text = "VFO AA"; + this.lbl_VFO_AA.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.lbl_VFO_AA.Click += new System.EventHandler(this.lbl_VFO_AA_Click); + // + // lbl_VFO_BB + // + this.lbl_VFO_BB.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.lbl_VFO_BB.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lbl_VFO_BB.ForeColor = System.Drawing.Color.Gray; + this.lbl_VFO_BB.Location = new System.Drawing.Point(721, 38); + this.lbl_VFO_BB.Name = "lbl_VFO_BB"; + this.lbl_VFO_BB.Size = new System.Drawing.Size(55, 20); + this.lbl_VFO_BB.TabIndex = 30; + this.lbl_VFO_BB.Text = "VFO BB"; + this.lbl_VFO_BB.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.lbl_VFO_BB.Click += new System.EventHandler(this.lbl_VFO_BB_Click); + // + // lbl_VFO_BA + // + this.lbl_VFO_BA.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.lbl_VFO_BA.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lbl_VFO_BA.ForeColor = System.Drawing.Color.Gray; + this.lbl_VFO_BA.Location = new System.Drawing.Point(660, 38); + this.lbl_VFO_BA.Name = "lbl_VFO_BA"; + this.lbl_VFO_BA.Size = new System.Drawing.Size(55, 20); + this.lbl_VFO_BA.TabIndex = 29; + this.lbl_VFO_BA.Text = "VFO BA"; + this.lbl_VFO_BA.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.lbl_VFO_BA.Click += new System.EventHandler(this.lbl_VFO_BA_Click); + // + // lbl_TX + // + this.lbl_TX.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.lbl_TX.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lbl_TX.ForeColor = System.Drawing.Color.Gray; + this.lbl_TX.Location = new System.Drawing.Point(110, 58); + this.lbl_TX.Name = "lbl_TX"; + this.lbl_TX.Size = new System.Drawing.Size(84, 39); + this.lbl_TX.TabIndex = 28; + this.lbl_TX.Text = "TX"; + this.lbl_TX.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.lbl_TX.Click += new System.EventHandler(this.lbl_TX_Click); + // + // lbl_RX + // + this.lbl_RX.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.lbl_RX.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lbl_RX.ForeColor = System.Drawing.Color.Gray; + this.lbl_RX.Location = new System.Drawing.Point(12, 58); + this.lbl_RX.Name = "lbl_RX"; + this.lbl_RX.Size = new System.Drawing.Size(84, 39); + this.lbl_RX.TabIndex = 27; + this.lbl_RX.Text = "RX"; + this.lbl_RX.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.lbl_RX.Click += new System.EventHandler(this.lbl_RX_Click); + // + // lbl_FM + // + this.lbl_FM.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.lbl_FM.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lbl_FM.ForeColor = System.Drawing.Color.Gray; + this.lbl_FM.Location = new System.Drawing.Point(586, 84); + this.lbl_FM.Name = "lbl_FM"; + this.lbl_FM.Size = new System.Drawing.Size(55, 20); + this.lbl_FM.TabIndex = 26; + this.lbl_FM.Text = "FM"; + this.lbl_FM.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.lbl_FM.Click += new System.EventHandler(this.lbl_FM_Click); + // + // lbl_AM + // + this.lbl_AM.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.lbl_AM.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lbl_AM.ForeColor = System.Drawing.Color.Gray; + this.lbl_AM.Location = new System.Drawing.Point(525, 84); + this.lbl_AM.Name = "lbl_AM"; + this.lbl_AM.Size = new System.Drawing.Size(55, 20); + this.lbl_AM.TabIndex = 25; + this.lbl_AM.Text = "AM"; + this.lbl_AM.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.lbl_AM.Click += new System.EventHandler(this.lbl_AM_Click); + // + // lbl_DIG_L + // + this.lbl_DIG_L.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.lbl_DIG_L.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lbl_DIG_L.ForeColor = System.Drawing.Color.Gray; + this.lbl_DIG_L.Location = new System.Drawing.Point(586, 61); + this.lbl_DIG_L.Name = "lbl_DIG_L"; + this.lbl_DIG_L.Size = new System.Drawing.Size(55, 20); + this.lbl_DIG_L.TabIndex = 24; + this.lbl_DIG_L.Text = "DATA_R"; + this.lbl_DIG_L.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.lbl_DIG_L.Click += new System.EventHandler(this.lbl_DIG_L_Click); + // + // lbl_DIG_U + // + this.lbl_DIG_U.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.lbl_DIG_U.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lbl_DIG_U.ForeColor = System.Drawing.Color.Gray; + this.lbl_DIG_U.Location = new System.Drawing.Point(525, 61); + this.lbl_DIG_U.Name = "lbl_DIG_U"; + this.lbl_DIG_U.Size = new System.Drawing.Size(55, 20); + this.lbl_DIG_U.TabIndex = 23; + this.lbl_DIG_U.Text = "DATA"; + this.lbl_DIG_U.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.lbl_DIG_U.Click += new System.EventHandler(this.lbl_DIG_U_Click); + // + // lbl_CW_U + // + this.lbl_CW_U.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.lbl_CW_U.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lbl_CW_U.ForeColor = System.Drawing.Color.Gray; + this.lbl_CW_U.Location = new System.Drawing.Point(586, 15); + this.lbl_CW_U.Name = "lbl_CW_U"; + this.lbl_CW_U.Size = new System.Drawing.Size(55, 20); + this.lbl_CW_U.TabIndex = 22; + this.lbl_CW_U.Text = "CW-R"; + this.lbl_CW_U.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.lbl_CW_U.Click += new System.EventHandler(this.lbl_CW_U_Click); + // + // lbl_CW_L + // + this.lbl_CW_L.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.lbl_CW_L.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lbl_CW_L.ForeColor = System.Drawing.Color.Gray; + this.lbl_CW_L.Location = new System.Drawing.Point(525, 15); + this.lbl_CW_L.Name = "lbl_CW_L"; + this.lbl_CW_L.Size = new System.Drawing.Size(55, 20); + this.lbl_CW_L.TabIndex = 21; + this.lbl_CW_L.Text = "CW"; + this.lbl_CW_L.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.lbl_CW_L.Click += new System.EventHandler(this.lbl_CW_L_Click); + // + // lbl_SSB_L + // + this.lbl_SSB_L.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.lbl_SSB_L.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lbl_SSB_L.ForeColor = System.Drawing.Color.Gray; + this.lbl_SSB_L.Location = new System.Drawing.Point(586, 38); + this.lbl_SSB_L.Name = "lbl_SSB_L"; + this.lbl_SSB_L.Size = new System.Drawing.Size(55, 20); + this.lbl_SSB_L.TabIndex = 20; + this.lbl_SSB_L.Text = "LSB"; + this.lbl_SSB_L.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.lbl_SSB_L.Click += new System.EventHandler(this.lbl_SSB_L_Click); + // + // lbl_SSB_U + // + this.lbl_SSB_U.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.lbl_SSB_U.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lbl_SSB_U.ForeColor = System.Drawing.Color.Gray; + this.lbl_SSB_U.Location = new System.Drawing.Point(525, 38); + this.lbl_SSB_U.Name = "lbl_SSB_U"; + this.lbl_SSB_U.Size = new System.Drawing.Size(55, 20); + this.lbl_SSB_U.TabIndex = 19; + this.lbl_SSB_U.Text = "USB"; + this.lbl_SSB_U.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.lbl_SSB_U.Click += new System.EventHandler(this.lbl_SSB_U_Click); + // + // tb_Freq + // + this.tb_Freq.BackColor = System.Drawing.Color.Gray; + this.tb_Freq.Font = new System.Drawing.Font("Courier New", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_Freq.ForeColor = System.Drawing.Color.Chartreuse; + this.tb_Freq.Location = new System.Drawing.Point(254, 14); + this.tb_Freq.Name = "tb_Freq"; + this.tb_Freq.ReadOnly = true; + this.tb_Freq.Size = new System.Drawing.Size(186, 26); + this.tb_Freq.TabIndex = 6; + // + // label14 + // + this.label14.AutoSize = true; + this.label14.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label14.Location = new System.Drawing.Point(204, 20); + this.label14.Name = "label14"; + this.label14.Size = new System.Drawing.Size(31, 13); + this.label14.TabIndex = 7; + this.label14.Text = "Freq:"; + // + // tb_Status + // + this.tb_Status.BackColor = System.Drawing.Color.AntiqueWhite; + this.tb_Status.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_Status.Location = new System.Drawing.Point(12, 20); + this.tb_Status.Name = "tb_Status"; + this.tb_Status.Size = new System.Drawing.Size(182, 26); + this.tb_Status.TabIndex = 0; + // + // tb_FreqA + // + this.tb_FreqA.BackColor = System.Drawing.Color.Gray; + this.tb_FreqA.Font = new System.Drawing.Font("Courier New", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_FreqA.ForeColor = System.Drawing.Color.Chartreuse; + this.tb_FreqA.Location = new System.Drawing.Point(254, 46); + this.tb_FreqA.Name = "tb_FreqA"; + this.tb_FreqA.ReadOnly = true; + this.tb_FreqA.Size = new System.Drawing.Size(186, 26); + this.tb_FreqA.TabIndex = 2; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label3.Location = new System.Drawing.Point(204, 83); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(41, 13); + this.label3.TabIndex = 5; + this.label3.Text = "Freq B:"; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label2.Location = new System.Drawing.Point(204, 50); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(41, 13); + this.label2.TabIndex = 3; + this.label2.Text = "Freq A:"; + // + // tb_FreqB + // + this.tb_FreqB.BackColor = System.Drawing.Color.Gray; + this.tb_FreqB.Font = new System.Drawing.Font("Courier New", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_FreqB.ForeColor = System.Drawing.Color.Chartreuse; + this.tb_FreqB.Location = new System.Drawing.Point(254, 78); + this.tb_FreqB.Name = "tb_FreqB"; + this.tb_FreqB.ReadOnly = true; + this.tb_FreqB.Size = new System.Drawing.Size(186, 26); + this.tb_FreqB.TabIndex = 4; + // + // gb_RigSettings + // + this.gb_RigSettings.Controls.Add(this.btn_Restart); + this.gb_RigSettings.Controls.Add(this.ud_TimeoutMs); + this.gb_RigSettings.Controls.Add(this.label13); + this.gb_RigSettings.Controls.Add(this.ud_PollMs); + this.gb_RigSettings.Controls.Add(this.label12); + this.gb_RigSettings.Controls.Add(this.label11); + this.gb_RigSettings.Controls.Add(this.cb_DTR); + this.gb_RigSettings.Controls.Add(this.label10); + this.gb_RigSettings.Controls.Add(this.cb_RTS); + this.gb_RigSettings.Controls.Add(this.label9); + this.gb_RigSettings.Controls.Add(this.cb_Stopbits); + this.gb_RigSettings.Controls.Add(this.label8); + this.gb_RigSettings.Controls.Add(this.cb_Parity); + this.gb_RigSettings.Controls.Add(this.label7); + this.gb_RigSettings.Controls.Add(this.cb_Databits); + this.gb_RigSettings.Controls.Add(this.label6); + this.gb_RigSettings.Controls.Add(this.cb_Baudrate); + this.gb_RigSettings.Controls.Add(this.label5); + this.gb_RigSettings.Controls.Add(this.cb_PortName); + this.gb_RigSettings.Controls.Add(this.label4); + this.gb_RigSettings.Controls.Add(this.cb_Rig); + this.gb_RigSettings.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic))), System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.gb_RigSettings.Location = new System.Drawing.Point(18, 191); + this.gb_RigSettings.Name = "gb_RigSettings"; + this.gb_RigSettings.Size = new System.Drawing.Size(210, 358); + this.gb_RigSettings.TabIndex = 12; + this.gb_RigSettings.TabStop = false; + this.gb_RigSettings.Text = "Rig Settings"; + // + // btn_Restart + // + this.btn_Restart.BackColor = System.Drawing.Color.PaleGreen; + this.btn_Restart.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btn_Restart.Location = new System.Drawing.Point(12, 318); + this.btn_Restart.Name = "btn_Restart"; + this.btn_Restart.Size = new System.Drawing.Size(182, 27); + this.btn_Restart.TabIndex = 8; + this.btn_Restart.Text = "Restart Rig"; + this.btn_Restart.UseVisualStyleBackColor = false; + this.btn_Restart.Click += new System.EventHandler(this.btn_Restart_Click); + // + // ud_TimeoutMs + // + this.ud_TimeoutMs.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.ud_TimeoutMs.Increment = new decimal(new int[] { + 100, + 0, + 0, + 0}); + this.ud_TimeoutMs.Location = new System.Drawing.Point(125, 276); + this.ud_TimeoutMs.Maximum = new decimal(new int[] { + 10000, + 0, + 0, + 0}); + this.ud_TimeoutMs.Minimum = new decimal(new int[] { + 100, + 0, + 0, + 0}); + this.ud_TimeoutMs.Name = "ud_TimeoutMs"; + this.ud_TimeoutMs.Size = new System.Drawing.Size(69, 20); + this.ud_TimeoutMs.TabIndex = 26; + this.ud_TimeoutMs.Value = new decimal(new int[] { + 5000, + 0, + 0, + 0}); + this.ud_TimeoutMs.ValueChanged += new System.EventHandler(this.ud_TimeoutMs_ValueChanged); + // + // label13 + // + this.label13.AutoSize = true; + this.label13.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label13.Location = new System.Drawing.Point(9, 278); + this.label13.Name = "label13"; + this.label13.Size = new System.Drawing.Size(70, 13); + this.label13.TabIndex = 27; + this.label13.Text = "Timeout [ms]:"; + // + // ud_PollMs + // + this.ud_PollMs.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.ud_PollMs.Increment = new decimal(new int[] { + 100, + 0, + 0, + 0}); + this.ud_PollMs.Location = new System.Drawing.Point(125, 250); + this.ud_PollMs.Maximum = new decimal(new int[] { + 10000, + 0, + 0, + 0}); + this.ud_PollMs.Minimum = new decimal(new int[] { + 100, + 0, + 0, + 0}); + this.ud_PollMs.Name = "ud_PollMs"; + this.ud_PollMs.Size = new System.Drawing.Size(69, 20); + this.ud_PollMs.TabIndex = 8; + this.ud_PollMs.Value = new decimal(new int[] { + 500, + 0, + 0, + 0}); + this.ud_PollMs.ValueChanged += new System.EventHandler(this.ud_PollMs_ValueChanged); + // + // label12 + // + this.label12.AutoSize = true; + this.label12.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label12.Location = new System.Drawing.Point(9, 252); + this.label12.Name = "label12"; + this.label12.Size = new System.Drawing.Size(64, 13); + this.label12.TabIndex = 25; + this.label12.Text = "Poll Int [ms]:"; + // + // label11 + // + this.label11.AutoSize = true; + this.label11.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label11.Location = new System.Drawing.Point(9, 225); + this.label11.Name = "label11"; + this.label11.Size = new System.Drawing.Size(33, 13); + this.label11.TabIndex = 23; + this.label11.Text = "DTR:"; + // + // cb_DTR + // + this.cb_DTR.DisplayMember = "Text"; + this.cb_DTR.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cb_DTR.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_DTR.FormattingEnabled = true; + this.cb_DTR.Location = new System.Drawing.Point(87, 222); + this.cb_DTR.Name = "cb_DTR"; + this.cb_DTR.Size = new System.Drawing.Size(107, 21); + this.cb_DTR.TabIndex = 22; + this.cb_DTR.ValueMember = "Value"; + this.cb_DTR.SelectedIndexChanged += new System.EventHandler(this.cb_DTR_SelectedIndexChanged); + // + // label10 + // + this.label10.AutoSize = true; + this.label10.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label10.Location = new System.Drawing.Point(9, 198); + this.label10.Name = "label10"; + this.label10.Size = new System.Drawing.Size(32, 13); + this.label10.TabIndex = 21; + this.label10.Text = "RTS:"; + // + // cb_RTS + // + this.cb_RTS.DisplayMember = "Text"; + this.cb_RTS.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cb_RTS.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_RTS.FormattingEnabled = true; + this.cb_RTS.Location = new System.Drawing.Point(87, 195); + this.cb_RTS.Name = "cb_RTS"; + this.cb_RTS.Size = new System.Drawing.Size(107, 21); + this.cb_RTS.TabIndex = 20; + this.cb_RTS.ValueMember = "Value"; + this.cb_RTS.SelectedIndexChanged += new System.EventHandler(this.cb_RTS_SelectedIndexChanged); + // + // label9 + // + this.label9.AutoSize = true; + this.label9.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label9.Location = new System.Drawing.Point(9, 171); + this.label9.Name = "label9"; + this.label9.Size = new System.Drawing.Size(48, 13); + this.label9.TabIndex = 19; + this.label9.Text = "Stopbits:"; + // + // cb_Stopbits + // + this.cb_Stopbits.DisplayMember = "Text"; + this.cb_Stopbits.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cb_Stopbits.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Stopbits.FormattingEnabled = true; + this.cb_Stopbits.Location = new System.Drawing.Point(87, 168); + this.cb_Stopbits.Name = "cb_Stopbits"; + this.cb_Stopbits.Size = new System.Drawing.Size(107, 21); + this.cb_Stopbits.TabIndex = 18; + this.cb_Stopbits.ValueMember = "Value"; + this.cb_Stopbits.SelectedIndexChanged += new System.EventHandler(this.cb_Stopbits_SelectedIndexChanged); + // + // label8 + // + this.label8.AutoSize = true; + this.label8.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label8.Location = new System.Drawing.Point(9, 144); + this.label8.Name = "label8"; + this.label8.Size = new System.Drawing.Size(36, 13); + this.label8.TabIndex = 17; + this.label8.Text = "Parity:"; + // + // cb_Parity + // + this.cb_Parity.DisplayMember = "Text"; + this.cb_Parity.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cb_Parity.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Parity.FormattingEnabled = true; + this.cb_Parity.Location = new System.Drawing.Point(87, 141); + this.cb_Parity.Name = "cb_Parity"; + this.cb_Parity.Size = new System.Drawing.Size(107, 21); + this.cb_Parity.TabIndex = 16; + this.cb_Parity.ValueMember = "Value"; + this.cb_Parity.SelectedIndexChanged += new System.EventHandler(this.cb_Parity_SelectedIndexChanged); + // + // label7 + // + this.label7.AutoSize = true; + this.label7.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label7.Location = new System.Drawing.Point(9, 117); + this.label7.Name = "label7"; + this.label7.Size = new System.Drawing.Size(49, 13); + this.label7.TabIndex = 15; + this.label7.Text = "Databits:"; + // + // cb_Databits + // + this.cb_Databits.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cb_Databits.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Databits.FormattingEnabled = true; + this.cb_Databits.Location = new System.Drawing.Point(87, 114); + this.cb_Databits.Name = "cb_Databits"; + this.cb_Databits.Size = new System.Drawing.Size(107, 21); + this.cb_Databits.TabIndex = 14; + this.cb_Databits.SelectedIndexChanged += new System.EventHandler(this.cb_Databits_SelectedIndexChanged); + // + // label6 + // + this.label6.AutoSize = true; + this.label6.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label6.Location = new System.Drawing.Point(9, 90); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(53, 13); + this.label6.TabIndex = 13; + this.label6.Text = "Baudrate:"; + // + // cb_Baudrate + // + this.cb_Baudrate.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cb_Baudrate.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Baudrate.FormattingEnabled = true; + this.cb_Baudrate.Location = new System.Drawing.Point(87, 87); + this.cb_Baudrate.Name = "cb_Baudrate"; + this.cb_Baudrate.Size = new System.Drawing.Size(107, 21); + this.cb_Baudrate.TabIndex = 12; + this.cb_Baudrate.SelectedIndexChanged += new System.EventHandler(this.cb_Baudrate_SelectedIndexChanged); + // + // label5 + // + this.label5.AutoSize = true; + this.label5.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label5.Location = new System.Drawing.Point(9, 63); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(57, 13); + this.label5.TabIndex = 11; + this.label5.Text = "PortName:"; + // + // cb_PortName + // + this.cb_PortName.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cb_PortName.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_PortName.FormattingEnabled = true; + this.cb_PortName.Location = new System.Drawing.Point(87, 60); + this.cb_PortName.Name = "cb_PortName"; + this.cb_PortName.Size = new System.Drawing.Size(107, 21); + this.cb_PortName.TabIndex = 10; + this.cb_PortName.SelectedIndexChanged += new System.EventHandler(this.cb_PortName_SelectedIndexChanged); + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label4.Location = new System.Drawing.Point(9, 36); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(26, 13); + this.label4.TabIndex = 9; + this.label4.Text = "Rig:"; + // + // cb_Rig + // + this.cb_Rig.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cb_Rig.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Rig.FormattingEnabled = true; + this.cb_Rig.Location = new System.Drawing.Point(87, 33); + this.cb_Rig.Name = "cb_Rig"; + this.cb_Rig.Size = new System.Drawing.Size(107, 21); + this.cb_Rig.TabIndex = 8; + this.cb_Rig.SelectedIndexChanged += new System.EventHandler(this.cb_Rig_SelectedIndexChanged); + // + // gb_RigSettingsFolder + // + this.gb_RigSettingsFolder.Controls.Add(this.btn_RigDefinitions_Folder); + this.gb_RigSettingsFolder.Controls.Add(this.tb_RigDefinitionsFolder); + this.gb_RigSettingsFolder.Dock = System.Windows.Forms.DockStyle.Top; + this.gb_RigSettingsFolder.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic))), System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.gb_RigSettingsFolder.Location = new System.Drawing.Point(0, 24); + this.gb_RigSettingsFolder.Name = "gb_RigSettingsFolder"; + this.gb_RigSettingsFolder.Size = new System.Drawing.Size(1008, 53); + this.gb_RigSettingsFolder.TabIndex = 11; + this.gb_RigSettingsFolder.TabStop = false; + this.gb_RigSettingsFolder.Text = "Rig Definitions Folder"; + // + // btn_RigDefinitions_Folder + // + this.btn_RigDefinitions_Folder.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btn_RigDefinitions_Folder.Location = new System.Drawing.Point(915, 18); + this.btn_RigDefinitions_Folder.Name = "btn_RigDefinitions_Folder"; + this.btn_RigDefinitions_Folder.Size = new System.Drawing.Size(75, 23); + this.btn_RigDefinitions_Folder.TabIndex = 2; + this.btn_RigDefinitions_Folder.Text = "Select"; + this.btn_RigDefinitions_Folder.UseVisualStyleBackColor = true; + this.btn_RigDefinitions_Folder.Click += new System.EventHandler(this.btn_Configurations_Folder_Click); + // + // tb_RigDefinitionsFolder + // + this.tb_RigDefinitionsFolder.BackColor = System.Drawing.Color.AntiqueWhite; + this.tb_RigDefinitionsFolder.DataBindings.Add(new System.Windows.Forms.Binding("Text", global::CATCheck.Properties.Settings.Default, "RigDefinitionsFolder", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.tb_RigDefinitionsFolder.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_RigDefinitionsFolder.Location = new System.Drawing.Point(12, 19); + this.tb_RigDefinitionsFolder.Name = "tb_RigDefinitionsFolder"; + this.tb_RigDefinitionsFolder.ReadOnly = true; + this.tb_RigDefinitionsFolder.Size = new System.Drawing.Size(897, 20); + this.tb_RigDefinitionsFolder.TabIndex = 1; + this.tb_RigDefinitionsFolder.Text = global::CATCheck.Properties.Settings.Default.RigDefinitionsFolder; + // + // ti_Main + // + this.ti_Main.Enabled = true; + this.ti_Main.Tick += new System.EventHandler(this.ti_Main_Tick); + // + // gb_COM + // + this.gb_COM.Controls.Add(this.lbl_DSR); + this.gb_COM.Controls.Add(this.lbl_CTS); + this.gb_COM.Controls.Add(this.lbl_DTR); + this.gb_COM.Controls.Add(this.lbl_RTS); + this.gb_COM.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic))), System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.gb_COM.Location = new System.Drawing.Point(944, 77); + this.gb_COM.Name = "gb_COM"; + this.gb_COM.Size = new System.Drawing.Size(64, 114); + this.gb_COM.TabIndex = 15; + this.gb_COM.TabStop = false; + this.gb_COM.Text = "COM"; + // + // lbl_RTS + // + this.lbl_RTS.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lbl_RTS.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lbl_RTS.Location = new System.Drawing.Point(10, 21); + this.lbl_RTS.Name = "lbl_RTS"; + this.lbl_RTS.Size = new System.Drawing.Size(41, 19); + this.lbl_RTS.TabIndex = 0; + this.lbl_RTS.Text = "RTS"; + this.lbl_RTS.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.lbl_RTS.Click += new System.EventHandler(this.lbl_RTS_Click); + // + // lbl_DTR + // + this.lbl_DTR.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lbl_DTR.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lbl_DTR.Location = new System.Drawing.Point(10, 42); + this.lbl_DTR.Name = "lbl_DTR"; + this.lbl_DTR.Size = new System.Drawing.Size(41, 19); + this.lbl_DTR.TabIndex = 1; + this.lbl_DTR.Text = "DTR"; + this.lbl_DTR.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.lbl_DTR.Click += new System.EventHandler(this.lbl_DTR_Click); + // + // lbl_CTS + // + this.lbl_CTS.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lbl_CTS.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lbl_CTS.Location = new System.Drawing.Point(10, 63); + this.lbl_CTS.Name = "lbl_CTS"; + this.lbl_CTS.Size = new System.Drawing.Size(41, 19); + this.lbl_CTS.TabIndex = 2; + this.lbl_CTS.Text = "CTS"; + this.lbl_CTS.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // lbl_DSR + // + this.lbl_DSR.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lbl_DSR.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lbl_DSR.Location = new System.Drawing.Point(10, 84); + this.lbl_DSR.Name = "lbl_DSR"; + this.lbl_DSR.Size = new System.Drawing.Size(41, 19); + this.lbl_DSR.TabIndex = 3; + this.lbl_DSR.Text = "DSR"; + this.lbl_DSR.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // MainDlg + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(1008, 561); + this.Controls.Add(this.gb_COM); + this.Controls.Add(this.gb_Log); + this.Controls.Add(this.gb_RigControl); + this.Controls.Add(this.gb_RigSettings); + this.Controls.Add(this.gb_RigSettingsFolder); + this.Controls.Add(this.mnu_Main); + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.Name = "MainDlg"; + this.Text = "CAT- Checker Vxxx (c) 2012 DL2ALF"; + this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.MainDlg_FormClosing); + this.Load += new System.EventHandler(this.MainDlg_Load); + this.mnu_Main.ResumeLayout(false); + this.mnu_Main.PerformLayout(); + this.gb_Log.ResumeLayout(false); + this.gb_Log.PerformLayout(); + this.gb_RigControl.ResumeLayout(false); + this.gb_RigControl.PerformLayout(); + this.gb_RigSettings.ResumeLayout(false); + this.gb_RigSettings.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.ud_TimeoutMs)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.ud_PollMs)).EndInit(); + this.gb_RigSettingsFolder.ResumeLayout(false); + this.gb_RigSettingsFolder.PerformLayout(); + this.gb_COM.ResumeLayout(false); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + private System.Windows.Forms.ToolTip tt_Set; + private System.Windows.Forms.MenuStrip mnu_Main; + private System.Windows.Forms.GroupBox gb_Log; + private System.Windows.Forms.Button btn_Log_Show; + private System.Windows.Forms.Button btn_Log_Clear; + private System.Windows.Forms.Button btn_Log_StartStop; + private System.Windows.Forms.GroupBox gb_RigControl; + private System.Windows.Forms.Label lbl_FreqB; + private System.Windows.Forms.Label lbl_FreqA; + private System.Windows.Forms.Label lbl_Freq; + private System.Windows.Forms.Label lbl_RIT_OFF; + private System.Windows.Forms.Label lbl_RIT_ON; + private System.Windows.Forms.Label lbl_SPLIT_OFF; + private System.Windows.Forms.Label lbl_SPLIT_ON; + private System.Windows.Forms.Label lbl_XIT_OFF; + private System.Windows.Forms.Label lbl_XIT_ON; + private System.Windows.Forms.Label lbl_VFO_Swap; + private System.Windows.Forms.Label lbl_VFO_Equal; + private System.Windows.Forms.Label lbl_VFO_B; + private System.Windows.Forms.Label lbl_VFO_A; + private System.Windows.Forms.Label lbl_VFO_AB; + private System.Windows.Forms.Label lbl_VFO_AA; + private System.Windows.Forms.Label lbl_VFO_BB; + private System.Windows.Forms.Label lbl_VFO_BA; + private System.Windows.Forms.Label lbl_TX; + private System.Windows.Forms.Label lbl_RX; + private System.Windows.Forms.Label lbl_FM; + private System.Windows.Forms.Label lbl_AM; + private System.Windows.Forms.Label lbl_DIG_L; + private System.Windows.Forms.Label lbl_DIG_U; + private System.Windows.Forms.Label lbl_CW_U; + private System.Windows.Forms.Label lbl_CW_L; + private System.Windows.Forms.Label lbl_SSB_L; + private System.Windows.Forms.Label lbl_SSB_U; + private System.Windows.Forms.TextBox tb_Freq; + private System.Windows.Forms.Label label14; + private System.Windows.Forms.TextBox tb_Status; + private System.Windows.Forms.TextBox tb_FreqA; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.TextBox tb_FreqB; + private System.Windows.Forms.GroupBox gb_RigSettings; + private System.Windows.Forms.Button btn_Restart; + private System.Windows.Forms.NumericUpDown ud_TimeoutMs; + private System.Windows.Forms.Label label13; + private System.Windows.Forms.NumericUpDown ud_PollMs; + private System.Windows.Forms.Label label12; + private System.Windows.Forms.Label label11; + private System.Windows.Forms.ComboBox cb_DTR; + private System.Windows.Forms.Label label10; + private System.Windows.Forms.ComboBox cb_RTS; + private System.Windows.Forms.Label label9; + private System.Windows.Forms.ComboBox cb_Stopbits; + private System.Windows.Forms.Label label8; + private System.Windows.Forms.ComboBox cb_Parity; + private System.Windows.Forms.Label label7; + private System.Windows.Forms.ComboBox cb_Databits; + private System.Windows.Forms.Label label6; + private System.Windows.Forms.ComboBox cb_Baudrate; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.ComboBox cb_PortName; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.ComboBox cb_Rig; + private System.Windows.Forms.GroupBox gb_RigSettingsFolder; + private System.Windows.Forms.Button btn_RigDefinitions_Folder; + private System.Windows.Forms.TextBox tb_RigDefinitionsFolder; + private System.Windows.Forms.ToolStripMenuItem mni_Exit; + private System.Windows.Forms.ToolStripMenuItem mni_Commands; + private System.Windows.Forms.ToolStripMenuItem mni_About; + private System.Windows.Forms.Timer ti_Main; + private System.Windows.Forms.ImageList il_MessageStates; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.ComboBox cb_LogVerbosity; + private System.Windows.Forms.Label lbl_Queue; + private System.Windows.Forms.Label label15; + private System.Windows.Forms.ListView lv_Messages; + private System.Windows.Forms.ColumnHeader ch_LogLevel; + private System.Windows.Forms.ColumnHeader ch_TimeStamp; + private System.Windows.Forms.ColumnHeader ch_Message; + private System.Windows.Forms.Label lbl_RIT_OFS; + private System.Windows.Forms.ToolStripMenuItem mni_ClearRIT; + private System.Windows.Forms.ToolStripMenuItem mni_FrequencyOfTone; + private System.Windows.Forms.GroupBox gb_COM; + private System.Windows.Forms.Label lbl_DSR; + private System.Windows.Forms.Label lbl_CTS; + private System.Windows.Forms.Label lbl_DTR; + private System.Windows.Forms.Label lbl_RTS; + } +} + diff --git a/CATCheck/MainDlg.cs b/CATCheck/MainDlg.cs new file mode 100644 index 0000000..eb192ca --- /dev/null +++ b/CATCheck/MainDlg.cs @@ -0,0 +1,1305 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Configuration; +using System.Data; +using System.Diagnostics; +using System.Drawing; +using System.IO; +using System.Linq; +using System.Net; +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Security.Cryptography; +using System.Text; +using System.Threading; +using System.Windows.Forms; +using System.Xml; +using System.Xml.Serialization; +using ScoutBase.Core; +using ScoutBase.CAT; + +namespace CATCheck +{ + public partial class MainDlg : Form + { + + private bool Loaded = false; + private bool Logging = true; + + private RigParam LastMode = RigParam.pmNone; + private RigParam LastTx = RigParam.pmNone; + private RigParam LastVfo = RigParam.pmNone; + private RigParam LastSplit = RigParam.pmNone; + private RigParam LastXit = RigParam.pmNone; + private RigParam LastRit = RigParam.pmNone; + + private long LastRitOffset = 0; + + Rig Rig1 = null; + + private Queue MsgQueue = new Queue(); + + public MainDlg() + { + InitializeComponent(); + + this.Text = this.Text.Replace("xxx", Application.ProductVersion); + // set OmniRig rig settings directory + if (String.IsNullOrEmpty(Properties.Settings.Default.RigDefinitionsFolder)) + { + Properties.Settings.Default.RigDefinitionsFolder = Path.Combine(Application.StartupPath, "Rigs"); + } + OmniRig.RigDefinitionsDirectory = Properties.Settings.Default.RigDefinitionsFolder; + + // start timer + ti_Main.Start(); + + // subscribe to events + OmniRig.LogNotify += OmniRig_LogNotify; + OmniRig.StatusChange += OmniRig_ComNotifyStatus; + OmniRig.ParamsChange += OmniRig_ComNotifyParams; + + } + + private void MainDlg_Load(object sender, EventArgs e) + { + + // load user settings + LoadUserSettings(); + + // set the "Loaded" flag and start rig + Loaded = true; + + Rig1 = new Rig(); + RestartRig(); + } + + + private void MainDlg_FormClosing(object sender, FormClosingEventArgs e) + { + SaveUserSettings(); + } + + #region User Settings + + private void LoadUserSettings() + { + + Console.WriteLine("Loading user settings."); + + + // generate empty RigSettings object if null + if (Properties.Settings.Default.RigSettings == null) + { + Console.WriteLine("Creating empty rig settings..."); + Properties.Settings.Default.RigSettings = new RigSettings(); + } + + // initially fill dropdowns + cb_Rig_DropDown(this, null); + cb_PortName_DropDown(this, null); + cb_Baudrate_DropDown(this, null); + cb_Databits_DropDown(this, null); + cb_Parity_DropDown(this, null); + cb_Stopbits_DropDown(this, null); + cb_RTS_DropDown(this, null); + cb_DTR_DropDown(this, null); + + // try to select settings + try + { + cb_Rig.DataSource = OmniRig.SupportedRigs(); + cb_Rig.SelectedItem = Properties.Settings.Default.RigSettings.RigType; + } + catch (Exception ex) + { + // do nothing if fails + OmniRig_LogNotify(new LogNotifyEventArgs(DateTime.UtcNow, LOGLEVEL.llError, "Error while setting up rig dropdown: " + ex.Message)); + } + try + { + cb_PortName.SelectedItem = Properties.Settings.Default.RigSettings.PortName; + } + catch (Exception ex) + { + // do nothing if fails + OmniRig_LogNotify(new LogNotifyEventArgs(DateTime.UtcNow, LOGLEVEL.llError, "Error while setting up port dropdown: " + ex.Message)); + } + try + { + cb_Baudrate.SelectedItem = Properties.Settings.Default.RigSettings.Baudrate.ToString(); + } + catch (Exception ex) + { + // do nothing if fails + OmniRig_LogNotify(new LogNotifyEventArgs(DateTime.UtcNow, LOGLEVEL.llError, "Error while setting up baudrate dropdown: " + ex.Message)); + } + try + { + cb_Databits.SelectedItem = Properties.Settings.Default.RigSettings.DataBits.ToString(); + } + catch (Exception ex) + { + // do nothing if fails + OmniRig_LogNotify(new LogNotifyEventArgs(DateTime.UtcNow, LOGLEVEL.llError, "Error while setting up databits dropdown: " + ex.Message)); + } + try + { + Helpers.BindToEnum(cb_Parity); + cb_Parity.SelectedValue = (int)Properties.Settings.Default.RigSettings.Parity; + } + catch (Exception ex) + { + // do nothing if fails + OmniRig_LogNotify(new LogNotifyEventArgs(DateTime.UtcNow, LOGLEVEL.llError, "Error while setting up parity dropdown: " + ex.Message)); + } + try + { + Helpers.BindToEnum(cb_Stopbits); + cb_Stopbits.SelectedValue = (int)Properties.Settings.Default.RigSettings.StopBits; + } + catch (Exception ex) + { + // do nothing if fails + OmniRig_LogNotify(new LogNotifyEventArgs(DateTime.UtcNow, LOGLEVEL.llError, "Error while setting up stopbits dropdown: " + ex.Message)); + } + try + { + Helpers.BindToEnum(cb_RTS); + cb_RTS.SelectedValue = (int)Properties.Settings.Default.RigSettings.RtsMode; + } + catch (Exception ex) + { + // do nothing if fails + OmniRig_LogNotify(new LogNotifyEventArgs(DateTime.UtcNow, LOGLEVEL.llError, "Error while setting up rts mode dropdown: " + ex.Message)); + } + try + { + Helpers.BindToEnum(cb_DTR); + cb_DTR.SelectedValue = (int)Properties.Settings.Default.RigSettings.DtrMode; + } + catch (Exception ex) + { + // do nothing if fails + OmniRig_LogNotify(new LogNotifyEventArgs(DateTime.UtcNow, LOGLEVEL.llError, "Error while setting up dtr mode dropdown: " + ex.Message)); + } + try + { + Helpers.BindToEnum(cb_LogVerbosity); + cb_LogVerbosity.SelectedValue = (int)Properties.Settings.Default.LogVerbosity; + } + catch (Exception ex) + { + // do nothing if fails + OmniRig_LogNotify(new LogNotifyEventArgs(DateTime.UtcNow, LOGLEVEL.llError, "Error while setting up log verbosity dropdown: " + ex.Message)); + } + try + { + ud_PollMs.Value = Properties.Settings.Default.RigSettings.PollMs; + } + catch (Exception ex) + { + // do nothing if fails + OmniRig_LogNotify(new LogNotifyEventArgs(DateTime.UtcNow, LOGLEVEL.llError, "Error while setting up PollMs updown: " + ex.Message)); + } + try + { + ud_TimeoutMs.Value = Properties.Settings.Default.RigSettings.TimeoutMs; + } + catch (Exception ex) + { + // do nothing if fails + OmniRig_LogNotify(new LogNotifyEventArgs(DateTime.UtcNow, LOGLEVEL.llError, "Error while setting up PollMs updown: " + ex.Message)); + } + + Console.WriteLine("Loading user settings finished."); + + } + + private string GetUserSettingsPath() + { + if (!SupportFunctions.IsMono) + return ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal).FilePath; + // try to build a path to user specific settings under Linux/Mono + string usersettingspath = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData); + usersettingspath = Path.Combine(usersettingspath, Application.CompanyName, AppDomain.CurrentDomain.FriendlyName); + usersettingspath += "_Url_"; + Assembly assembly = Assembly.GetEntryAssembly(); + if (assembly == null) + { + assembly = Assembly.GetCallingAssembly(); + } + byte[] pkt = assembly.GetName().GetPublicKeyToken(); + byte[] hash = SHA1.Create().ComputeHash((pkt != null && pkt.Length > 0) ? pkt : Encoding.UTF8.GetBytes(assembly.EscapedCodeBase)); + StringBuilder evidence_string = new StringBuilder(); + byte[] array = hash; + for (int i = 0; i < array.Length; i++) + { + byte b = array[i]; + evidence_string.AppendFormat("{0:x2}", b); + } + usersettingspath += evidence_string.ToString(); + if (!Directory.Exists(usersettingspath)) + { + Directory.CreateDirectory(usersettingspath); + } + usersettingspath = Path.Combine(usersettingspath, "user.config"); + return usersettingspath; + } + + private XmlElement CreateUserSection(XmlDocument doc, SettingsBase settings) + { + XmlElement usersection = doc.CreateElement(string.Empty, "section", string.Empty); + XmlAttribute sectionname = doc.CreateAttribute(string.Empty, "name", string.Empty); + sectionname.Value = settings.GetType().FullName; + usersection.Attributes.Append(sectionname); + XmlAttribute sectiontype = doc.CreateAttribute(string.Empty, "type", string.Empty); + Assembly assembly = Assembly.GetAssembly(typeof(System.Configuration.ClientSettingsSection)); + // sectiontype.Value = "System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; + sectiontype.Value = typeof(System.Configuration.ClientSettingsSection).FullName + ", " + assembly.FullName; + usersection.Attributes.Append(sectiontype); + XmlAttribute sectionallowexedefinition = doc.CreateAttribute(string.Empty, "allowExeDefinition", string.Empty); + sectionallowexedefinition.Value = "MachineToLocalUser"; + usersection.Attributes.Append(sectionallowexedefinition); + XmlAttribute sectionrequirepermission = doc.CreateAttribute(string.Empty, "requirePermission", string.Empty); + sectionrequirepermission.Value = "false"; + usersection.Attributes.Append(sectionrequirepermission); + return usersection; + } + + private XmlElement SerializeSettings(XmlDocument doc, SettingsBase settings) + { + XmlElement properties = doc.CreateElement(string.Empty, settings.ToString(), string.Empty); + foreach (SettingsPropertyValue p in settings.PropertyValues) + { + if ((p != null) && (p.Name != null) && (p.PropertyValue != null) && !p.UsingDefaultValue) + { + // Console.WriteLine("Appending " + p.Name + " = " + p.PropertyValue.ToString()); + XmlElement setting = doc.CreateElement(string.Empty, "setting", string.Empty); + XmlAttribute name = doc.CreateAttribute(string.Empty, "name", string.Empty); + name.Value = p.Name.ToString(); + setting.Attributes.Append(name); + XmlAttribute serializeas = doc.CreateAttribute(string.Empty, "serializeAs", string.Empty); + serializeas.Value = p.Property.SerializeAs.ToString(); + setting.Attributes.Append(serializeas); + XmlElement value = doc.CreateElement(string.Empty, "value", string.Empty); + if (p.PropertyValue != null && p.Property.SerializeAs == SettingsSerializeAs.String) + { + XmlText text = doc.CreateTextNode(p.SerializedValue.ToString()); + value.AppendChild(text); + } + else + { + if (p.PropertyValue != null && p.Property.SerializeAs == SettingsSerializeAs.Xml) + { + MemoryStream ms = new MemoryStream(); + XmlWriter writer = XmlWriter.Create(ms, new XmlWriterSettings + { + NewLineOnAttributes = true, + OmitXmlDeclaration = true + }); + XmlSerializer serializer = new XmlSerializer(p.PropertyValue.GetType()); + serializer.Serialize(writer, p.PropertyValue); + byte[] text2 = new byte[ms.ToArray().Length - 3]; + Array.Copy(ms.ToArray(), 3, text2, 0, text2.Length); + XmlText xml = doc.CreateTextNode(Encoding.UTF8.GetString(text2.ToArray())); + value.AppendChild(xml); + value.InnerXml = WebUtility.HtmlDecode(value.InnerXml); + } + } + setting.AppendChild(value); + properties.AppendChild(setting); + } + } + return properties; + } + + + private void SaveUserSettings() + { + try + { + if (!SupportFunctions.IsMono) + { + Properties.Settings.Default.Save(); + return; + } + + // Linux/Mono hack to save all properties in a correct manner + Console.WriteLine("Saving user settings..."); + Console.WriteLine("Creating XML document..."); + XmlDocument doc = new XmlDocument(); + XmlDeclaration xmlDeclaration = doc.CreateXmlDeclaration("1.0", "UTF-8", null); + XmlElement root = doc.DocumentElement; + doc.InsertBefore(xmlDeclaration, root); + XmlElement configuration = doc.CreateElement(string.Empty, "configuration", string.Empty); + doc.AppendChild(configuration); + XmlElement configsections = doc.CreateElement(string.Empty, "configSections", string.Empty); + configuration.AppendChild(configsections); + XmlElement usersettingsgroup = doc.CreateElement(string.Empty, "sectionGroup", string.Empty); + XmlAttribute usersettingsname = doc.CreateAttribute(string.Empty, "name", string.Empty); + usersettingsname.Value = "userSettings"; + usersettingsgroup.Attributes.Append(usersettingsname); + usersettingsgroup.AppendChild(CreateUserSection(doc, ScoutBase.CAT.Properties.Settings.Default)); + configsections.AppendChild(usersettingsgroup); + XmlElement usersettings = doc.CreateElement(string.Empty, "userSettings", string.Empty); + configuration.AppendChild(usersettings); + Console.WriteLine("Writing user settings..."); + // append AirScout.CAT properties + Console.WriteLine("Appending AirScout.CAT.Settings.Default node..."); + usersettings.AppendChild(SerializeSettings(doc, ScoutBase.CAT.Properties.Settings.Default)); + // append properties + Console.WriteLine("Appending Properties.Settings.Default node..."); + usersettings.AppendChild(SerializeSettings(doc, Properties.Settings.Default)); + doc.Save(GetUserSettingsPath()); + Console.WriteLine("Saving user settings finished."); + } + catch (Exception ex) + { + Console.WriteLine("Unable to save settings: " + ex.ToString()); + } + } + + #endregion + + private void cb_Rig_DropDown(object sender, EventArgs e) + { + } + + private void cb_Rig_SelectedIndexChanged(object sender, EventArgs e) + { + // do nothing while loading + if (!Loaded) + return; + + try + { + Console.WriteLine("RigType changed to : " + (string)cb_Rig.SelectedItem); + Properties.Settings.Default.RigSettings.RigType = (string)cb_Rig.SelectedItem; + SaveUserSettings(); + + //restart rig + RestartRig(); + } + catch + { + // do nothing if fails + } + } + + private void cb_PortName_DropDown(object sender, EventArgs e) + { + cb_PortName.Items.Clear(); + + foreach (string s in System.IO.Ports.SerialPort.GetPortNames()) + { + cb_PortName.Items.Add(s); + } + } + + private void cb_PortName_SelectedIndexChanged(object sender, EventArgs e) + { + // do nothing while loading + if (!Loaded) + return; + + try + { + Console.WriteLine("PortName changed to : " + (string)cb_PortName.SelectedItem); + Properties.Settings.Default.RigSettings.PortName = (string)cb_PortName.SelectedItem; + SaveUserSettings(); + + //restart rig + RestartRig(); + } + catch + { + // do nothing if fails + } + } + + private void cb_Baudrate_DropDown(object sender, EventArgs e) + { + cb_Baudrate.Items.Clear(); + string[] baudrates = new string[] { "110", "300", "600", "1200", "2400", "4800", "9600", "14400", "19200", "38400", "56000", "57600", "115200", "128000", "256000"}; + cb_Baudrate.Items.AddRange(baudrates); + } + + private void cb_Baudrate_SelectedIndexChanged(object sender, EventArgs e) + { + // do nothing while loading + if (!Loaded) + return; + + try + { + Properties.Settings.Default.RigSettings.Baudrate = System.Convert.ToInt32(cb_Baudrate.SelectedItem); + SaveUserSettings(); + + //restart rig + RestartRig(); + } + catch + { + // do nothing if fails + } + } + + private void cb_Databits_DropDown(object sender, EventArgs e) + { + cb_Databits.Items.Clear(); + string[] databits = new string[] { "5", "6", "7", "8"}; + cb_Databits.Items.AddRange(databits); + } + + private void cb_Databits_SelectedIndexChanged(object sender, EventArgs e) + { + try + { + Properties.Settings.Default.RigSettings.DataBits = System.Convert.ToInt32(cb_Databits.SelectedItem); + SaveUserSettings(); + + //restart rig + RestartRig(); + } + catch + { + // do nothing if fails + } + } + + private void cb_Parity_DropDown(object sender, EventArgs e) + { + } + + private void cb_Parity_SelectedIndexChanged(object sender, EventArgs e) + { + // do nothing while loading + if (!Loaded) + return; + + try + { + if (cb_Parity.SelectedValue != null) + { + Properties.Settings.Default.RigSettings.Parity = (Parity)cb_Parity.SelectedValue; + SaveUserSettings(); + //restart rig + RestartRig(); + } + } + catch + { + // do nothing if fails + } + } + + private void cb_Stopbits_DropDown(object sender, EventArgs e) + { + } + + private void cb_Stopbits_SelectedIndexChanged(object sender, EventArgs e) + { + // do nothing while loading + if (!Loaded) + return; + + try + { + if (cb_Stopbits.SelectedValue != null) + { + Properties.Settings.Default.RigSettings.StopBits = (StopBits)cb_Stopbits.SelectedValue; + SaveUserSettings(); + //restart rig + RestartRig(); + } + } + catch + { + // do nothing if fails + } + } + + private void cb_RTS_DropDown(object sender, EventArgs e) + { + } + + private void cb_RTS_SelectedIndexChanged(object sender, EventArgs e) + { + // do nothing while loading + if (!Loaded) + return; + + try + { + if (cb_RTS.SelectedValue != null) + { + Properties.Settings.Default.RigSettings.RtsMode = (FlowControl)cb_RTS.SelectedValue; + SaveUserSettings(); + //restart rig + RestartRig(); + } + } + catch + { + // do nothing if fails + } + } + + private void cb_DTR_DropDown(object sender, EventArgs e) + { + } + + private void cb_DTR_SelectedIndexChanged(object sender, EventArgs e) + { + // do nothing while loading + if (!Loaded) + return; + + try + { + if (cb_DTR.SelectedValue != null) + { + Properties.Settings.Default.RigSettings.DtrMode = (FlowControl)cb_DTR.SelectedValue; + SaveUserSettings(); + //restart rig + RestartRig(); + } + } + catch + { + // do nothing if fails + } + } + + private void cb_LogVerbosity_SelectedIndexChanged(object sender, EventArgs e) + { + // do nothing while loading + if (!Loaded) + return; + + try + { + if (cb_LogVerbosity != null) + { + Properties.Settings.Default.LogVerbosity = (LOGLEVEL)cb_LogVerbosity.SelectedValue; + SaveUserSettings(); + } + } + catch + { + // do nothing if fails + } + } + + private void ud_PollMs_ValueChanged(object sender, EventArgs e) + { + if (!Loaded) + return; + + try + { + Properties.Settings.Default.RigSettings.PollMs = (int)ud_PollMs.Value; + } + catch + { + // do nothing if fails + } + + RestartRig(); + } + + private void ud_TimeoutMs_ValueChanged(object sender, EventArgs e) + { + if (!Loaded) + return; + + try + { + Properties.Settings.Default.RigSettings.TimeoutMs = (int)ud_TimeoutMs.Value; + } + catch + { + // do nothing if fails + } + RestartRig(); + } + + private void btn_Configurations_Folder_Click(object sender, EventArgs e) + { + FolderBrowserDialog Dlg = new FolderBrowserDialog(); + if (!String.IsNullOrEmpty(Properties.Settings.Default.RigDefinitionsFolder)) + { + Dlg.SelectedPath = Properties.Settings.Default.RigDefinitionsFolder; + } + + if (Dlg.ShowDialog() == DialogResult.OK) + { + if (Directory.Exists(Dlg.SelectedPath)) + { + Properties.Settings.Default.RigDefinitionsFolder = Dlg.SelectedPath; + SaveUserSettings(); + OmniRig.RigDefinitionsDirectory = Properties.Settings.Default.RigDefinitionsFolder; + } + else + { + MessageBox.Show("Selected path does not exist!", "Select Rig Definitions Folder"); + } + } + } + + private void btn_Restart_Click(object sender, EventArgs e) + { + RestartRig(); + } + + private void btn_Log_StartStop_Click(object sender, EventArgs e) + { + if (Logging) + { + btn_Log_StartStop.Text = "Start Log"; + Logging = false; + } + else + { + btn_Log_StartStop.Text = "Stop Log"; + Logging = true; + } + } + + private void btn_Log_Clear_Click(object sender, EventArgs e) + { + lv_Messages.Items.Clear(); + } + + private void btn_Log_Show_Click(object sender, EventArgs e) + { + // get log directory, set application dir if not specified + string dir = Path.GetDirectoryName(OmniRig.LogFileName); + if (String.IsNullOrEmpty(dir)) + { + dir = Application.StartupPath; + } + + Process.Start("explorer.exe", dir); + } + + private void lbl_Freq_Click(object sender, EventArgs e) + { + // return if param is not writeable + if (!Rig1.RigCommands.WriteableParams.Contains(RigParam.pmFreq)) + return; + SetFrequencyDlg Dlg = new SetFrequencyDlg(); + Dlg.ud_Frequency.Value = Rig1.Freq; + if (Dlg.ShowDialog() == DialogResult.OK) + { + Rig1.Freq = (int)Dlg.ud_Frequency.Value; + } + } + + private void lbl_FreqA_Click(object sender, EventArgs e) + { + // return if param is not writeable + if (!Rig1.RigCommands.WriteableParams.Contains(RigParam.pmFreqA)) + return; + SetFrequencyDlg Dlg = new SetFrequencyDlg(); + Dlg.ud_Frequency.Value = Rig1.FreqA; + if (Dlg.ShowDialog() == DialogResult.OK) + { + Rig1.FreqA = (int)Dlg.ud_Frequency.Value; + } + } + + private void lbl_FreqB_Click(object sender, EventArgs e) + { + // return if param is not writeable + if (!Rig1.RigCommands.WriteableParams.Contains(RigParam.pmFreqB)) + return; + SetFrequencyDlg Dlg = new SetFrequencyDlg(); + Dlg.ud_Frequency.Value = Rig1.FreqB; + if (Dlg.ShowDialog() == DialogResult.OK) + { + Rig1.FreqB = (int)Dlg.ud_Frequency.Value; + } + } + + private void lbl_CW_U_Click(object sender, EventArgs e) + { + Rig1.Mode = RigParam.pmCW_U; + } + + private void lbl_CW_L_Click(object sender, EventArgs e) + { + Rig1.Mode = RigParam.pmCW_L; + } + + private void lbl_SSB_U_Click(object sender, EventArgs e) + { + Rig1.Mode = RigParam.pmSSB_U; + } + + private void lbl_SSB_L_Click(object sender, EventArgs e) + { + Rig1.Mode = RigParam.pmSSB_L; + } + + private void lbl_DIG_U_Click(object sender, EventArgs e) + { + Rig1.Mode = RigParam.pmDIG_U; + } + + private void lbl_DIG_L_Click(object sender, EventArgs e) + { + Rig1.Mode = RigParam.pmDIG_L; + } + + private void lbl_AM_Click(object sender, EventArgs e) + { + Rig1.Mode = RigParam.pmAM; + } + + private void lbl_FM_Click(object sender, EventArgs e) + { + Rig1.Mode = RigParam.pmFM; + } + + private void lbl_TX_Click(object sender, EventArgs e) + { + Rig1.Tx = RigParam.pmTx; + } + + private void lbl_RX_Click(object sender, EventArgs e) + { + Rig1.Tx = RigParam.pmRx; + } + + private void lbl_VFO_AA_Click(object sender, EventArgs e) + { + Rig1.Vfo = RigParam.pmVfoAA; + } + + private void lbl_VFO_AB_Click(object sender, EventArgs e) + { + Rig1.Vfo = RigParam.pmVfoAB; + } + + private void lbl_VFO_BA_Click(object sender, EventArgs e) + { + Rig1.Vfo = RigParam.pmVfoBA; + } + + private void lbl_VFO_BB_Click(object sender, EventArgs e) + { + Rig1.Vfo = RigParam.pmVfoBB; + } + + private void lbl_VFO_A_Click(object sender, EventArgs e) + { + Rig1.Vfo = RigParam.pmVfoA; + } + + private void lbl_VFO_B_Click(object sender, EventArgs e) + { + Rig1.Vfo = RigParam.pmVfoB; + } + + private void lbl_VFO_Equal_Click(object sender, EventArgs e) + { + Rig1.Vfo = RigParam.pmVfoEqual; + } + + private void lbl_VFO_Swap_Click(object sender, EventArgs e) + { + Rig1.Vfo = RigParam.pmVfoSwap; + } + + private void lbl_SPLIT_ON_Click(object sender, EventArgs e) + { + Rig1.Split = RigParam.pmSplitOn; + } + + private void lbl_SPLIT_OFF_Click(object sender, EventArgs e) + { + Rig1.Split = RigParam.pmSplitOff; + } + + private void lbl_XIT_ON_Click(object sender, EventArgs e) + { + Rig1.Xit = RigParam.pmXitOn; + } + + private void lbl_XIT_OFF_Click(object sender, EventArgs e) + { + Rig1.Xit = RigParam.pmXitOff; + } + + private void lbl_RIT_ON_Click(object sender, EventArgs e) + { + Rig1.Rit = RigParam.pmRitOn; + } + + private void lbl_RIT_OFF_Click(object sender, EventArgs e) + { + Rig1.Rit = RigParam.pmRitOff; + } + + private void lbl_RIT_0_Click(object sender, EventArgs e) + { + Rig1.Rit = RigParam.pmRit0; + } + + private void lbl_RTS_Click(object sender, EventArgs e) + { + Rig1.PortBits.Rts = !Rig1.PortBits.Rts; + } + + private void lbl_DTR_Click(object sender, EventArgs e) + { + Rig1.PortBits.Dtr = !Rig1.PortBits.Dtr; + } + + + // special functions + private void mni_ClearRIT_Click(object sender, EventArgs e) + { + Rig1.ClearRit(); + } + + private void mni_FrequencyOfTone_Click(object sender, EventArgs e) + { + FrequencyOfToneDlg Dlg = new FrequencyOfToneDlg(Rig1); + Dlg.Show(); + } + + private void RestartRig() + { + // suppress restarts until fully loaded + if (Loaded) + { + // stop rig if running + if (Rig1.Enabled) + { + Rig1.Enabled = false; + } + + DateTime timeout = DateTime.Now.AddMilliseconds((int)Properties.Settings.Default.RigSettings.TimeoutMs); + do + { + Application.DoEvents(); + if (DateTime.Now > timeout) + { + OmniRig_LogNotify(new LogNotifyEventArgs(DateTime.UtcNow, LOGLEVEL.llError, "Cannot not stop rig!")); + break; + } + } + while (Rig1.Enabled); + + // clear log + if (File.Exists(OmniRig.LogFileName)) + { + try + { + File.Delete(OmniRig.LogFileName); + } + catch + { + // do nothing + } + } + // refresh settings + Rig1.RigNumber = 1; + Properties.Settings.Default.RigSettings.ToRig(Rig1); + // start rig + Rig1.Enabled = true; + + } + } + + private void OmniRig_LogNotify(LogNotifyEventArgs args) + { + if (!Logging) + return; + + // queue message + MsgQueue.Enqueue(args); + } + + private void OmniRig_ComNotifyParams(int rignumber, int Params) + { + + // set frequencies + tb_Freq.Text = Rig1.Freq.ToString(); + tb_FreqA.Text = Rig1.FreqA.ToString(); + tb_FreqB.Text = Rig1.FreqB.ToString(); + + // set mode + if (LastMode != Rig1.Mode) + { + SetLabelStyle(lbl_CW_L, RigParam.pmCW_L, false); + SetLabelStyle(lbl_CW_U, RigParam.pmCW_U, false); + SetLabelStyle(lbl_SSB_L, RigParam.pmSSB_L, false); + SetLabelStyle(lbl_SSB_U, RigParam.pmSSB_U, false); + SetLabelStyle(lbl_DIG_L, RigParam.pmDIG_L, false); + SetLabelStyle(lbl_DIG_U, RigParam.pmDIG_U, false); + SetLabelStyle(lbl_AM, RigParam.pmAM, false); + SetLabelStyle(lbl_FM, RigParam.pmFM, false); + + switch (Rig1.Mode) + { + case RigParam.pmCW_U: SetLabelStyle(lbl_CW_U, RigParam.pmCW_U, true, 1); break; + case RigParam.pmCW_L: SetLabelStyle(lbl_CW_L, RigParam.pmCW_L, true, 1); break; + case RigParam.pmSSB_U: SetLabelStyle(lbl_SSB_U, RigParam.pmSSB_U, true, 1);break; + case RigParam.pmSSB_L: SetLabelStyle(lbl_SSB_L, RigParam.pmSSB_L, true, 1); break; + case RigParam.pmDIG_U: SetLabelStyle(lbl_DIG_U, RigParam.pmDIG_U, true, 1); break; + case RigParam.pmDIG_L: SetLabelStyle(lbl_DIG_L, RigParam.pmDIG_L, true, 1); break; + case RigParam.pmAM: SetLabelStyle(lbl_AM, RigParam.pmAM, true, 1); break; + case RigParam.pmFM: SetLabelStyle(lbl_FM, RigParam.pmFM, true, 1); break; + } + + LastMode = Rig1.Mode; + } + + // set TX + if (LastTx != Rig1.Tx) + { + SetLabelStyle(lbl_RX, RigParam.pmRx, false); + SetLabelStyle(lbl_TX, RigParam.pmTx, false); + + switch (Rig1.Tx) + { + case RigParam.pmRx: SetLabelStyle(lbl_RX, RigParam.pmRx, true, 1); break; + case RigParam.pmTx: SetLabelStyle(lbl_TX, RigParam.pmTx, true, 2); break; + } + + LastTx = Rig1.Tx; + } + + // set VFO + if (LastVfo != Rig1.Vfo) + { + SetLabelStyle(lbl_VFO_AA, RigParam.pmVfoAA, false); + SetLabelStyle(lbl_VFO_AB, RigParam.pmVfoAB, false); + SetLabelStyle(lbl_VFO_BA, RigParam.pmVfoBA, false); + SetLabelStyle(lbl_VFO_BB, RigParam.pmVfoBB, false); + SetLabelStyle(lbl_VFO_A, RigParam.pmVfoA, false); + SetLabelStyle(lbl_VFO_B, RigParam.pmVfoB, false); + SetLabelStyle(lbl_VFO_Equal, RigParam.pmVfoEqual, false); + SetLabelStyle(lbl_VFO_Swap, RigParam.pmVfoSwap, false); + + switch (Rig1.Vfo) + { + case RigParam.pmVfoAA: SetLabelStyle(lbl_VFO_AA, RigParam.pmVfoAA, true, 1); break; + case RigParam.pmVfoAB: SetLabelStyle(lbl_VFO_AB, RigParam.pmVfoAB, true, 1); break; + case RigParam.pmVfoBA: SetLabelStyle(lbl_VFO_BA, RigParam.pmVfoBA, true, 1); break; + case RigParam.pmVfoBB: SetLabelStyle(lbl_VFO_BB, RigParam.pmVfoBB, true, 1); break; + case RigParam.pmVfoA: SetLabelStyle(lbl_VFO_A, RigParam.pmVfoA, true, 1); break; + case RigParam.pmVfoB: SetLabelStyle(lbl_VFO_B, RigParam.pmVfoB, true, 1); break; + case RigParam.pmVfoEqual: SetLabelStyle(lbl_VFO_Equal, RigParam.pmVfoEqual, true, 1); break; + case RigParam.pmVfoSwap: SetLabelStyle(lbl_VFO_Swap, RigParam.pmVfoSwap, true, 1); break; + } + + LastVfo = Rig1.Vfo; + } + + // set split + if (LastSplit != Rig1.Split) + { + SetLabelStyle(lbl_SPLIT_ON, RigParam.pmSplitOn, false); + SetLabelStyle(lbl_SPLIT_OFF, RigParam.pmSplitOff, false); + + switch (Rig1.Split) + { + case RigParam.pmSplitOn: SetLabelStyle(lbl_SPLIT_ON, RigParam.pmSplitOn, true, 1); break; + case RigParam.pmSplitOff: SetLabelStyle(lbl_SPLIT_OFF, RigParam.pmSplitOff, true, 1); break; + } + + LastSplit = Rig1.Split; + } + + // set xit + if (LastXit != Rig1.Xit) + { + SetLabelStyle(lbl_XIT_ON, RigParam.pmXitOn, false); + SetLabelStyle(lbl_XIT_OFF, RigParam.pmXitOff, false); + + switch (Rig1.Xit) + { + case RigParam.pmXitOn: SetLabelStyle(lbl_XIT_ON, RigParam.pmXitOn, true, 1); break; + case RigParam.pmXitOff: SetLabelStyle(lbl_XIT_OFF, RigParam.pmXitOff, true, 1); break; + } + + LastXit = Rig1.Xit; + } + + // set rit + if (LastRit != Rig1.Rit) + { + SetLabelStyle(lbl_RIT_ON, RigParam.pmRitOn, false); + SetLabelStyle(lbl_RIT_OFF, RigParam.pmRitOff, false); + + switch (Rig1.Rit) + { + case RigParam.pmRitOn: SetLabelStyle(lbl_RIT_ON, RigParam.pmRitOn, true, 1); break; + case RigParam.pmRitOff: SetLabelStyle(lbl_RIT_OFF, RigParam.pmRitOff, true, 1); break; + } + + LastRit = Rig1.Rit; + } + + // set rit offset + if (LastRitOffset != Rig1.RitOffset) + { + // show RIT offset in kHz + lbl_RIT_OFS.Text = (Rig1.RitOffset/1000.0).ToString("0.00"); + LastRitOffset = Rig1.RitOffset; + } + + + Application.DoEvents(); + } + + private void SetLabelStyle(Label label, RigParam param, bool on, int color = 1) + { + // calculate color + Color c = Color.Transparent; + switch (color) + { + case 1: c = Color.Chartreuse; break; + case 2: c = Color.LightSalmon; break; + default: c = Color.LightGray; break; + } + + // set colors according to read/write caps + if (!Rig1.RigCommands.ReadableParams.Contains(param) && !Rig1.RigCommands.WriteableParams.Contains(param)) + { + label.BorderStyle = BorderStyle.Fixed3D; + label.ForeColor = Color.Gray; + label.BackColor = Color.LightGray; + tt_Set.SetToolTip(label, "Not writeable!"); + } + else if (Rig1.RigCommands.ReadableParams.Contains(param) && !Rig1.RigCommands.WriteableParams.Contains(param)) + { + label.BorderStyle = BorderStyle.FixedSingle; + label.ForeColor = Color.Black; + label.BackColor = on ? c : Color.FloralWhite; + tt_Set.SetToolTip(label, "Not writeable!"); + } + else if (!Rig1.RigCommands.ReadableParams.Contains(param) && Rig1.RigCommands.WriteableParams.Contains(param)) + { + label.BorderStyle = BorderStyle.FixedSingle; + label.BackColor = Color.LightGray; + label.ForeColor = Color.Black; + tt_Set.SetToolTip(label, "Click to send command!"); + } + else if (Rig1.RigCommands.ReadableParams.Contains(param) && Rig1.RigCommands.WriteableParams.Contains(param)) + { + label.ForeColor = Color.Black; + label.BorderStyle = BorderStyle.FixedSingle; + label.BackColor = on ? c : Color.White; + tt_Set.SetToolTip(label, "Click to send command!"); + } + } + + private void SetTextBoxStyle(TextBox textbox, RigParam param, bool on, int color = 1) + { + // calculate color + Color c = Color.Transparent; + switch (color) + { + case 1: c = Color.Chartreuse; break; + case 2: c = Color.LightSalmon; break; + default: c = Color.LightGray; break; + } + + // set colors according to read/write caps + if (!Rig1.RigCommands.ReadableParams.Contains(param)) + { + textbox.BorderStyle = BorderStyle.Fixed3D; + textbox.ForeColor = Color.Gray; + textbox.BackColor = Color.LightGray; + } + else + { + textbox.BorderStyle = BorderStyle.FixedSingle; + textbox.ForeColor = c; + textbox.BackColor = Color.Gray; + tt_Set.SetToolTip(textbox, "Not writeable!"); + } + } + + private void OmniRig_ComNotifyStatus(int rignumber) + { + RigCtlStatus status = Rig1.Status; + + // reset all last values to None if offline + if (status != RigCtlStatus.stOnLine) + { + LastMode = RigParam.pmNone; + LastTx = RigParam.pmNone; + LastVfo = RigParam.pmNone; + LastSplit = RigParam.pmNone; + LastXit = RigParam.pmNone; + LastRit = RigParam.pmNone; + + LastRitOffset = 0; + + } + + // show status text in text box + tb_Status.Text = Rig1.StatusStr; + + // enable/disable elements according to rig capabilities + SetTextBoxStyle(tb_Freq, RigParam.pmFreq,false); + SetTextBoxStyle(tb_FreqA, RigParam.pmFreqA, false); + SetTextBoxStyle(tb_FreqB, RigParam.pmFreqB, false); + + SetLabelStyle(lbl_Freq, RigParam.pmFreq, false); + SetLabelStyle(lbl_FreqA, RigParam.pmFreqA, false); + SetLabelStyle(lbl_FreqB, RigParam.pmFreqB, false); + + // initially set all buttons + SetLabelStyle(lbl_CW_L, RigParam.pmCW_L, false); + SetLabelStyle(lbl_CW_U, RigParam.pmCW_U, false); + SetLabelStyle(lbl_SSB_L, RigParam.pmSSB_L, false); + SetLabelStyle(lbl_SSB_U, RigParam.pmSSB_U, false); + SetLabelStyle(lbl_DIG_L, RigParam.pmDIG_L, false); + SetLabelStyle(lbl_DIG_U, RigParam.pmDIG_U, false); + SetLabelStyle(lbl_AM, RigParam.pmAM, false); + SetLabelStyle(lbl_FM, RigParam.pmFM, false); + + SetLabelStyle(lbl_RX, RigParam.pmRx, false); + SetLabelStyle(lbl_TX, RigParam.pmTx, false); + + SetLabelStyle(lbl_VFO_AA, RigParam.pmVfoAA, false); + SetLabelStyle(lbl_VFO_AB, RigParam.pmVfoAB, false); + SetLabelStyle(lbl_VFO_BA, RigParam.pmVfoBA, false); + SetLabelStyle(lbl_VFO_BB, RigParam.pmVfoBB, false); + SetLabelStyle(lbl_VFO_A, RigParam.pmVfoA, false); + SetLabelStyle(lbl_VFO_B, RigParam.pmVfoB, false); + SetLabelStyle(lbl_VFO_Equal, RigParam.pmVfoEqual, false); + SetLabelStyle(lbl_VFO_Swap, RigParam.pmVfoSwap, false); + + SetLabelStyle(lbl_SPLIT_ON, RigParam.pmSplitOn, false); + SetLabelStyle(lbl_SPLIT_OFF, RigParam.pmSplitOff, false); + + SetLabelStyle(lbl_XIT_ON, RigParam.pmXitOn, false); + SetLabelStyle(lbl_XIT_OFF, RigParam.pmXitOff, false); + + SetLabelStyle(lbl_RIT_ON, RigParam.pmRitOn, false); + SetLabelStyle(lbl_RIT_OFF, RigParam.pmRitOff, false); + SetLabelStyle(lbl_RIT_OFS, RigParam.pmRitOffset, false); + + // show status lines + if (status != RigCtlStatus.stPortBusy) + { + lbl_RTS.BackColor = (Rig1.PortBits.Rts) ? Color.Red : Color.Chartreuse; + lbl_DTR.BackColor = (Rig1.PortBits.Dtr) ? Color.Red : Color.Chartreuse; + lbl_CTS.BackColor = (Rig1.PortBits.Cts) ? Color.Red : Color.Chartreuse; + lbl_DSR.BackColor = (Rig1.PortBits.Dsr) ? Color.Red : Color.Chartreuse; + tt_Set.SetToolTip(lbl_RTS, "Click to toggle!"); + tt_Set.SetToolTip(lbl_DTR, "Click to toggle!"); + } + else + { + lbl_RTS.BackColor = Color.LightGray; + lbl_DTR.BackColor = Color.LightGray; + lbl_CTS.BackColor = Color.LightGray; + lbl_DSR.BackColor = Color.LightGray; + tt_Set.SetToolTip(lbl_RTS, ""); + tt_Set.SetToolTip(lbl_DTR, ""); + } + } + + private void mni_Exit_Click(object sender, EventArgs e) + { + this.Close(); + } + + private void mni_About_Click(object sender, EventArgs e) + { + AboutDlg Dlg = new AboutDlg(); + Dlg.lbl_Version.Text = Dlg.lbl_Version.Text.Replace("x.x.x", Application.ProductVersion.ToString()); + Dlg.ShowDialog(); + } + + private void lv_Messages_DrawColumnHeader(object sender, DrawListViewColumnHeaderEventArgs e) + { + // Draw the header background + e.Graphics.FillRectangle(Brushes.LightCyan, e.Bounds); + + // Draw the header text + Font font = new Font("Courier New", 8, FontStyle.Bold); + StringFormat sf = new StringFormat(); + sf.Alignment = StringAlignment.Near; + sf.LineAlignment = StringAlignment.Center; + e.Graphics.DrawString(e.Header.Text, font, Brushes.Black, e.Bounds, sf); + } + + private void lv_Messages_DrawItem(object sender, DrawListViewItemEventArgs e) + { + e.DrawDefault = true; + } + + private void lv_Messages_DrawSubItem(object sender, DrawListViewSubItemEventArgs e) + { + e.DrawDefault = true; + } + + private void ti_Main_Tick(object sender, EventArgs e) + { + // stop timer + ti_Main.Stop(); + + try + { + // show msg queue count + lbl_Queue.Text = MsgQueue.Count.ToString(); + lbl_Queue.Refresh(); + + lock (MsgQueue) + { + while (MsgQueue.Count > 0) + { + // get message + LogNotifyEventArgs args = MsgQueue.Dequeue(); + + if (args.LogLevel >= Properties.Settings.Default.LogVerbosity) + { + lv_Messages.BeginUpdate(); + + // maintain size + while (lv_Messages.Items.Count > 100) + { + lv_Messages.Items.RemoveAt(0); + } + + // add new entry + ListViewItem item = new ListViewItem(); + item.ImageIndex = ((int)args.LogLevel) - 1; + item.SubItems.Add(args.TimeStamp.ToString("yyyy-MM-dd HH:mm:ss,fff")); + item.SubItems.Add(args.Message); + lv_Messages.Items.Add(item); + + lv_Messages.EndUpdate(); + + lv_Messages.Items[lv_Messages.Items.Count - 1].EnsureVisible(); + + // check for application events + Application.DoEvents(); + + } + } + } + } + catch (Exception ex) + { + Console.WriteLine("Error while adding message to list: " + ex.Message); + } + + // restart timer + ti_Main.Start(); + } + + } +} diff --git a/CATCheck/MainDlg.resx b/CATCheck/MainDlg.resx new file mode 100644 index 0000000..3e1730e --- /dev/null +++ b/CATCheck/MainDlg.resx @@ -0,0 +1,214 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + + 99, 17 + + + 299, 17 + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w + LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 + ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAACg + CwAAAk1TRnQBSQFMAgEBBAEAATABAAEwAQABEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo + AwABQAMAASADAAEBAQABCAYAAQgYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA + AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5 + AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA + AWYDAAGZAwABzAIAATMDAAIzAgABMwFmAgABMwGZAgABMwHMAgABMwH/AgABZgMAAWYBMwIAAmYCAAFm + AZkCAAFmAcwCAAFmAf8CAAGZAwABmQEzAgABmQFmAgACmQIAAZkBzAIAAZkB/wIAAcwDAAHMATMCAAHM + AWYCAAHMAZkCAALMAgABzAH/AgAB/wFmAgAB/wGZAgAB/wHMAQABMwH/AgAB/wEAATMBAAEzAQABZgEA + ATMBAAGZAQABMwEAAcwBAAEzAQAB/wEAAf8BMwIAAzMBAAIzAWYBAAIzAZkBAAIzAcwBAAIzAf8BAAEz + AWYCAAEzAWYBMwEAATMCZgEAATMBZgGZAQABMwFmAcwBAAEzAWYB/wEAATMBmQIAATMBmQEzAQABMwGZ + AWYBAAEzApkBAAEzAZkBzAEAATMBmQH/AQABMwHMAgABMwHMATMBAAEzAcwBZgEAATMBzAGZAQABMwLM + AQABMwHMAf8BAAEzAf8BMwEAATMB/wFmAQABMwH/AZkBAAEzAf8BzAEAATMC/wEAAWYDAAFmAQABMwEA + AWYBAAFmAQABZgEAAZkBAAFmAQABzAEAAWYBAAH/AQABZgEzAgABZgIzAQABZgEzAWYBAAFmATMBmQEA + AWYBMwHMAQABZgEzAf8BAAJmAgACZgEzAQADZgEAAmYBmQEAAmYBzAEAAWYBmQIAAWYBmQEzAQABZgGZ + AWYBAAFmApkBAAFmAZkBzAEAAWYBmQH/AQABZgHMAgABZgHMATMBAAFmAcwBmQEAAWYCzAEAAWYBzAH/ + AQABZgH/AgABZgH/ATMBAAFmAf8BmQEAAWYB/wHMAQABzAEAAf8BAAH/AQABzAEAApkCAAGZATMBmQEA + AZkBAAGZAQABmQEAAcwBAAGZAwABmQIzAQABmQEAAWYBAAGZATMBzAEAAZkBAAH/AQABmQFmAgABmQFm + ATMBAAGZATMBZgEAAZkBZgGZAQABmQFmAcwBAAGZATMB/wEAApkBMwEAApkBZgEAA5kBAAKZAcwBAAKZ + Af8BAAGZAcwCAAGZAcwBMwEAAWYBzAFmAQABmQHMAZkBAAGZAswBAAGZAcwB/wEAAZkB/wIAAZkB/wEz + AQABmQHMAWYBAAGZAf8BmQEAAZkB/wHMAQABmQL/AQABzAMAAZkBAAEzAQABzAEAAWYBAAHMAQABmQEA + AcwBAAHMAQABmQEzAgABzAIzAQABzAEzAWYBAAHMATMBmQEAAcwBMwHMAQABzAEzAf8BAAHMAWYCAAHM + AWYBMwEAAZkCZgEAAcwBZgGZAQABzAFmAcwBAAGZAWYB/wEAAcwBmQIAAcwBmQEzAQABzAGZAWYBAAHM + ApkBAAHMAZkBzAEAAcwBmQH/AQACzAIAAswBMwEAAswBZgEAAswBmQEAA8wBAALMAf8BAAHMAf8CAAHM + Af8BMwEAAZkB/wFmAQABzAH/AZkBAAHMAf8BzAEAAcwC/wEAAcwBAAEzAQAB/wEAAWYBAAH/AQABmQEA + AcwBMwIAAf8CMwEAAf8BMwFmAQAB/wEzAZkBAAH/ATMBzAEAAf8BMwH/AQAB/wFmAgAB/wFmATMBAAHM + AmYBAAH/AWYBmQEAAf8BZgHMAQABzAFmAf8BAAH/AZkCAAH/AZkBMwEAAf8BmQFmAQAB/wKZAQAB/wGZ + AcwBAAH/AZkB/wEAAf8BzAIAAf8BzAEzAQAB/wHMAWYBAAH/AcwBmQEAAf8CzAEAAf8BzAH/AQAC/wEz + AQABzAH/AWYBAAL/AZkBAAL/AcwBAAJmAf8BAAFmAf8BZgEAAWYC/wEAAf8CZgEAAf8BZgH/AQAC/wFm + AQABIQEAAaUBAANfAQADdwEAA4YBAAOWAQADywEAA7IBAAPXAQAD3QEAA+MBAAPqAQAD8QEAA/gBAAHw + AfsB/wEAAaQCoAEAA4ADAAH/AgAB/wMAAv8BAAH/AwAB/wEAAf8BAAL/AgAD//8A/wD/AP8ABQAH/wEL + CP8EAAH/AfABtQKRAbUB8gH/BAAB/wGZBSoDAwQqAQMBURAABv8C+Qj/AwAB8wH3AZEBvAH0AfMBBwGR + AfcB8wMAAfQBMQE3ATgDNwEwAUoBUgQ3ATgBUgQAAfQBvAFzAUUBRAFuAQcB9AQABP8L+QH/AgAB8wG1 + AfMB/wL2AvQB9gHvAa4B8wIAAfYBeQFZAV4DOAEiAV8BbQH7AzgBNwFzAwAB8AFvASQDJQEkAQEBRAG8 + AwAC/wEODPkB/wEAAfQBtQH0Av8BCQGGAYsBuwL2Ae8BkQH/AgABGwFZAl4BOAH7ATABIgExAzgB+wEw + ARwCAAEbAUwHJQEkAUQBvAIAAf8B3g35Av8BBwG8A/8B3QGmAYYB8wH/AfMB9AGuAbwCAAH/AXkDXgL7 + ATcB+wI4AV4BNwEDAf8BAAH0AW8JJQEkAUQB9AEAA/8BAQv5Af8B9AG1BP8B8gKtAv8C9AEHAZEDAAEb + AVkB5QFeAfsBNwFEATcCOAH7ATABHAIAARoBRgImAv8CTQL/AiUBAQEHAQAF/wP5CP8B8wG1BP8B8QKt + AfQC/wH0AfABkQMAAf8BeQLlAV4BNwFmATcC+wE4ASoB9AIAAZMBRgImAXUE/wF1AiUBJAFuAQAG/wGw + AfkB/wFUBv8B8gG1BP8B8QKtAfMC/wH0AfIBkQQAARsBWQGgAV4BWAGiAVgC+wExAXMDAAFvBE0BvQL/ + AZoBJgMlAUQBAAn/AlQBFwT/AfABtQT/AQkCrQH0Av8B9gHwAZEEAAH/AXkBoAHlAVEBXwFRAvsBAwHz + AwABbwHjAXUB4wFNAb0C/wGaASYDJQFFAQAD/wpUA/8B8wG1BP8B8wHxAfMD/wH2AQcBtQUAARsBWQHl + AUoBCgETAfsBMQFRBAABkwHjAnUBlAT/AXUBJgIlAXMBAAP/DFQC/wEJAfIE/wK1BP8BrgHzBQAB/wF5 + AeUBUQEQAVEB+wEDAfIEAAEaAUwBdQGUAv8BlAF1Av8BJgElAUUBvAEAA/8MVAHzAQAB8wEJA/8B8wKt + AfQC/wG1Ae8B/wYAARsBWQHlAVgBXgE3AVEFAAH0AXQB4wGUAZoCdQJNAiYBJQFvAfQBAAP/ClQBVQL/ + AQAB/wHxAQkE/wH0Av8BuwG1Af8HAAH/AVgDXgEDARoGAAEbAW8B4wF1AZQCdQFNASYBJQFMAfACAAn/ + A1QE/wIAAf8B8gEJAhkB9AHzAbwBuwG8Af8JAAEaAVkB5QE3AVEB/wcAARsBdAFMA+MCTAFvARsDAAn/ + AVQBlAX/BAAB9AHxA90B8gH0CwAB/wJYAXkBGwkAAfQBGgGTAm8BkwEaAfQEABD/MAABQgFNAT4HAAE+ + AwABKAMAAUADAAEgAwABAQEAAQEGAAEBFgAD/4MAAfABDwIAAv8CAAHgAQcCAAHwAQ8CAAHAAQMCAAHg + AQcCAAGAAQEBgAEAAcABAwMAAQEBgAEAAYABAQMAAQEBwAEBAYABAQMAAQEBwAEBAYABAQMAAQEB4AED + AYABAQMAAQEB4AEDAYABAQMAAQEB8AEHAYABAQMAAQEB8AEHAYABAQIAAYABAQH4AQ8BgAEBAgABgAED + AfgBDwHAAQMCAAHAAQcB/AEPAeABBwIAAfABHwH8AR8B8AEPAgAG/ws= + + + + 208, 17 + + + + + AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAD+/v7//v7+//7+/v/+/v7//v7+//7+/v/6+Pr/rqPU//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+ + /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/EvOL/MSnc/yMb3f/+/v7//v7+//7+/v/+/v7//v7+//7+ + /v/+/v7//v7+//7+/v/+/v7//v7+/+rl7/9kWtn/AwH0/wEA/f8TDeX/g3re/4N73v+De97/g3ve/4N7 + 3v+De97/r6bg//7+/v/+/v7//Pv8/5qR2v8VD+f/AQD9/wIA/f8CAP3/AQD9/wIA/f8CAP3/AgD9/wIA + /f8CAP3/AgD9/1ZM3v/+/v7/+PT4/zwyz/8BAP3/AgD9/wIA/f8CAP3/AgD9/wIA/f8CAP3/AgD9/wIA + /f8CAP3/AgD9/wIA/f9WTN7//v7+//7+/v/JwuT/Ni7b/wIA/f8CAP3/AgD9/wIA/f8CAP3/AgD9/wIA + /f8CAP3/AgD9/wIA/f8CAP3/Vkze//7+/v/+/v7//v7+//z6+/+Wjdn/Ew7n/wIA/f8CAP3/BgLx/yAX + 3v8gF97/Hxbe/x8W3v8fFd3/HhXd/2xf0v/+/v7//v7+//7+/v/+/v7//v7+/+nk7/9iWNj/AwD0/yMb + 3f/y9Pr/8PL5//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+/8O7 + 4v9YS8f/zN7g/1DDN/+y1MP//f3+//7+/v/+/v7//v7+//7+/v/+/v7//v7+/9Tl4P+w2Lf/sNi3/7DY + t/+w2Lf/sNi3/5LGov9E0A7/RNAP/2rCZv/Z5uj//v7+//7+/v/+/v7//v7+//7+/v+RzZb/RNAO/0TQ + Dv9E0A7/RNAO/0TQDv9E0A7/RNAO/0TQDv9E0A7/Rcge/5HLmv/z9fv//v7+//7+/v/+/v7/kc2W/0TQ + Dv9E0A7/RNAO/0TQDv9E0A7/RNAO/0TQDv9E0A7/RNAO/0TQDv9E0A7/Ur5F/+br9f/+/v7//v7+/5HN + lf9E0A7/RNAO/0TQDv9E0A7/RNAO/0TQDv9E0A7/RNAO/0TQDv9E0A7/W8JN/8fd2P/+/v7//v7+//7+ + /v+x1cD/dcpt/3XKbf92ym3/dspu/3bKbv9ow2L/RNAO/0TQDv9Ixif/n86r//n5/f/+/v7//v7+//7+ + /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7/zd7g/0PNEv94xXj/5Ovx//7+/v/+/v7//v7+//7+ + /v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v7//v7+/+Pq8P/C2tP//v7+//7+/v/+/v7//v7+//7+ + /v/+/v7/AACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAA + rEEAAKxBAACsQQ== + + + \ No newline at end of file diff --git a/AirScoutDatabaseManager/Program.cs b/CATCheck/Program.cs similarity index 93% rename from AirScoutDatabaseManager/Program.cs rename to CATCheck/Program.cs index 3fd3f1a..a398054 100644 --- a/AirScoutDatabaseManager/Program.cs +++ b/CATCheck/Program.cs @@ -3,7 +3,7 @@ using System.Collections.Generic; using System.Linq; using System.Windows.Forms; -namespace AirScoutDatabaseManager +namespace CATCheck { static class Program { diff --git a/CATCheck/Properties/AssemblyInfo.cs b/CATCheck/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..80e6445 --- /dev/null +++ b/CATCheck/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Allgemeine Informationen über eine Assembly werden über die folgenden +// Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern, +// die einer Assembly zugeordnet sind. +[assembly: AssemblyTitle("CATCheck")] +[assembly: AssemblyDescription("CAT intreface checker for Windows & LInux/Mono")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("DL2ALF")] +[assembly: AssemblyProduct("CATCheck")] +[assembly: AssemblyCopyright("Copyright © 2021 DL2ALF")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Durch Festlegen von ComVisible auf FALSE werden die Typen in dieser Assembly +// für COM-Komponenten unsichtbar. Wenn Sie auf einen Typ in dieser Assembly von +// COM aus zugreifen müssen, sollten Sie das ComVisible-Attribut für diesen Typ auf "True" festlegen. +[assembly: ComVisible(false)] + +// Die folgende GUID bestimmt die ID der Typbibliothek, wenn dieses Projekt für COM verfügbar gemacht wird +[assembly: Guid("0f0b27d0-7957-4ce0-9121-2c89746af136")] + +// Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten: +// +// Hauptversion +// Nebenversion +// Buildnummer +// Revision +// +// Sie können alle Werte angeben oder Standardwerte für die Build- und Revisionsnummern verwenden, +// indem Sie "*" wie unten gezeigt eingeben: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/AirScoutDatabaseManager/Properties/Resources.Designer.cs b/CATCheck/Properties/Resources.Designer.cs similarity index 93% rename from AirScoutDatabaseManager/Properties/Resources.Designer.cs rename to CATCheck/Properties/Resources.Designer.cs index 0536a52..941829b 100644 --- a/AirScoutDatabaseManager/Properties/Resources.Designer.cs +++ b/CATCheck/Properties/Resources.Designer.cs @@ -1,14 +1,14 @@ //------------------------------------------------------------------------------ // // Dieser Code wurde von einem Tool generiert. -// Laufzeitversion:4.0.30319.42000 +// Laufzeitversion: 4.0.30319.42000 // // Änderungen an dieser Datei können fehlerhaftes Verhalten verursachen und gehen verloren, wenn // der Code neu generiert wird. // //------------------------------------------------------------------------------ -namespace AirScoutDatabaseManager.Properties +namespace CATCheck.Properties { @@ -44,7 +44,7 @@ namespace AirScoutDatabaseManager.Properties { if ((resourceMan == null)) { - global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("AirScoutDatabaseManager.Properties.Resources", typeof(Resources).Assembly); + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("CATCheck.Properties.Resources", typeof(Resources).Assembly); resourceMan = temp; } return resourceMan; diff --git a/AirScoutDatabaseManager/Properties/Resources.resx b/CATCheck/Properties/Resources.resx similarity index 100% rename from AirScoutDatabaseManager/Properties/Resources.resx rename to CATCheck/Properties/Resources.resx diff --git a/CATCheck/Properties/Settings.Designer.cs b/CATCheck/Properties/Settings.Designer.cs new file mode 100644 index 0000000..4e692fd --- /dev/null +++ b/CATCheck/Properties/Settings.Designer.cs @@ -0,0 +1,61 @@ +//------------------------------------------------------------------------------ +// +// Dieser Code wurde von einem Tool generiert. +// Laufzeitversion:4.0.30319.42000 +// +// Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn +// der Code erneut generiert wird. +// +//------------------------------------------------------------------------------ + +namespace CATCheck.Properties { + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.5.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default { + get { + return defaultInstance; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("")] + public string RigDefinitionsFolder { + get { + return ((string)(this["RigDefinitionsFolder"])); + } + set { + this["RigDefinitionsFolder"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + public global::ScoutBase.CAT.RigSettings RigSettings { + get { + return ((global::ScoutBase.CAT.RigSettings)(this["RigSettings"])); + } + set { + this["RigSettings"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("llAll")] + public global::ScoutBase.CAT.LOGLEVEL LogVerbosity { + get { + return ((global::ScoutBase.CAT.LOGLEVEL)(this["LogVerbosity"])); + } + set { + this["LogVerbosity"] = value; + } + } + } +} diff --git a/CATCheck/Properties/Settings.settings b/CATCheck/Properties/Settings.settings new file mode 100644 index 0000000..037a8a8 --- /dev/null +++ b/CATCheck/Properties/Settings.settings @@ -0,0 +1,15 @@ + + + + + + + + + + + + llAll + + + \ No newline at end of file diff --git a/CATCheck/Ressources/CAT.ico b/CATCheck/Ressources/CAT.ico new file mode 100644 index 0000000..cf5be99 Binary files /dev/null and b/CATCheck/Ressources/CAT.ico differ diff --git a/CATCheck/Ressources/CAT.png b/CATCheck/Ressources/CAT.png new file mode 100644 index 0000000..637a47b Binary files /dev/null and b/CATCheck/Ressources/CAT.png differ diff --git a/CATCheck/Ressources/eventlogError.ico b/CATCheck/Ressources/eventlogError.ico new file mode 100644 index 0000000..02c331b Binary files /dev/null and b/CATCheck/Ressources/eventlogError.ico differ diff --git a/CATCheck/Ressources/eventlogInfo.ico b/CATCheck/Ressources/eventlogInfo.ico new file mode 100644 index 0000000..5454d0f Binary files /dev/null and b/CATCheck/Ressources/eventlogInfo.ico differ diff --git a/CATCheck/Ressources/eventlogWarn.ico b/CATCheck/Ressources/eventlogWarn.ico new file mode 100644 index 0000000..72ffc0b Binary files /dev/null and b/CATCheck/Ressources/eventlogWarn.ico differ diff --git a/CATCheck/Ressources/transceiver.png b/CATCheck/Ressources/transceiver.png new file mode 100644 index 0000000..96b0f6e Binary files /dev/null and b/CATCheck/Ressources/transceiver.png differ diff --git a/CATCheck/Rigs/ADT-200A.ini b/CATCheck/Rigs/ADT-200A.ini new file mode 100644 index 0000000..4cfb34e --- /dev/null +++ b/CATCheck/Rigs/ADT-200A.ini @@ -0,0 +1,183 @@ +;;; =========================================================================== +;;; +;;; OmniRig INI file for ADAT ADT-200A +;;; +;;; =========================================================================== +;;; +;;; For more info on ADAT see http://www.adat.ch +;;; This file was created by Frank Goenninger, DG1SBG, on 2013-06-30 +;;; +;;; In case of questions please email to: frank.goenninger@consequor.de - Tnx! +;;; +;;; Compatibility info: +;;; ADT-200A: DSP Firmware: 1.36e +;;; GUI Firmware: 1.24 +;;; +;;; Note: At least DSP firmware version 1.36e is required to run OmniRig +;;; or CW Skimmer. +;;; +;;; As the ADT-200A is not (yet) sending I/Q data this radio has to be +;;; configured as a 3 kHz rig in OmniRig. +;;; +;;; --- +;;; +;;; OmniRig Port Settings to be configured: +;;; +;;; Rig type: ADT-200A +;;; Port: +;;; Baud rate: 38400 +;;; Data bits: 8 +;;; Parity: None +;;; Stop bits: 1 +;;; RTS: Hanshake +;;; DTR: Low +;;; Poll int, ms: 100 +;;; Timeout, ms: 100 +;;; +;;; --- +;;; +;;; Support matrix: +;;; +;;; pmFreq: COMMAND: Supported STATUS: Supported +;;; pmFreqA: COMMAND: Supported STATUS: Supported +;;; pmFreqB: COMMAND: Supported STATUS: Supported +;;; pmPitch: COMMAND: Not Supported STATUS: Not Supported +;;; pmRitOffset: COMMAND: Not Supported STATUS: Not Supported +;;; pmRit0: COMMAND: Not Supported STATUS: Not Supported +;;; pmVfoAA: COMMAND: Not Supported STATUS: Not Supported +;;; pmVfoAB: COMMAND: Not Supported STATUS: Not Supported +;;; pmVfoBA: COMMAND: Not Supported STATUS: Not Supported +;;; pmVfoBB: COMMAND: Not Supported STATUS: Not Supported +;;; pmVfoA: COMMAND: Not Supported STATUS: Not Supported +;;; pmVfoB: COMMAND: Not Supported STATUS: Not Supported +;;; pmVfoEqual: COMMAND: Not Supported STATUS: Not Supported +;;; pm:VfoSwap: COMMAND: Not Supported STATUS: Not Supported +;;; pmSplitOn: COMMAND: Not Supported STATUS: Not Supported +;;; pmSplitOff: COMMAND: Not Supported STATUS: Not Supported +;;; pmRitOn: COMMAND: Not Supported STATUS: Not Supported +;;; pmRitOff: COMMAND: Not Supported STATUS: Not Supported +;;; pmXitOn: COMMAND: Not Supported STATUS: Not Supported +;;; pmXitOff: COMMAND: Not Supported STATUS: Not Supported +;;; pmRx: COMMAND: Supported STATUS: Not Supported +;;; pmTx: COMMAND: Supported STATUS: Not Supported +;;; pmCW_U: COMMAND: Supported STATUS: Not Supported +;;; pmCW_L: COMMAND: Not Supported STATUS: Not Supported +;;; pmSSB_U: COMMAND: Supported STATUS: Not Supported +;;; pmSSB_L: COMMAND: Supported STATUS: Not Supported +;;; pmDIG_U: COMMAND: Not Supported STATUS: Not Supported +;;; pmDIG_L: COMMAND: Not Supported STATUS: Not Supported +;;; pmAM: COMMAND: Supported STATUS: Not Supported +;;; pmFM: COMMAND: Supported STATUS: Not Supported +;;; +;;; --- +;;; $Id$ +;;; +;;; =========================================================================== + +;;; --- INIT SECTION --- +;;; +;;; Sequence of init commands: +;;; INIT 1 : Switch On VFO A +;;; INIT 2 : Switch On VFO B +;;; INIT 3 : Set Band to HAM +;;; INIT 4 : Siwtch Display On +;;; INIT 5 : Set Mode to USB +;;; INIT 6 : Set Filter to 3000 Hz +;;; INIT 7 : Set Tuning Step to 500 Hz per revolution + +[INIT1] +Command=24.56.31.3E.0D +ReplyLength=0 + +[INIT2] +Command=24.56.32.3E.0D +ReplyLength=0 + +[INIT3] +Command=24.42.4E.44.21.31.0D +ReplyLength=0 + +[INIT4] +Command=24.56.52.55.3C.0D +ReplyLength=0 + +[INIT5] +Command=24.4D.4F.44.3A.30.33.0D +ReplyLength=0 + +[INIT6] +Command=24.46.4C.53.3A.31.31.0D +ReplyLength=0 + +[INIT7] +Command=24.52.44.57.3A.30.30.0D +ReplyLength=0 + + +;;; --- COMMANDS SECTION --- + +[pmFreq] +Command=24.46.52.31.3A.00.00.00.00.00.00.00.00.0D +Value=5|8|vfText|1|0 +ReplyEnd=0D + +[pmFreqA] +Command=24.46.52.31.3A.00.00.00.00.00.00.00.00.0D +Value=5|8|vfText|1|0 +ReplyEnd=0D + +[pmFreqB] +Command=24.46.52.32.3A.00.00.00.00.00.00.00.00.0D +Value=5|8|vfText|1|0 +ReplyEnd=0D + +[pmTx] +Command=24.4D.4F.58.3E.0D +ReplyLength=0 + +[pmRx] +Command=24.4D.4F.58.3C.0D +ReplyLength=0 + +[pmCW_U] +Command=24.4D.4F.44.3A.30.31.0D +ReplyLength=0 + +[pmSSB_L] +Command=24.4D.4F.44.3A.30.32.0D +ReplyLength=0 + +[pmSSB_U] +Command=24.4D.4F.44.3A.30.33.0D +ReplyLength=0 + +[pmAM] +Command=24.4D.4F.44.3A.30.35.0D +ReplyLength=0 + +[pmFM] +Command=24.4D.4F.44.3A.30.38.0D +ReplyLength=0 + +;;; --- STATUS SECTION --- + +[STATUS1] +; Get VFO 1 Frequency +; $FR1? +Command=24.46.52.31.3F.0D +ReplyEnd=0D +Value1=4|13|vfText|1|0|pmFreqA + +[STATUS2] +; Get VFO 2 Frequency +; $FR2? +Command=24.46.52.32.3F.0D +ReplyEnd=0D +Value1=4|13|vfText|1|0|pmFreqB + +[STATUS3] +; Get Main VFO Frequency +; $FR1? +Command=24.46.52.31.3F.0D +ReplyEnd=0D +Value1=4|13|vfText|1|0|pmFreq diff --git a/CATCheck/Rigs/AORAR5000.ini b/CATCheck/Rigs/AORAR5000.ini new file mode 100644 index 0000000..d8cdd11 --- /dev/null +++ b/CATCheck/Rigs/AORAR5000.ini @@ -0,0 +1,179 @@ +;------------------------------------------------------------------------------- +; AOR AR5000A command set +; +; File created by Göran Sandin SM6PPS gsan.faros@mailnull.com +;------------------------------------------------------------------------------- + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT] +;none required + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreqA] +; VAnnnnnnnnnn +Command=56.41.00.00.00.00.00.00.00.00.00.00.0D.0A +Value=2|10|vfText|1|0 +ReplyLength=0 + +[pmFreq] +; RFnnnnnnnnnn +Command=52.46.00.00.00.00.00.00.00.00.00.00.0D.0A +Value=2|10|vfText|1|0 +ReplyLength=0 + +[pmRitOffset] +;not supported + +[pmPitch] +;not supported +; +; Well it is, with CWn where n=0-7 +; 400 Hz...n=0 +; 500 Hz...n=1 +; 600 Hz...n=2 +; 700 Hz...n=3 +; 800 Hz...n=4 +; 900 Hz...n=5 +; 1000 Hz...n=6 +; 1100 Hz...n=7 +; +; Not sure though how to code this and since it is not +; required by Faros... + + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +;not supported + +[pmSplitOff] +;not supported + +[pmVfoA] +;not supported + +[pmVfoB] +;not supported + +[pmVfoEqual] +;not supported + +[pmVfoSwap] +;not supported + +[pmVfoAA] +;not supported + +[pmVfoAB] +;not supported + +[pmVfoBA] +;not supported + +[pmVfoBB] +;not supported + +[pmRitOn] +;not supported + +[pmRitOff] +;not supported + +[pmRit0] +; Not supported since there is no RIT in this receiver. +; Faros needs this command according to VE3NEA. +; +; We send a AGC=Slow command instead to the receiver. +; +; AC2 +Command=41.43.32.0D.0A +ReplyLength=0 + +[pmXitOn] +;not supported + +[pmXitOff] +;not supported + +[pmRx] +;not supported + +[pmTx] +;not supported + + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +; MD4 +Command=4D.44.34.0D.0A +ReplyLength=0 + +[pmCW_L] +;not supported + +[pmSSB_U] +; MD3 +Command=4D.44.33.0D.0A +ReplyLength=0 + +[pmSSB_L] +; MD2 +Command=4D.44.32.0D.0A +ReplyLength=0 + +[pmDIG_U] +;not supported + +[pmDIG_L] +;not supported + +[pmAM] +; MD1 +Command=4D.44.31.0D.0A +ReplyLength=0 + +[pmFM] +; MD0 +Command=4D.44.30.0D.0A +ReplyLength=0 + + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +[STATUS1] +; RF +Command=52.46.0D.0A +ReplyEnd=0A +; Vx RFnnnnnnnnnn STnnnnnn AUn MDn +Validate=560000000000000000000000000000000000000000000000000000000000000000000D0A +Value1=5|10|vfText|1|0|pmFreq +Flag1 = (V..RF...........ST........AU..MD0...)|pmFM +Flag2 = (V..RF...........ST........AU..MD1...)|pmAM +Flag3 = (V..RF...........ST........AU..MD2...)|pmSSB_L +Flag4 = (V..RF...........ST........AU..MD3...)|pmSSB_U +Flag5 = (V..RF...........ST........AU..MD4...)|pmCW_U + +[STATUS2] +; VA +Command=56.41.0D.0A +ReplyEnd=0A +; VA RFnnnnnnnnnn STnnnnnn AUn MDn +Validate=564100000000000000000000000000000000000000000000000000000000000000000D0A +Value1=5|10|vfText|1|0|pmFreqA + +[STATUS3] +; CW +Command=43.57.0D.0A +ReplyEnd=0A +; CWn +Validate=435700000D0A +Value1=2|1|vfText|100|400|pmPitch diff --git a/CATCheck/Rigs/AR8600.ini b/CATCheck/Rigs/AR8600.ini new file mode 100644 index 0000000..8674d4c --- /dev/null +++ b/CATCheck/Rigs/AR8600.ini @@ -0,0 +1,69 @@ +;------------------------------------------------------------------------------- +; AOR AR8600Mark2 command set +; +; File created by Mirek Mach, OK4FX, OK1-36292 chromos@chromos.cz +;------------------------------------------------------------------------------- + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT1] +;one VFO +Command=56460D +ReplyEnd=0D + +[INIT2] +;receiving mode AUTO +Command=4155310D +ReplyEnd=0D +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreq] +Command=5646.0000000000000000.30.300D +Value=3|8|vfText|0.01|0 +ReplyEnd=0D +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +Command=4D44350D +ReplyEnd=0D + +[pmCW_L] +;not CW but AUTO mode +Command=4155310D +ReplyEnd=0D + +[pmSSB_U] +Command=4D44330D +ReplyEnd=0D + +[pmSSB_L] +Command=4D44340D +ReplyEnd=0D + +[pmAM] +Command=4D44320D +ReplyEnd=0D + +[pmFM] +Command=4D44310D +ReplyEnd=0D +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +;Vx RFnnnnnnnnnn STnnnnnn AUn MDn ATn + +[STATUS] +;Read operating frequency and mode +Command=52580D +ReplyLength=36 +Validate=5646.20.5246.00000000000000000000.20.5354000000000000.20.415500.20.4D4400.20.415400 +Value=5|10|vfText|1|0|pmFreq + +Flag1=5600.20.5246.00000000000000000000.20.5354000000000000.20.415500.20.4D4434.20.415400|pmSSB_L +Flag2=5600.20.5246.00000000000000000000.20.5354000000000000.20.415500.20.4D4433.20.415400|pmSSB_U +Flag3=5600.20.5246.00000000000000000000.20.5354000000000000.20.415500.20.4D4438.20.415400|pmAM +Flag4=5600.20.5246.00000000000000000000.20.5354000000000000.20.415500.20.4D4435.20.415400|pmCW_U +Flag6=5600.20.5246.00000000000000000000.20.5354000000000000.20.415500.20.4D4431.20.415400|pmFM diff --git a/CATCheck/Rigs/Bearcat996x.ini b/CATCheck/Rigs/Bearcat996x.ini new file mode 100644 index 0000000..77bc641 --- /dev/null +++ b/CATCheck/Rigs/Bearcat996x.ini @@ -0,0 +1,69 @@ +;------------------------------------------------------------------------------- +; Uniden Bearcat command set +; +; File created by Alex Schwarz - VE7DXW +;------------------------------------------------------------------------------- +;Note: only frequency can be updated and read - mode and all other parameters are +; either set to "Auto" or are default setting. + + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +;[INIT] not used + +;[INIT1]not used + + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- + + +[pmFreq] +;(QSH,Value,,AUTO,0,2,,0,1000000000000000,0,0,0,0,400) +Command=5153482C2C2C2C2C2C2C2C2C2C2C4155544F2C302C322C2C302C313030303030303030303030303030302C302C302C302C302C3430300D +Value=4|8|vfText|0.01|0 +ReplyLength=0 + + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +;[pmCW_U]- na + +;[pmSSB_U]- na + +;[pmSSB_L]- na + +;[pmDIG_U]- na + +;[pmAM] - na + +;[pmFM]- na + + + + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- + +[STATUS1] +;Command (PWR) +Command=5057520D +ReplyLength=17 +Value1=8|8|vfText|100|0|pmFreq + +[STATUS2] +;Command (GLG) +Command=474C470D +ReplyLength=18 +Validate=(GLG,..............) +;Value1=5|9|vfDPIcom|1|0|pmFreq +Flag1 =(..............NFM.)|pmFM +Flag2 =(..............AM..)|pmAM + + + diff --git a/CATCheck/Rigs/CODAN-Comments.txt b/CATCheck/Rigs/CODAN-Comments.txt new file mode 100644 index 0000000..0085fbe --- /dev/null +++ b/CATCheck/Rigs/CODAN-Comments.txt @@ -0,0 +1,42 @@ +The CODAN.ini file has been tested with the CODAN 9360 and should +also work with the 9323, 9390 and 9780 models using the RS232 CAT interface +port on the rear of the transceiver. These transceivers come up for sale on +Ebay from time to time for relatively low cost with an excellent receiver programmable +from 250KHz to 30MHz. + +The CODAN supports only four functions of Amateur radio use via the RS232 CAT port: + + +Set Frequency - [pmFreq] +Set Mode - [pmSSB_U] +Set Mode - [pmSSB_L] +Read Status - [STATUS1] + +In addition a [pmSplitOff] dummy command has been inserted to comply with the Faros requirement. + +The [INIT] command sets the CODAN RS232 CAT port to the ECHO=OFF mode to prevent the Command received +from being echoed back from the RS232 TXD port. + +Note!! Frequencies cannot be programmed directly as all these transceivers are channelised. +The CODAN models have a user selectable option to Recall channels by frequency +so is an ideal low cost rig to monitor the IARU HF Beacons using FAROS. + +For FAROS use program the CODAN with the HF Beacon channels 600Hz lower in frequency than the nominal +Beacon channel using USB. e.g. 14.09940.The CODAN will then select the nearest frequency +(programmed channel) to that sent by Faros via the RS232 CAT port. + +Note that the CODAN rigs won't handle anything less than 1KHz resolution via commands to the RS232 CAT port in +the frequency section mode although the cODAN channels can be programmed with the keypad/front panel controls +to 10Hz resolution. + +Because of this you need to add the following into the SETTINGS area of the Faros.ini file: + +Frequencies=14099:18109:21149:24929:28199 + +Dave Wright G3XOU + + + + + + \ No newline at end of file diff --git a/CATCheck/Rigs/CODAN.ini b/CATCheck/Rigs/CODAN.ini new file mode 100644 index 0000000..f49be65 --- /dev/null +++ b/CATCheck/Rigs/CODAN.ini @@ -0,0 +1,153 @@ +;------------------------------------------------------------------------------- +; CODAN 9360-9323-9390-9780 command set +; +; File created by Dave Wright G3XOU +;------------------------------------------------------------------------------- + +;Command= +;ReplyLength= +;ReplyEnd= +;Value=||||[|] +;Flag=[|]| + + + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT] +Command=45.43.48.4F.3D.4F.46.46.0A.0D + + + + + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreqA] +;not supported + +[pmFreqB] +;not supported + +[pmFreq] +Command=46.52.45.51.3D.00.00.00.00.00.0A.0D +Value=5|5|vfText|1|0 +ReplyLength=0 + +[pmRitOffset] +;not supported + +[pmRit0] +;not supported + +[pmPitch] +;not supported + + + + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +;not supported + +[pmSplitOff] +Command=53.42.3F.0A.0D +ReplyLength=0 + +[pmVfoA] +;not supported + +[pmVfoB] +;not supported + +[pmVfoEqual] +;not supported + +[pmVfoSwap] +;not supported + +[pmVfoAA] +;not supported + +[pmVfoAB] +;not supported + +[pmVfoBA] +;not supported + +[pmVfoBB] +;not supported + +[pmRitOn] +;not supported + +[pmRitOff] +;not supported + +[pmXitOn] +;not supported + +[pmXitOff] +;not supported + +[pmRx] +;not supported + +[pmTx] +;not supported + + + + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +;not supported + +[pmCW_L] +;not supported + +[pmSSB_U] +Command=53.42.3D.55.0A.0D +ReplyLength=0 + +[pmSSB_L] +Command=53.42.3D.4C.0A.0D +ReplyLength=0 + +[pmDIG_U] +;not supported + +[pmDIG_L] +;not supported + +[pmAM] +;not supported + +[pmFM] +;not supported + + + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +[STATUS1] +Command=46.52.45.51.3F.0A.0D +Value1=8|5|vfText|1|0|pmFreq +ReplyEnd=2E + +[STATUS2] +;not supported + +[STATUS3] +;not supported + +[STATUS4] +;not supported diff --git a/CATCheck/Rigs/DX-77-Comments.txt b/CATCheck/Rigs/DX-77-Comments.txt new file mode 100644 index 0000000..33275d4 --- /dev/null +++ b/CATCheck/Rigs/DX-77-Comments.txt @@ -0,0 +1,47 @@ + Comments for corrected version of DX-77.ini. 23.3.2005 + + I have tested all combinations of commenting and uncommenting of pmVFOA, pmVFOB, pmVFOAB...etc + and enclosed version is optimal by my mean. It works fine with Hamport and Bandmaster. + + Alinco's software is primarily intended for use with terminal program like Hyperterminal in Windows etc. + In this reason there are some restrictions for use it with your software: + + - every command must end by hex characters '0A 0D' - by this sequence is press of key "Enter" simulated + and in Alinco's reply are there characters '0A 0D' more times - that's why I cannot use ReplyEnd statement + in case of variable length of reply string + + - Alinco MUST reply immediatly on each known command and that's why I cannot merge more commands in one line. Alinco's reply for the first command goes simultaneously with the second coomand and result is crash and error message "COM PORT ERROR" + + - Alinco's reply has two parts in all cases: + first part: all bytes of last sended command are returned back and sequence '0A 0D' is added + second part: in case of SET command is seguence 'O K 0A 0D' returned + in case of READ command is variable legth reply string + '0A 0D' returned + in case of unknown command is string 'E R R O R 0A 0D' returned. + + - Alinco's software switches positions of VFOA FRQ and VFOB FRQ in reply string in case of switching VFO's: + if VFOA is active (on display) : NNNNNNAAAAAAAAAABBBBBBBBBB + where AAAAAAAAAA is FRQ of VFOA (RX FRQ in Alinco's terminology) + and BBBBBBBBBB is FRQ of VFOB (TX FRQ in Alinco's terminology) + if VFOB is active (on display) : NNNNNNBBBBBBBBBBAAAAAAAAAA + where AAAAAAAAAA is FRQ of VFOA (TX FRQ in Alinco's terminology) + and BBBBBBBBBB is FRQ of VFOB (RX FRQ in Alinco's terminology) + + Use DX-77.ini with Hamport - all works fine but + + - in right above corner displayed FRQ of second VFO is all time the same - see "switching position + of FRQ in reply string" above mentioned + - setting of VFO's "VFOA/A, VFOB/B" are "dead" + - in memory functions Hamport writes and reads both frequencies and modes of VFO's correctly + - it's no way to toggle split ON/OFF from Hamport - must be set manually + - it's no way to toggle RX / TX (PTT) from Hamport - PTT must be switched outside the program + + Use DX-77.ini with Bandmaster - all works fine but + + - click and doubleclick for offset setting works fine, but no Split is toggled and offset displayed simultaneously. Split must be switched by click on "Split" field or manually on the TRX. + If Split is toggled ON before clicking / doubleclicking to set offset, all is O.K. + - no RED NUMBERS are there in case of PTT is ON (problem with variable lentgh of reply string + mentioned above - pmRX and pmTX was not used) + + -------------------------------------------------no comments more ---------------------------------------------------- + + \ No newline at end of file diff --git a/CATCheck/Rigs/DX-77.ini b/CATCheck/Rigs/DX-77.ini new file mode 100644 index 0000000..3434794 --- /dev/null +++ b/CATCheck/Rigs/DX-77.ini @@ -0,0 +1,244 @@ +;--------------------------------------------------------------------------------------------------------------------- +; Alinco DX-77 command set +; +; File created by Josef Vychytil, OK1WSL, vychytil@post.cz 22.03.2005 +;--------------------------------------------------------------------------------------------------------------------- +; +; COMX port settings : +; nastavení COMX portu: +; Bit Rate : 9600 +; Data Bits : 9 +; Parity : None +; Stop Bits : 2 +; RTS : HIGH (it's not obligatory but so I this tested - hodnota není povinná, ale takto jsem testoval) +; DTR : HIGH (it's not obligatory but so I this tested - hodnota není povinná, ale takto jsem testoval) +; Pol Int. : 100 (it's not obligatory but so I this tested - hodnota není povinná, ale takto jsem testoval) +; TimeOut : 1 000 (it's not obligatory but so I this tested - hodnota není povinná, ale takto jsem testoval) + +; Command= +; ReplyLength= +; ReplyEnd= +; Value=||||[|] +; Flag=[|]| + +;-------------------------------------------------------------------------------------------------------------------- +; initialize - inicializace +;------------------------------------------------------------------------------------------------------------------- +[INIT] +; not supported - nepodporován + +;-------------------------------------------------------------------------------------------------------------------- +; set frequency - nastavení kmitoètu +;-------------------------------------------------------------------------------------------------------------------- + +[pmFreq] +; not supported, but for Bandmaster and Hamport is this param. essential +; that's why is used VFO A frequency for it +; pracovní kmitoèet nepodporován, ale je nutný pro Bandmaster a Hamport +; proto byl použit kmitoèet VFO A +Command=41.4C.30.42.00.00.00.00.00.00.00.00.0D.0A +Value=4|8|vfText|1|0 +ReplyLength=20 + +[pmFreqA] +; VFO A frequency - kmitoèet VFO A +Command=41.4C.30.42.00.00.00.00.00.00.00.00.0D.0A +Value=4|8|vfText|1|0 +ReplyLength=20 + +[pmFreqB] +; VFO B frequency - kmitoèet VFO B +Command=41.4C.30.41.00.00.00.00.00.00.00.00.0D.0A +Value=4|8|vfText|1|0 +ReplyLength=20 + +[pmPitch] +; set Pitch but no way to read value of Pitch +; Field Pitch is used for display of S-meter reading +; nastavení Pitch, hodnotu nelze ale èíst +; pole Pitch je použito pro zobrazení S metru +Command=41.4C.32.57.4D.00.00.0D.0A +Value=5|2|vfText|1|0 +ReplyLength=15 + +[pmRitOffset] +; not supported - nelze nastavit + +[pmRit0] +; not supported - nelze nastavit + +;---------------------------------------------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx - nastavení RIT/XIT/Split/RX/TX +;---------------------------------------------------------------------------------------------------------------------- + +[pmVfoAA] +; not used - nepoužit + +[pmVfoAB] +; used VFO A: +Command=41.4C.31.41.31.0D.0A +ReplyLength=14 + +[pmVfoBA] +; used VFO B: +Command=41.4C.31.41.32.0D.0A +ReplyLength=14 + +[pmVfoBB] +; not used - nepoužit + +[pmVfoA] +; not used- see pmVfoAB - nepoužit viz pmVfoAB + +[pmVfoB] +; not used- see pmVfoBA - nepoužit viz pmVfoBA + +[pmVfoEqual] +; not supported - nepodporováno + +[pmVfoSwap] +; not supported - nepodporováno + +[pmSplitOn] +; toggle split ON +; pøepne Split ON +Command=41.4C.32.46.31.0D.0A +ReplyLength=13 + +[pmSplitOff] +; toggle split OFF +; pøepne Split OFF +Command=41.4C.32.46.30.0D.0A +ReplyLength=13 + +[pmRitOn] +; not supported - nepodporováno + +[pmRitOff] +; not supported - nepodporováno + +[pmXitOn] +; not supported - nepodporováno + +[pmXitOff] +; not supported - nepodporováno + +[pmRx] +; not supported - nepodporováno +; section used for similar function +; the second possibility is comment section out +; toggle PTT Lock ON - PTT is out of function - RX is possible only +; pøepne PTT Lock ON - je možno pouze pøijímat +Command=41.4C.32.57.42.31.0D.0A +Replylength=14 + +[pmTx] +; not supported - nepodporováno +; section used for similar function +; the second possibility is comment section out +; toggle PTT Lock OFF - PTT is activated - RX and TX is possible +; pøepne PTT Lock OFF +Command=41.4C.32.57.42.30.0D.0A +Replylength=14 + +;------------------------------------------------------------------------------------------------------------------------- +; set mode - nastavení módu +;------------------------------------------------------------------------------------------------------------------------- + +[pmCW_U] +Command=41.4C.32.47.33.0D.0A +ReplyLength=12 + +[pmCW_L] +Command=41.4C.32.47.32.0D.0A +ReplyLength=12 + +[pmSSB_U] +Command=41.4C.32.47.31.0D.0A +ReplyLength=12 + +[pmSSB_L] +Command=41.4C.32.47.30.0D.0A +ReplyLength=12 + +[pmDIG_U] +; not supported - nepodporováno + +[pmDIG_L] +; not supported - nepodporováno + +[pmAM] +Command=41.4C.32.47.34.0D.0A +ReplyLength=12 + +[pmFM] +Command=41.4C.32.47.35.0D.0A +ReplyLength=12 + +;----------------------------------------------------------------------------------------------------------- +; read status - ètení stavu +;----------------------------------------------------------------------------------------------------------- +[STATUS1] +; FRQ's, MODE reading +; ètení kmitoètù a módu +Command=41.4C.33.48.0D.0A +ReplyLength=36 +; reading all three parameters pmFreq, pmFreqA and pmFreqB +; is necessary for correct function of Hamport and BandMaster programs +Value1=16|8|vfText|1|0|pmFreq +Value2=16|8|vfText|1|0|pmFreqA +Value3=26|8|vfText|1|0|pmFreqB +Flag1 =(..........00........................)|pmSSB_L +Flag2 =(..........01........................)|pmSSB_U +Flag3 =(..........02........................)|pmCW_L +Flag4 =(..........03........................)|pmCW_U +Flag5 =(..........04........................)|pmAM +Flag6 =(..........05........................)|pmFM + + +[STATUS2] +; SPLIT state reading +; ètení stavu SPLIT +Command=41.4C.33.49.0D.0A +ReplyLength=12 +Flag1 =(........ON..)|pmSplitOn +Flag2 =(........OF..)|pmSplitOff + +[STATUS3] +; selected VFO reading +; ètení vybraného VFO +Command=41.4C.33.47.0D.0A +ReplyLength=14 +Flag1 =(........VFOA..)|pmVfoAB +Flag2 =(........VFOB..)|pmVfoBA + +[STATUS4] +; RX/TX reading - problem vith variable length of reply +; Alinco's software reply is in state RX "REV" - 3 chars, in state TX "SEND" - 4 chars +; that's why command was not used +; case "SEND" ReplyLength is 14, case "REV" ReplyLength is 13 +; ètení RX/TX problém s ReplyLength: SEND =>14, REV => 13 +; proto nebylo možno použít +; Command=41.4C.33.42.0D.0A +; ReplyLength=13 +; ReplyEnd= +; Flag1=(........SEND..)|pmTx +; Flag1=(........REV..)|pmRx + +[STATUS5] +; RIT reading +; ètení hodnoty RIT +Command=41.4C.33.44.30.0D.0A +ReplyLength=19 +Value1=12|5|vfText|1|0|pmRitOffset + +[STATUS6] +; S-meter reading - Pitch Field is used for display +; For demonstration purposes only - with software "Client.exe" +; normally let comment out +; Value 0.5348 approx. converts LCD SEG to grad "S" +; ètení S-metru - pro zobrazení je použito pole Pitch +; hodnota 0.5348 pøibližnì pøevádí LCD SEG na stupnì "S" +; Command=41.4C.33.41.30.0D.0A +; ReplyLength=16 +; Value1=12|2|vfText|0.5348|0|pmPitch diff --git a/CATCheck/Rigs/Elad-FDMSW2.ini b/CATCheck/Rigs/Elad-FDMSW2.ini new file mode 100644 index 0000000..a85e008 --- /dev/null +++ b/CATCheck/Rigs/Elad-FDMSW2.ini @@ -0,0 +1,174 @@ +;------------------------------------------------------------------------------- +; Elad FDM-SW2 command set +; +; File created by Alex Shovkoplyas, VE3NEA ve3nea@dxatlas.com +; Tested by Willi, DJ6JZ +;------------------------------------------------------------------------------- + + +;2005-09-12 Changed ReplyLength=0 to ReplyLength=1. Works better now. /SM2Z +:2014-04-18 adopted from Yaesu FT-897 command set, tested. /DJ6JZ + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT] +;none + + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreqA] +;not supported + +[pmFreqB] +;not supported + +[pmFreq] +Command=00000000.01 +Value=0|4|vfBcdBU|0.1|0 +ReplyLength=1 + +[pmRitOffset] +Command=00000000.F5 +Value=0|4|vfBcdBS|0.1|0 +ReplyLength=1 + +[pmRit0] +Command=00000000.F5 +ReplyLength=1 + +[pmPitch] +;not supported + + + + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +Command=00000000.02 +ReplyLength=1 + +[pmSplitOff] +Command=00000000.82 +ReplyLength=1 + +[pmVfoA] +;not supported + +[pmVfoB] +;not supported + +[pmVfoEqual] +;not supported + +[pmVfoSwap] +Command=00000000.81 +ReplyLength=1 + +[pmVfoAA] +;not supported + +[pmVfoAB] +;not supported + +[pmVfoBA] +;not supported + +[pmVfoBB] +;not supported + + +[pmRitOn] +Command=00000000.05 +ReplyLength=1 + +[pmRitOff] +Command=00000000.85 +ReplyLength=1 + +[pmXitOn] +;not supported + +[pmXitOff] +;not supported + +[pmRx] +Command=00000000.88 +ReplyLength=1 + +[pmTx] +Command=00000000.08 +ReplyLength=1 + + + + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +Command=02.00000007 +ReplyLength=1 + +[pmCW_L] +Command=03.00000007 +ReplyLength=1 + +[pmSSB_U] +Command=01.00000007 +ReplyLength=1 + +[pmSSB_L] +Command=00.00000007 +ReplyLength=1 + +[pmDIG_U] +Command=0A.00000007 +ReplyLength=1 + +[pmDIG_L] +;not supported + +[pmAM] +Command=04.00000007 +ReplyLength=1 + +[pmFM] +Command=08.00000007 +ReplyLength=1 + + + + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +[STATUS1] +Command=00000000.03 +ReplyLength=5 +Value=0|4|vfBcdBU|10|0|pmFreq +Flag1 =00000000.0F|00000000.00|pmSSB_L +Flag2 =00000000.0F|00000000.01|pmSSB_U +Flag3 =00000000.0F|00000000.02|pmCW_U +Flag4 =00000000.0F|00000000.03|pmCW_L +Flag5 =00000000.0F|00000000.04|pmAM +Flag6 =00000000.0F|00000000.06|pmFM +Flag7 =00000000.0F|00000000.08|pmFM +Flag8 =00000000.0F|00000000.0A|pmDIG_U +Flag9 =00000000.0F|00000000.0C|pmDIG_U + +[STATUS2] +Command=00000000.F7 +ReplyLength=1 +Flag1 =20|00|pmSplitOn +Flag2 =20|20|pmSplitOff +Flag3 =80|00|pmTx +Flag4 =80|80|pmRx + + + diff --git a/CATCheck/Rigs/Elecraft K2.ini b/CATCheck/Rigs/Elecraft K2.ini new file mode 100644 index 0000000..62cd0df --- /dev/null +++ b/CATCheck/Rigs/Elecraft K2.ini @@ -0,0 +1,191 @@ +;------------------------------------------------------------------------------- +; Elecraft K2 command set +; +; File created by Brendan Minish EI6IZ ei6iz@oceanfree.net +;------------------------------------------------------------------------------- + + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT] +Command=(AI0;) +ReplyLength=0 + +;enable extended K2 command set +[INIT1] +Command=(K22;) +ReplyLength=0 + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreqA] +Command=(FA...........;) +Value=2|11|vfText|1|0 +ReplyLength=0 + +[pmFreqB] +Command=(FB...........;) +Value=2|11|vfText|1|0 +ReplyLength=0 + +[pmFreq] +;not supported + +[pmRitOffset] +;not supported + +[pmRit0] +Command=(RC;) +ReplyLength=0 + +[pmPitch] +;not supported + + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +;not supported + +[pmSplitOff] +;not supported + +[pmVfoA] +;not supported + +[pmVfoB] +;not supported + +[pmVfoEqual] +Command=(SW10;) +ReplyLength=0 + +[pmVfoSwap] +Command=(SW09;) +ReplyLength=0 + +[pmVfoAA] +Command=(FR0;) +ReplyLength=0 + +[pmVfoAB] +Command=(FR0;FT1;) +ReplyLength=0 + +[pmVfoBA] +Command=(FR1;FT0;) +ReplyLength=0 + +[pmVfoBB] +Command=(FR1;) +ReplyLength=0 + +[pmRitOn] +Command=(RT1;) +ReplyLength=0 + +[pmRitOff] +Command=(RT0;) +ReplyLength=0 + +[pmXitOn] +Command=(XT1;) +ReplyLength=0 + +[pmXitOff] +Command=(XT0;) +ReplyLength=0 + +[pmRx] +Command=(RX;) +ReplyLength=0 + +[pmTx] +Command=(TX;) +ReplyLength=0 + + + + + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +Command=(MD3;) +ReplyLength=0 + +[pmCW_L] +Command=(MD7;) +ReplyLength=0 + +[pmSSB_U] +Command=(MD2;) +ReplyLength=0 + +[pmSSB_L] +Command=(MD1;) +ReplyLength=0 + +[pmDIG_U] +Command=(MD6;) +ReplyLength=0 + +[pmDIG_L] +Command=(MD9;) +ReplyLength=0 + +[pmAM] +;not supported + +[pmFM] +;not supported + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +[STATUS1] +Command=(IF;) +ReplyEnd=(;) +Validate=(IF...................................;) +Value1=18|5|vfText|1|0|pmRitOffset +Value2=2|11|vfText|1|0|pmFreq +Flag1 =(.......................0..............)|pmRitOff +Flag2 =(.......................1..............)|pmRitOn +Flag3 =(........................0.............)|pmXitOff +Flag4 =(........................1.............)|pmXitOn +Flag5 =(............................0.........)|pmRx +Flag6 =(............................1.........)|pmTx +Flag7 =(.............................1........)|pmSSB_L +Flag8 =(.............................2........)|pmSSB_U +Flag9 =(.............................3........)|pmCW_U +Flag10=(.............................4........)|pmFM +Flag11=(.............................5........)|pmAM +Flag12=(.............................6........)|pmDIG_L +Flag13=(.............................7........)|pmCW_L +Flag14=(.............................9........)|pmDIG_U +Flag15=(..............................0.0.....)|pmVfoAA +Flag16=(..............................1.0.....)|pmVfoBB +Flag17=(............................0.0.1.....)|pmVfoAB +Flag18=(............................0.1.1.....)|pmVfoBA +Flag19=(............................1.0.1.....)|pmVfoBA +Flag20=(............................1.1.1.....)|pmVfoAB +;Flag21=(................................1.....)|pmSplitOn +;Flag21=(................................0.....)|pmSplitOff + + +[STATUS2] +Command=(FA;) +ReplyEnd=(;) +Validate=(FA...........;) +Value1=2|11|vfText|1|0|pmFreqA + +[STATUS3] +Command=(FB;) +ReplyEnd=(;) +Validate=(FB...........;) +Value1=2|11|vfText|1|0|pmFreqB diff --git a/CATCheck/Rigs/Elecraft K3.ini b/CATCheck/Rigs/Elecraft K3.ini new file mode 100644 index 0000000..c3e3a75 --- /dev/null +++ b/CATCheck/Rigs/Elecraft K3.ini @@ -0,0 +1,195 @@ +;------------------------------------------------------------------------------- +; Elecraft K3 command set +; +; File created by Brendan Minish EI6IZ ei6iz.brendan@gmail.com +; Modified by Iain N6ML ar@dseven.org +;------------------------------------------------------------------------------- + + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT] +Command=(AI0;) +ReplyLength=0 + +;enable extended K3 command set +[INIT1] +Command=(K31;) +ReplyLength=0 + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreqA] +Command=(FA...........;) +Value=2|11|vfText|1|0 +ReplyLength=0 + +[pmFreqB] +Command=(FB...........;) +Value=2|11|vfText|1|0 +ReplyLength=0 + +[pmFreq] +;not supported + +[pmRitOffset] +;not supported + +[pmRit0] +Command=(RC;) +ReplyLength=0 + +[pmPitch] +;not supported + + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +Command=(FR0;FT1;) +ReplyLength=0 + +[pmSplitOff] +Command=(FR0;) +ReplyLength=0 + +[pmVfoA] +Command=(FR0;) +ReplyLength=0 + +[pmVfoB] +;not supported + +[pmVfoEqual] +Command=(SWT13;) +ReplyLength=0 + +[pmVfoSwap] +Command=(SWT11;) +ReplyLength=0 + +[pmVfoAA] +Command=(FR0;) +ReplyLength=0 + +[pmVfoAB] +Command=(FR0;FT1;) +ReplyLength=0 + +[pmVfoBA] +;not supported + +[pmVfoBB] +;not supported + +[pmRitOn] +Command=(RT1;) +ReplyLength=0 + +[pmRitOff] +Command=(RT0;) +ReplyLength=0 + +[pmXitOn] +Command=(XT1;) +ReplyLength=0 + +[pmXitOff] +Command=(XT0;) +ReplyLength=0 + +[pmRx] +Command=(RX;) +ReplyLength=0 + +[pmTx] +Command=(TX;) +ReplyLength=0 + + + + + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +Command=(MD7;) +ReplyLength=0 + +[pmCW_L] +Command=(MD3;) +ReplyLength=0 + +[pmSSB_U] +Command=(MD2;) +ReplyLength=0 + +[pmSSB_L] +Command=(MD1;) +ReplyLength=0 + +[pmDIG_U] +Command=(MD6;) +ReplyLength=0 + +[pmDIG_L] +Command=(MD9;) +ReplyLength=0 + +[pmAM] +Command=(MD5;) +ReplyLength=0 + +[pmFM] +Command=(MD4;) +ReplyLength=0 + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +[STATUS1] +Command=(IF;) +ReplyEnd=(;) +Validate=(IF...................................;) +Value1=18|5|vfText|1|0|pmRitOffset +Value2=2|11|vfText|1|0|pmFreq +Flag1 =(.......................0..............)|pmRitOff +Flag2 =(.......................1..............)|pmRitOn +Flag3 =(........................0.............)|pmXitOff +Flag4 =(........................1.............)|pmXitOn +Flag5 =(............................0.........)|pmRx +Flag6 =(............................1.........)|pmTx +Flag7 =(.............................1........)|pmSSB_L +Flag8 =(.............................2........)|pmSSB_U +Flag9 =(.............................3........)|pmCW_L +Flag10=(.............................4........)|pmFM +Flag11=(.............................5........)|pmAM +Flag12=(.............................6........)|pmDIG_L +Flag13=(.............................7........)|pmCW_U +Flag14=(.............................9........)|pmDIG_U +Flag15=(..............................0.0.....)|pmVfoAA +Flag16=(..............................1.0.....)|pmVfoBB +Flag17=(............................0.0.1.....)|pmVfoAB +Flag18=(............................0.1.1.....)|pmVfoBA +Flag19=(............................1.0.1.....)|pmVfoAB +Flag20=(............................1.1.1.....)|pmVfoBA +Flag21=(................................1.....)|pmSplitOn +Flag22=(................................0.....)|pmSplitOff + + +[STATUS2] +Command=(FA;) +ReplyEnd=(;) +Validate=(FA...........;) +Value1=2|11|vfText|1|0|pmFreqA + +[STATUS3] +Command=(FB;) +ReplyEnd=(;) +Validate=(FB...........;) +Value1=2|11|vfText|1|0|pmFreqB diff --git a/CATCheck/Rigs/Elecraft KX2.ini b/CATCheck/Rigs/Elecraft KX2.ini new file mode 100644 index 0000000..8a16879 --- /dev/null +++ b/CATCheck/Rigs/Elecraft KX2.ini @@ -0,0 +1,200 @@ +;------------------------------------------------------------------------------- +; Elecraft KX2 command set +; +; Original K3 file created by Brendan Minish EI6IZ ei6iz.brendan@gmail.com, +; further improved by Iain N6ML ar@dseven.org and Tim KC1EOQ kc1eoq@gmail.com. +; +; Adapted for the KX2 by Björn Ekelund SM7IUN bjorn@ekelund.nu 11/7/2018 +; +; If not required, RIT status polling can commented out to save bandwidth +; at low serial port speeds +; +;------------------------------------------------------------------------------- + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT] +; No auto-info, only polling +Command=(AI0;) +ReplyLength=0 + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreqA] +Command=(FA...........;) +Value=2|11|vfText|1|0 +ReplyLength=0 + +[pmFreqB] +Command=(FB...........;) +Value=2|11|vfText|1|0 +ReplyLength=0 + +[pmFreq] +;not supported + +[pmRitOffset] +;not supported + +[pmRit0] +Command=(RC;) +ReplyLength=0 + +[pmPitch] +;not supported + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +Command=(FR0;FT1;) +ReplyLength=0 + +[pmSplitOff] +Command=(FR0;) +ReplyLength=0 + +[pmVfoA] +Command=(FR0;) +ReplyLength=0 + +[pmVfoB] +;not supported + +[pmVfoEqual] +Command=(SWH44;) +ReplyLength=0 + +[pmVfoSwap] +Command=(SWT44;) +ReplyLength=0 + +[pmVfoAA] +Command=(FR0;) +ReplyLength=0 + +[pmVfoAB] +Command=(FR0;FT1;) +ReplyLength=0 + +[pmVfoBA] +;not supported + +[pmVfoBB] +;not supported + +[pmRitOn] +Command=(RT1;) +ReplyLength=0 + +[pmRitOff] +Command=(RT0;) +ReplyLength=0 + +[pmXitOn] +Command=(XT1;) +ReplyLength=0 + +[pmXitOff] +Command=(XT0;) +ReplyLength=0 + +[pmRx] +Command=(RX;) +ReplyLength=0 + +[pmTx] +Command=(TX;) +ReplyLength=0 + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +; Set CW REV +Command=(MD7;) +ReplyLength=0 + +[pmCW_L] +; Set CW +Command=(MD3;) +ReplyLength=0 + +[pmSSB_U] +Command=(MD2;) +ReplyLength=0 + +[pmSSB_L] +Command=(MD1;) +ReplyLength=0 + +[pmDIG_U] +; Set DATA +Command=(MD6;) +ReplyLength=0 + +[pmDIG_L] +; Set DATA REV +Command=(MD9;) +ReplyLength=0 + +[pmAM] +Command=(MD5;) +ReplyLength=0 + +[pmFM] +Command=(MD4;) +ReplyLength=0 + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +[STATUS1] +Command=(IF;) +ReplyEnd=(;) +Validate=(IF...................................;) +Value1=18|5|vfText|1|0|pmRitOffset +Value2=2|11|vfText|1|0|pmFreq +Flag1 =(.......................0..............)|pmRitOff +Flag2 =(.......................1..............)|pmRitOn +Flag3 =(........................0.............)|pmXitOff +Flag4 =(........................1.............)|pmXitOn +Flag5 =(............................0.........)|pmRx +Flag6 =(............................1.........)|pmTx +Flag7 =(.............................1........)|pmSSB_L +Flag8 =(.............................2........)|pmSSB_U +Flag9 =(.............................3........)|pmCW_L +Flag10=(.............................4........)|pmFM +Flag11=(.............................5........)|pmAM +Flag12=(.............................6........)|pmDIG_U +Flag13=(.............................7........)|pmCW_U +Flag14=(.............................9........)|pmDIG_L +Flag15=(..............................0.0.....)|pmVfoAA +Flag16=(..............................1.0.....)|pmVfoBB +Flag17=(............................0.0.1.....)|pmVfoAB +Flag18=(............................0.1.1.....)|pmVfoBA +Flag19=(............................1.0.1.....)|pmVfoAB +Flag20=(............................1.1.1.....)|pmVfoBA +Flag21=(................................1.....)|pmSplitOn +Flag22=(................................0.....)|pmSplitOff + + +[STATUS2] +Command=(FA;) +ReplyEnd=(;) +Validate=(FA...........;) +Value1=2|11|vfText|1|0|pmFreqA + +[STATUS3] +Command=(FB;) +ReplyEnd=(;) +Validate=(FB...........;) +Value1=2|11|vfText|1|0|pmFreqB + +[STATUS4] +Command=(RO;) +ReplyEnd=(;) +Validate=(RO.....;) +Value1=2|5|vfText|1|0|pmRitOffset diff --git a/CATCheck/Rigs/Elecraft KX3.ini b/CATCheck/Rigs/Elecraft KX3.ini new file mode 100644 index 0000000..988f502 --- /dev/null +++ b/CATCheck/Rigs/Elecraft KX3.ini @@ -0,0 +1,197 @@ +;------------------------------------------------------------------------------- +; Elecraft KX3 command set +; +; Original K3 file created by Brendan Minish EI6IZ ei6iz.brendan@gmail.com +; Modified by Iain N6ML ar@dseven.org +; +; Tweaked for the KX3 by Tim KC1EOQ kc1eoq@gmail.com 6/14/16 +;------------------------------------------------------------------------------- + + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT] +Command=(AI0;) +ReplyLength=0 + +;enable extended K3 command set +[INIT1] +Command=(K31;) +ReplyLength=0 + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreqA] +Command=(FA...........;) +Value=2|11|vfText|1|0 +ReplyLength=0 + +[pmFreqB] +Command=(FB...........;) +Value=2|11|vfText|1|0 +ReplyLength=0 + +[pmFreq] +;not supported + +[pmRitOffset] +;not supported + +[pmRit0] +Command=(RC;) +ReplyLength=0 + +[pmPitch] +;not supported + + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +Command=(FR0;FT1;) +ReplyLength=0 + +[pmSplitOff] +Command=(FR0;) +ReplyLength=0 + +[pmVfoA] +Command=(FR0;) +ReplyLength=0 + +[pmVfoB] +;not supported + +[pmVfoEqual] +Command=(SWT25;) +ReplyLength=0 + +[pmVfoSwap] +Command=(SWT24;) +ReplyLength=0 + +[pmVfoAA] +Command=(FR0;) +ReplyLength=0 + +[pmVfoAB] +Command=(FR0;FT1;) +ReplyLength=0 + +[pmVfoBA] +;not supported + +[pmVfoBB] +;not supported + +[pmRitOn] +Command=(RT1;) +ReplyLength=0 + +[pmRitOff] +Command=(RT0;) +ReplyLength=0 + +[pmXitOn] +Command=(XT1;) +ReplyLength=0 + +[pmXitOff] +Command=(XT0;) +ReplyLength=0 + +[pmRx] +Command=(RX;) +ReplyLength=0 + +[pmTx] +Command=(TX;) +ReplyLength=0 + + + + + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +Command=(MD7;) +ReplyLength=0 + +[pmCW_L] +Command=(MD3;) +ReplyLength=0 + +[pmSSB_U] +Command=(MD2;) +ReplyLength=0 + +[pmSSB_L] +Command=(MD1;) +ReplyLength=0 + +[pmDIG_U] +Command=(MD6;) +ReplyLength=0 + +[pmDIG_L] +Command=(MD9;) +ReplyLength=0 + +[pmAM] +Command=(MD5;) +ReplyLength=0 + +[pmFM] +Command=(MD4;) +ReplyLength=0 + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +[STATUS1] +Command=(IF;) +ReplyEnd=(;) +Validate=(IF...................................;) +Value1=18|5|vfText|1|0|pmRitOffset +Value2=2|11|vfText|1|0|pmFreq +Flag1 =(.......................0..............)|pmRitOff +Flag2 =(.......................1..............)|pmRitOn +Flag3 =(........................0.............)|pmXitOff +Flag4 =(........................1.............)|pmXitOn +Flag5 =(............................0.........)|pmRx +Flag6 =(............................1.........)|pmTx +Flag7 =(.............................1........)|pmSSB_L +Flag8 =(.............................2........)|pmSSB_U +Flag9 =(.............................3........)|pmCW_L +Flag10=(.............................4........)|pmFM +Flag11=(.............................5........)|pmAM +Flag12=(.............................6........)|pmDIG_L +Flag13=(.............................7........)|pmCW_U +Flag14=(.............................9........)|pmDIG_U +Flag15=(..............................0.0.....)|pmVfoAA +Flag16=(..............................1.0.....)|pmVfoBB +Flag17=(............................0.0.1.....)|pmVfoAB +Flag18=(............................0.1.1.....)|pmVfoBA +Flag19=(............................1.0.1.....)|pmVfoAB +Flag20=(............................1.1.1.....)|pmVfoBA +Flag21=(................................1.....)|pmSplitOn +Flag22=(................................0.....)|pmSplitOff + + +[STATUS2] +Command=(FA;) +ReplyEnd=(;) +Validate=(FA...........;) +Value1=2|11|vfText|1|0|pmFreqA + +[STATUS3] +Command=(FB;) +ReplyEnd=(;) +Validate=(FB...........;) +Value1=2|11|vfText|1|0|pmFreqB diff --git a/CATCheck/Rigs/ExpertSDR.ini b/CATCheck/Rigs/ExpertSDR.ini new file mode 100644 index 0000000..3df80fa --- /dev/null +++ b/CATCheck/Rigs/ExpertSDR.ini @@ -0,0 +1,201 @@ +;------------------------------------------------------------------------------- +; ExpertSDR command set +; +; File created by Alexei Chernobai, RX4HX, rx4hx@mail.ru +;------------------------------------------------------------------------------- + +;Command= +;ReplyLength= +;ReplyEnd= +;Value=||||[|] +;Flag=[|]| + + + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT] +Command=(AI0;) +ReplyLength=0 + + + + + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreqA] +Command=(FA...........;) +Value=2|11|vfText|1|0 +ReplyLength=0 + +[pmFreqB] +Command=(FB...........;) +Value=2|11|vfText|1|0 +ReplyLength=0 + +[pmFreq] +;not supported + +[pmRitOffset] +;not supported + +[pmRit0] +Command=(RC;) +ReplyLength=0 + +[pmPitch] +;not supported + + + + + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +;not supported + +[pmSplitOff] +;not supported + +[pmVfoA] +;not supported + +[pmVfoB] +;not supported + +[pmVfoEqual] +;not supported + +[pmVfoSwap] +;not supported + +[pmVfoAA] +Command=(FR0;FT0;) +ReplyLength=0 + +[pmVfoAB] +Command=(FR0;FT1;) +ReplyLength=0 + +[pmVfoBA] +Command=(FR1;FT0;) + +[pmVfoBB] +Command=(FR1;FT1;) +ReplyLength=0 + +[pmRitOn] +Command=(RT1;) +ReplyLength=0 + +[pmRitOff] +Command=(RT0;) +ReplyLength=0 + +[pmXitOn] +Command=(XT1;) +ReplyLength=0 + +[pmXitOff] +Command=(XT0;) +ReplyLength=0 + +[pmRx] +Command=(RX;) +ReplyLength=0 + +[pmTx] +Command=(TX1;) +ReplyLength=0 + + + + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +Command=(MD3;) +ReplyLength=0 + +[pmCW_L] +Command=(MD7;) +ReplyLength=0 + +[pmSSB_U] +Command=(MD2;) +ReplyLength=0 + +[pmSSB_L] +Command=(MD1;) +ReplyLength=0 + +[pmDIG_U] +Command=(MD9;) +ReplyLength=0 + +[pmDIG_L] +Command=(MD6;) +ReplyLength=0 + +[pmAM] +Command=(MD5;) +ReplyLength=0 + +[pmFM] +Command=(MD4;) +ReplyLength=0 + + + + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +[STATUS1] +Command=(IF;) +ReplyEnd=(;) +Validate=(IF...................................;) +Value1=17|6|vfText|1|0|pmRitOffset +Value2=2|11|vfText|1|0|pmFreq +Flag1 =(.......................0..............)|pmRitOff +Flag2 =(.......................1..............)|pmRitOn +Flag3 =(........................0.............)|pmXitOff +Flag4 =(........................1.............)|pmXitOn +Flag5 =(............................0.........)|pmRx +Flag6 =(............................1.........)|pmTx +Flag7 =(.............................1........)|pmSSB_L +Flag8 =(.............................2........)|pmSSB_U +Flag9 =(.............................3........)|pmCW_U +Flag10=(.............................4........)|pmFM +Flag11=(.............................5........)|pmAM +Flag12=(.............................6........)|pmDIG_L +Flag13=(.............................7........)|pmCW_L +Flag14=(.............................9........)|pmDIG_U +Flag15=(..............................0.0.....)|pmVfoAA +Flag16=(..............................1.0.....)|pmVfoBB +Flag17=(............................0.0.1.....)|pmVfoAB +Flag18=(............................0.1.1.....)|pmVfoBA +Flag19=(............................1.0.1.....)|pmVfoBA +Flag20=(............................1.1.1.....)|pmVfoAB +Flag21=(................................1.....)|pmSplitOn +Flag22=(................................0.....)|pmSplitOff + + +[STATUS2] +Command=(FA;) +ReplyEnd=(;) +Validate=(FA...........;) +Value1=2|11|vfText|1|0|pmFreqA + +[STATUS3] +Command=(FB;) +ReplyEnd=(;) +Validate=(FB...........;) +Value1=2|11|vfText|1|0|pmFreqB diff --git a/CATCheck/Rigs/FRG-100.ini b/CATCheck/Rigs/FRG-100.ini new file mode 100644 index 0000000..d44528d --- /dev/null +++ b/CATCheck/Rigs/FRG-100.ini @@ -0,0 +1,81 @@ +;------------------------------------------------------------------------------- +; Yaesu FRG-100 command set +; +; File created by Eckhard Roth +;------------------------------------------------------------------------------- + + + + + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT] +Command=00.00.00.01.20 +ReplyLength=0 + +[INIT1] +Command=00.00.00.00.05 +ReplyLength=0 + + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- + +[pmFreq] +Command=00000000.0A +Value=0|4|vfBcdLU|0.1|0 +ReplyLength=0 + + + + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +Command=00000002.0C +ReplyLength=0 + +[pmSSB_U] +Command=00000001.0C +ReplyLength=0 + +[pmSSB_L] +Command=00000000.0C +ReplyLength=0 + +[pmDIG_U] +Command=00000002.0C +ReplyLength=0 + + +[pmAM] +Command=00000004.0C +ReplyLength=0 + +[pmFM] +Command=00000006.0C +ReplyLength=0 + + + + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- + +[STATUS1] +Command=00000003.10 +ReplyLength=18 +Value1=1|3|vfBinL|10|0|pmFreq +Flag1=00.00.00.00.00.00.FF.00.00.00.00.00.00.00.00.00.00.00|00.00.00.00.00.00.02.00.00.00.00.00.00.00.00.00.00.00|pmCW_U +Flag2=00.00.00.00.00.00.FF.00.00.00.00.00.00.00.00.00.00.00|00.00.00.00.00.00.01.00.00.00.00.00.00.00.00.00.00.00|pmSSB_U +Flag3=00.00.00.00.00.00.FF.00.00.00.00.00.00.00.00.00.00.00|00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00|pmSSB_L +Flag4=00.00.00.00.00.00.FF.00.00.00.00.00.00.00.00.00.00.00|00.00.00.00.00.00.02.00.00.00.00.00.00.00.00.00.00.00|pmDIG_U +Flag5=00.00.00.00.00.00.FF.00.00.00.00.00.00.00.00.00.00.00|00.00.00.00.00.00.04.00.00.00.00.00.00.00.00.00.00.00|pmAM + + diff --git a/CATCheck/Rigs/FT-100 D.ini b/CATCheck/Rigs/FT-100 D.ini new file mode 100644 index 0000000..8c5e248 --- /dev/null +++ b/CATCheck/Rigs/FT-100 D.ini @@ -0,0 +1,177 @@ +;------------------------------------------------------------------------------- +; Yaesu FT-100D command set +; +; File created by Alex Shovkoplyas, VE3NEA ve3nea@dxatlas.com +; Corrected by Jim N0UL +; Corrected by VE3NEA 2008-06-14 +;------------------------------------------------------------------------------- + + + + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT] +Command=00000000.0E +ReplyLength=0 + + + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreqA] +;not supported + +[pmFreqB] +;not supported + +[pmFreq] +Command=00000000.0A +;32-bit BCD unsigned little endian in 100 Hz units +Value=0|4|vfBcdLU|0.1|0 +ReplyLength=0 + +[pmRitOffset] +;not supported + +[pmRit0] +;not supported + +[pmPitch] +;not supported + + + + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +Command=00000001.01 +ReplyLength=0 + +[pmSplitOff] +Command=00000000.01 +ReplyLength=0 + +[pmVfoA] +Command=00000000.05 +ReplyLength=0 + +[pmVfoB] +Command=00000001.05 +ReplyLength=0 + +[pmVfoEqual] +;not supported + +[pmVfoSwap] +;not supported + +[pmVfoAA] +;not supported + +[pmVfoAB] +;not supported + +[pmVfoBA] +;not supported + +[pmVfoBB] +;not supported + + +[pmRitOn] +;not supported + +[pmRitOff] +;not supported + +[pmXitOn] +;not supported + +[pmXitOff] +;not supported + +[pmRx] +Command=00000000.0F +ReplyLength=0 + +[pmTx] +Command=00000001.0F +ReplyLength=0 + + + + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +Command=00000002.0C +ReplyLength=0 + +[pmCW_L] +Command=00000003.0C +ReplyLength=0 + +[pmSSB_U] +Command=00000001.0C +ReplyLength=0 + +[pmSSB_L] +Command=00000000.0C +ReplyLength=0 + +[pmDIG_U] +Command=00000005.0C +ReplyLength=0 + +[pmDIG_L] +;not supported + +[pmAM] +Command=00000004.0C +ReplyLength=0 + +[pmFM] +Command=00000006.0C +ReplyLength=0 + + + + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +[STATUS1] +;4-th byte is a parameter, doc does not explain what it means +Command=000000.00.10 +ReplyLength=32 +;32-bit unsigned integer, big endian, in 1.25 Hz unints +Value2=1|4|vfBinB|1.25|0|pmFreq +;16-bit signed integer, big endian, in 1.25 Hz unints +Value1=10|2|vfYaesu|1.25|0|pmRitOffset +Flag1 =0000000000.07.0000000000000000000000000000000000000000000000000000|0000000000.00.0000000000000000000000000000000000000000000000000000|pmSSB_L +Flag2 =0000000000.07.0000000000000000000000000000000000000000000000000000|0000000000.01.0000000000000000000000000000000000000000000000000000|pmSSB_U +Flag3 =0000000000.07.0000000000000000000000000000000000000000000000000000|0000000000.02.0000000000000000000000000000000000000000000000000000|pmCW_U +Flag4 =0000000000.07.0000000000000000000000000000000000000000000000000000|0000000000.03.0000000000000000000000000000000000000000000000000000|pmCW_L +Flag5 =0000000000.07.0000000000000000000000000000000000000000000000000000|0000000000.04.0000000000000000000000000000000000000000000000000000|pmAM +Flag6 =0000000000.07.0000000000000000000000000000000000000000000000000000|0000000000.05.0000000000000000000000000000000000000000000000000000|pmDIG_U +Flag7 =0000000000.07.0000000000000000000000000000000000000000000000000000|0000000000.06.0000000000000000000000000000000000000000000000000000|pmFM +Flag8 =000000000000000000.01.00000000000000000000000000000000000000000000|000000000000000000.01.00000000000000000000000000000000000000000000|pmSplitOn +Flag9 =000000000000000000.01.00000000000000000000000000000000000000000000|000000000000000000.00.00000000000000000000000000000000000000000000|pmSplitOff +Flag10=000000000000000000000000000000.80.00000000000000000000000000000000|000000000000000000000000000000.80.00000000000000000000000000000000|pmRitOn +Flag11=000000000000000000000000000000.80.00000000000000000000000000000000|000000000000000000000000000000.00.00000000000000000000000000000000|pmRitOff + +[STATUS2] +Command=00000001.FA +ReplyLength=8 +Flag1 =00.04.00.00.00.00.00.00|00.00.00.00.00.00.00.00|pmVfoA +Flag2 =00.04.00.00.00.00.00.00|00.04.00.00.00.00.00.00|pmVfoB +Flag5 =80.00.00.10.00.00.00.00|00.00.00.00.00.00.00.00|pmRx +Flag6 =80.00.00.00.00.00.00.00|80.00.00.00.00.00.00.00|pmTx +Flag7 =00.00.00.10.00.00.00.00|00.00.00.10.00.00.00.00|pmTx diff --git a/CATCheck/Rigs/FT-1000 MP.ini b/CATCheck/Rigs/FT-1000 MP.ini new file mode 100644 index 0000000..c17c2d0 --- /dev/null +++ b/CATCheck/Rigs/FT-1000 MP.ini @@ -0,0 +1,196 @@ +;------------------------------------------------------------------------------- +; Yaesu FT-1000MP command set +; +; File created by Alex Shovkoplyas, VE3NEA ve3nea@dxatlas.com +;------------------------------------------------------------------------------- + + + + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT] +Command=00000000.0E +ReplyLength=0 + + + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreqA] +Command=00000000.0A +;32-bit BCD, unsigned, big endian +Value=0|4|vfBcdLU|0.1|0 +ReplyLength=0 + +[pmFreqB] +Command=00000000.8A +;32-bit BCD, unsigned, big endian +Value=0|4|vfBcdLU|0.1|0 +ReplyLength=0 + +[pmFreq] +;not supported + +[pmRitOffset] +;Command=000000FF.09 +;16-bit little endian BCD plus sign byte, 10 Hz units +;Value=0|3|vfBcdLS|0.1|0 +;ReplyLength=0 + +[pmRit0] +Command=000000FF.09 +ReplyLength=0 + +[pmPitch] +;not supported + + + + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +Command=00000001.01 +ReplyLength=0 + +[pmSplitOff] +Command=00000000.01 +ReplyLength=0 + +[pmVfoA] +Command=00000000.05 +ReplyLength=0 + +[pmVfoB] +Command=00000001.05 +ReplyLength=0 + +[pmVfoEqual] +;not supported + +[pmVfoSwap] +;not supported + +[pmVfoAA] +;not supported + +[pmVfoAB] +;not supported + +[pmVfoBA] +;not supported + +[pmVfoBB] +;not supported + + +[pmRitOn] +Command=00000001.09 +ReplyLength=0 + +[pmRitOff] +Command=00000000.09 +ReplyLength=0 + +[pmXitOn] +Command=00000081.09 +ReplyLength=0 + +[pmXitOff] +Command=00000080.09 +ReplyLength=0 + +[pmRx] +Command=00000000.0F +ReplyLength=0 + +[pmTx] +Command=00000001.0F +ReplyLength=0 + + + + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +Command=00000002.0C +ReplyLength=0 + +[pmCW_L] +Command=00000003.0C +ReplyLength=0 + +[pmSSB_U] +Command=00000001.0C +ReplyLength=0 + +[pmSSB_L] +Command=00000000.0C +ReplyLength=0 + +[pmDIG_U] +Command=00000009.0C +ReplyLength=0 + +[pmDIG_L] +Command=00000008.0C +ReplyLength=0 + +[pmAM] +Command=00000004.0C +ReplyLength=0 + +[pmFM] +Command=00000006.0C +ReplyLength=0 + + + + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +[STATUS1] +Command=00000002.10 +ReplyLength=16 +Value1=5|2|vfBinB|0.625|0|pmRitOffset +Value2=1|4|vfBinB|0.625|0|pmFreq +Flag1 =00000000000000.07.0000000000000000|00000000000000.00.0000000000000000|pmSSB_L +Flag2 =00000000000000.07.0000000000000000|00000000000000.01.0000000000000000|pmSSB_U +Flag3 =00000000000000.07.8000000000000000|00000000000000.02.0000000000000000|pmCW_U +Flag4 =00000000000000.07.8000000000000000|00000000000000.02.8000000000000000|pmCW_L +Flag5 =00000000000000.07.0000000000000000|00000000000000.03.0000000000000000|pmAM +Flag6 =00000000000000.07.0000000000000000|00000000000000.04.0000000000000000|pmFM +Flag7 =00000000000000.07.8000000000000000|00000000000000.05.8000000000000000|pmDIG_U +Flag8 =00000000000000.07.8000000000000000|00000000000000.05.0000000000000000|pmDIG_L +Flag9 =00000000000000.07.0000000000000000|00000000000000.06.0000000000000000|pmDIG_L +Flag10=000000000000000000.01.000000000000|000000000000000000.00.000000000000|pmXitOff +Flag11=000000000000000000.01.000000000000|000000000000000000.01.000000000000|pmXitOn +Flag12=000000000000000000.02.000000000000|000000000000000000.00.000000000000|pmRitOff +Flag13=000000000000000000.02.000000000000|000000000000000000.02.000000000000|pmRitOn + +[STATUS2] +Command=00000003.10 +ReplyLength=32 +Value1=1|4|vfBinB|0.625|0|pmFreqA +Value2=17|4|vfBinB|0.625|0|pmFreqB + +[STATUS3] +Command=00000001.FA +ReplyLength=6 +Flag1=11.00.00.00.00.00|00.00.00.00.00.00|pmVfoAA +Flag2=11.00.00.00.00.00|01.00.00.00.00.00|pmVfoAB +Flag3=11.00.00.00.00.00|11.00.00.00.00.00|pmVfoBA +Flag4=11.00.00.00.00.00|10.00.00.00.00.00|pmVfoBB +Flag5=80.00.00.10.00.00|00.00.00.00.00.00|pmRx +Flag6=80.00.00.00.00.00|80.00.00.00.00.00|pmTx +Flag7=00.00.00.10.00.00|00.00.00.10.00.00|pmTx +Flag8=01.0000000000|01.0000000000|pmSplitOn +Flag9=01.0000000000|00.0000000000|pmSplitOff diff --git a/CATCheck/Rigs/FT-1000.ini b/CATCheck/Rigs/FT-1000.ini new file mode 100644 index 0000000..1d09751 --- /dev/null +++ b/CATCheck/Rigs/FT-1000.ini @@ -0,0 +1,192 @@ +;------------------------------------------------------------------------------- +; Yaesu FT-1000 & 1000D command set +; +; File created by Erkki Latomaa, SM5NBE / SA5N 11/28/2004 +; Not complete but does work - tested under CQWW CW 2004 +; Split / RIT / XIT OK 12/03/2004 SM5NBE +;------------------------------------------------------------------------------- +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- + + +[INIT] +Command=00000000.0E +ReplyLength=0 +;------------------------------------------------------------------------------- +; set frequency + +;------------------------------------------------------------------------------- +[pmFreqA] +Command=00000000.0A +;32-bit BCD, unsigned, big endian +Value=0|4|vfBcdLU|0.1|0 +ReplyLength=0 + +[pmFreqB] +Command=00000000.8A +;32-bit BCD, unsigned, big endian +Value=0|4|vfBcdLU|0.1|0 +ReplyLength=0 + +[pmFreq] +;not supported + +[pmRitOffset] +Command=000000FF.09 +;16-bit little endian BCD plus sign byte, 10 Hz units +Value=0|3|vfBcdLS|0.1|0 +ReplyLength=0 + +[pmRit0] +Command=000000FF.09 +ReplyLength=0 + +[pmPitch] +;not supported + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +Command=00000001.01 +ReplyLength=0 + +[pmSplitOff] +Command=00000000.01 +ReplyLength=0 + +[pmVfoA] +Command=00000000.05 +ReplyLength=0 + +[pmVfoB] +Command=00000001.05 +ReplyLength=0 + +[pmVfoEqual] +Command=00000000.85 +ReplyLength=0 + +[pmVfoSwap] +;Command=00000000.05 +;ReplyLength=0 + + +[pmVfoAA] +;not supported + +[pmVfoAB] +;not supported + +[pmVfoBA] +;not supported + +[pmVfoBB] +;not supported + +[pmRitOn] +Command=00000001.09 +ReplyLength=0 + +[pmRitOff] +Command=00000000.09 +ReplyLength=0 + +[pmXitOn] +Command=00000081.09 +ReplyLength=0 + +[pmXitOff] +Command=00000080.09 +ReplyLength=0 + +[pmRx] +Command=00000000.0F +ReplyLength=0 + +[pmTx] +Command=00000001.0F +ReplyLength=0 +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +Command=00000002.0C +ReplyLength=0 + +[pmCW_L] +Command=00000003.0C +ReplyLength=0 + +[pmSSB_U] +Command=00000001.0C +ReplyLength=0 + +[pmSSB_L] +Command=00000000.0C +ReplyLength=0 + +[pmDIG_U] +Command=00000009.0C +ReplyLength=0 + +[pmDIG_L] +Command=00000008.0C +ReplyLength=0 + +[pmAM] +Command=00000004.0C +ReplyLength=0 + +[pmFM] +Command=00000006.0C +ReplyLength=0 +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- + +[STATUS1] +Command=00000002.10 +ReplyLength=16 +Value1=5|2|vfBinB|10|0|pmRitOffset +Value2=1|3|vfBinB|10|0|pmFreq +Flag1 =00.00.00.00.00.00.00.07.00.00.00.00.00.00.00.00|00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00|pmSSB_L +Flag2 =00.00.00.00.00.00.00.07.00.00.00.00.00.00.00.00|00.00.00.00.00.00.00.01.00.00.00.00.00.00.00.00|pmSSB_U + +Flag3 =00.00.00.00.00.00.00.07.80.00.00.00.00.00.00.00|00.00.00.00.00.00.00.02.00.00.00.00.00.00.00.00|pmCW_U +Flag4 =00.00.00.00.00.00.00.07.80.00.00.00.00.00.00.00|00.00.00.00.00.00.00.02.80.00.00.00.00.00.00.00|pmCW_L + +Flag5 =00.00.00.00.00.00.00.07.00.00.00.00.00.00.00.00|00.00.00.00.00.00.00.03.00.00.00.00.00.00.00.00|pmAM +Flag6 =00.00.00.00.00.00.00.07.00.00.00.00.00.00.00.00|00.00.00.00.00.00.00.04.00.00.00.00.00.00.00.00|pmFM + +Flag7 =00.00.00.00.00.00.00.07.80.00.00.00.00.00.00.00|00.00.00.00.00.00.00.05.80.00.00.00.00.00.00.00|pmDIG_U +Flag8 =00.00.00.00.00.00.00.07.80.00.00.00.00.00.00.00|00.00.00.00.00.00.00.05.00.00.00.00.00.00.00.00|pmDIG_L +Flag9 =00.00.00.00.00.00.00.07.00.00.00.00.00.00.00.00|00.00.00.00.00.00.00.06.00.00.00.00.00.00.00.00|pmDIG_L + +Flag10=00.00.00.00.01.00.00.00.00.00.00.00.00.00.00.00|00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00|pmXitOff +Flag11=00.00.00.00.01.00.00.00.00.00.00.00.00.00.00.00|00.00.00.00.01.00.00.00.00.00.00.00.00.00.00.00|pmXitOn + +Flag12=00.00.00.00.02.00.00.00.00.00.00.00.00.00.00.00|00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00|pmRitOff +Flag13=00.00.00.00.02.00.00.00.00.00.00.00.00.00.00.00|00.00.00.00.02.00.00.00.00.00.00.00.00.00.00.00|pmRitOn + +Flag14=00.00.00.00.00.00.10.00.00.00.00.00.00.00.00.00|00.00.00.00.00.00.00.10.00.00.00.00.00.00.00.00|pmSplitOn +Flag15=00.00.00.00.00.80.00.00.00.00.00.00.00.00.00.00|00.00.00.00.00.00.08.00.00.00.00.00.00.00.00.00|pmSplitOff + + +[STATUS2] +Command=00000003.10 +ReplyLength=32 +Value1=1|3|vfBinB|10|0|pmFreqA +Value2=17|3|vfBinB|10|0|pmFreqB + +[STATUS3] +Command=00000000.FA +ReplyLength=5 +Flag1 =03.00.00.00.00|00.00.00.00.00|pmVfoAA +Flag2 =03.00.00.00.00|02.00.00.00.00|pmVfoBB +Flag3 =03.00.00.00.00|01.00.00.00.00|pmVfoAB +Flag4 =03.00.00.00.00|03.00.00.00.00|pmVfoBA +Flag7 =80.00.01.00.00|00.00.00.00.00|pmRx +Flag8 =80.00.00.00.00|80.00.00.00.00|pmTx +Flag8 =00.00.01.00.00|00.00.01.00.00|pmTx diff --git a/CATCheck/Rigs/FT-2000.ini b/CATCheck/Rigs/FT-2000.ini new file mode 100644 index 0000000..2e36d54 --- /dev/null +++ b/CATCheck/Rigs/FT-2000.ini @@ -0,0 +1,219 @@ +;------------------------------------------------------------------------------- +; Yaesu FT-2000 +; +; 2006-12-31 - File created by Serge Filonenko UA0SC ua0sc@teleos.ru +; 2018-05-01 - File updated by R. A. Wilson N6TV n6tv@arrl.net +; - Recognize all modes returned by the IF; command +;------------------------------------------------------------------------------- + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT] +Command=(AI0;) +ReplyLength=0 + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- + +[pmFreqA] +Command=(FA........;) +Value=2|8|vfText|1|0 +ReplyLength=0 + +[pmFreqB] +Command=(FB........;) +Value=2|8|vfText|1|0 +ReplyLength=0 + +[pmFreq] +;not supported + +[pmRitOffset] +Command=(RU....;) +Value=2|4|vfText|1|0 +ReplyLength=0 + +[pmRit0] +Command=(RC;) +ReplyLength=0 + +[pmPitch] +Command=(KP..;) +Value=2|2|vfText|0.02|-300 +ReplyLength=0 + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +Command=(FR0;FT1;) +ReplyLength=0 + +[pmSplitOff] +Command=(FR0;FT0;) +ReplyLength=0 + +[pmVfoA] +Command=(FR0;) +ReplyLength=0 + +[pmVfoB] +Command=(FR3;) +ReplyLength=0 + +[pmVfoEqual] +Command=(AB;) +ReplyLength=0 + +[pmVfoSwap] +Command=(SV;) +ReplyLength=0 + +[pmVfoAA] +Command=(FR0;FT0;) +ReplyLength=0 + +[pmVfoAB] +Command=(FR0;FT1;) +ReplyLength=0 + +[pmVfoBA] +Command=(FR3;FT0;) +ReplyLength=0 + +[pmVfoBB] +Command=(FR3;FT1;) +ReplyLength=0 + +[pmRitOn] +Command=(RT1;) +ReplyLength=0 + +[pmRitOff] +Command=(RT0;) +ReplyLength=0 + +[pmXitOn] +Command=(XT1;) +ReplyLength=0 + +[pmXitOff] +Command=(XT0;) +ReplyLength=0 + +[pmRit0] +Command=(RC;) +ReplyLength=0 + +[pmRx] +Command=(TX0;) +ReplyLength=0 + +[pmTx] +Command=(TX1;) +ReplyLength=0 + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +Command=(MD03;) +ReplyLength=0 + +[pmCW_L] +Command=(MD07;) +ReplyLength=0 + +[pmSSB_U] +Command=(MD02;) +ReplyLength=0 + +[pmSSB_L] +Command=(MD01;) +ReplyLength=0 + +[pmDIG_U] +Command=(MD09;) +ReplyLength=0 + +[pmDIG_L] +Command=(MD06;) +ReplyLength=0 + +[pmAM] +Command=(MD05;) +ReplyLength=0 + +[pmFM] +Command=(MD04;) +ReplyLength=0 + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- + +[STATUS1] +Command=(IF;) +ReplyEnd=(;) +Validate=(IF........................;) +Value1=13|5|vfText|1|0|pmRitOffset +Value2=5|8|vfText|1|0|pmFreq +Flag1 =(..................0........)|pmRitOff +Flag2 =(..................1........)|pmRitOn +Flag3 =(...................0.......)|pmXitOff +Flag4 =(...................1.......)|pmXitOn +Flag5 =(....................1......)|pmSSB_L +Flag6 =(....................2......)|pmSSB_U +Flag7 =(....................3......)|pmCW_U +Flag8 =(....................4......)|pmFM +Flag9 =(....................5......)|pmAM +Flag10=(....................6......)|pmDIG_L +Flag11=(....................7......)|pmCW_L +Flag12=(....................8......)|pmDIG_L +Flag13=(....................9......)|pmDIG_U +Flag14=(....................A......)|pmFM +Flag15=(....................B......)|pmFM +Flag16=(....................C......)|pmDIG_U +Flag17=(..............0000.........)|pmRit0 + +[STATUS2] +Command=(FA;) +ReplyEnd=(;) +;Validate=(FA........;) +Value1=2|8|vfText|1|0|pmFreqA + +[STATUS3] +Command=(FB;) +ReplyEnd=(;) +;Validate=(FB........;) +Value1=2|8|vfText|1|0|pmFreqB + +[STATUS4] +Command=(KP;) +ReplyEnd=(;) +Validate=(KP..;) +Value1=2|2|vfText|50|300|pmPitch + +[STATUS5] +Command=(FR;FT;) +ReplyLength=8 +;ReplyEnd=(;) +Validate=(FR.;FT.;) +Flag1=(..0.....)|pmVfoA +Flag2=(..3.....)|pmVfoB +Flag3=(..0...0.)|pmVfoAA +Flag4=(..0...1.)|pmVfoAB +Flag5=(..3...0.)|pmVfoBA +Flag6=(..3...1.)|pmVfoBB +Flag7=(..0...1.)|pmSplitOn +Flag8=(..0...0.)|pmSplitOff + +[STATUS6] +Command=(TX;) +ReplyEnd=(;) +Validate=(TX.;) +Flag1=(..0.)|pmRX +Flag2=(..1.)|pmTX diff --git a/CATCheck/Rigs/FT-2000PEPV3.ini b/CATCheck/Rigs/FT-2000PEPV3.ini new file mode 100644 index 0000000..8396274 --- /dev/null +++ b/CATCheck/Rigs/FT-2000PEPV3.ini @@ -0,0 +1,215 @@ +;------------------------------------------------------------------------------- +; Yaesu FT-2000 firmware PEPV3 or later +; +; 2009-12-15 - File created by Lou N2TU N2TU@ARRL.net +; 2018-05-01 - File updated by R. A. Wilson N6TV n6tv@arrl.net +; - Recognize all modes returned by the IF; command +;------------------------------------------------------------------------------- + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT] +Command=(AI0;) +ReplyLength=0 + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- + +[pmFreqA] +Command=(FA........;) +Value=2|8|vfText|1|0 +ReplyLength=0 + +[pmFreqB] +Command=(FB........;) +Value=2|8|vfText|1|0 +ReplyLength=0 + +[pmFreq] +;not supported + +[pmRitOffset] +Command=(RU....;) +Value=2|4|vfText|1|0 +ReplyLength=0 + +[pmRit0] +Command=(RC;) +ReplyLength=0 + +[pmPitch] +Command=(KP..;) +Value=2|2|vfText|0.02|-300 +ReplyLength=0 + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +Command=(FR0;FT3;) +ReplyLength=0 + +[pmSplitOff] +Command=(FR0;FT2;) +ReplyLength=0 + +[pmVfoA] +Command=(FR0;) +ReplyLength=0 + +[pmVfoB] +Command=(FR3;) +ReplyLength=0 + +[pmVfoEqual] +Command=(AB;) +ReplyLength=0 + +[pmVfoSwap] +Command=(SV;) +ReplyLength=0 + +[pmVfoAA] +Command=(FR0;FT0;) +ReplyLength=0 + +[pmVfoAB] +Command=(FR0;FT3;) +ReplyLength=0 + +[pmVfoBA] +Command=(FR3;FT2;) +ReplyLength=0 + +[pmVfoBB] +Command=(FR3;FT3;) +ReplyLength=0 + +[pmRitOn] +Command=(RT1;) +ReplyLength=0 + +[pmRitOff] +Command=(RT0;) +ReplyLength=0 + +[pmXitOn] +Command=(XT1;) +ReplyLength=0 + +[pmXitOff] +Command=(XT0;) +ReplyLength=0 + +[pmRx] +Command=(TX0;) +ReplyLength=0 + +[pmTx] +Command=(TX1;) +ReplyLength=0 + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +Command=(MD03;) +ReplyLength=0 + +[pmCW_L] +Command=(MD07;) +ReplyLength=0 + +[pmSSB_U] +Command=(MD02;) +ReplyLength=0 + +[pmSSB_L] +Command=(MD01;) +ReplyLength=0 + +[pmDIG_U] +Command=(MD09;) +ReplyLength=0 + +[pmDIG_L] +Command=(MD06;) +ReplyLength=0 + +[pmAM] +Command=(MD05;) +ReplyLength=0 + +[pmFM] +Command=(MD04;) +ReplyLength=0 + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- + +[STATUS1] +Command=(IF;) +ReplyEnd=(;) +Validate=(IF........................;) +Value1=13|5|vfText|1|0|pmRitOffset +Value2=5|8|vfText|1|0|pmFreq +Flag1 =(..................0........)|pmRitOff +Flag2 =(..................1........)|pmRitOn +Flag3 =(...................0.......)|pmXitOff +Flag4 =(...................1.......)|pmXitOn +Flag5 =(....................1......)|pmSSB_L +Flag6 =(....................2......)|pmSSB_U +Flag7 =(....................3......)|pmCW_U +Flag8 =(....................4......)|pmFM +Flag9 =(....................5......)|pmAM +Flag10=(....................6......)|pmDIG_L +Flag11=(....................7......)|pmCW_L +Flag12=(....................8......)|pmDIG_L +Flag13=(....................9......)|pmDIG_U +Flag14=(....................A......)|pmFM +Flag15=(....................B......)|pmFM +Flag16=(....................C......)|pmDIG_U +Flag17=(..............0000.........)|pmRit0 + +[STATUS2] +Command=(FA;) +ReplyEnd=(;) +;Validate=(FA........;) +Value1=2|8|vfText|1|0|pmFreqA + +[STATUS3] +Command=(FB;) +ReplyEnd=(;) +;Validate=(FB........;) +Value1=2|8|vfText|1|0|pmFreqB + +[STATUS4] +Command=(KP;) +ReplyEnd=(;) +Validate=(KP..;) +Value1=2|2|vfText|50|300|pmPitch + +[STATUS5] +Command=(FR;FT;) +ReplyLength=8 +;ReplyEnd=(;) +Validate=(FR.;FT.;) +Flag1=(..0.....)|pmVfoA +Flag2=(..3.....)|pmVfoB +Flag3=(..0...0.)|pmVfoAA +Flag4=(..0...1.)|pmVfoAB +Flag5=(..3...0.)|pmVfoBA +Flag6=(..3...1.)|pmVfoBB +Flag7=(..0...1.)|pmSplitOn +Flag8=(..0...0.)|pmSplitOff + +[STATUS6] +Command=(TX;) +ReplyEnd=(;) +Validate=(TX.;) +Flag1=(..0.)|pmRX +Flag2=(..1.)|pmTX diff --git a/CATCheck/Rigs/FT-2KAFSKPEPV3.ini b/CATCheck/Rigs/FT-2KAFSKPEPV3.ini new file mode 100644 index 0000000..463018c --- /dev/null +++ b/CATCheck/Rigs/FT-2KAFSKPEPV3.ini @@ -0,0 +1,221 @@ +;------------------------------------------------------------------------------- +; Yaesu FT-2000 command set ver. 3.0 10-22-2010 +; +; File modified by Dan K3ZXL dan-schaaf@att.net +; THIS FILE IS FOR AFSK RTTY AND PSK, NOT FSK RTTY. PC Sound Card +; must be connected to the Packet Jack on the back of the FT-2000. +; All other modes still are supported. +; Omnirig setup in my PC: 38400, 8, N, 1, RTS Low, DTR Low, +; Poll int 500, Timeout 3000 +; +; For FSK operation, use INI file FT-2KFSKPEPV3.ini +; +; Other users may modify it as necessary. If mods are made and +; tested, please inform Alex, VE3NEA alshovk@dxatlas.com so that he +; can include it in the Omnirig downloads. +; +;------------------------------------------------------------------------------- + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT] +Command=(AI0;) +ReplyLength=0 + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- + +[pmFreqA] +Command=(FA........;) +Value=2|8|vfText|1|0 +ReplyLength=0 + +[pmFreqB] +Command=(FB........;) +Value=2|8|vfText|1|0 +ReplyLength=0 + +[pmFreq] +;not supported + +[pmRitOffset] +Command=(RU....;) +Value=2|4|vfText|1|0 +ReplyLength=0 + +[pmRit0] +Command=(RC;) +ReplyLength=0 + +[pmPitch] +Command=(KP..;) +Value=2|2|vfText|0.02|-300 +ReplyLength=0 + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +Command=(FR0;FT3;) +ReplyLength=0 + +[pmSplitOff] +Command=(FR0;FT2;) +ReplyLength=0 + +[pmVfoA] +Command=(FR0;) +ReplyLength=0 + +[pmVfoB] +Command=(FR3;) +ReplyLength=0 + +[pmVfoEqual] +Command=(AB;) +ReplyLength=0 + +[pmVfoSwap] +Command=(SV;) +ReplyLength=0 + +[pmVfoAA] +Command=(FR0;FT0;) +ReplyLength=0 + +[pmVfoAB] +Command=(FR0;FT3;) +ReplyLength=0 + +[pmVfoBA] +Command=(FR3;FT2;) +ReplyLength=0 + +[pmVfoBB] +Command=(FR3;FT3;) +ReplyLength=0 + +[pmRitOn] +Command=(RT1;) +ReplyLength=0 + +[pmRitOff] +Command=(RT0;) +ReplyLength=0 + +[pmXitOn] +Command=(XT1;) +ReplyLength=0 + +[pmXitOff] +Command=(XT0;) +ReplyLength=0 + +[pmRx] +Command=(TX0;) +ReplyLength=0 + +[pmTx] +Command=(TX1;) +ReplyLength=0 + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +Command=(MD03;MD13;) +ReplyLength=0 + +[pmCW_L] +Command=(MD07;MD17;) +ReplyLength=0 + +[pmSSB_U] +Command=(MD02;MD12;) +ReplyLength=0 + +[pmSSB_L] +Command=(MD01;MD11;) +ReplyLength=0 + +[pmDIG_U] +Command=(MD0C;MD1C;) +ReplyLength=0 + +[pmDIG_L] +Command=(MD08;MD18;) +ReplyLength=0 + +[pmAM] +Command=(MD05;MD15;) +ReplyLength=0 + +[pmFM] +Command=(MD04;MD14;) +ReplyLength=0 + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- + +[STATUS1] +Command=(IF;) +ReplyEnd=(;) +Validate=(IF........................;) +Value1=13|5|vfText|1|0|pmRitOffset +Value2=5|8|vfText|1|0|pmFreq +Flag1 =(..................0........)|pmRitOff +Flag2 =(..................1........)|pmRitOn +Flag3 =(...................0.......)|pmXitOff +Flag4 =(...................1.......)|pmXitOn +Flag5 =(....................1......)|pmSSB_L +Flag6 =(....................2......)|pmSSB_U +Flag7 =(....................3......)|pmCW_U +Flag8 =(....................4......)|pmFM +Flag9 =(....................5......)|pmAM +Flag10=(....................8......)|pmDIG_L +Flag11=(....................7......)|pmCW_L +Flag12=(....................C......)|pmDIG_U +Flag13=(..............0000.........)|pmRit0 + +[STATUS2] +Command=(FA;) +ReplyEnd=(;) +;Validate=(FA........;) +Value1=2|8|vfText|1|0|pmFreqA + +[STATUS3] +Command=(FB;) +ReplyEnd=(;) +;Validate=(FB........;) +Value1=2|8|vfText|1|0|pmFreqB + +[STATUS4] +Command=(KP;) +ReplyEnd=(;) +Validate=(KP..;) +Value1=2|2|vfText|50|300|pmPitch + +[STATUS5] +Command=(FR;FT;) +ReplyLength=8 +;ReplyEnd=(;) +Validate=(FR.;FT.;) +Flag1=(..0.....)|pmVfoA +Flag2=(..3.....)|pmVfoB +Flag3=(..0...0.)|pmVfoAA +Flag4=(..0...1.)|pmVfoAB +Flag5=(..3...0.)|pmVfoBA +Flag6=(..3...1.)|pmVfoBB +Flag7=(..0...1.)|pmSplitOn +Flag8=(..0...0.)|pmSplitOff + +[STATUS6] +Command=(TX;) +ReplyEnd=(;) +Validate=(TX.;) +Flag1=(..0.)|pmRX +Flag2=(..1.)|pmTX \ No newline at end of file diff --git a/CATCheck/Rigs/FT-2KFSKPEPV3.ini b/CATCheck/Rigs/FT-2KFSKPEPV3.ini new file mode 100644 index 0000000..b994b80 --- /dev/null +++ b/CATCheck/Rigs/FT-2KFSKPEPV3.ini @@ -0,0 +1,222 @@ +;------------------------------------------------------------------------------- +; Yaesu FT-2000 command set ver. 3.0 10-22-2010 +; +; File modified by Dan K3ZXL dan-schaaf@att.net +; THIS FILE IS FOR FSK RTTY NOT PSK, NOT AFSK RTTY. TNC must be +; connected to the RTTY FSK Jack on the back of the FT-2000. +; All other modes still are supported. +; Omnirig setup in my PC: 38400, 8, N, 1, RTS Low, DTR Low, +; Poll int 500, Timeout 3000 +; +; For AFSK operation, use INI file FT-2KAFSKPEPV3.in +; +; I do not have a TNC in order to test this file. But I think it will +; work. Other users may modify it as necessary. If mods are made and +; tested, please inform Alex, VE3NEA alshovk@dxatlas.com so that he +; can include it in the Omnirig downloads. +; +;------------------------------------------------------------------------------- + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT] +Command=(AI0;) +ReplyLength=0 + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- + +[pmFreqA] +Command=(FA........;) +Value=2|8|vfText|1|0 +ReplyLength=0 + +[pmFreqB] +Command=(FB........;) +Value=2|8|vfText|1|0 +ReplyLength=0 + +[pmFreq] +;not supported + +[pmRitOffset] +Command=(RU....;) +Value=2|4|vfText|1|0 +ReplyLength=0 + +[pmRit0] +Command=(RC;) +ReplyLength=0 + +[pmPitch] +Command=(KP..;) +Value=2|2|vfText|0.02|-300 +ReplyLength=0 + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +Command=(FR0;FT3;) +ReplyLength=0 + +[pmSplitOff] +Command=(FR0;FT2;) +ReplyLength=0 + +[pmVfoA] +Command=(FR0;) +ReplyLength=0 + +[pmVfoB] +Command=(FR3;) +ReplyLength=0 + +[pmVfoEqual] +Command=(AB;) +ReplyLength=0 + +[pmVfoSwap] +Command=(SV;) +ReplyLength=0 + +[pmVfoAA] +Command=(FR0;FT0;) +ReplyLength=0 + +[pmVfoAB] +Command=(FR0;FT3;) +ReplyLength=0 + +[pmVfoBA] +Command=(FR3;FT2;) +ReplyLength=0 + +[pmVfoBB] +Command=(FR3;FT3;) +ReplyLength=0 + +[pmRitOn] +Command=(RT1;) +ReplyLength=0 + +[pmRitOff] +Command=(RT0;) +ReplyLength=0 + +[pmXitOn] +Command=(XT1;) +ReplyLength=0 + +[pmXitOff] +Command=(XT0;) +ReplyLength=0 + +[pmRx] +Command=(TX0;) +ReplyLength=0 + +[pmTx] +Command=(TX1;) +ReplyLength=0 + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +Command=(MD03;MD13;) +ReplyLength=0 + +[pmCW_L] +Command=(MD07;MD17;) +ReplyLength=0 + +[pmSSB_U] +Command=(MD02;MD12;) +ReplyLength=0 + +[pmSSB_L] +Command=(MD01;MD11;) +ReplyLength=0 + +[pmDIG_U] +Command=(MD09;MD19;) +ReplyLength=0 + +[pmDIG_L] +Command=(MD06;MD16;) +ReplyLength=0 + +[pmAM] +Command=(MD05;MD15;) +ReplyLength=0 + +[pmFM] +Command=(MD04;MD14) +ReplyLength=0 + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- + +[STATUS1] +Command=(IF;) +ReplyEnd=(;) +Validate=(IF........................;) +Value1=13|5|vfText|1|0|pmRitOffset +Value2=5|8|vfText|1|0|pmFreq +Flag1 =(..................0........)|pmRitOff +Flag2 =(..................1........)|pmRitOn +Flag3 =(...................0.......)|pmXitOff +Flag4 =(...................1.......)|pmXitOn +Flag5 =(....................1......)|pmSSB_L +Flag6 =(....................2......)|pmSSB_U +Flag7 =(....................3......)|pmCW_U +Flag8 =(....................4......)|pmFM +Flag9 =(....................5......)|pmAM +Flag10=(....................6......)|pmDIG_L +Flag11=(....................7......)|pmCW_L +Flag12=(....................9......)|pmDIG_U +Flag13=(..............0000.........)|pmRit0 + +[STATUS2] +Command=(FA;) +ReplyEnd=(;) +;Validate=(FA........;) +Value1=2|8|vfText|1|0|pmFreqA + +[STATUS3] +Command=(FB;) +ReplyEnd=(;) +;Validate=(FB........;) +Value1=2|8|vfText|1|0|pmFreqB + +[STATUS4] +Command=(KP;) +ReplyEnd=(;) +Validate=(KP..;) +Value1=2|2|vfText|50|300|pmPitch + +[STATUS5] +Command=(FR;FT;) +ReplyLength=8 +;ReplyEnd=(;) +Validate=(FR.;FT.;) +Flag1=(..0.....)|pmVfoA +Flag2=(..3.....)|pmVfoB +Flag3=(..0...0.)|pmVfoAA +Flag4=(..0...1.)|pmVfoAB +Flag5=(..3...0.)|pmVfoBA +Flag6=(..3...1.)|pmVfoBB +Flag7=(..0...1.)|pmSplitOn +Flag8=(..0...0.)|pmSplitOff + +[STATUS6] +Command=(TX;) +ReplyEnd=(;) +Validate=(TX.;) +Flag1=(..0.)|pmRX +Flag2=(..1.)|pmTX \ No newline at end of file diff --git a/CATCheck/Rigs/FT-2K_Readme.txt b/CATCheck/Rigs/FT-2K_Readme.txt new file mode 100644 index 0000000..782f063 --- /dev/null +++ b/CATCheck/Rigs/FT-2K_Readme.txt @@ -0,0 +1,16 @@ +FT-2KAFSKPEPV3.ini, FT-2KFSKPEPV3.ini + +Here is what you do: + +1) Copy the attached files into Program Files/Afreet/Omnirig/Rigs folder +2) Depending if you use FSK or AFSK, you will open Bandmaster then Tools +then Settings then Miscellaneous +Click on Configure and select from the list of INI files either of the 2 INI +files that I just supplied, depending on if you are using FSK or AFSK +Then you are ready to go. +Restart Bandmaster just to be sure that the selection workd. +Now when you click on a cluster spot SPLIT operation, the VFO B should +follow VFO A in Mode , ie., SSB should be on both VFOs or CW or RTTY / +PAcket depending the mode listed in Bandmaster spot. + +Dan Schaaf \ No newline at end of file diff --git a/CATCheck/Rigs/FT-450.ini b/CATCheck/Rigs/FT-450.ini new file mode 100644 index 0000000..85d3a77 --- /dev/null +++ b/CATCheck/Rigs/FT-450.ini @@ -0,0 +1,204 @@ +;------------------------------------------------------------------------------- +; Yaesu FT-450 command set ver. 1.0 30.12.2007 +; +; File created by Serge Filonenko UA0SC ua0sc@teleos.ru +;------------------------------------------------------------------------------- + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT] +Command=(AI0;) +ReplyLength=0 + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- + +[pmFreqA] +Command=(FA........;) +Value=2|8|vfText|1|0 +ReplyLength=0 + +[pmFreqB] +Command=(FB........;) +Value=2|8|vfText|1|0 +ReplyLength=0 + +[pmFreq] +;not supported + +[pmRitOffset] +Command=(RU....;) +Value=2|4|vfText|1|0 +ReplyLength=0 + +[pmRit0] +Command=(RC;) +ReplyLength=0 + +[pmPitch] +Command=(KP..;) +Value=2|2|vfText|0.02|-300 +ReplyLength=0 + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +Command=(FT1;) +ReplyLength=0 + +[pmSplitOff] +Command=(FT0;) +ReplyLength=0 + +[pmVfoA] +Command=(VS0;) +ReplyLength=0 + +[pmVfoB] +Command=(VS1;) +ReplyLength=0 + +[pmVfoEqual] +Command=(VV;) +ReplyLength=0 + +[pmVfoSwap] +Command=(SV;) +ReplyLength=0 + +[pmVfoAA] +Command=(VS0;FT0;) +ReplyLength=0 + +[pmVfoAB] +Command=(VS0;FT1;) +ReplyLength=0 + +[pmVfoBA] +Command=(VS1;FT0;) +ReplyLength=0 + +[pmVfoBB] +Command=(VS1;FT1;) +ReplyLength=0 + +[pmRitOn] +Command=(RT1;) +ReplyLength=0 + +[pmRitOff] +Command=(RT0;) +ReplyLength=0 + +[pmRit0] +Command=(RC;) +ReplyLength=0 + +[pmRx] +Command=(TX0;) +ReplyLength=0 + +[pmTx] +Command=(TX1;) +ReplyLength=0 + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +Command=(MD03;) +ReplyLength=0 + +[pmCW_L] +Command=(MD07;) +ReplyLength=0 + +[pmSSB_U] +Command=(MD02;) +ReplyLength=0 + +[pmSSB_L] +Command=(MD01;) +ReplyLength=0 + +[pmDIG_U] +Command=(MD09;) +ReplyLength=0 + +[pmDIG_L] +Command=(MD06;) +ReplyLength=0 + +[pmAM] +Command=(MD05;) +ReplyLength=0 + +[pmFM] +Command=(MD04;) +ReplyLength=0 + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- + +[STATUS1] +Command=(IF;) +ReplyEnd=(;) +Validate=(IF........................;) +Value1=13|5|vfText|1|0|pmRitOffset +Value2=5|8|vfText|1|0|pmFreq +Flag1 =(..................0........)|pmRitOff +Flag2 =(..................1........)|pmRitOn +Flag3 =(...................0.......)|pmXitOff +Flag4 =(...................1.......)|pmXitOn +Flag5 =(....................1......)|pmSSB_L +Flag6 =(....................2......)|pmSSB_U +Flag7 =(....................3......)|pmCW_U +Flag8 =(....................4......)|pmFM +Flag9 =(....................5......)|pmAM +Flag10=(....................6......)|pmDIG_L +Flag11=(....................7......)|pmCW_L +Flag12=(....................9......)|pmDIG_U +Flag13=(..............0000.........)|pmRit0 + +[STATUS2] +Command=(FA;) +ReplyEnd=(;) +Validate=(FA........;) +Value1=2|8|vfText|1|0|pmFreqA + +[STATUS3] +Command=(FB;) +ReplyEnd=(;) +Validate=(FB........;) +Value1=2|8|vfText|1|0|pmFreqB + +[STATUS4] +Command=(KP;) +ReplyEnd=(;) +Validate=(KP..;) +Value1=2|2|vfText|50|300|pmPitch + +[STATUS5] +Command=(VS;FT;) +ReplyEnd=(;) +Validate=(VS.;FT.;) +Flag1=(..0.....)|pmVfoA +Flag2=(..1.....)|pmVfoB +Flag3=(..0...0.)|pmVfoAA +Flag4=(..0...1.)|pmVfoAB +Flag5=(..1...0.)|pmVfoBA +Flag6=(..1...1.)|pmVfoBB +Flag7=(......1.)|pmSplitOn +Flag8=(......0.)|pmSplitOff + +[STATUS6] +Command=(TX;) +ReplyEnd=(;) +Validate=(TX.;) +Flag1=(..0.)|pmRX +Flag2=(..1.)|pmTX \ No newline at end of file diff --git a/CATCheck/Rigs/FT-450Dmod.ini b/CATCheck/Rigs/FT-450Dmod.ini new file mode 100644 index 0000000..50f387f --- /dev/null +++ b/CATCheck/Rigs/FT-450Dmod.ini @@ -0,0 +1,208 @@ +;------------------------------------------------------------------------------- +; Yaesu FT-450 command set ver. 1.0 30.12.2007 +; +; File created by Serge Filonenko UA0SC ua0sc@teleos.ru +; 2014 Edited by Pavel Zubenko R2DFD +;------------------------------------------------------------------------------- + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT] +Command=(AI0;) +ReplyLength=0 + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- + +[pmFreqA] +Command=(FA........;) +Value=2|8|vfText|1|0 +ReplyLength=0 + +[pmFreqB] +Command=(FB........;) +Value=2|8|vfText|1|0 +ReplyLength=0 + +[pmFreq] +;not supported + +[pmRitOffset] +Command=(RU....;) +Value=2|4|vfText|1|0 +ReplyLength=0 + +[pmRit0] +Command=(RC;) +ReplyLength=0 + +[pmPitch] +Command=(KP..;) +Value=2|2|vfText|0.02|-300 +ReplyLength=0 + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +Command=(FT1;) +ReplyLength=0 + +[pmSplitOff] +Command=(FT0;) +ReplyLength=0 + +[pmVfoA] +Command=(VS0;) +ReplyLength=0 + +[pmVfoB] +Command=(VS1;) +ReplyLength=0 + +[pmVfoEqual] +Command=(VV;) +ReplyLength=0 + +[pmVfoSwap] +Command=(SV;) +ReplyLength=0 + +[pmVfoAA] +Command=(VS0;FT0;) +ReplyLength=0 + +[pmVfoAB] +Command=(VS0;FT1;) +ReplyLength=0 + +[pmVfoBA] +Command=(VS1;FT0;) +ReplyLength=0 + +[pmVfoBB] +Command=(VS1;FT1;) +ReplyLength=0 + +[pmRitOn] +Command=(RT1;) +ReplyLength=0 + +[pmRitOff] +Command=(RT0;) +ReplyLength=0 + +[pmRit0] +Command=(RC;) +ReplyLength=0 + +[pmRx] +Command=(TX0;) +ReplyLength=0 + +[pmTx] +Command=(TX1;) +ReplyLength=0 + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +Command=(MD03;) +ReplyLength=0 + +[pmCW_L] +Command=(MD07;) +ReplyLength=0 + +[pmSSB_U] +Command=(MD02;) +ReplyLength=0 + +[pmSSB_L] +Command=(MD01;) +ReplyLength=0 + +[pmDIG_U] +Command=(MD0C;) +ReplyLength=0 + +[pmDIG_L] +Command=(MD08;) +ReplyLength=0 + +[pmAM] +Command=(MD05;) +ReplyLength=0 + +[pmFM] +Command=(MD04;) +ReplyLength=0 + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- + +[STATUS1] +Command=(IF;) +ReplyEnd=(;) +Validate=(IF........................;) +Value1=13|5|vfText|1|0|pmRitOffset +Value2=5|8|vfText|1|0|pmFreq +Flag1 =(..................0........)|pmRitOff +Flag2 =(..................1........)|pmRitOn +Flag3 =(...................0.......)|pmXitOff +Flag4 =(...................1.......)|pmXitOn +Flag5 =(....................1......)|pmSSB_L +Flag6 =(....................2......)|pmSSB_U +Flag7 =(....................3......)|pmCW_U +Flag8 =(....................4......)|pmFM +Flag9 =(....................5......)|pmAM +Flag10=(....................8......)|pmDIG_L +Flag11=(....................7......)|pmCW_L +Flag12=(....................C......)|pmDIG_U +Flag13=(..............0000.........)|pmRit0 + +[STATUS2] +Command=(FA;) +ReplyEnd=(;) +Validate=(FA........;) +Value1=2|8|vfText|1|0|pmFreqA + +[STATUS3] +Command=(FB;) +ReplyEnd=(;) +Validate=(FB........;) +Value1=2|8|vfText|1|0|pmFreqB + +[STATUS4] +Command=(KP;) +ReplyEnd=(;) +Validate=(KP..;) +Value1=2|2|vfText|50|300|pmPitch + +[STATUS5] +Command=(VS;FT;) +ReplyLength=8 +Validate=(VS.;FT.;) +Flag1=(..0.....)|pmVfoA +Flag2=(..1.....)|pmVfoB +Flag3=(..0...0.)|pmVfoAA +Flag4=(..0...1.)|pmVfoAB +Flag5=(..1...0.)|pmVfoBA +Flag6=(..1...1.)|pmVfoBB +Flag7=(..0...1.)|pmSplitOn +Flag8=(..1...0.)|pmSplitOn +Flag9=(..0...0.)|pmSplitOff +Flag10=(..1...1.)|pmSplitOff + +[STATUS6] +Command=(TX;) +ReplyEnd=(;) +Validate=(TX.;) +Flag1=(..0.)|pmRX +Flag2=(..1.)|pmTX +Flag3=(..2.)|pmTX \ No newline at end of file diff --git a/CATCheck/Rigs/FT-747.ini b/CATCheck/Rigs/FT-747.ini new file mode 100644 index 0000000..a9bcdd9 --- /dev/null +++ b/CATCheck/Rigs/FT-747.ini @@ -0,0 +1,161 @@ +;------------------------------------------------------------------------------- +; Yaesu FT-747 command set V-1.00 +; +; by Gintaras LY1GP ly1gp@qrz.lt +; +;------------------------------------------------------------------------------- + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT] +;Lowest pacing possible +Command=000000000E +ReplyLength=0 + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreqA] +;not supported + +[pmFreqB] +;not supported + +[pmFreq] +Command=00000000.0A +Value=0|4|vfBcdLU|0.1|0 +ReplyLength=0 + +[pmRitOffset] +;not supported + +[pmRit0] +;not supported + +;[pmPitch] +;not supported + + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +Command=0000000101 +ReplyLength=0 + +[pmSplitOff] +Command=0000000001 +ReplyLength=0 + +[pmVfoA] +Command=0000000005 +ReplyLength=0 + +[pmVfoB] +Command=0000000105 +ReplyLength=0 + +[pmVfoEqual] +;not supported + +[pmVfoSwap] +;not supported + +[pmVfoAA] +;not supported + +[pmVfoAB] +;not supported + +[pmVfoBA] +;not supported + +[pmVfoBB] +;not supported + +[pmRitOn] +Command=0000000109 +ReplyLength=0 + +[pmRitOff] +Command=0000000009 +ReplyLength=0 + +[pmXitOn] +;not supported + +[pmXitOff] +;not supported + +[pmRx] +Command=000000000F +ReplyLength=0 + +[pmTx] +Command=000000010F +ReplyLength=0 + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +;CW Narrow +Command=000000030C +ReplyLength=0 + +[pmCW_L] +;CW Normal +Command=000000020C +ReplyLength=0 + +[pmSSB_U] +Command=000000010C +ReplyLength=0 + +[pmSSB_L] +Command=000000000C +ReplyLength=0 + +[pmDIG_U] +;not supported + +[pmDIG_L] +;not supported + +[pmAM] +Command=000000040C +ReplyLength=0 + +[pmFM] +Command=000000070C +ReplyLength=0 + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +[STATUS] +Command=0000000010 +ReplyLength=345 +;TRX options status +Flag1 = 020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|pmSplitOn +Flag2 = 020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|pmSplitOff +Flag3 = 040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|pmRitOn +Flag4 = 040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|pmRitOff +Flag5 = 080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|pmVfoB +Flag6 = 080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|pmVfoA +;Mode status (CW with Narrow showed as CW_U, normal as CW_L) +Flag7 = 000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|pmFM +Flag8 = 000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|pmAM +Flag9 = 000000000000000000000000000000000000000000000000820000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|pmAM +Flag10 = 000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|pmCW_L +Flag11 = 000000000000000000000000000000000000000000000000840000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|pmCW_U +Flag12 = 000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|pmSSB_U +Flag13 = 000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|pmSSB_L +;TRX TX/RX status +Flag14 = 200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|pmTx +Flag15 = 200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|pmRx +;Get working freq +Value1=1|5|vfBcdBU|1|0|pmFreq +Value3=8|5|vfBcdBU|1|0|pmFreqA +Value4=16|5|vfBcdBU|1|0|pmFreqB diff --git a/CATCheck/Rigs/FT-747GX.ini b/CATCheck/Rigs/FT-747GX.ini new file mode 100644 index 0000000..6410116 --- /dev/null +++ b/CATCheck/Rigs/FT-747GX.ini @@ -0,0 +1,175 @@ +;------------------------------------------------------------------------------- +; Yaesu FT-747GX command set V-1.10 +; +; by Gintaras LY1GP ly1gp@qrz.lt +; adapted to FT-747GX by Bud Leavell AF5YT 4/30/2016 +;Only the first 25 bytes of status return of 345? bytes relevant bud it seemed +;necessary to accept ;a total of 344 bytes to insure a consistent return. +;Apparently, this model only returns 344 bytes instead of 345, and that was the +;reason it was not responding. +;This .ini file supports all of the commands described, but will NOT work with +;Band Master +;Polling interval works at 2000ms, but is unstable at 500ms.At 1000ms, with verify.exe +;it polls too frequently to run the custom command window, but seems to work well +;with the radio. +; +;------------------------------------------------------------------------------- + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT] +;Lowest pacing possible +Command=000000000E +ReplyLength=0 + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreqA] +;not supported + +[pmFreqB] +;not supported + +[pmFreq] +Command=00000000.0A +Value=0|4|vfBcdLU|0.1|0 +ReplyLength=0 + +[pmRitOffset] +;not supported + +[pmRit0] +;not supported + +;[pmPitch] +;not supported + + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +Command=0000000101 +ReplyLength=0 + +[pmSplitOff] +Command=0000000001 +ReplyLength=0 + + +[pmVfoA] +Command=0000000005 +ReplyLength=0 + +[pmVfoB] +Command=0000000105 +ReplyLength=0 + +[pmVfoEqual] +;not supported + +[pmVfoSwap] +;not supported + +[pmVfoAA] +;not supported + +[pmVfoAB] +;not supported + +[pmVfoBA] +;not supported + +[pmVfoBB] +;not supported + +[pmRitOn] +Command=0000000109 +ReplyLength=0 + +[pmRitOff] +Command=0000000009 +ReplyLength=0 + +[pmXitOn] +;not supported + +[pmXitOff] +;not supported + +[pmRx] +Command=000000000F +ReplyLength=0 + +[pmTx] +Command=000000010F +ReplyLength=0 + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +;CW Narrow +Command=000000030C +ReplyLength=0 + +[pmCW_L] +;CW Normal +Command=000000020C +ReplyLength=0 + +[pmSSB_U] +Command=000000010C +ReplyLength=0 + +[pmSSB_L] +Command=000000000C +ReplyLength=0 + +[pmDIG_U] +;not supported + +[pmDIG_L] +;not supported + +[pmAM] +Command=000000040C +ReplyLength=0 + +[pmFM] +Command=000000070C +ReplyLength=0 + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +[STATUS] +Command=0000000010 +ReplyLength=344 +;TRX options status +; 1 2 3 3 +; 1 2 3 4 5 6 7 8 91011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798990001020304050607080910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989900010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899000102030405060708091011121314151617181920212223242526272829303132333435363738394041424344| 1 2 3 4 5 6 7 8 91011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798990001020304050607080910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989900010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899000102030405060708091011121314151617181920212223242526272829303132333435363738394041424344 +Flag1 = 0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|pmSplitOn +Flag2 = 0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|pmSplitOff +Flag3 = 0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|pmRitOn +Flag4 = 0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|pmRitOff +Flag5 = 0800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|0800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|pmVfoB +Flag6 = 0800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|pmVfoA +;Mode status (CW with Narrow showed as CW_U, normal as CW_L) +; 1 2 3 4 5 6 7 8 910111213141516171819202122232425 +Flag7 = 0000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|pmFM +Flag8 = 0000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|pmAM +Flag9 = 0000000000000000000000000000000000000000000000008200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|pmAM +Flag10 = 0000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|pmCW_L +Flag11 = 0000000000000000000000000000000000000000000000008400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|pmCW_U +Flag12 = 0000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|pmSSB_U +Flag13 = 0000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|pmSSB_L +;TRX TX/RX status 1 2 3 4 5 6 7 8 9101112131415161718192021222324 +Flag14 = 2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|pmTx +Flag15 = 2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|pmRx +;Get working freq +Value1=1|5|vfBcdBU|1|0|pmFreq +Value3=8|5|vfBcdBU|1|0|pmFreqA +Value4=16|5|vfBcdBU|1|0|pmFreqB diff --git a/CATCheck/Rigs/FT-747GX1.ini b/CATCheck/Rigs/FT-747GX1.ini new file mode 100644 index 0000000..3864259 --- /dev/null +++ b/CATCheck/Rigs/FT-747GX1.ini @@ -0,0 +1,179 @@ +;------------------------------------------------------------------------------- +; Yaesu FT-747GX1 command set V-1.10 +; +; by Gintaras LY1GP ly1gp@qrz.lt +; adapted to FT-747GX by Bud Leavell AF5YT 5/8/2016 +;Only the first 25 bytes of status return of 345? bytes relevant bud it seemed +;necessary to accept ;a total of 344 bytes to insure a consistent return. +;Apparently, this model only returns 344 bytes instead of 345, and that was the +;reason it was not responding. +;This .ini file suppresses several commands to enable it to work with Band Master. +;Band Master sends several commands at one time to place it into split mode with +;the clarifyier on and individually programms each VFO. Too many commands are +;sent at one time overflowing the input buffer on the radio.Disabling those +;commands limits Band Master to sending only 2 commands to the radio enabling +;Band Master to "tune to freq" +;Polling interval works at 2000ms, but is unstable at 500ms.At 1000ms, with verify.exe +;it polls too frequently to run the custom command window, but seems to work well +;with the radio. +; +;------------------------------------------------------------------------------- + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT] +;Lowest pacing possible +Command=000000000E +ReplyLength=0 + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreqA] +;not supported + +[pmFreqB] +;not supported + +[pmFreq] +Command=00000000.0A +Value=0|4|vfBcdLU|0.1|0 +ReplyLength=0 + +[pmRitOffset] +;not supported + +[pmRit0] +;not supported + +;[pmPitch] +;not supported + + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +;Command=0000000101 +;ReplyLength=0 + +[pmSplitOff] +;Command=0000000001 +;ReplyLength=0 + + +[pmVfoA] +;Command=0000000005 +;ReplyLength=0 + +[pmVfoB] +;Command=0000000105 +;ReplyLength=0 + +[pmVfoEqual] +;not supported + +[pmVfoSwap] +;not supported + +[pmVfoAA] +;not supported + +[pmVfoAB] +;not supported + +[pmVfoBA] +;not supported + +[pmVfoBB] +;not supported + +[pmRitOn] +;Command=0000000109 +;ReplyLength=0 + +[pmRitOff] +;Command=0000000009 +;ReplyLength=0 + +[pmXitOn] +;not supported + +[pmXitOff] +;not supported + +[pmRx] +Command=000000000F +ReplyLength=0 + +[pmTx] +Command=000000010F +ReplyLength=0 + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +;CW Narrow +Command=000000030C +ReplyLength=0 + +[pmCW_L] +;CW Normal +Command=000000020C +ReplyLength=0 + +[pmSSB_U] +Command=000000010C +ReplyLength=0 + +[pmSSB_L] +Command=000000000C +ReplyLength=0 + +[pmDIG_U] +;not supported + +[pmDIG_L] +;not supported + +[pmAM] +Command=000000040C +ReplyLength=0 + +[pmFM] +Command=000000070C +ReplyLength=0 + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +[STATUS] +Command=0000000010 +ReplyLength=344 +;TRX options status +; 1 2 3 3 +; 1 2 3 4 5 6 7 8 91011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798990001020304050607080910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989900010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899000102030405060708091011121314151617181920212223242526272829303132333435363738394041424344| 1 2 3 4 5 6 7 8 91011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798990001020304050607080910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989900010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899000102030405060708091011121314151617181920212223242526272829303132333435363738394041424344 +Flag1 = 0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|pmSplitOn +Flag2 = 0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|pmSplitOff +Flag3 = 0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|pmRitOn +Flag4 = 0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|pmRitOff +Flag5 = 0800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|0800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|pmVfoB +Flag6 = 0800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|pmVfoA +;Mode status (CW with Narrow showed as CW_U, normal as CW_L) +; 1 2 3 4 5 6 7 8 910111213141516171819202122232425 +Flag7 = 0000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|pmFM +Flag8 = 0000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|pmAM +Flag9 = 0000000000000000000000000000000000000000000000008200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|pmAM +Flag10 = 0000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|pmCW_L +Flag11 = 0000000000000000000000000000000000000000000000008400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|pmCW_U +Flag12 = 0000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|pmSSB_U +Flag13 = 0000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|pmSSB_L +;TRX TX/RX status 1 2 3 4 5 6 7 8 9101112131415161718192021222324 +Flag14 = 2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|pmTx +Flag15 = 2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|pmRx +;Get working freq +Value1=1|5|vfBcdBU|1|0|pmFreq +Value3=8|5|vfBcdBU|1|0|pmFreqA +Value4=16|5|vfBcdBU|1|0|pmFreqB diff --git a/CATCheck/Rigs/FT-747GX2.ini b/CATCheck/Rigs/FT-747GX2.ini new file mode 100644 index 0000000..63eaeab --- /dev/null +++ b/CATCheck/Rigs/FT-747GX2.ini @@ -0,0 +1,183 @@ +;------------------------------------------------------------------------------- +; Yaesu FT-747GX1 command set V-1.10 +; +; by Gintaras LY1GP ly1gp@qrz.lt +; adapted to FT-747GX by Bud Leavell AF5YT 5/10/2016 +;Only the first 25 bytes of status return of 345? bytes relevant bud it seemed +;necessary to accept a total of 344 bytes to insure a consistent return. +;Apparently, this model only returns 344 bytes instead of 345, and that was the +;reason it was not responding. +;This .ini file suppresses several commands to enable it to work with Band Master. +;Band Master sends several commands at one time to place it into split mode with +;the clarifyier on and individually programms each VFO. Too many commands are +;sent at one time overflowing the input buffer on the radio.Disabling those +;commands limits Band Master to sending only 2 commands to the radio enabling +;Band Master to "tune to freq" but still not setting mode. Changed ReplyLength to =1 +;on [pmFreq] & mode commands. This forces the application to send one command, wait +;until timeout and then send the next command. This config and radio now works +;with Band Master and DXtreme DX SpotChecker plus the tune radio buttons on DXTreme +;Station Log. It takes a couple of extra seconds to configure radio but still works. +;Polling interval works at 2000ms, but is too busy at 500ms.At 1000ms, with verify.exe +;it polls too frequently to run the custom command window, but seems to work well +;with the radio and applications. Set timeout to 2000ms or more. +; +;------------------------------------------------------------------------------- + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT] +;Lowest pacing possible +Command=000000000E +ReplyLength=0 + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreqA] +;not supported + +[pmFreqB] +;not supported + +[pmFreq] +Command=00000000.0A +Value=0|4|vfBcdLU|0.1|0 +ReplyLength=1 + +[pmRitOffset] +;not supported + +[pmRit0] +;not supported + +;[pmPitch] +;not supported + + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +;Command=0000000101 +;ReplyLength=0 + +[pmSplitOff] +;Command=0000000001 +;ReplyLength=0 + + +[pmVfoA] +;Command=0000000005 +;ReplyLength=0 + +[pmVfoB] +;Command=0000000105 +;ReplyLength=0 + +[pmVfoEqual] +;not supported + +[pmVfoSwap] +;not supported + +[pmVfoAA] +;not supported + +[pmVfoAB] +;not supported + +[pmVfoBA] +;not supported + +[pmVfoBB] +;not supported + +[pmRitOn] +;Command=0000000109 +;ReplyLength=0 + +[pmRitOff] +;Command=0000000009 +;ReplyLength=0 + +[pmXitOn] +;not supported + +[pmXitOff] +;not supported + +[pmRx] +Command=000000000F +ReplyLength=0 + +[pmTx] +Command=000000010F +ReplyLength=0 + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +;CW Narrow +Command=000000030C +ReplyLength=1 + +[pmCW_L] +;CW Normal +Command=000000020C +ReplyLength=1 + +[pmSSB_U] +Command=000000010C +ReplyLength=1 + +[pmSSB_L] +Command=000000000C +ReplyLength=1 + +[pmDIG_U] +;not supported + +[pmDIG_L] +;not supported + +[pmAM] +Command=000000040C +ReplyLength=1 + +[pmFM] +Command=000000070C +ReplyLength=1 + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +[STATUS] +Command=0000000010 +ReplyLength=344 +;TRX options status +; 1 2 3 3 +; 1 2 3 4 5 6 7 8 91011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798990001020304050607080910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989900010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899000102030405060708091011121314151617181920212223242526272829303132333435363738394041424344| 1 2 3 4 5 6 7 8 91011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798990001020304050607080910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989900010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899000102030405060708091011121314151617181920212223242526272829303132333435363738394041424344 +Flag1 = 0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|pmSplitOn +Flag2 = 0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|pmSplitOff +Flag3 = 0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|pmRitOn +Flag4 = 0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|pmRitOff +Flag5 = 0800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|0800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|pmVfoB +Flag6 = 0800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|pmVfoA +;Mode status (CW with Narrow showed as CW_U, normal as CW_L) +; 1 2 3 4 5 6 7 8 910111213141516171819202122232425 +Flag7 = 0000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|pmFM +Flag8 = 0000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|pmAM +Flag9 = 0000000000000000000000000000000000000000000000008200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|pmAM +Flag10 = 0000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|pmCW_L +Flag11 = 0000000000000000000000000000000000000000000000008400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|pmCW_U +Flag12 = 0000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|pmSSB_U +Flag13 = 0000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|pmSSB_L +;TRX TX/RX status 1 2 3 4 5 6 7 8 9101112131415161718192021222324 +Flag14 = 2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|pmTx +Flag15 = 2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|pmRx +;Get working freq +Value1=1|5|vfBcdBU|1|0|pmFreq +Value3=8|5|vfBcdBU|1|0|pmFreqA +Value4=16|5|vfBcdBU|1|0|pmFreqB diff --git a/CATCheck/Rigs/FT-757GXII.ini b/CATCheck/Rigs/FT-757GXII.ini new file mode 100644 index 0000000..f3d2a74 --- /dev/null +++ b/CATCheck/Rigs/FT-757GXII.ini @@ -0,0 +1,213 @@ +;------------------------------------------------------------------------------- +; Yaesu FT-757GXII command set +; +; File created by Yuri Klimonov RX3QFY, rx3qfy@mail.ru +; Correct by Alexei Chernobai RX4HX, rx4hx@mail.ru +; Correct by Yuri Klimonov RX3QFY, rx3qfy@mail.ru +; Special thanks Nick Banschikov RN3KK +; Modified by Andrew Chin VK3CHI, chinsta00@hotmail.com +;------------------------------------------------------------------------------- + +;Modifications by VK3CHI: +; - added [pmRitOn], [pmRitOff] commands and status flags +; - added initialisation VFO mode +; - corrected Value multiplier in [pmFreq] +; - corrected status flag bits +; - workaround for receive overrun + + +;see FT-757GXII user manual for CAT instruction code details (code names provided in comments) + +;FT-757GXII does not have an instruction command receive buffer. Workaround is to force non-replying commands to wait for reply timeout. +;Set timeout period to minimum required for radio to execute instruction command (e.g. 150ms). Alternatively, client program must send commands at slower rate. +;timeout 150ms and polling interval 500ms seems to work ok with WSJT-X 2.0.0 + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT1] +;M-VFO (copy current memory channel to current VFO, and change to VFO mode) +;4-th byte is a parameter, seems to have no effect on M-VFO instruction code +Command=00000000.06 +ReplyLength=1 +;initialise transceiver in VFO mode +;FREQ SET command will not function if transceiver is in memory mode + +[INIT2] +;RETURN DELAY +Command=00000000.0E +ReplyLength=75 +;set reply transmission delay to 0ms between bytes +;RETURN DELAY command also returns 75 byte transceiver status +;total command and reply communication time = [208.333us*(1+8+2)]*(5+75) + 0ms*75 = 183.333ms + + + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreqA] +;not supported + +[pmFreqB] +;not supported + +[pmFreq] +;FREQ SET +Command=00000000.0A +ReplyLength=1 +;32-bit BCD unsigned little endian in 10 Hz units +Value=0|4|vfBcdLU|0.1|0 + +[pmRitOffset] +;not supported + +[pmRit0] +;not supported + +[pmPitch] +;not supported + + + + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +;SPLIT +Command=00000001.01 +ReplyLength=1 + +[pmSplitOff] +;SPLIT +Command=00000000.01 +ReplyLength=1 + +[pmVfoA] +;VFO A/B +Command=00000000.05 +ReplyLength=1 + +[pmVfoB] +;VFO A/B +Command=00000001.05 +ReplyLength=1 + +[pmVfoEqual] +;not supported + +[pmVfoSwap] +;not supported + +[pmVfoAA] +;not supported + +[pmVfoAB] +;not supported + +[pmVfoBA] +;not supported + +[pmVfoBB] +;not supported + +[pmRitOn] +;CLARIFIER +Command=00000001.09 +ReplyLength=1 + +[pmRitOff] +;CLARIFIER +Command=00000000.09 +ReplyLength=1 + +[pmXitOn] +;not supported + +[pmXitOff] +;not supported + +[pmRx] +;not supported + +[pmTx] +;not supported + + + + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +;CW Wide +;MODESEL +Command=00000002.0C +ReplyLength=1 + +[pmCW_L] +;CW Narrow +;MODESEL +Command=00000003.0C +ReplyLength=1 + +[pmSSB_U] +;MODESEL +Command=00000001.0C +ReplyLength=1 + +[pmSSB_L] +;MODESEL +Command=00000000.0C +ReplyLength=1 + +[pmDIG_U] +;not supported + +[pmDIG_L] +;not supported + +[pmAM] +;MODESEL +Command=00000004.0C +ReplyLength=1 + +[pmFM] +;MODESEL +Command=00000005.0C +ReplyLength=1 + + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +[STATUS] +;4-th byte is a parameter, doc does not explain what it means (VK3CHI: it means return digitised S-meter reading. Unimplemented in Omni-Rig.) +;READ STATUS +Command=00000000.10 +ReplyLength=75 +;32-bit BCD unsigned little endian in 10 Hz units +Value1=5|4|vfBcdLU|10|0|pmFreq +Value2=10|4|vfBcdLU|10|0|pmFreqA +Value3=15|4|vfBcdLU|10|0|pmFreqB +; Mode status +; 1 2 3 4 5 6 7 8 9 10 1112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 1 2 3 4 5 6 7 8 9 10 1112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 +Flag1 =000000000000000000.07.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|000000000000000000.00.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|pmSSB_L +Flag2 =000000000000000000.07.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|000000000000000000.01.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|pmSSB_U +Flag3 =000000000000000000.07.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|000000000000000000.02.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|pmCW_U +Flag4 =000000000000000000.07.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|000000000000000000.03.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|pmCW_L +Flag5 =000000000000000000.07.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|000000000000000000.04.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|pmAM +Flag6 =000000000000000000.07.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|000000000000000000.05.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|pmFM +; Transceiver status +; 1 2 3 4 5 6 7 8 9101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 1 2 3 4 5 6 7 8 9101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 +Flag7 =02.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|02.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|pmSplitOn +Flag8 =02.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|00.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|pmSplitOff +Flag9 =04.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|04.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|pmRitOn +Flag10 =04.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|00.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|pmRitOff +Flag11 =08.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|00.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|pmVfoA +Flag12 =08.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|08.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|pmVfoB +Flag13 =20.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|00.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|pmRx +Flag14 =20.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|20.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000|pmTx + diff --git a/CATCheck/Rigs/FT-817.ini b/CATCheck/Rigs/FT-817.ini new file mode 100644 index 0000000..e710a27 --- /dev/null +++ b/CATCheck/Rigs/FT-817.ini @@ -0,0 +1,182 @@ +;------------------------------------------------------------------------------- +; Yaesu FT-817 command set +; +; File created by Erkki Latomaa, SM5NBE 28/11 2004 +; +; Updated by Dan Schaaf K3ZXL, dan-schaaf@att.net 9 April 2011 +;------------------------------------------------------------------------------- + + +;2005-09-12 Changed ReplyLength=0 to ReplyLength=1. Works better now. /SM2Z + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT] +;not required + + + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreqA] +;not supported + +[pmFreqB] +;not supported + +[pmFreq] +Command=00000000.01 +Value=0|4|vfBcdBU|0.1|00 +ReplyLength=1 + +[pmRitOffset] +Command=00000000.01 +Value=0|4|vfBcdBS|0.1|00 +ReplyLength=1 + + +[pmRit0] +Command=00000000.F5 +ReplyLength=1 + +[pmPitch] +;not supported + + + + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +Command=00000000.02 +ReplyLength=1 + + +[pmSplitOff] +Command=00000000.82 +ReplyLength=1 + +[pmVfoA] +;not supported + +[pmVfoB] +;not supported + + +[pmVfoEqual] +;not supported + +[pmVfoSwap] +Command=00000000.81 +ReplyLength=1 + +[pmVfoAA] +;not supported + +[pmVfoAB] +;not supported + +[pmVfoBA] +;not supported + +[pmVfoBB] +;not supported + + +[pmRitOn] +Command=00000000.05 +ReplyLength=1 + + +[pmRitOff] +Command=00000000.85 +ReplyLength=1 + + +[pmXitOn] +;not supported + + +[pmXitOff] +;not supported + + +[pmRx] +Command=00000000.88 +ReplyLength=1 + + +[pmTx] +Command=00000000.08 +ReplyLength=1 + + + + + + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +Command=0200000007 +ReplyLength=1 + +[pmCW_L] +Command=0300000007 +ReplyLength=1 + +[pmSSB_U] +Command=0100000007 +ReplyLength=1 + +[pmSSB_L] +Command=0000000007 +ReplyLength=1 + +[pmDIG_U] +Command=0A00000007 +ReplyLength=1 + +[pmDIG_L] +;Not supported + +[pmAM] +Command=0400000007 +ReplyLength=1 + +[pmFM] +Command=0800000007 +ReplyLength=1 + + + + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +[STATUS1] +Command=0000000003 +ReplyLength=5 +Value1=0|4|vfBcdBU|10|0|pmFreq +Flag1 =00000000.0F|00000000.00|pmSSB_L +Flag2 =00000000.0F|00000000.01|pmSSB_U +Flag3 =00000000.0F|00000000.02|pmCW_U +Flag4 =00000000.0F|00000000.03|pmCW_L +Flag5 =00000000.0F|00000000.04|pmAM +Flag7 =00000000.0F|00000000.06|pmFM +Flag8 =00000000.0F|00000000.08|pmFM +Flag9 =00000000.0F|00000000.0A|pmDIG_U +Flag10 =00000000.0F|00000000.0C|pmDIG_U + +[STATUS2] +Command=00000000.F7 +ReplyLength=1 +Flag1 =20|00|pmSplitOn +Flag2 =20|20|pmSplitOff +Flag3 =80|00|pmTx +Flag4 =80|80|pmRx diff --git a/CATCheck/Rigs/FT-840.ini b/CATCheck/Rigs/FT-840.ini new file mode 100644 index 0000000..8416183 --- /dev/null +++ b/CATCheck/Rigs/FT-840.ini @@ -0,0 +1,190 @@ +;------------------------------------------------------------------------------- +; Yaesu FT-840 command set V-2.02 +; +; File created by Vitaly RA9WOY ra9woy@mail.ru +; +;------------------------------------------------------------------------------- + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT] +Command=000000000E +ReplyLength=0 + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreqA] +;not supported + +[pmFreqB] +;not supported + +[pmFreq] +Command=00000000.0A +Value=0|4|vfBcdLU|0.1|0 +ReplyLength=0 + +[pmRitOffset] +Command=000000FF.09 +16-bit BCD, little endian, plus sign byte (00 or FF) +Value=0|3|vfBcdLS|0.1|0 +ReplyLength=0 + +[pmRit0] +Command=000000FF.09 +ReplyLength=0 + +;[pmPitch] +;not supported (ýòî èç èñõîäíèêà) + + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +Command=00000001.01 +ReplyLength=0 + +[pmSplitOff] +Command=00000000.01 +ReplyLength=0 + +[pmVfoA] +Command=00000000.05 +ReplyLength=0 + +[pmVfoB] +Command=00000001.05 +ReplyLength=0 + +[pmVfoEqual] +Command=00000000.85 +ReplyLength=0 + +[pmVfoSwap] +;not supported + +[pmVfoAA] +;not supported + +[pmVfoAB] +;not supported + +[pmVfoBA] +;not supported + +[pmVfoBB] +;not supported + +[pmRitOn] +Command=000000.01.09 +ReplyLength=0 + +[pmRitOff] +Command=00000000.09 +ReplyLength=0 + +[pmXitOn] +;not supported + +[pmXitOff] +;not supported + +[pmRx] +Command=00000000.0F +;ReplyLength=0 +ReplyLength=0 + +[pmTx] +Command=00000001.0F +;ReplyLength=0 +ReplyLength=0 + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +Command=000000030C +ReplyLength=0 + +[pmCW_L] +Command=000000020C +ReplyLength=0 +;mmmmmy addons + +[pmSSB_U] +Command=000000010C +ReplyLength=0 + +[pmSSB_L] +Command=000000000C +ReplyLength=0 + +[pmDIG_U] +;not supported + +[pmDIG_L] +;not supported + +[pmAM] +Command=000000050C +ReplyLength=0 + +[pmFM] +Command=000000060C +ReplyLength=0 + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +[STATUS1] +Command=000000.02.10 +ReplyLength=19 +Value1=5|2|vfBinB|10|0|pmRitOffset +Value2=2|3|vfBinB|10|0|pmFreq +Flag1 =00000000000000.07.0000000000000000000000|00000000000000.00.0000000000000000000000|pmSSB_L +Flag2 =00000000000000.07.0000000000000000000000|00000000000000.01.0000000000000000000000|pmSSB_U +Flag3 =00000000000000.07.0000000000000000000000|00000000000000.02.0000000000000000000000|pmCW_U +Flag4 =00000000000000.07.0000000000000000000000|00000000000000.03.0000000000000000000000|pmAM +Flag5 =00000000000000.07.0000000000000000000000|00000000000000.04.0000000000000000000000|pmFM +Flag6 =000000000000000000.20.000000000000000000|000000000000000000.00.000000000000000000|pmRitOff +Flag7 =000000000000000000.20.000000000000000000|000000000000000000.20.000000000000000000|pmRitOn + +[STATUS2] +Command=000000.03.10 +ReplyLength=18 +Value1=1|3|vfBinB|10|0|pmFreqA +Value2=10|3|vfBinB|10|0|pmFreqB + +[STATUS3] +Command=000000.01.FA +;åñëè ïîñòàâèòü =0, òî ðèã âîîáùå íå îòçûâàåòñÿ +ReplyLength=5 + +;the rig that was tested returned 0655 instead of 0841 +;àïàðàòóðà, êîòîðàÿ áûëà ïðîâåðåíà, âîçâðàòèëà 0655 âìåñòî 0841 +;Validate=000000.FFFF|000000.0841 +;÷òî åñòü, ÷òî íåò - íå âëèÿåò... + +;doc fails to explain how VFO bits are set +;äîêè íå â ñîñòîÿíèè îáúÿñíèòü, êàê áèòû VFO óñòàíîâëåíû +Flag1 =C4.00.00.00.00|00.00.00.00.00|pmVfoAA +Flag2 =C4.00.00.00.00|04.00.00.00.00|pmVfoAB +Flag3 =C4.00.00.00.00|84.00.00.00.00|pmVfoBA +Flag4 =C4.00.00.00.00|40.00.00.00.00|pmVfoBB + +Flag5 =00.01.80.00.00|00.00.00.00.00|pmRx +;Flag6 =00.01.80.00.00|00.01.00.00.00|pmTx +;Flag7 =00.01.80.00.00|00.00.80.00.00|pmTx +;òàê ðàáîòàþò êíîïêè â êëèåíòå, åñòü èíäèêàöèÿ, íî â eqf èíäèêàöèè íåò... +;Flag6 =00.01.80.00.00|00.01.80.00.00|pmTx +;Flag7 =00.01.80.00.00|00.01.80.00.00|pmTx +;òàê ðàáîòàåò è îò ïåäàëè,êíîïêè è êíîïîê êëèåíòà +;äâå ðàçíûõ ìàñêè-äâà ðàçíûõ ñèãíàëà-îäèí ôëàã-ðåçóëüòàò +Flag6 =00.01.00.00.00|00.01.00.00.00|pmTx +Flag7 =00.00.80.00.00|00.00.80.00.00|pmTx + +Flag8 =04.00.00.00.00|04.00.00.00.00|pmSplitOn +Flag9 =04.00.00.00.00|00.00.00.00.00|pmSplitOff diff --git a/CATCheck/Rigs/FT-847.ini b/CATCheck/Rigs/FT-847.ini new file mode 100644 index 0000000..36928fa --- /dev/null +++ b/CATCheck/Rigs/FT-847.ini @@ -0,0 +1,154 @@ +;------------------------------------------------------------------------------- +; Yaesu FT-847 command set +; +; File created by Bob Barrett, G8HEZ bob.barrett@ntlworld.com +; Modified by Alex VE3NEA +; Modified by Jason G4KVT 18-SEP-2014 +;------------------------------------------------------------------------------- + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT] +Command=00000000.00 +ReplyLength=0 + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreqA] +;not supported + +[pmFreqB] +;not supported + +[pmFreq] +Command=00000000.01 +;32-bit BCD, unsigned, big endian +Value=0|4|vfBcdBU|0.1|00 +ReplyLength=0 + +[pmRitOffset] +;Not supported + +[pmRit0] +;Not supported + +[pmPitch] +;not supported + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +;not supported + +[pmSplitOff] +;not supported +Command=00000000.00 +ReplyLength=0 + +[pmVfoA] +;not supported + +[pmVfoB] +;not supported + +[pmVfoEqual] +;not supported + +[pmVfoSwap] +;not supported + +[pmVfoAA] +;not supported + +[pmVfoAB] +;not supported + +[pmVfoBA] +;not supported + +[pmVfoBB] +;not supported + +[pmRitOn] +;not supported + +[pmRitOff] +;not supported + +[pmXitOn] +;not supported + +[pmXitOff] +;not supported + +[pmRx] +Command=00000000.88 +ReplyLength=0 + +[pmTx] +Command=00000000.08 +ReplyLength=0 + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +Command=0200000007 +ReplyLength=0 + +[pmCW_L] +Command=0300000007 +ReplyLength=0 + +[pmSSB_U] +Command=0100000007 +ReplyLength=0 + +[pmSSB_L] +Command=0000000007 +ReplyLength=0 + +[pmDIG_U] +;Not supported + +[pmDIG_L] +;Not supported + +[pmAM] +Command=0400000007 +ReplyLength=0 + +[pmFM] +Command=0800000007 +ReplyLength=0 + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +[STATUS1] +;Get Rig Main VFO Frequ +Command=0000000003 +ReplyLength=5 +;32-bit unsigned BCD, big endian, in 10 Hz unints +Value1=0|4|vfBcdBU|10|0|pmFreq +;check 5 th byte for data match +Flag1 =00000000.07|00000000.00|pmSSB_L +Flag2 =00000000.07|00000000.01|pmSSB_U +Flag3 =00000000.07|00000000.02|pmCW_U +Flag4 =00000000.07|00000000.03|pmCW_L +Flag5 =00000000.07|00000000.04|pmAM +Flag7 =00000000.09|00000000.08|pmFM + +[STATUS2] +Command=00000000.E7 +ReplyLength=1 +Flag1=80|80|pmTx + +[STATUS3] +Command=00000000.F7 +ReplyLength=1 +Flag1=80|80|pmRx diff --git a/CATCheck/Rigs/FT-857.ini b/CATCheck/Rigs/FT-857.ini new file mode 100644 index 0000000..d443a89 --- /dev/null +++ b/CATCheck/Rigs/FT-857.ini @@ -0,0 +1,180 @@ +;------------------------------------------------------------------------------- +; Yaesu FT-857 command set +; +; File created by Alex Shovkoplyas, VE3NEA ve3nea@dxatlas.com +;------------------------------------------------------------------------------- + + +;2005-09-12 Changed ReplyLength=0 to ReplyLength=1. Works better now. /SM2Z + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT] +;not required + + + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreqA] +;not supported + +[pmFreqB] +;not supported + +[pmFreq] +Command=00000000.01 +Value=0|4|vfBcdBU|0.1|00 +ReplyLength=1 + +[pmRitOffset] +Command=00000000.01 +Value=0|4|vfBcdBS|0.1|00 +ReplyLength=1 + + +[pmRit0] +Command=00000000.F5 +ReplyLength=1 + +[pmPitch] +;not supported + + + + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +Command=00000000.02 +ReplyLength=1 + + +[pmSplitOff] +Command=00000000.82 +ReplyLength=1 + +[pmVfoA] +;not supported + +[pmVfoB] +;not supported + + +[pmVfoEqual] +;not supported + +[pmVfoSwap] +Command=00000000.81 +ReplyLength=1 + +[pmVfoAA] +;not supported + +[pmVfoAB] +;not supported + +[pmVfoBA] +;not supported + +[pmVfoBB] +;not supported + + +[pmRitOn] +Command=00000000.05 +ReplyLength=1 + + +[pmRitOff] +Command=00000000.85 +ReplyLength=1 + + +[pmXitOn] +;not supported + + +[pmXitOff] +;not supported + + +[pmRx] +Command=00000000.88 +ReplyLength=1 + + +[pmTx] +Command=00000000.08 +ReplyLength=1 + + + + + + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +Command=0200000007 +ReplyLength=1 + +[pmCW_L] +Command=0300000007 +ReplyLength=1 + +[pmSSB_U] +Command=0100000007 +ReplyLength=1 + +[pmSSB_L] +Command=0000000007 +ReplyLength=1 + +[pmDIG_U] +Command=0A00000007 +ReplyLength=1 + +[pmDIG_L] +;Not supported + +[pmAM] +Command=0400000007 +ReplyLength=1 + +[pmFM] +Command=0800000007 +ReplyLength=1 + + + + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +[STATUS1] +Command=0000000003 +ReplyLength=5 +Value1=0|4|vfBcdBU|10|0|pmFreq +Flag1 =00000000.0F|00000000.00|pmSSB_L +Flag2 =00000000.0F|00000000.01|pmSSB_U +Flag3 =00000000.0F|00000000.02|pmCW_U +Flag4 =00000000.0F|00000000.03|pmCW_L +Flag5 =00000000.0F|00000000.04|pmAM +Flag7 =00000000.0F|00000000.06|pmFM +Flag8 =00000000.0F|00000000.08|pmFM +Flag9 =00000000.0F|00000000.0A|pmDIG_U +Flag10 =00000000.0F|00000000.0C|pmDIG_U + +[STATUS2] +Command=00000000.F7 +ReplyLength=1 +Flag1 =20|00|pmSplitOn +Flag2 =20|20|pmSplitOff +Flag3 =80|00|pmTx +Flag4 =80|80|pmRx diff --git a/CATCheck/Rigs/FT-891.ini b/CATCheck/Rigs/FT-891.ini new file mode 100644 index 0000000..d309efc --- /dev/null +++ b/CATCheck/Rigs/FT-891.ini @@ -0,0 +1,192 @@ +;-------------------------------------------------------------------------------; +;Yaesu FT-891 +; +; 2018/01/17 Modified by Bunshiro Tamura JA5FNX from the FT-5000MP Tnx Ram VU3RCN +; +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT] +Command=(AI0;) +ReplyLength=0 + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- + +[pmFreqA] +Command=(FA.........;) +Value=2|9|vfText|1|0 +ReplyLength=0 + +[pmFreqB] +Command=(FB.........;) +Value=2|9|vfText|1|0 +ReplyLength=0 + +[pmFreq] +;not supported + +[pmRitOffset] +Command=(RU....;) +Value=2|4|vfText|1|0 +ReplyLength=0 + +[pmRit0] +Command=(RC;) +ReplyLength=0 + +[pmPitch] +Command=(KP..;) +Value=2|2|vfText|0.1|-30 +ReplyLength=0 + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +Command=(ST1;) +ReplyLength=0 + +[pmSplitOff] +Command=(ST0;) +ReplyLength=0 + +[pmVfoA] +;not supported + +[pmVfoB] +;not supported + +[pmVfoEqual] +Command=(AB;) +ReplyLength=0 + +[pmVfoSwap] +Command=(SV;) +ReplyLength=0 + +[pmVfoAA] +;not supported + +[pmVfoAB] +;not supported + +[pmVfoBA] +;not supported + +[pmVfoBB] +;not supported + +[pmRitOn] +Command=(CF1;) +ReplyLength=0 + +[pmRitOff] +Command=(CF0;) +ReplyLength=0 + +[pmXitOn] +;not supported + +[pmXitOff] +;not supported + +[pmRit0] +Command=(RC;) +ReplyLength=0 + +[pmRx] +Command=(TX0;) +ReplyLength=0 + +[pmTx] +Command=(TX1;) +ReplyLength=0 + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +Command=(MD03;) +ReplyLength=0 + +[pmCW_L] +Command=(MD07;) +ReplyLength=0 + +[pmSSB_U] +Command=(MD02;) +ReplyLength=0 + +[pmSSB_L] +Command=(MD01;) +ReplyLength=0 + +[pmDIG_U] +Command=(MD09;) +ReplyLength=0 + +[pmDIG_L] +Command=(MD06;) +ReplyLength=0 + +[pmAM] +Command=(MD05;) +ReplyLength=0 + +[pmFM] +Command=(MD04;) +ReplyLength=0 + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- + +[STATUS1] +Command=(IF;) +ReplyEnd=(;) +Validate=(IF.........................;) +Value1=14|5|vfText|1|0|pmRitOffset +Value2=5|9|vfText|1|0|pmFreq +Flag1 =(...................0........)|pmRitOff +Flag2 =(...................1........)|pmRitOn +Flag3 =(....................0.......)|pmXitOff +Flag4 =(....................1.......)|pmXitOn +Flag5 =(.....................1......)|pmSSB_L +Flag6 =(.....................2......)|pmSSB_U +Flag7 =(.....................3......)|pmCW_U +Flag8 =(.....................4......)|pmFM +Flag9 =(.....................5......)|pmAM +Flag10=(.....................6......)|pmDIG_L +Flag11=(.....................7......)|pmCW_L +Flag12=(.....................9......)|pmDIG_U +Flag13=(...............0000.........)|pmRit0 + +[STATUS2] +Command=(FA;) +ReplyEnd=(;) +Validate=(FA.........;) +Value1=2|9|vfText|1|0|pmFreqA + +[STATUS3] +Command=(FB;) +ReplyEnd=(;) +Validate=(FB.........;) +Value1=2|9|vfText|1|0|pmFreqB + +[STATUS4] +Command=(KP;) +ReplyEnd=(;) +Validate=(KP..;) +Value1=2|2|vfText|10|300|pmPitch + +[STATUS5] +;not supported + +[STATUS6] +Command=(TX;) +ReplyEnd=(;) +Validate=(TX.;) +Flag1=(..0.)|pmRX +Flag2=(..1.)|pmTX diff --git a/CATCheck/Rigs/FT-897.ini b/CATCheck/Rigs/FT-897.ini new file mode 100644 index 0000000..3c2f5fd --- /dev/null +++ b/CATCheck/Rigs/FT-897.ini @@ -0,0 +1,170 @@ +;------------------------------------------------------------------------------- +; Yaesu FT-897 command set +; +; File created by Alex Shovkoplyas, VE3NEA ve3nea@dxatlas.com +; Tested by Elijah, KC0RDG +;------------------------------------------------------------------------------- + + +;2005-09-12 Changed ReplyLength=0 to ReplyLength=1. Works better now. /SM2Z + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT] +;none + + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreqA] +;not supported + +[pmFreqB] +;not supported + +[pmFreq] +Command=00000000.01 +Value=0|4|vfBcdBU|0.1|0 +ReplyLength=1 + +[pmRitOffset] +Command=00000000.F5 +Value=0|4|vfBcdBS|0.1|0 +ReplyLength=1 + +[pmRit0] +Command=00000000.F5 +ReplyLength=1 + +[pmPitch] +;not supported + + + + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +Command=00000000.02 +ReplyLength=1 + +[pmSplitOff] +Command=00000000.82 +ReplyLength=1 + +[pmVfoA] +;not supported + +[pmVfoB] +;not supported + +[pmVfoEqual] +;not supported + +[pmVfoSwap] +Command=00000000.81 +ReplyLength=1 + +[pmVfoAA] +;not supported + +[pmVfoAB] +;not supported + +[pmVfoBA] +;not supported + +[pmVfoBB] +;not supported + + +[pmRitOn] +Command=00000000.05 +ReplyLength=1 + +[pmRitOff] +Command=00000000.85 +ReplyLength=1 + +[pmXitOn] +;not supported + +[pmXitOff] +;not supported + +[pmRx] +Command=00000000.88 +ReplyLength=1 + +[pmTx] +Command=00000000.08 +ReplyLength=1 + + + + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +Command=02.00000007 +ReplyLength=1 + +[pmCW_L] +Command=03.00000007 +ReplyLength=1 + +[pmSSB_U] +Command=01.00000007 +ReplyLength=1 + +[pmSSB_L] +Command=00.00000007 +ReplyLength=1 + +[pmDIG_U] +Command=0A.00000007 +ReplyLength=1 + +[pmDIG_L] +;not supported + +[pmAM] +Command=04.00000007 +ReplyLength=1 + +[pmFM] +Command=08.00000007 +ReplyLength=1 + + + + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +[STATUS1] +Command=00000000.03 +ReplyLength=5 +Value=0|4|vfBcdBU|10|0|pmFreq +Flag1 =00000000.0F|00000000.00|pmSSB_L +Flag2 =00000000.0F|00000000.01|pmSSB_U +Flag3 =00000000.0F|00000000.02|pmCW_U +Flag4 =00000000.0F|00000000.03|pmCW_L +Flag5 =00000000.0F|00000000.04|pmAM +Flag6 =00000000.0F|00000000.06|pmFM +Flag7 =00000000.0F|00000000.08|pmFM +Flag8 =00000000.0F|00000000.0A|pmDIG_U +Flag9 =00000000.0F|00000000.0C|pmDIG_U + +[STATUS2] +Command=00000000.F7 +ReplyLength=1 +Flag1 =20|00|pmSplitOn +Flag2 =20|20|pmSplitOff +Flag3 =80|00|pmTx +Flag4 =80|80|pmRx diff --git a/CATCheck/Rigs/FT-900.ini b/CATCheck/Rigs/FT-900.ini new file mode 100644 index 0000000..f210d69 --- /dev/null +++ b/CATCheck/Rigs/FT-900.ini @@ -0,0 +1,187 @@ +;------------------------------------------------------------------------------- +; Yaesu FT-900 command set +; +; File created by Alex Shovkoplyas, VE3NEA ve3nea@dxatlas.com +;------------------------------------------------------------------------------- + + + + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT] +Command=000000000E +ReplyLength=0 + + + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreqA] +;not supported + +[pmFreqB] +;not supported + +[pmFreq] +Command=00000000.0A +Value=0|4|vfBcdLU|0.1|0 +ReplyLength=0 + +[pmRitOffset] +Command=000000FF.09 +16-bit BCD, little endian, plus sign byte (00 or FF) +Value=0|3|vfBcdLS|0.1|0 +ReplyLength=0 + +[pmRit0] +Command=000000FF.09 +ReplyLength=0 + +[pmPitch] +;not supported + + + + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +Command=00000001.01 +ReplyLength=0 + +[pmSplitOff] +Command=00000000.01 +ReplyLength=0 + +[pmVfoA] +Command=00000000.05 +ReplyLength=0 + +[pmVfoB] +Command=00000001.05 +ReplyLength=0 + +[pmVfoEqual] +Command=00000000.85 +ReplyLength=0 + +[pmVfoSwap] +;not supported + +[pmVfoAA] +;not supported + +[pmVfoAB] +;not supported + +[pmVfoBA] +;not supported + +[pmVfoBB] +;not supported + +[pmRitOn] +Command=000000.01.09 +ReplyLength=0 + +[pmRitOff] +Command=00000000.09 +ReplyLength=0 + +[pmXitOn] +;not supported + +[pmXitOff] +;not supported + +[pmRx] +Command=00000000.0F +ReplyLength=0 + +[pmTx] +Command=00000001.0F +ReplyLength=0 + + + + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +Command=000000030C +ReplyLength=0 + +[pmCW_L] +;not supported + +[pmSSB_U] +Command=000000010C +ReplyLength=0 + +[pmSSB_L] +Command=000000000C +ReplyLength=0 + +[pmDIG_U] +;not supported + +[pmDIG_L] +;not supported + +[pmAM] +Command=000000050C +ReplyLength=0 + +[pmFM] +Command=000000060C +ReplyLength=0 + + + + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +[STATUS1] +Command=000000.02.10 +ReplyLength=19 +Value1=5|2|vfBinB|10|0|pmRitOffset +Value2=2|3|vfBinB|10|0|pmFreq +Flag1 =00000000000000.07.0000000000000000000000|00000000000000.00.0000000000000000000000|pmSSB_L +Flag2 =00000000000000.07.0000000000000000000000|00000000000000.01.0000000000000000000000|pmSSB_U +Flag3 =00000000000000.07.0000000000000000000000|00000000000000.02.0000000000000000000000|pmCW_U +Flag4 =00000000000000.07.0000000000000000000000|00000000000000.03.0000000000000000000000|pmAM +Flag5 =00000000000000.07.0000000000000000000000|00000000000000.04.0000000000000000000000|pmFM +Flag6 =000000000000000000.20.000000000000000000|000000000000000000.00.000000000000000000|pmRitOff +Flag7 =000000000000000000.20.000000000000000000|000000000000000000.20.000000000000000000|pmRitOn + +[STATUS2] +Command=000000.03.10 +ReplyLength=18 +Value1=1|3|vfBinB|10|0|pmFreqA +Value2=10|3|vfBinB|10|0|pmFreqB + +[STATUS3] +Command=000000.01.FA +ReplyLength=5 + +;the rig that was tested returned 0655 instead of 0841 +;Validate=000000.FFFF|000000.0841 + +;doc fails to explain how VFO bits are set +Flag1 =C4.00.00.00.00|00.00.00.00.00|pmVfoAA +Flag2 =C4.00.00.00.00|04.00.00.00.00|pmVfoAB +Flag3 =C4.00.00.00.00|84.00.00.00.00|pmVfoBA +Flag4 =C4.00.00.00.00|40.00.00.00.00|pmVfoBB + +Flag5 =00.01.80.00.00|00.00.00.00.00|pmRx +Flag6 =00.01.80.00.00|00.01.00.00.00|pmTx +Flag7 =00.01.80.00.00|00.00.80.00.00|pmTx +Flag8 =04.00.00.00.00|04.00.00.00.00|pmSplitOn +Flag9 =04.00.00.00.00|00.00.00.00.00|pmSplitOff diff --git a/CATCheck/Rigs/FT-920.ini b/CATCheck/Rigs/FT-920.ini new file mode 100644 index 0000000..d64597c --- /dev/null +++ b/CATCheck/Rigs/FT-920.ini @@ -0,0 +1,200 @@ +;------------------------------------------------------------------------------- +; Yaesu FT-920 command set +; +; File created by Alex Shovkoplyas, VE3NEA ve3nea@dxatlas.com +;------------------------------------------------------------------------------- + + + + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT] +Command=000000000E +ReplyLength=0 + + + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreqA] +Command=00000000.0A +;32-bit BCD, unsigned, little endian, in 10 Hz units +Value=0|4|vfBcdLU|0.1|0 +ReplyLength=0 + +[pmFreqB] +;32-bit BCD, unsigned, little endian, in 10 Hz units +Command=00000000.8A +Value=0|4|vfBcdLU|0.1|0 +ReplyLength=10 + +[pmFreq] +;not supported + +[pmRitOffset] +;Command=000000FF.09 +;16-bit BCD, little endian, plus sign byte (00 or FF) +;Value=0|3|vfBcdL|0.1|0 +;ReplyLength=0 + +[pmRit0] +Command=000000FF.09 +ReplyLength=0 + +[pmPitch] +;not supported + + + + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +Command=00000001.01 +ReplyLength=0 + +[pmSplitOff] +Command=00000000.01 +ReplyLength=0 + +[pmVfoA] +Command=00000000.05 +ReplyLength=0 + +[pmVfoB] +Command=00000001.05 +ReplyLength=0 + +[pmVfoEqual] +;not supported + +[pmVfoSwap] +;not supported + +[pmVfoAA] +;not supported + +[pmVfoAB] +;not supported + +[pmVfoBA] +;not supported + +[pmVfoBB] +;not supported + +[pmRitOn] +Command=000000.01.09 +ReplyLength=0 + +[pmRitOff] +Command=00000000.09 +ReplyLength=0 + +[pmXitOn] +Command=00000081.09 +ReplyLength=0 + +[pmXitOff] +Command=00000080.09 +ReplyLength=0 + +[pmRx] +;not supported? +Command=00000000.0F +ReplyLength=0 + +[pmTx] +;not supported? +Command=00000001.0F +ReplyLength=0 + + + + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +Command=000000020C.000000820C +ReplyLength=0 + +[pmCW_L] +Command=000000030C.000000830C +ReplyLength=0 + +[pmSSB_U] +Command=000000010C.000000810C +ReplyLength=0 + +[pmSSB_L] +Command=000000000C.000000800C +ReplyLength=0 + +[pmDIG_U] +Command=0000000A0C.0000008A0C +ReplyLength=0 + +[pmDIG_L] +Command=000000080C.000000880C +ReplyLength=0 + +[pmAM] +Command=000000040C.000000840C +ReplyLength=0 + +[pmFM] +Command=000000060C.000000860C +ReplyLength=0 + + + + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +[STATUS1] +Command=00000002.10 +ReplyLength=28 +;16-bit signed integer, big endian, in 1 Hz units +Value1=5|2|vfBinB|1|0|pmRitOffset +;32-bit unsigned integer, big endian, in 1Hz units +Value2=1|4|vfBinB|1|0|pmFreq +Flag1 =00000000000000.47.000000000000.0000000000000000000000000000|00000000000000.41.000000000000.0000000000000000000000000000|pmCW_U +Flag2 =00000000000000.47.000000000000.0000000000000000000000000000|00000000000000.01.000000000000.0000000000000000000000000000|pmCW_L +Flag3 =00000000000000.47.000000000000.0000000000000000000000000000|00000000000000.40.000000000000.0000000000000000000000000000|pmSSB_U +Flag4 =00000000000000.47.000000000000.0000000000000000000000000000|00000000000000.00.000000000000.0000000000000000000000000000|pmSSB_L +Flag5 =00000000000000.07.000000000000.0000000000000000000000000000|00000000000000.05.000000000000.0000000000000000000000000000|pmDIG_U +Flag6 =00000000000000.07.000000000000.0000000000000000000000000000|00000000000000.04.000000000000.0000000000000000000000000000|pmDIG_L +Flag7 =00000000000000.07.000000000000.0000000000000000000000000000|00000000000000.02.000000000000.0000000000000000000000000000|pmAM +Flag8 =00000000000000.07.000000000000.0000000000000000000000000000|00000000000000.03.000000000000.0000000000000000000000000000|pmFM +Flag9 =0000000000000000.01.0000000000.0000000000000000000000000000|0000000000000000.00.0000000000.0000000000000000000000000000|pmXitOff +Flag10=0000000000000000.01.0000000000.0000000000000000000000000000|0000000000000000.01.0000000000.0000000000000000000000000000|pmXitOn +Flag11=0000000000000000.02.0000000000.0000000000000000000000000000|0000000000000000.00.0000000000.0000000000000000000000000000|pmRitOff +Flag12=0000000000000000.02.0000000000.0000000000000000000000000000|0000000000000000.02.0000000000.0000000000000000000000000000|pmRitOn + +[STATUS2] +Command=00000003.10 +ReplyLength=28 +;32-bit unsigned integer, big endian, in 1Hz units +Value1=1|4|vfBinB|1|0|pmFreqA +Value2=15|4|vfBinB|1|0|pmFreqB + +[STATUS3] +Command=00000001.FA +ReplyLength=8 +Flag1 =13.00.00.00.00.00.00.00|00.00.00.00.00.00.00.00|pmVfoAA +Flag2 =13.00.00.00.00.00.00.00|01.00.00.00.00.00.00.00|pmVfoAB +Flag3 =13.00.00.00.00.00.00.00|02.00.00.00.00.00.00.00|pmVfoBA +Flag4 =10.00.00.00.00.00.00.00|10.00.00.00.00.00.00.00|pmVfoBB +Flag5 =80.00.00.10.00.00.00.00|00.00.00.00.00.00.00.00|pmRx +Flag6 =80.00.00.00.00.00.00.00|80.00.00.00.00.00.00.00|pmTx +Flag7 =00.00.00.10.00.00.00.00|00.00.00.10.00.00.00.00|pmTx +Flag8 =03.00.00.00.00.00.00.00|01.00.00.00.00.00.00.00|pmSplitOn +Flag9 =03.00.00.00.00.00.00.00|02.00.00.00.00.00.00.00|pmSplitOn +Flag10=03.00.00.00.00.00.00.00|00.00.00.00.00.00.00.00|pmSplitOff diff --git a/CATCheck/Rigs/FT-950.ini b/CATCheck/Rigs/FT-950.ini new file mode 100644 index 0000000..df562a9 --- /dev/null +++ b/CATCheck/Rigs/FT-950.ini @@ -0,0 +1,216 @@ +;------------------------------------------------------------------------------- +; +; Yaesu FT-950 command set ver. 2.0 20.02.2010 +; File created by 5P5R / OZ6ABM oz6abm@qsl.net +; 10.08.2013 modified by SP8ALC to solve problem with entering SPLIT mode +; on every click on any spot +; was : modified : +; [pmSplitOff] +; Command=(FR0;FT0;) (command=(FR0;FT2;) +; ReplyLength=0 +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT] +Command=(AI0;) +ReplyLength=0 + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- + +[pmFreqA] +Command=(FA........;) +Value=2|8|vfText|1|0 +ReplyLength=0 + +[pmFreqB] +Command=(FB........;) +Value=2|8|vfText|1|0 +ReplyLength=0 + +[pmFreq] +;not supported + +[pmRitOffset] +Command=(RC;R.....;) +Value=4|5|vfTextUD|1|0 +ReplyLength=0 + +[pmRit0] +Command=(RC;) +ReplyLength=0 + +[pmPitch] +Command=(KP..;) +Value=2|2|vfText|0.02|-300 +ReplyLength=0 + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +Command=(FR0;FT1;) +ReplyLength=0 + +[pmSplitOff] +Command=(FR0;FT2;) +ReplyLength=0 + +[pmVfoA] +Command=(FR0;) +ReplyLength=0 + +[pmVfoB] +Command=(FR4;) +ReplyLength=0 + +[pmVfoEqual] +Command=(AB;) +ReplyLength=0 + +[pmVfoSwap] +Command=(SV;) +ReplyLength=0 + +[pmVfoAA] +Command=(FR0;FT2;) +ReplyLength=0 + +[pmVfoAB] +Command=(FR0;FT3;) +ReplyLength=0 + +[pmVfoBA] +Command=(FR4;FT2;) +ReplyLength=0 + +[pmVfoBB] +Command=(FR4;FT3;) +ReplyLength=0 + +[pmRitOn] +Command=(RT1;) +ReplyLength=0 + +[pmRitOff] +Command=(RT0;) +ReplyLength=0 + +[pmXitOn] +Command=(XT1;) +ReplyLength=0 + +[pmXitOff] +Command=(XT0;) +ReplyLength=0 + +[pmRit0] +Command=(RC;) +ReplyLength=0 + +[pmRx] +Command=(TX0;) +ReplyLength=0 + +[pmTx] +Command=(TX1;) +ReplyLength=0 + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +Command=(MD03;) +ReplyLength=0 + +[pmCW_L] +Command=(MD07;) +ReplyLength=0 + +[pmSSB_U] +Command=(MD02;) +ReplyLength=0 + +[pmSSB_L] +Command=(MD01;) +ReplyLength=0 + +[pmDIG_U] +Command=(MD09;) +ReplyLength=0 + +[pmDIG_L] +Command=(MD06;) +ReplyLength=0 + +[pmAM] +Command=(MD05;) +ReplyLength=0 + +[pmFM] +Command=(MD04;) +ReplyLength=0 + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- + +[STATUS1] +Command=(IF;) +ReplyEnd=(;) +Validate=(IF........................;) +Value1=13|5|vfText|1|0|pmRitOffset +Value2=5|8|vfText|1|0|pmFreq +Flag1 =(..................0........)|pmRitOff +Flag2 =(..................1........)|pmRitOn +Flag3 =(...................0.......)|pmXitOff +Flag4 =(...................1.......)|pmXitOn +Flag5 =(....................1......)|pmSSB_L +Flag6 =(....................2......)|pmSSB_U +Flag7 =(....................3......)|pmCW_U +Flag8 =(....................4......)|pmFM +Flag9 =(....................5......)|pmAM +Flag10=(....................8......)|pmDIG_L +Flag11=(....................7......)|pmCW_L +Flag12=(....................C......)|pmDIG_U +Flag13=(..............0000.........)|pmRit0 + +[STATUS2] +Command=(FA;) +ReplyEnd=(;) +Validate=(FA........;) +Value1=2|8|vfText|1|0|pmFreqA + +[STATUS3] +Command=(FB;) +ReplyEnd=(;) +Validate=(FB........;) +Value1=2|8|vfText|1|0|pmFreqB + +[STATUS4] +Command=(KP;) +ReplyEnd=(;) +Validate=(KP..;) +Value1=2|2|vfText|50|300|pmPitch + +[STATUS5] +Command=(FR;FT;) +ReplyLength=8 +ReplyEnd=(;) +Validate=(FR.;FT.;) +Flag1=(..0.....)|pmVfoA +Flag2=(..4.....)|pmVfoB +Flag3=(..0...0.)|pmVfoAA +Flag4=(..0...1.)|pmVfoAB +Flag5=(..4...0.)|pmVfoBA +Flag6=(..4...1.)|pmVfoBB +Flag7=(..0...1.)|pmSplitOn +Flag8=(..0...0.)|pmSplitOff + +[STATUS6] +Command=(TX;) +ReplyEnd=(;) +Validate=(TX.;) +Flag1=(..0.)|pmRX +Flag2=(..1.)|pmTX \ No newline at end of file diff --git a/CATCheck/Rigs/FT-990.ini b/CATCheck/Rigs/FT-990.ini new file mode 100644 index 0000000..8857634 --- /dev/null +++ b/CATCheck/Rigs/FT-990.ini @@ -0,0 +1,191 @@ +;------------------------------------------------------------------------------- +; Yaesu FT-990 command set +; +; File created by Alex Shovkoplyas, VE3NEA ve3nea@dxatlas.com +; +; Tested by: Garrett Brandt, AA0OI +;------------------------------------------------------------------------------- + + + + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT] +Command=00000000.0E +ReplyLength=0 + + + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreqA] +;not supported + +[pmFreqB] +;not supported + +[pmFreq] +Command=00000000.0A +Value=0|4|vfBcdLU|0.1|0 +ReplyLength=0 + +[pmRitOffset] +;perhaps this can be construsted as Clear RIT + RIT Up + +[pmRit0] +Command=000000FF.09 +ReplyLength=0 + +[pmPitch] +;not supported + + + + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +Command=00000001.01 +ReplyLength=0 + +[pmSplitOff] +Command=00000000.01 +ReplyLength=0 + +[pmVfoA] +Command=00000000.05 +ReplyLength=0 + +[pmVfoB] +Command=00000001.05 +ReplyLength=0 + +[pmVfoEqual] +Command=00000000.85 +ReplyLength=0 + +[pmVfoSwap] +;not supported + +[pmVfoAA] +;not supported + +[pmVfoAB] +;not supported + +[pmVfoBA] +;not supported + +[pmVfoBB] +;not supported + + +[pmRitOn] +Command=00000001.09 +ReplyLength=0 + +[pmRitOff] +Command=00000000.09 +ReplyLength=0 + +[pmXitOn] +Command=00000081.09 +ReplyLength=0 + +[pmXitOff] +Command=00000080.09 +ReplyLength=0 + +[pmRx] +Command=00000000.0F +ReplyLength=0 + +[pmTx] +Command=00000001.0F +ReplyLength=0 + + + + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +Command=00000003.0C +ReplyLength=0 + +[pmCW_L] +;not supported + +[pmSSB_U] +Command=00000001.0C +ReplyLength=0 + +[pmSSB_L] +Command=00000000.0C +ReplyLength=0 + +[pmDIG_U] +Command=00000009.0C +ReplyLength=0 + +[pmDIG_L] +Command=00000008.0C +ReplyLength=0 + +[pmAM] +Command=00000005.0C +ReplyLength=0 + +[pmFM] +Command=00000006.0C +ReplyLength=0 + + + + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +[STATUS1] +Command=00000002.10 +ReplyLength=32 +;scale? B/L endian? +Value1=5|2|vfBinB|10|0|pmRitOffset +Value2=1|3|vfBinB|10|0|pmFreq +Flag1 =00000000000000.07.000000000000000000000000000000000000000000000000|00000000000000.00.000000000000000000000000000000000000000000000000|pmSSB_L +Flag2 =00000000000000.07.000000000000000000000000000000000000000000000000|00000000000000.01.000000000000000000000000000000000000000000000000|pmSSB_U +Flag3 =00000000000000.07.800000000000000000000000000000000000000000000000|00000000000000.02.000000000000000000000000000000000000000000000000|pmCW_U +Flag5 =00000000000000.07.000000000000000000000000000000000000000000000000|00000000000000.03.000000000000000000000000000000000000000000000000|pmAM +Flag6 =00000000000000.07.000000000000000000000000000000000000000000000000|00000000000000.04.000000000000000000000000000000000000000000000000|pmFM +Flag7 =00000000000000.07.800000000000000000000000000000000000000000000000|00000000000000.05.800000000000000000000000000000000000000000000000|pmDIG_U +Flag10=00000000.01.000000000000000000000000000000000000000000000000000000|00000000.00.000000000000000000000000000000000000000000000000000000|pmXitOff +Flag11=00000000.01.000000000000000000000000000000000000000000000000000000|00000000.01.000000000000000000000000000000000000000000000000000000|pmXitOn +Flag12=00000000.02.000000000000000000000000000000000000000000000000000000|00000000.00.000000000000000000000000000000000000000000000000000000|pmRitOff +Flag13=00000000.02.000000000000000000000000000000000000000000000000000000|00000000.02.000000000000000000000000000000000000000000000000000000|pmRitOn + + +[STATUS2] +Command=00000003.10 +ReplyLength=32 +Value1=1|3|vfBinB|10|0|pmFreqA +Value2=17|3|vfBinB|10|0|pmFreqB + + +[STATUS3] +Command=00000000.FA +ReplyLength=5 +Flag1 =03.00.00.00.00|00.00.00.00.00|pmVfoAA +Flag2 =03.00.00.00.00|02.00.00.00.00|pmVfoBB +Flag3 =03.00.00.00.00|01.00.00.00.00|pmVfoAB +Flag4 =03.00.00.00.00|03.00.00.00.00|pmVfoBA +Flag5 =01.00.00.00.00|00.00.00.00.00|pmSplitOff +Flag6 =01.00.00.00.00|01.00.00.00.00|pmSplitOn +Flag7 =80.00.01.00.00|00.00.00.00.00|pmRx +Flag8 =80.00.00.00.00|80.00.00.00.00|pmTx +Flag8 =00.00.01.00.00|00.00.01.00.00|pmTx diff --git a/CATCheck/Rigs/FT-991-DATA.ini b/CATCheck/Rigs/FT-991-DATA.ini new file mode 100644 index 0000000..b8aea44 --- /dev/null +++ b/CATCheck/Rigs/FT-991-DATA.ini @@ -0,0 +1,211 @@ +;------------------------------------------------------------------------------- +; Yaesu FT-991-DATA +; +; Same as FT-991, but DIG modes select DATA-USB and DATA-LSB instead of RTTY-USB +; and RTTY-LSB. +; +; 2018-05-01 Created by Bob Wilson, N6TV, n6tv@arrl.net +; +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT] +Command=(AI0;) +ReplyLength=0 + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- + +[pmFreqA] +Command=(FA.........;) +Value=2|9|vfText|1|0 +ReplyLength=0 + +[pmFreqB] +Command=(FB.........;) +Value=2|9|vfText|1|0 +ReplyLength=0 + +[pmFreq] +;not supported + +[pmRitOffset] +Command=(RU....;) +Value=2|4|vfText|1|0 +ReplyLength=0 + +[pmRit0] +Command=(RC;) +ReplyLength=0 + +[pmPitch] +Command=(KP..;) +Value=2|2|vfText|0.1|-30 +ReplyLength=0 + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +Command=(FT3;) +ReplyLength=0 + +[pmSplitOff] +Command=(FT2;) +ReplyLength=0 + +[pmVfoA] +;not supported + +[pmVfoB] +;not supported + +[pmVfoEqual] +Command=(AB;) +ReplyLength=0 + +[pmVfoSwap] +Command=(SV;) +ReplyLength=0 + +[pmVfoAA] +Command=(FT2;) +ReplyLength=0 + +[pmVfoAB] +Command=(FT3;) +ReplyLength=0 + +[pmVfoBA] +;not supported + +[pmVfoBB] +;not supported + +[pmRitOn] +Command=(RT1;) +ReplyLength=0 + +[pmRitOff] +Command=(RT0;) +ReplyLength=0 + +[pmXitOn] +Command=(XT1;) +ReplyLength=0 + +[pmXitOff] +Command=(XT0;) +ReplyLength=0 + +[pmRit0] +Command=(RC;) +ReplyLength=0 + +[pmRx] +Command=(TX0;) +ReplyLength=0 + +[pmTx] +Command=(TX1;) +ReplyLength=0 + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +Command=(MD03;) +ReplyLength=0 + +[pmCW_L] +Command=(MD07;) +ReplyLength=0 + +[pmSSB_U] +Command=(MD02;) +ReplyLength=0 + +[pmSSB_L] +Command=(MD01;) +ReplyLength=0 + +[pmDIG_U] +Command=(MD0C;) +ReplyLength=0 + +[pmDIG_L] +Command=(MD08;) +ReplyLength=0 + +[pmAM] +Command=(MD05;) +ReplyLength=0 + +[pmFM] +Command=(MD04;) +ReplyLength=0 + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- + +[STATUS1] +Command=(IF;) +ReplyEnd=(;) +Validate=(IF.........................;) +Value1=14|5|vfText|1|0|pmRitOffset +Value2=5|9|vfText|1|0|pmFreq +Flag1 =(...................0........)|pmRitOff +Flag2 =(...................1........)|pmRitOn +Flag3 =(....................0.......)|pmXitOff +Flag4 =(....................1.......)|pmXitOn +Flag5 =(.....................1......)|pmSSB_L +Flag6 =(.....................2......)|pmSSB_U +Flag7 =(.....................3......)|pmCW_U +Flag8 =(.....................4......)|pmFM +Flag9 =(.....................5......)|pmAM +Flag10=(.....................6......)|pmDIG_L +Flag11=(.....................7......)|pmCW_L +Flag12=(.....................8......)|pmDIG_L +Flag13=(.....................9......)|pmDIG_U +Flag14=(.....................A......)|pmFM +Flag15=(.....................B......)|pmFM +Flag16=(.....................C......)|pmDIG_U +Flag17=(.....................D......)|pmAM +Flag18=(.....................E......)|pmFM +Flag19=(...............0000.........)|pmRit0 + +[STATUS2] +Command=(FA;) +ReplyEnd=(;) +Validate=(FA.........;) +Value1=2|9|vfText|1|0|pmFreqA + +[STATUS3] +Command=(FB;) +ReplyEnd=(;) +Validate=(FB.........;) +Value1=2|9|vfText|1|0|pmFreqB + +[STATUS4] +Command=(KP;) +ReplyEnd=(;) +Validate=(KP..;) +Value1=2|2|vfText|10|300|pmPitch + +[STATUS5] +Command=(FT;) +ReplyEnd=(;) +Validate=(FT.;) +Flag1=(..1.)|pmSplitOn +Flag2=(..0.)|pmSplitOff +Flag3=(..0.)|pmVfoAA +Flag4=(..1.)|pmVfoAB + +[STATUS6] +Command=(TX;) +ReplyEnd=(;) +Validate=(TX.;) +Flag1=(..0.)|pmRX +Flag2=(..1.)|pmTX diff --git a/CATCheck/Rigs/FT-991.ini b/CATCheck/Rigs/FT-991.ini new file mode 100644 index 0000000..5af9392 --- /dev/null +++ b/CATCheck/Rigs/FT-991.ini @@ -0,0 +1,211 @@ +;------------------------------------------------------------------------------- +; Yaesu FT-991 +; +; 2015/07/11 modified by Bunshiro Tamura JA5FNX from the FT-5000MP +; 2015/12/28 modified by R. A. Wilson, N6TV, to fix the [pmPitch] command +; 2016/01/02 modified by R. A. Wilson, N6TV, to fix the pmSplitOn/pmSplitOff status +; 2018/05/01 modified by R. A. Wilson, N6TV, to recognize all modes returned by IF; +; +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT] +Command=(AI0;) +ReplyLength=0 + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- + +[pmFreqA] +Command=(FA.........;) +Value=2|9|vfText|1|0 +ReplyLength=0 + +[pmFreqB] +Command=(FB.........;) +Value=2|9|vfText|1|0 +ReplyLength=0 + +[pmFreq] +;not supported + +[pmRitOffset] +Command=(RU....;) +Value=2|4|vfText|1|0 +ReplyLength=0 + +[pmRit0] +Command=(RC;) +ReplyLength=0 + +[pmPitch] +Command=(KP..;) +Value=2|2|vfText|0.1|-30 +ReplyLength=0 + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +Command=(FT3;) +ReplyLength=0 + +[pmSplitOff] +Command=(FT2;) +ReplyLength=0 + +[pmVfoA] +;not supported + +[pmVfoB] +;not supported + +[pmVfoEqual] +Command=(AB;) +ReplyLength=0 + +[pmVfoSwap] +Command=(SV;) +ReplyLength=0 + +[pmVfoAA] +Command=(FT2;) +ReplyLength=0 + +[pmVfoAB] +Command=(FT3;) +ReplyLength=0 + +[pmVfoBA] +;not supported + +[pmVfoBB] +;not supported + +[pmRitOn] +Command=(RT1;) +ReplyLength=0 + +[pmRitOff] +Command=(RT0;) +ReplyLength=0 + +[pmXitOn] +Command=(XT1;) +ReplyLength=0 + +[pmXitOff] +Command=(XT0;) +ReplyLength=0 + +[pmRit0] +Command=(RC;) +ReplyLength=0 + +[pmRx] +Command=(TX0;) +ReplyLength=0 + +[pmTx] +Command=(TX1;) +ReplyLength=0 + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +Command=(MD03;) +ReplyLength=0 + +[pmCW_L] +Command=(MD07;) +ReplyLength=0 + +[pmSSB_U] +Command=(MD02;) +ReplyLength=0 + +[pmSSB_L] +Command=(MD01;) +ReplyLength=0 + +[pmDIG_U] +Command=(MD09;) +ReplyLength=0 + +[pmDIG_L] +Command=(MD06;) +ReplyLength=0 + +[pmAM] +Command=(MD05;) +ReplyLength=0 + +[pmFM] +Command=(MD04;) +ReplyLength=0 + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- + +[STATUS1] +Command=(IF;) +ReplyEnd=(;) +Validate=(IF.........................;) +Value1=14|5|vfText|1|0|pmRitOffset +Value2=5|9|vfText|1|0|pmFreq +Flag1 =(...................0........)|pmRitOff +Flag2 =(...................1........)|pmRitOn +Flag3 =(....................0.......)|pmXitOff +Flag4 =(....................1.......)|pmXitOn +Flag5 =(.....................1......)|pmSSB_L +Flag6 =(.....................2......)|pmSSB_U +Flag7 =(.....................3......)|pmCW_U +Flag8 =(.....................4......)|pmFM +Flag9 =(.....................5......)|pmAM +Flag10=(.....................6......)|pmDIG_L +Flag11=(.....................7......)|pmCW_L +Flag12=(.....................8......)|pmDIG_L +Flag13=(.....................9......)|pmDIG_U +Flag14=(.....................A......)|pmFM +Flag15=(.....................B......)|pmFM +Flag16=(.....................C......)|pmDIG_U +Flag17=(.....................D......)|pmAM +Flag18=(.....................E......)|pmFM +Flag19=(...............0000.........)|pmRit0 + +[STATUS2] +Command=(FA;) +ReplyEnd=(;) +Validate=(FA.........;) +Value1=2|9|vfText|1|0|pmFreqA + +[STATUS3] +Command=(FB;) +ReplyEnd=(;) +Validate=(FB.........;) +Value1=2|9|vfText|1|0|pmFreqB + +[STATUS4] +Command=(KP;) +ReplyEnd=(;) +Validate=(KP..;) +Value1=2|2|vfText|10|300|pmPitch + +[STATUS5] +Command=(FT;) +ReplyEnd=(;) +Validate=(FT.;) +Flag1=(..1.)|pmSplitOn +Flag2=(..0.)|pmSplitOff +Flag3=(..0.)|pmVfoAA +Flag4=(..1.)|pmVfoAB + +[STATUS6] +Command=(TX;) +ReplyEnd=(;) +Validate=(TX.;) +Flag1=(..0.)|pmRX +Flag2=(..1.)|pmTX diff --git a/CATCheck/Rigs/FTDX-1200-DATA.ini b/CATCheck/Rigs/FTDX-1200-DATA.ini new file mode 100644 index 0000000..6e7c0f9 --- /dev/null +++ b/CATCheck/Rigs/FTDX-1200-DATA.ini @@ -0,0 +1,221 @@ +;------------------------------------------------------------------------------- +; Yaesu FTDX-1200-DATA +; +; Same as FTDX-1200, but DIG modes select DATA-USB and DATA-LSB instead of RTTY-USB +; and RTTY-LSB (like prior FTDX-1200.ini) +; +; 2018-05-01 Created by Bob Wilson, N6TV, n6tv@arrl.net +;------------------------------------------------------------------------------- + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT] +Command=(AI0;) +ReplyLength=0 + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- + +[pmFreqA] +Command=(FA........;) +Value=2|8|vfText|1|0 +ReplyLength=0 + +[pmFreqB] +Command=(FB........;) +Value=2|8|vfText|1|0 +ReplyLength=0 + +[pmFreq] +;not supported + +[pmRitOffset] +Command=(RU....;) +Value=2|4|vfText|1|0 +ReplyLength=0 + +[pmRit0] +Command=(RC;) +ReplyLength=0 + +[pmPitch] +Command=(KP..;) +Value=2|2|vfText|0.1|-30 +ReplyLength=0 + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +Command=(FR0;FT1;) +ReplyLength=0 + +[pmSplitOff] +Command=(FR0;FT0;) +ReplyLength=0 + +[pmVfoA] +Command=(FR0;) +ReplyLength=0 + +[pmVfoB] +Command=(FR3;) +ReplyLength=0 + +[pmVfoEqual] +Command=(AB;) +ReplyLength=0 + +[pmVfoSwap] +Command=(SV;) +ReplyLength=0 + +[pmVfoAA] +Command=(FR0;FT0;) +ReplyLength=0 + +[pmVfoAB] +Command=(FR0;FT1;) +ReplyLength=0 + +[pmVfoBA] +Command=(FR3;FT0;) +ReplyLength=0 + +[pmVfoBB] +Command=(FR3;FT1;) +ReplyLength=0 + +[pmRitOn] +Command=(RT1;) +ReplyLength=0 + +[pmRitOff] +Command=(RT0;) +ReplyLength=0 + +[pmXitOn] +Command=(XT1;) +ReplyLength=0 + +[pmXitOff] +Command=(XT0;) +ReplyLength=0 + +[pmRit0] +Command=(RC;) +ReplyLength=0 + +[pmRx] +Command=(TX0;) +ReplyLength=0 + +[pmTx] +Command=(TX1;) +ReplyLength=0 + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +Command=(MD03;) +ReplyLength=0 + +[pmCW_L] +Command=(MD07;) +ReplyLength=0 + +[pmSSB_U] +Command=(MD02;) +ReplyLength=0 + +[pmSSB_L] +Command=(MD01;) +ReplyLength=0 + +; DATA-USB. Use FTDX-1200.ini for RTTY-USB +[pmDIG_U] +Command=(MD0C;) +ReplyLength=0 + +; DATA-LSB. Use FTDX-1200.ini for RTTY-LSB +[pmDIG_L] +Command=(MD08;) +ReplyLength=0 + +[pmAM] +Command=(MD05;) +ReplyLength=0 + +[pmFM] +Command=(MD04;) +ReplyLength=0 + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- + +[STATUS1] +Command=(IF;) +ReplyEnd=(;) +Validate=(IF........................;) +Value1=13|5|vfText|1|0|pmRitOffset +Value2=5|8|vfText|1|0|pmFreq +Flag1 =(..................0........)|pmRitOff +Flag2 =(..................1........)|pmRitOn +Flag3 =(...................0.......)|pmXitOff +Flag4 =(...................1.......)|pmXitOn +Flag5 =(....................1......)|pmSSB_L +Flag6 =(....................2......)|pmSSB_U +Flag7 =(....................3......)|pmCW_U +Flag8 =(....................4......)|pmFM +Flag9 =(....................5......)|pmAM +Flag10=(....................6......)|pmDIG_L +Flag11=(....................7......)|pmCW_L +Flag12=(....................8......)|pmDIG_L +Flag13=(....................9......)|pmDIG_U +Flag14=(....................B......)|pmFM +Flag15=(....................C......)|pmDIG_U +Flag16=(..............0000.........)|pmRit0 + +[STATUS2] +Command=(FA;) +ReplyEnd=(;) +;Validate=(FA........;) +Value1=2|8|vfText|1|0|pmFreqA + +[STATUS3] +Command=(FB;) +ReplyEnd=(;) +;Validate=(FB........;) +Value1=2|8|vfText|1|0|pmFreqB + +[STATUS4] +Command=(KP;) +ReplyEnd=(;) +Validate=(KP..;) +Value1=2|2|vfText|10|300|pmPitch + +[STATUS5] +Command=(FR;FT;) +ReplyLength=8 +;ReplyEnd=(;) +Validate=(FR.;FT.;) +Flag1=(..0.....)|pmVfoA +Flag2=(..3.....)|pmVfoB +Flag3=(..0...0.)|pmVfoAA +Flag4=(..0...1.)|pmVfoAB +Flag5=(..3...0.)|pmVfoBA +Flag6=(..3...1.)|pmVfoBB +Flag7=(..0...1.)|pmSplitOn +Flag8=(..0...0.)|pmSplitOff + +[STATUS6] +Command=(TX;) +ReplyEnd=(;) +Validate=(TX.;) +Flag1=(..0.)|pmRX +Flag2=(..1.)|pmTX diff --git a/CATCheck/Rigs/FTDX-1200.ini b/CATCheck/Rigs/FTDX-1200.ini new file mode 100644 index 0000000..2593ed7 --- /dev/null +++ b/CATCheck/Rigs/FTDX-1200.ini @@ -0,0 +1,224 @@ +;------------------------------------------------------------------------------- +; Yaesu FTDX-1200 +; +; 2015-06-04 - File created by Philippe CHARDON F5FDV ph.chardon@laposte.net +; 2018-05-01 - File updated by R. A. Wilson N6TV n6tv@arrl.net: +; - Digital modes now select RTTY insted of DATA modes +; (use FTDX-1200-DATA.ini for DATA modes) +; - Recognize all modes returned by IF; command +; - Fix pmPitch command and status +; - Corrected CR/LF errors +;------------------------------------------------------------------------------- + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT] +Command=(AI0;) +ReplyLength=0 + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- + +[pmFreqA] +Command=(FA........;) +Value=2|8|vfText|1|0 +ReplyLength=0 + +[pmFreqB] +Command=(FB........;) +Value=2|8|vfText|1|0 +ReplyLength=0 + +[pmFreq] +;not supported + +[pmRitOffset] +Command=(RU....;) +Value=2|4|vfText|1|0 +ReplyLength=0 + +[pmRit0] +Command=(RC;) +ReplyLength=0 + +[pmPitch] +Command=(KP..;) +Value=2|2|vfText|0.1|-30 +ReplyLength=0 + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +Command=(FR0;FT1;) +ReplyLength=0 + +[pmSplitOff] +Command=(FR0;FT0;) +ReplyLength=0 + +[pmVfoA] +Command=(FR0;) +ReplyLength=0 + +[pmVfoB] +Command=(FR3;) +ReplyLength=0 + +[pmVfoEqual] +Command=(AB;) +ReplyLength=0 + +[pmVfoSwap] +Command=(SV;) +ReplyLength=0 + +[pmVfoAA] +Command=(FR0;FT0;) +ReplyLength=0 + +[pmVfoAB] +Command=(FR0;FT1;) +ReplyLength=0 + +[pmVfoBA] +Command=(FR3;FT0;) +ReplyLength=0 + +[pmVfoBB] +Command=(FR3;FT1;) +ReplyLength=0 + +[pmRitOn] +Command=(RT1;) +ReplyLength=0 + +[pmRitOff] +Command=(RT0;) +ReplyLength=0 + +[pmXitOn] +Command=(XT1;) +ReplyLength=0 + +[pmXitOff] +Command=(XT0;) +ReplyLength=0 + +[pmRit0] +Command=(RC;) +ReplyLength=0 + +[pmRx] +Command=(TX0;) +ReplyLength=0 + +[pmTx] +Command=(TX1;) +ReplyLength=0 + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +Command=(MD03;) +ReplyLength=0 + +[pmCW_L] +Command=(MD07;) +ReplyLength=0 + +[pmSSB_U] +Command=(MD02;) +ReplyLength=0 + +[pmSSB_L] +Command=(MD01;) +ReplyLength=0 + +; update: Now RTTY-USB. Use FTDX-1200-DATA.ini for DATA-USB. +[pmDIG_U] +Command=(MD09;) +ReplyLength=0 + +; update: Now RTTY-LSB. Use FTDX-1200-DATA.ini for DATA-LSB. +[pmDIG_L] +Command=(MD06;) +ReplyLength=0 + +[pmAM] +Command=(MD05;) +ReplyLength=0 + +[pmFM] +Command=(MD04;) +ReplyLength=0 + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- + +[STATUS1] +Command=(IF;) +ReplyEnd=(;) +Validate=(IF........................;) +Value1=13|5|vfText|1|0|pmRitOffset +Value2=5|8|vfText|1|0|pmFreq +Flag1 =(..................0........)|pmRitOff +Flag2 =(..................1........)|pmRitOn +Flag3 =(...................0.......)|pmXitOff +Flag4 =(...................1.......)|pmXitOn +Flag5 =(....................1......)|pmSSB_L +Flag6 =(....................2......)|pmSSB_U +Flag7 =(....................3......)|pmCW_U +Flag8 =(....................4......)|pmFM +Flag9 =(....................5......)|pmAM +Flag10=(....................6......)|pmDIG_L +Flag11=(....................7......)|pmCW_L +Flag12=(....................8......)|pmDIG_L +Flag13=(....................9......)|pmDIG_U +Flag14=(....................B......)|pmFM +Flag15=(....................C......)|pmDIG_U +Flag16=(..............0000.........)|pmRit0 + +[STATUS2] +Command=(FA;) +ReplyEnd=(;) +;Validate=(FA........;) +Value1=2|8|vfText|1|0|pmFreqA + +[STATUS3] +Command=(FB;) +ReplyEnd=(;) +;Validate=(FB........;) +Value1=2|8|vfText|1|0|pmFreqB + +[STATUS4] +Command=(KP;) +ReplyEnd=(;) +Validate=(KP..;) +Value1=2|2|vfText|10|300|pmPitch + +[STATUS5] +Command=(FR;FT;) +ReplyLength=8 +;ReplyEnd=(;) +Validate=(FR.;FT.;) +Flag1=(..0.....)|pmVfoA +Flag2=(..3.....)|pmVfoB +Flag3=(..0...0.)|pmVfoAA +Flag4=(..0...1.)|pmVfoAB +Flag5=(..3...0.)|pmVfoBA +Flag6=(..3...1.)|pmVfoBB +Flag7=(..0...1.)|pmSplitOn +Flag8=(..0...0.)|pmSplitOff + +[STATUS6] +Command=(TX;) +ReplyEnd=(;) +Validate=(TX.;) +Flag1=(..0.)|pmRX +Flag2=(..1.)|pmTX diff --git a/CATCheck/Rigs/FTDX-3000-DATA.ini b/CATCheck/Rigs/FTDX-3000-DATA.ini new file mode 100644 index 0000000..594eb11 --- /dev/null +++ b/CATCheck/Rigs/FTDX-3000-DATA.ini @@ -0,0 +1,221 @@ +;------------------------------------------------------------------------------- +; Yaesu FTDX-3000-DATA +; +; Same as FTDX-3000, but DIG modes select PKT-U and PKT-L instead of RTTY-USB +; and RTTY-LSB. +; +; 2018-05-01 Created by Bob Wilson, N6TV, n6tv@arrl.net +;------------------------------------------------------------------------------- + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT] +Command=(AI0;) +ReplyLength=0 + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- + +[pmFreqA] +Command=(FA........;) +Value=2|8|vfText|1|0 +ReplyLength=0 + +[pmFreqB] +Command=(FB........;) +Value=2|8|vfText|1|0 +ReplyLength=0 + +[pmFreq] +;not supported + +[pmRitOffset] +Command=(RU....;) +Value=2|4|vfText|1|0 +ReplyLength=0 + +[pmRit0] +Command=(RC;) +ReplyLength=0 + +[pmPitch] +Command=(KP..;) +Value=2|2|vfText|0.1|-30 +ReplyLength=0 + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +Command=(FR0;FT1;) +ReplyLength=0 + +[pmSplitOff] +Command=(FR0;FT0;) +ReplyLength=0 + +[pmVfoA] +Command=(FR0;) +ReplyLength=0 + +[pmVfoB] +Command=(FR3;) +ReplyLength=0 + +[pmVfoEqual] +Command=(AB;) +ReplyLength=0 + +[pmVfoSwap] +Command=(SV;) +ReplyLength=0 + +[pmVfoAA] +Command=(FR0;FT0;) +ReplyLength=0 + +[pmVfoAB] +Command=(FR0;FT1;) +ReplyLength=0 + +[pmVfoBA] +Command=(FR3;FT0;) +ReplyLength=0 + +[pmVfoBB] +Command=(FR3;FT1;) +ReplyLength=0 + +[pmRitOn] +Command=(RT1;) +ReplyLength=0 + +[pmRitOff] +Command=(RT0;) +ReplyLength=0 + +[pmXitOn] +Command=(XT1;) +ReplyLength=0 + +[pmXitOff] +Command=(XT0;) +ReplyLength=0 + +[pmRit0] +Command=(RC;) +ReplyLength=0 + +[pmRx] +Command=(TX0;) +ReplyLength=0 + +[pmTx] +Command=(TX1;) +ReplyLength=0 + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +Command=(MD03;) +ReplyLength=0 + +[pmCW_L] +Command=(MD07;) +ReplyLength=0 + +[pmSSB_U] +Command=(MD02;) +ReplyLength=0 + +[pmSSB_L] +Command=(MD01;) +ReplyLength=0 + +[pmDIG_U] +Command=(MD0C;) +ReplyLength=0 + +[pmDIG_L] +Command=(MD08;) +ReplyLength=0 + +[pmAM] +Command=(MD05;) +ReplyLength=0 + +[pmFM] +Command=(MD04;) +ReplyLength=0 + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- + +[STATUS1] +Command=(IF;) +ReplyEnd=(;) +Validate=(IF........................;) +Value1=13|5|vfText|1|0|pmRitOffset +Value2=5|8|vfText|1|0|pmFreq +Flag1 =(..................0........)|pmRitOff +Flag2 =(..................1........)|pmRitOn +Flag3 =(...................0.......)|pmXitOff +Flag4 =(...................1.......)|pmXitOn +Flag5 =(....................1......)|pmSSB_L +Flag6 =(....................2......)|pmSSB_U +Flag7 =(....................3......)|pmCW_U +Flag8 =(....................4......)|pmFM +Flag9 =(....................5......)|pmAM +Flag10=(....................6......)|pmDIG_L +Flag11=(....................7......)|pmCW_L +Flag12=(....................8......)|pmDIG_L +Flag13=(....................9......)|pmDIG_U +Flag14=(....................B......)|pmFM +Flag15=(....................C......)|pmDIG_U +Flag16=(..............0000.........)|pmRit0 + +[STATUS2] +Command=(FA;) +ReplyEnd=(;) +;Validate=(FA........;) +Value1=2|8|vfText|1|0|pmFreqA + +[STATUS3] +Command=(FB;) +ReplyEnd=(;) +;Validate=(FB........;) +Value1=2|8|vfText|1|0|pmFreqB + +[STATUS4] +Command=(KP;) +ReplyEnd=(;) +Validate=(KP..;) +Value1=2|2|vfText|10|300|pmPitch + +[STATUS5] +Command=(FR;FT;) +ReplyLength=8 +;ReplyEnd=(;) +Validate=(FR.;FT.;) +Flag1=(..0.....)|pmVfoA +Flag2=(..3.....)|pmVfoB +Flag3=(..0...0.)|pmVfoAA +Flag4=(..0...1.)|pmVfoAB +Flag5=(..3...0.)|pmVfoBA +Flag6=(..3...1.)|pmVfoBB +Flag7=(..0...1.)|pmSplitOn +Flag8=(..0...0.)|pmSplitOff + +[STATUS6] +Command=(TX;) +ReplyLength=4 +ReplyEnd=(;) +Validate=(TX.;) +Flag1=(..0.)|pmRX +Flag2=(..1.)|pmTX +Flag3=(..2.)|pmTX diff --git a/CATCheck/Rigs/FTDX-3000.ini b/CATCheck/Rigs/FTDX-3000.ini new file mode 100644 index 0000000..b1f4c5b --- /dev/null +++ b/CATCheck/Rigs/FTDX-3000.ini @@ -0,0 +1,222 @@ +;------------------------------------------------------------------------------- +; Yaesu FTDX-3000 +; +; 2014-10-21 - File created by Paul Jones paul@nn4f.com +; 2018-05-01 - File updated by R. A. Wilson N6TV n6tv@arrl.net: +; - Copied and renamed FTdx3000.ini to FTDX-3000.ini +; - Recognize all modes returned by IF; command +; - Fix pmPitch command and status +;------------------------------------------------------------------------------- + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT] +Command=(AI0;) +ReplyLength=0 + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- + +[pmFreqA] +Command=(FA........;) +Value=2|8|vfText|1|0 +ReplyLength=0 + +[pmFreqB] +Command=(FB........;) +Value=2|8|vfText|1|0 +ReplyLength=0 + +[pmFreq] +;not supported + +[pmRitOffset] +Command=(RU....;) +Value=2|4|vfText|1|0 +ReplyLength=0 + +[pmRit0] +Command=(RC;) +ReplyLength=0 + +[pmPitch] +Command=(KP..;) +Value=2|2|vfText|0.1|-30 +ReplyLength=0 + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +Command=(FR0;FT1;) +ReplyLength=0 + +[pmSplitOff] +Command=(FR0;FT0;) +ReplyLength=0 + +[pmVfoA] +Command=(FR0;) +ReplyLength=0 + +[pmVfoB] +Command=(FR3;) +ReplyLength=0 + +[pmVfoEqual] +Command=(AB;) +ReplyLength=0 + +[pmVfoSwap] +Command=(SV;) +ReplyLength=0 + +[pmVfoAA] +Command=(FR0;FT0;) +ReplyLength=0 + +[pmVfoAB] +Command=(FR0;FT1;) +ReplyLength=0 + +[pmVfoBA] +Command=(FR3;FT0;) +ReplyLength=0 + +[pmVfoBB] +Command=(FR3;FT1;) +ReplyLength=0 + +[pmRitOn] +Command=(RT1;) +ReplyLength=0 + +[pmRitOff] +Command=(RT0;) +ReplyLength=0 + +[pmXitOn] +Command=(XT1;) +ReplyLength=0 + +[pmXitOff] +Command=(XT0;) +ReplyLength=0 + +[pmRit0] +Command=(RC;) +ReplyLength=0 + +[pmRx] +Command=(TX0;) +ReplyLength=0 + +[pmTx] +Command=(TX1;) +ReplyLength=0 + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +Command=(MD03;) +ReplyLength=0 + +[pmCW_L] +Command=(MD07;) +ReplyLength=0 + +[pmSSB_U] +Command=(MD02;) +ReplyLength=0 + +[pmSSB_L] +Command=(MD01;) +ReplyLength=0 + +[pmDIG_U] +Command=(MD09;) +ReplyLength=0 + +[pmDIG_L] +Command=(MD06;) +ReplyLength=0 + +[pmAM] +Command=(MD05;) +ReplyLength=0 + +[pmFM] +Command=(MD04;) +ReplyLength=0 + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- + +[STATUS1] +Command=(IF;) +ReplyEnd=(;) +Validate=(IF........................;) +Value1=13|5|vfText|1|0|pmRitOffset +Value2=5|8|vfText|1|0|pmFreq +Flag1 =(..................0........)|pmRitOff +Flag2 =(..................1........)|pmRitOn +Flag3 =(...................0.......)|pmXitOff +Flag4 =(...................1.......)|pmXitOn +Flag5 =(....................1......)|pmSSB_L +Flag6 =(....................2......)|pmSSB_U +Flag7 =(....................3......)|pmCW_U +Flag8 =(....................4......)|pmFM +Flag9 =(....................5......)|pmAM +Flag10=(....................6......)|pmDIG_L +Flag11=(....................7......)|pmCW_L +Flag12=(....................8......)|pmDIG_L +Flag13=(....................9......)|pmDIG_U +Flag14=(....................B......)|pmFM +Flag15=(....................C......)|pmDIG_U +Flag16=(..............0000.........)|pmRit0 + +[STATUS2] +Command=(FA;) +ReplyEnd=(;) +;Validate=(FA........;) +Value1=2|8|vfText|1|0|pmFreqA + +[STATUS3] +Command=(FB;) +ReplyEnd=(;) +;Validate=(FB........;) +Value1=2|8|vfText|1|0|pmFreqB + +[STATUS4] +Command=(KP;) +ReplyEnd=(;) +Validate=(KP..;) +Value1=2|2|vfText|10|300|pmPitch + +[STATUS5] +Command=(FR;FT;) +ReplyLength=8 +;ReplyEnd=(;) +Validate=(FR.;FT.;) +Flag1=(..0.....)|pmVfoA +Flag2=(..3.....)|pmVfoB +Flag3=(..0...0.)|pmVfoAA +Flag4=(..0...1.)|pmVfoAB +Flag5=(..3...0.)|pmVfoBA +Flag6=(..3...1.)|pmVfoBB +Flag7=(..0...1.)|pmSplitOn +Flag8=(..0...0.)|pmSplitOff + +[STATUS6] +Command=(TX;) +ReplyLength=4 +ReplyEnd=(;) +Validate=(TX.;) +Flag1=(..0.)|pmRX +Flag2=(..1.)|pmTX +Flag3=(..2.)|pmTX diff --git a/CATCheck/Rigs/FTDX-5000MP-DATA.ini b/CATCheck/Rigs/FTDX-5000MP-DATA.ini new file mode 100644 index 0000000..8f19aec --- /dev/null +++ b/CATCheck/Rigs/FTDX-5000MP-DATA.ini @@ -0,0 +1,219 @@ +;------------------------------------------------------------------------------- +; Yaesu FTDX-5000MP-DATA +; +; Same as FTDX-5000MP, but DIG modes select PKT-U and PKT-L instead of RTTY-USB +; and RTTY-LSB +; +; 2018-05-01 Created by Bob Wilson, N6TV, n6tv@arrl.net +;------------------------------------------------------------------------------- + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT] +Command=(AI0;) +ReplyLength=0 + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- + +[pmFreqA] +Command=(FA........;) +Value=2|8|vfText|1|0 +ReplyLength=0 + +[pmFreqB] +Command=(FB........;) +Value=2|8|vfText|1|0 +ReplyLength=0 + +[pmFreq] +;not supported + +[pmRitOffset] +Command=(RU....;) +Value=2|4|vfText|1|0 +ReplyLength=0 + +[pmRit0] +Command=(RC;) +ReplyLength=0 + +[pmPitch] +Command=(KP..;) +Value=2|2|vfText|0.1|-30 +ReplyLength=0 + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +Command=(FR0;FT3;) +ReplyLength=0 + +[pmSplitOff] +Command=(FR0;FT2;) +ReplyLength=0 + +[pmVfoA] +Command=(FR0;) +ReplyLength=0 + +[pmVfoB] +Command=(FR3;) +ReplyLength=0 + +[pmVfoEqual] +Command=(AB;) +ReplyLength=0 + +[pmVfoSwap] +Command=(SV;) +ReplyLength=0 + +[pmVfoAA] +Command=(FR0;FT0;) +ReplyLength=0 + +[pmVfoAB] +Command=(FR0;FT3;) +ReplyLength=0 + +[pmVfoBA] +Command=(FR3;FT2;) +ReplyLength=0 + +[pmVfoBB] +Command=(FR3;FT3;) +ReplyLength=0 + +[pmRitOn] +Command=(RT1;) +ReplyLength=0 + +[pmRitOff] +Command=(RT0;) +ReplyLength=0 + +[pmXitOn] +Command=(XT1;) +ReplyLength=0 + +[pmXitOff] +Command=(XT0;) +ReplyLength=0 + +[pmRx] +Command=(TX0;) +ReplyLength=0 + +[pmTx] +Command=(TX1;) +ReplyLength=0 + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +Command=(MD03;) +ReplyLength=0 + +[pmCW_L] +Command=(MD07;) +ReplyLength=0 + +[pmSSB_U] +Command=(MD02;) +ReplyLength=0 + +[pmSSB_L] +Command=(MD01;) +ReplyLength=0 + +[pmDIG_U] +Command=(MD0C;) +ReplyLength=0 + +[pmDIG_L] +Command=(MD08;) +ReplyLength=0 + +[pmAM] +Command=(MD05;) +ReplyLength=0 + +[pmFM] +Command=(MD04;) +ReplyLength=0 + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- + +[STATUS1] +Command=(IF;) +ReplyEnd=(;) +Validate=(IF........................;) +Value1=13|5|vfText|1|0|pmRitOffset +Value2=5|8|vfText|1|0|pmFreq +Flag1 =(..................0........)|pmRitOff +Flag2 =(..................1........)|pmRitOn +Flag3 =(...................0.......)|pmXitOff +Flag4 =(...................1.......)|pmXitOn +Flag5 =(....................1......)|pmSSB_L +Flag6 =(....................2......)|pmSSB_U +Flag7 =(....................3......)|pmCW_U +Flag8 =(....................4......)|pmFM +Flag9 =(....................5......)|pmAM +Flag10=(....................6......)|pmDIG_L +Flag11=(....................7......)|pmCW_L +Flag12=(....................8......)|pmDIG_L +Flag13=(....................9......)|pmDIG_U +Flag14=(....................A......)|pmFM +Flag15=(....................B......)|pmFM +Flag16=(....................C......)|pmDIG_U +Flag17=(..............0000.........)|pmRit0 + +[STATUS2] +Command=(FA;) +ReplyEnd=(;) +;Validate=(FA........;) +Value1=2|8|vfText|1|0|pmFreqA + +[STATUS3] +Command=(FB;) +ReplyEnd=(;) +;Validate=(FB........;) +Value1=2|8|vfText|1|0|pmFreqB + +[STATUS4] +Command=(KP;) +ReplyEnd=(;) +Validate=(KP..;) +Value1=2|2|vfText|10|300|pmPitch + +[STATUS5] +Command=(FR;FT;) +ReplyLength=8 +Validate=(FR.;FT.;) +Flag1=(..0...0.)|pmVfoAA +Flag2=(..0...1.)|pmVfoAB +Flag3=(..2...0.)|pmVfoAA +Flag4=(..2...1.)|pmVfoAB +Flag5=(..3...0.)|pmVfoBA +Flag6=(..3...1.)|pmVfoBB +Flag7=(..0...0.)|pmSplitOff +Flag8=(..0...1.)|pmSplitOn +Flag9=(..2...0.)|pmSplitOff +Flag10=(..2...1.)|pmSplitOn +Flag11=(..3...0.)|pmSplitOn +Flag12=(..3...1.)|pmSplitOff + +[STATUS6] +Command=(TX;) +ReplyEnd=(;) +Validate=(TX.;) +Flag1=(..0.)|pmRX +Flag2=(..1.)|pmTX diff --git a/CATCheck/Rigs/FTDX-5000MP.ini b/CATCheck/Rigs/FTDX-5000MP.ini new file mode 100644 index 0000000..7ee07fd --- /dev/null +++ b/CATCheck/Rigs/FTDX-5000MP.ini @@ -0,0 +1,219 @@ +;------------------------------------------------------------------------------- +; Yaesu FTDX-5000MP +; +; 2009-09-29 - File created by DANILO IZ0PUE THE_HAWK@TELVIA.IT +; 2018-05-01 - File updated by R. A. Wilson N6TV n6tv@arrl.net: +; - Recognize all modes returned by IF; command +; - Fix pmPitch command and status +;------------------------------------------------------------------------------- + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT] +Command=(AI0;) +ReplyLength=0 + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- + +[pmFreqA] +Command=(FA........;) +Value=2|8|vfText|1|0 +ReplyLength=0 + +[pmFreqB] +Command=(FB........;) +Value=2|8|vfText|1|0 +ReplyLength=0 + +[pmFreq] +;not supported + +[pmRitOffset] +Command=(RU....;) +Value=2|4|vfText|1|0 +ReplyLength=0 + +[pmRit0] +Command=(RC;) +ReplyLength=0 + +[pmPitch] +Command=(KP..;) +Value=2|2|vfText|0.1|-30 +ReplyLength=0 + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +Command=(FR0;FT3;) +ReplyLength=0 + +[pmSplitOff] +Command=(FR0;FT2;) +ReplyLength=0 + +[pmVfoA] +Command=(FR0;) +ReplyLength=0 + +[pmVfoB] +Command=(FR3;) +ReplyLength=0 + +[pmVfoEqual] +Command=(AB;) +ReplyLength=0 + +[pmVfoSwap] +Command=(SV;) +ReplyLength=0 + +[pmVfoAA] +Command=(FR0;FT0;) +ReplyLength=0 + +[pmVfoAB] +Command=(FR0;FT3;) +ReplyLength=0 + +[pmVfoBA] +Command=(FR3;FT2;) +ReplyLength=0 + +[pmVfoBB] +Command=(FR3;FT3;) +ReplyLength=0 + +[pmRitOn] +Command=(RT1;) +ReplyLength=0 + +[pmRitOff] +Command=(RT0;) +ReplyLength=0 + +[pmXitOn] +Command=(XT1;) +ReplyLength=0 + +[pmXitOff] +Command=(XT0;) +ReplyLength=0 + +[pmRx] +Command=(TX0;) +ReplyLength=0 + +[pmTx] +Command=(TX1;) +ReplyLength=0 + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +Command=(MD03;) +ReplyLength=0 + +[pmCW_L] +Command=(MD07;) +ReplyLength=0 + +[pmSSB_U] +Command=(MD02;) +ReplyLength=0 + +[pmSSB_L] +Command=(MD01;) +ReplyLength=0 + +[pmDIG_U] +Command=(MD09;) +ReplyLength=0 + +[pmDIG_L] +Command=(MD06;) +ReplyLength=0 + +[pmAM] +Command=(MD05;) +ReplyLength=0 + +[pmFM] +Command=(MD04;) +ReplyLength=0 + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- + +[STATUS1] +Command=(IF;) +ReplyEnd=(;) +Validate=(IF........................;) +Value1=13|5|vfText|1|0|pmRitOffset +Value2=5|8|vfText|1|0|pmFreq +Flag1 =(..................0........)|pmRitOff +Flag2 =(..................1........)|pmRitOn +Flag3 =(...................0.......)|pmXitOff +Flag4 =(...................1.......)|pmXitOn +Flag5 =(....................1......)|pmSSB_L +Flag6 =(....................2......)|pmSSB_U +Flag7 =(....................3......)|pmCW_U +Flag8 =(....................4......)|pmFM +Flag9 =(....................5......)|pmAM +Flag10=(....................6......)|pmDIG_L +Flag11=(....................7......)|pmCW_L +Flag12=(....................8......)|pmDIG_L +Flag13=(....................9......)|pmDIG_U +Flag14=(....................A......)|pmFM +Flag15=(....................B......)|pmFM +Flag16=(....................C......)|pmDIG_U +Flag17=(..............0000.........)|pmRit0 + +[STATUS2] +Command=(FA;) +ReplyEnd=(;) +;Validate=(FA........;) +Value1=2|8|vfText|1|0|pmFreqA + +[STATUS3] +Command=(FB;) +ReplyEnd=(;) +;Validate=(FB........;) +Value1=2|8|vfText|1|0|pmFreqB + +[STATUS4] +Command=(KP;) +ReplyEnd=(;) +Validate=(KP..;) +Value1=2|2|vfText|10|300|pmPitch + +[STATUS5] +Command=(FR;FT;) +ReplyLength=8 +Validate=(FR.;FT.;) +Flag1=(..0...0.)|pmVfoAA +Flag2=(..0...1.)|pmVfoAB +Flag3=(..2...0.)|pmVfoAA +Flag4=(..2...1.)|pmVfoAB +Flag5=(..3...0.)|pmVfoBA +Flag6=(..3...1.)|pmVfoBB +Flag7=(..0...0.)|pmSplitOff +Flag8=(..0...1.)|pmSplitOn +Flag9=(..2...0.)|pmSplitOff +Flag10=(..2...1.)|pmSplitOn +Flag11=(..3...0.)|pmSplitOn +Flag12=(..3...1.)|pmSplitOff + +[STATUS6] +Command=(TX;) +ReplyEnd=(;) +Validate=(TX.;) +Flag1=(..0.)|pmRX +Flag2=(..1.)|pmTX diff --git a/CATCheck/Rigs/FTDX-9000.ini b/CATCheck/Rigs/FTDX-9000.ini new file mode 100644 index 0000000..87a7e66 --- /dev/null +++ b/CATCheck/Rigs/FTDX-9000.ini @@ -0,0 +1,220 @@ +;------------------------------------------------------------------------------- +; Yaesu FTDX-9000 +; +; 2009-12-07 - File created by N2TU@arrl.net as FT-9000v1.ini +; 2018-05-01 - File updated by R. A. Wilson N6TV n6tv@arrl.net: +; - Copied and renamed FT-9000v1.ini to FTDX-9000.ini +; - Recognize all modes returned by IF; command +;------------------------------------------------------------------------------- + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT] +Command=(AI0;) +ReplyLength=0 + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- + +[pmFreqA] +Command=(FA........;) +Value=2|8|vfText|1|0 +ReplyLength=0 + +[pmFreqB] +Command=(FB........;) +Value=2|8|vfText|1|0 +ReplyLength=0 + +[pmFreq] +;not supported + +[pmRitOffset] +Command=(RU....;) +Value=2|4|vfText|1|0 +ReplyLength=0 + +[pmRit0] +Command=(RC;) +ReplyLength=0 + +[pmPitch] +Command=(KP..;) +Value=2|2|vfText|0.02|-300 +ReplyLength=0 + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +Command=(FR0;FT3;) +ReplyLength=0 + +[pmSplitOff] +Command=(FR0;FT2;) +ReplyLength=0 + +[pmVfoA] +Command=(FR0;) +ReplyLength=0 + +[pmVfoB] +Command=(FR3;) +ReplyLength=0 + +[pmVfoEqual] +Command=(AB;) +ReplyLength=0 + +[pmVfoSwap] +Command=(SV;) +ReplyLength=0 + +[pmVfoAA] +Command=(FR0;FT0;) +ReplyLength=0 + +[pmVfoAB] +Command=(FR0;FT3;) +ReplyLength=0 + +[pmVfoBA] +Command=(FR3;FT2;) +ReplyLength=0 + +[pmVfoBB] +Command=(FR3;FT3;) +ReplyLength=0 + +[pmRitOn] +Command=(RT1;) +ReplyLength=0 + +[pmRitOff] +Command=(RT0;) +ReplyLength=0 + +[pmXitOn] +Command=(XT1;) +ReplyLength=0 + +[pmXitOff] +Command=(XT0;) +ReplyLength=0 + +[pmRit0] +Command=(RC;) +ReplyLength=0 + +[pmRx] +Command=(TX0;) +ReplyLength=0 + +[pmTx] +Command=(TX1;) +ReplyLength=0 + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +Command=(MD03;) +ReplyLength=0 + +[pmCW_L] +Command=(MD07;) +ReplyLength=0 + +[pmSSB_U] +Command=(MD02;) +ReplyLength=0 + +[pmSSB_L] +Command=(MD01;) +ReplyLength=0 + +[pmDIG_U] +Command=(MD09;) +ReplyLength=0 + +[pmDIG_L] +Command=(MD06;) +ReplyLength=0 + +[pmAM] +Command=(MD05;) +ReplyLength=0 + +[pmFM] +Command=(MD04;) +ReplyLength=0 + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- + +[STATUS1] +Command=(IF;) +ReplyEnd=(;) +Validate=(IF........................;) +Value1=13|5|vfText|1|0|pmRitOffset +Value2=5|8|vfText|1|0|pmFreq +Flag1 =(..................0........)|pmRitOff +Flag2 =(..................1........)|pmRitOn +Flag3 =(...................0.......)|pmXitOff +Flag4 =(...................1.......)|pmXitOn +Flag5 =(....................1......)|pmSSB_L +Flag6 =(....................2......)|pmSSB_U +Flag7 =(....................3......)|pmCW_U +Flag8 =(....................4......)|pmFM +Flag9 =(....................5......)|pmAM +Flag10=(....................6......)|pmDIG_L +Flag11=(....................7......)|pmCW_L +Flag12=(....................8......)|pmDIG_L +Flag13=(....................9......)|pmDIG_U +Flag14=(....................A......)|pmFM +Flag15=(....................B......)|pmFM +Flag16=(....................C......)|pmDIG_U +Flag17=(..............0000.........)|pmRit0 + +[STATUS2] +Command=(FA;) +ReplyEnd=(;) +;Validate=(FA........;) +Value1=2|8|vfText|1|0|pmFreqA + +[STATUS3] +Command=(FB;) +ReplyEnd=(;) +;Validate=(FB........;) +Value1=2|8|vfText|1|0|pmFreqB + +[STATUS4] +Command=(KP;) +ReplyEnd=(;) +Validate=(KP..;) +Value1=2|2|vfText|50|300|pmPitch + +[STATUS5] +Command=(FR;FT;) +ReplyLength=8 +;ReplyEnd=(;) +Validate=(FR.;FT.;) +Flag1=(..0.....)|pmVfoA +Flag2=(..3.....)|pmVfoB +Flag3=(..0...0.)|pmVfoAA +Flag4=(..0...1.)|pmVfoAB +Flag5=(..3...0.)|pmVfoBA +Flag6=(..3...1.)|pmVfoBB +Flag7=(..0...1.)|pmSplitOn +Flag8=(..0...0.)|pmSplitOff + +[STATUS6] +Command=(TX;) +ReplyEnd=(;) +Validate=(TX.;) +Flag1=(..0.)|pmRX +Flag2=(..1.)|pmTX diff --git a/CATCheck/Rigs/HRD.ini b/CATCheck/Rigs/HRD.ini new file mode 100644 index 0000000..b668003 --- /dev/null +++ b/CATCheck/Rigs/HRD.ini @@ -0,0 +1,177 @@ +;------------------------------------------------------------------------------- +; Ham Radio Delux command set +; +; File created by Alexei Chernobai, RX4HX rx4hx@mail.ru +;------------------------------------------------------------------------------- + +;Command= +;ReplyLength= +;ReplyEnd= +;Value=||||[|] +;Flag=[|]| + + + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT] +;Command=(AI0;) +;ReplyLength=0 + + + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreqA] +Command=(FA...........;) +Value=2|11|vfText|1|0 +ReplyLength=0 + +[pmFreqB] +Command=(FB...........;) +Value=2|11|vfText|1|0 +ReplyLength=0 + +[pmFreq] +;not supported + +[pmRitOffset] +;not supported + +[pmRit0] +;not supported + +[pmPitch] +;not supported + + + + + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +;not supported + +[pmSplitOff] +;not supported + +[pmVfoA] +;not supported + +[pmVfoB] +;not supported + +[pmVfoEqual] +;not supported + +[pmVfoSwap] +;not supported + +[pmVfoAA] +;not supported + +[pmVfoAB] +;not supported + +[pmVfoBA] +;not supported + +[pmVfoBB] +;not supported + +[pmRitOn] +;not supported + +[pmRitOff] +;not supported + +[pmXitOn] +;not supported + +[pmXitOff] +;not supported + +[pmRx] +;not supported + +[pmTx] +;not supported + + + + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +Command=(MD3;) +ReplyLength=0 + +[pmCW_L] +Command=(MD7;) +ReplyLength=0 + +[pmSSB_U] +Command=(MD2;) +ReplyLength=0 + +[pmSSB_L] +Command=(MD1;) +ReplyLength=0 + +[pmDIG_U] +Command=(MD9;) +ReplyLength=0 + +[pmDIG_L] +Command=(MD6;) +ReplyLength=0 + +[pmAM] +Command=(MD5;) +ReplyLength=0 + +[pmFM] +Command=(MD4;) +ReplyLength=0 + + + + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +[STATUS1] +Command=(IF;) +ReplyEnd=(;) +Validate=(IF...................................;) +Value2=2|11|vfText|1|0|pmFreq +Flag1 =(............................0.........)|pmRx +Flag2 =(............................1.........)|pmTx +Flag3 =(.............................1........)|pmSSB_L +Flag4 =(.............................2........)|pmSSB_U +Flag5 =(.............................3........)|pmCW_U +Flag6 =(.............................4........)|pmFM +Flag7 =(.............................5........)|pmAM +Flag8 =(.............................6........)|pmDIG_L +Flag9 =(.............................7........)|pmCW_L +Flag10=(.............................9........)|pmDIG_U + + +[STATUS2] +Command=(FA;) +ReplyEnd=(;) +Validate=(FA...........;) +Value1=2|11|vfText|1|0|pmFreqA + +[STATUS3] +Command=(FB;) +ReplyEnd=(;) +Validate=(FB...........;) +Value1=2|11|vfText|1|0|pmFreqB + diff --git a/CATCheck/Rigs/IC- 821.ini b/CATCheck/Rigs/IC- 821.ini new file mode 100644 index 0000000..229f92c --- /dev/null +++ b/CATCheck/Rigs/IC- 821.ini @@ -0,0 +1,187 @@ +;------------------------------------------------------------------------------- + ; Icom IC-821 command set +; +; File created for IC-970D by Alex Shovkoplyas, VE3NEA ve3nea@dxatlas.com + Corrected by Vlad Tarasov , RA4HO, ra4ho@ncts.ru +; fiddled with for IC-821 by MM0RBZ +; +;------------------------------------------------------------------------------- + + + + + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- + +;none + + + + + + + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreqA] +;not supported + +[pmFreqB] +;not supported + +[pmFreq] +Command=FEFE4CE0.05.0000000000.FD +Value=5|5|vfBcdLU|1|0 +ReplyLength=17 +Validate=FEFE4CE0050000000000FD.FEFEE04CFBFD + +[pmRitOffset] +;not supported +;+/- 1.2 KHz + +[pmRit0] +;not supported + +[pmPitch] +;not supported + + + + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +Command=FEFE4CE0.0F01.FD +ReplyLength=13 +Validate=FEFE4CE00F01FD.FEFEE04CFBFD + +[pmSplitOff] +Command=FEFE4CE0.0F00.FD +ReplyLength=13 +Validate=FEFE4CE00F00FD.FEFEE04CFBFD + +[pmVfoA] +Command=FEFE4CE0.0700.FD +ReplyLength=13 +Validate=FEFE4CE00700FD.FEFEE04CFBFD + +[pmVfoB] +Command=FEFE4CE0.0701.FD +ReplyLength=13 +Validate=FEFE4CE00701FD.FEFEE04CFBFD + +[pmVfoEqual] +Command=FEFE4CE0.07A0.FD +ReplyLength=13 +Validate=FEFE4CE007A0FD.FEFEE04CFBFD + +[pmVfoSwap] +;SWAP MAIN AND SUB +Command=FEFE4CE0.07B0.FD +ReplyLength=13 +Validate=FEFE4CE007B0FD.FEFEE04CFBFD + +[pmVfoAA] +;not supported + +[pmVfoAB] +;not supported + +[pmVfoBA] +;not supported + +[pmVfoBB] +;not supported + +[pmRitOn] +;not supported + +[pmRitOff] +;not supported + +[pmXitOn] +;not supported + +[pmXitOff] +;not supported + +[pmRx] +;Not supported +[pmTx] +;Not Supported + + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +Command=FEFE4CE0.06.03.FD +ReplyLength=13 +Validate=FEFE4CE00603FD.FEFEE04CFBFD + +[pmCW_L] +;NOT SUPPORTED + + +[pmSSB_U] +Command=FEFE4CE0.06.01.FD +ReplyLength=13 +Validate=FEFE4CE00601FD.FEFEE04CFBFD + +[pmSSB_L] +Command=FEFE4CE0.06.00.FD +ReplyLength=13 +Validate=FEFE4CE00600FD.FEFEE04CFBFD + +[pmDIG_U] +;not supported +[pmDIG_L] +;not supported + +[pmAM] +;not supported + +[pmFM] +Command=FEFE4CE0.06.05.FD +ReplyLength=13 +Validate=FEFE4CE00605FD.FEFEE04CFBFD + + + + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +[STATUS1] +;READ CURRENT FREQUENCY DATA +Command=FEFE4CE0.03.FD +ReplyLength=17 +Validate=FFFFFFFFFFFF.FFFFFFFF.FF.0000000000.FF|FEFE4CE003FD.FEFEE04C.03.0000000000.FD +Value1=11|5|vfBcdLU|1|0|pmFreq + +[STATUS2] +;READ CURRENT MODE +Command=FEFE4CE0.04.FD +ReplyLength=14 +Validate=FFFFFFFFFFFF.FFFFFFFF.FF.0000.FF|FEFE4CE004FD.FEFEE04C.04.0000.FD +is filter byte appended to the mode byte? +Flag1=000000000000.0000000000.FF.0000|000000000000.0000000000.03.0000|pmCW_U +Flag2=000000000000.0000000000.FF.0000|000000000000.0000000000.07.0000|pmCW_L +Flag3=000000000000.0000000000.FF.0000|000000000000.0000000000.01.0000|pmSSB_U +Flag4=000000000000.0000000000.FF.0000|000000000000.0000000000.00.0000|pmSSB_L +Flag5=000000000000.0000000000.FF.0000|000000000000.0000000000.04.0000|pmDIG_U +Flag6=000000000000.0000000000.FF.0000|000000000000.0000000000.08.0000|pmDIG_L +Flag7=000000000000.0000000000.FF.0000|000000000000.0000000000.02.0000|pmAM +Flag8=000000000000.0000000000.FF.0000|000000000000.0000000000.05.0000|pmFM + +[STATUS3] +;not supported + + + + diff --git a/CATCheck/Rigs/IC- 970D.ini b/CATCheck/Rigs/IC- 970D.ini new file mode 100644 index 0000000..b41e233 --- /dev/null +++ b/CATCheck/Rigs/IC- 970D.ini @@ -0,0 +1,205 @@ +;------------------------------------------------------------------------------- + ; Icom IC-970 command set +; +; File created by Alex Shovkoplyas, VE3NEA ve3nea@dxatlas.com + Corrected by Vlad Tarasov , RA4HO, ra4ho@ncts.ru +; +;------------------------------------------------------------------------------- + + + + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- + +;none + + + + + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreqA] +;not supported + +[pmFreqB] +;not supported + +[pmFreq] +Command=FEFE2EE0.05.0000000000.FD +Value=5|5|vfBcdLU|1|0 +ReplyLength=17 +Validate=FEFE2EE0050000000000FD.FEFEE02EFBFD + +[pmRitOffset] +;not supported +;+/- 1.2 KHz + +[pmRit0] +;not supported + +[pmPitch] +Command=FEFE2EE0.1409.0000.FD +;300Hz=0 600Hz=128 900Hz=255 +Value=6|2|vfBcdLU|0.425|-127.5 +ReplyLength=15 +Validate=FEFE2EE014090000FD.FEFEE02EFBFD + + + + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +Command=FEFE2EE0.0F01.FD +ReplyLength=13 +Validate=FEFE2EE00F01FD.FEFEE02EFBFD + +[pmSplitOff] +Command=FEFE2EE0.0F00.FD +ReplyLength=13 +Validate=FEFE2EE00F00FD.FEFEE02EFBFD + +[pmVfoA] +Command=FEFE2EE0.0700.FD +ReplyLength=13 +Validate=FEFE2EE00700FD.FEFEE02EFBFD + +[pmVfoB] +Command=FEFE2EE0.0701.FD +ReplyLength=13 +Validate=FEFE2EE00701FD.FEFEE02EFBFD + +[pmVfoEqual] +Command=FEFE2EE0.07A0.FD +ReplyLength=13 +Validate=FEFE2EE007A0FD.FEFEE02EFBFD + +[pmVfoSwap] +Command=FEFE2EE0.07B0.FD +ReplyLength=13 +Validate=FEFE2EE007B0FD.FEFEE02EFBFD + +[pmVfoAA] +;not supported + +[pmVfoAB] +;not supported + +[pmVfoBA] +;not supported + +[pmVfoBB] +;not supported + +[pmRitOn] +;not supported + +[pmRitOff] +;not supported + +[pmXitOn] +;not supported + +[pmXitOff] +;not supported + +[pmRx] +Command=FEFE2EE0.1C00.00.FD +ReplyLength=14 +Validate=FEFE2EE01C0000FD.FEFEE02EFBFD + +[pmTx] +Command=FEFE2EE0.1C00.01.FD +ReplyLength=14 +Validate=FEFE2EE01C0001FD.FEFEE02EFBFD + + + + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +Command=FEFE2EE0.06.03.FD +ReplyLength=13 +Validate=FEFE2EE00603FD.FEFEE02EFBFD + +[pmCW_L] +Command=FEFE2EE0.06.07.FD +ReplyLength=13 +Validate=FEFE2EE00607FD.FEFEE02EFBFD + +[pmSSB_U] +Command=FEFE2EE0.06.01.FD +ReplyLength=13 +Validate=FEFE2EE00601FD.FEFEE02EFBFD + +[pmSSB_L] +Command=FEFE2EE0.06.00.FD +ReplyLength=13 +Validate=FEFE2EE00600FD.FEFEE02EFBFD + +[pmDIG_U] +Command=FEFE2EE0.06.04.FD +ReplyLength=13 +Validate=FEFE2EE00604FD.FEFEE02EFBFD + +[pmDIG_L] +Command=FEFE2EE0.06.08.FD +ReplyLength=13 +Validate=FEFE2EE00608FD.FEFEE02EFBFD + +[pmAM] +Command=FEFE2EE0.06.02.FD +ReplyLength=13 +Validate=FEFE2EE00602FD.FEFEE02EFBFD + +[pmFM] +Command=FEFE2EE0.06.05.FD +ReplyLength=13 +Validate=FEFE2EE00605FD.FEFEE02EFBFD + + + + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +[STATUS1] +Command=FEFE2EE0.03.FD +ReplyLength=17 +Validate=FFFFFFFFFFFF.FFFFFFFF.FF.0000000000.FF|FEFE2EE003FD.FEFEE02E.03.0000000000.FD +Value1=11|5|vfBcdLU|1|0|pmFreq + +[STATUS2] +Command=FEFE2EE0.04.FD +ReplyLength=14 +Validate=FFFFFFFFFFFF.FFFFFFFF.FF.0000.FF|FEFE2EE004FD.FEFEE02E.04.0000.FD +;is filter byte appended to the mode byte? +Flag1=000000000000.0000000000.FF.0000|000000000000.0000000000.03.0000|pmCW_U +Flag2=000000000000.0000000000.FF.0000|000000000000.0000000000.07.0000|pmCW_L +Flag3=000000000000.0000000000.FF.0000|000000000000.0000000000.01.0000|pmSSB_U +Flag4=000000000000.0000000000.FF.0000|000000000000.0000000000.00.0000|pmSSB_L +Flag5=000000000000.0000000000.FF.0000|000000000000.0000000000.04.0000|pmDIG_U +Flag6=000000000000.0000000000.FF.0000|000000000000.0000000000.08.0000|pmDIG_L +Flag7=000000000000.0000000000.FF.0000|000000000000.0000000000.02.0000|pmAM +Flag8=000000000000.0000000000.FF.0000|000000000000.0000000000.05.0000|pmFM + +[STATUS3] +Command=FEFE2EE0.1409.FD +ReplyLength=16 +Validate=FFFFFFFFFFFFFF.FFFFFFFFFFFF.0000.FF|FEFE2EE01409FD.FEFEE02E1409.0000.FD +Value1=13|2|vfBcdLU|2.352941|300|pmPitch + +[STATUS4] +Command=FEFE2EE0.1C00.FD +ReplyLength=15 +Validate=FFFFFFFFFFFFFF.FFFFFFFF.FFFF.00.FF|FEFE2EE01C00FD.FEFEE02E.1C00.00.FD +Flag1=00000000000000.00000000.0000.FF.00|00000000000000.00000000.0000.01.00|pmTx +Flag2=00000000000000.00000000.0000.FF.00|00000000000000.00000000.0000.00.00|pmRx diff --git a/CATCheck/Rigs/IC-275H.ini b/CATCheck/Rigs/IC-275H.ini new file mode 100644 index 0000000..88e4cf7 --- /dev/null +++ b/CATCheck/Rigs/IC-275H.ini @@ -0,0 +1,178 @@ +;------------------------------------------------------------------------------- +; Icom IC-275 command set +; +; File modified by Adrian Sinclair LU1CGB 07/2009 +; +; Tested by: _________ +;------------------------------------------------------------------------------- + + + + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- + +;none + + + + + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreqA] +;not supported + +[pmFreqB] +;not supported + +[pmFreq] +Command=FEFE10E0.05.0000000000.FD +Value=5|5|vfBcdLU|1|0 +ReplyLength=17 +Validate=FEFE10E0050000000000FD.FEFEE010FBFD + +[pmRitOffset] +;not supported + + +[pmRit0] +;not supported + +[pmPitch] +;not supported + + + + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +Command=FEFE10E0.0F01.FD +ReplyLength=13 +Validate=FEFE10E00F01FD.FEFEE010FBFD + +[pmSplitOff] +Command=FEFE10E0.0F00.FD +ReplyLength=13 +Validate=FEFE10E00F00FD.FEFEE010FBFD + +[pmVfoA] +Command=FEFE10E0.0700.FD +ReplyLength=13 +Validate=FEFE10E00700FD.FEFEE010FBFD + +[pmVfoB] +Command=FEFE10E0.0701.FD +ReplyLength=13 +Validate=FEFE10E00701FD.FEFEE010FBFD + +[pmVfoEqual] +Command=FEFE10E0.07A0.FD +ReplyLength=13 +Validate=FEFE10E007A0FD.FEFEE010FBFD + +[pmVfoSwap] +Command=FEFE10E0.07B0.FD +ReplyLength=13 +Validate=FEFE10E007B0FD.FEFEE010FBFD + +[pmVfoAA] +;not supported + +[pmVfoAB] +;not supported + +[pmVfoBA] +;not supported + +[pmVfoBB] +;not supported + +[pmRitOn] +;not supported + +[pmRitOff] +;not supported + +[pmXitOn] +;not supported + +[pmXitOff] +;not supported + +[pmRx] +;not supported + +[pmTx] +;not supported + + + + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +Command=FEFE10E0.06.03.FD +ReplyLength=13 +Validate=FEFE10E00603FD.FEFEE010FBFD + +[pmCW_L] +;not supported + +[pmSSB_U] +Command=FEFE10E0.06.01.FD +ReplyLength=13 +Validate=FEFE10E00601FD.FEFEE010FBFD + +[pmSSB_L] +Command=FEFE10E0.06.00.FD +ReplyLength=13 +Validate=FEFE10E00600FD.FEFEE010FBFD + +[pmDIG_U] +;not supported + +[pmDIG_L] +Command=FEFE10E0.06.04.FD +ReplyLength=13 +Validate=FEFE10E00608FD.FEFEE010FBFD + +[pmAM] +Command=FEFE10E0.06.02.FD +ReplyLength=13 +Validate=FEFE10E00602FD.FEFEE010FBFD + +[pmFM] +Command=FEFE10E0.06.05.FD +ReplyLength=13 +Validate=FEFE10E00605FD.FEFEE010FBFD + + + + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +[STATUS1] +Command=FEFE10E0.03.FD +ReplyLength=17 +Validate=FFFFFFFFFFFF.FFFFFFFF.FF.0000000000.FF|FEFE10E003FD.FEFEE010.03.0000000000.FD +Value1=11|5|vfBcdLU|1|0|pmFreq + +[STATUS2] +Command=FEFE10E0.04.FD +ReplyLength=14 +Validate=FFFFFFFFFFFF.FFFFFFFF.FF.0000.FF|FEFE10E004FD.FEFEE04E.04.0000.FD +Flag1=000000000000.0000000000.FF.0000|000000000000.0000000000.03.0000|pmCW_U +Flag3=000000000000.0000000000.FF.0000|000000000000.0000000000.01.0000|pmSSB_U +Flag4=000000000000.0000000000.FF.0000|000000000000.0000000000.00.0000|pmSSB_L +Flag5=000000000000.0000000000.FF.0000|000000000000.0000000000.04.0000|pmDIG_U +Flag7=000000000000.0000000000.FF.0000|000000000000.0000000000.02.0000|pmAM +Flag8=000000000000.0000000000.FF.0000|000000000000.0000000000.05.0000|pmFM +Flag9=000000000000.0000000000.FF.0000|000000000000.0000000000.06.0000|pmFM diff --git a/CATCheck/Rigs/IC-7000.ini b/CATCheck/Rigs/IC-7000.ini new file mode 100644 index 0000000..c085608 --- /dev/null +++ b/CATCheck/Rigs/IC-7000.ini @@ -0,0 +1,148 @@ +;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< +; +; Icom IC-7000 Omni-Rig commands +; +; File created by: Elijah Figueroa, KC0RDG kc0rdg@gmail.com +; +;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + +;-------------------------------------------------------------------------- +; Initialize the radio +;-------------------------------------------------------------------------- + +; Need to disable CI-V Transceive Mode, see page 136 of +; the IC-7000 PDF manual to do this in the radio +; http://www.icomamerica.com/support/manuals/IC-7000_Manual_Eng.pdf +[INIT1] +Command=FEFE70E0.1A050092.00.FD +ReplyLength=16 +Validate=FEFE70E01A05009200FD.FEFEE070FBFD + + +;-------------------------------------------------------------------------- +; Set frequency +;-------------------------------------------------------------------------- + +; Set operating frequency +[pmFreq] +Command=FEFE70E0.05.0000000000.FD +Value=5|5|vfBcdLU|1|0 +ReplyLength=17 +Validate=FEFE70E0050000000000FD.FEFEE070FBFD + + +;-------------------------------------------------------------------------- +; Set Split, Rx & Tx +;-------------------------------------------------------------------------- + +; Turn Split function on +[pmSplitOn] +Command=FEFE70E0.0F01.FD +ReplyLength=13 +Validate=FEFE70E00F01FD.FEFEE070FBFD + +; Turn Split function off +[pmSplitOff] +Command=FEFE70E0.0F00.FD +ReplyLength=13 +Validate=FEFE70E00F00FD.FEFEE070FBFD + +; Enable receive mode +[pmRx] +Command=FEFE70E0.1C00.00.FD +ReplyLength=14 +Validate=FEFE70E01C0000FD.FEFEE070FBFD + +; Enable transmit mode +[pmTx] +Command=FEFE70E0.1C00.01.FD +ReplyLength=14 +Validate=FEFE70E01C0001FD.FEFEE070FBFD + + +;-------------------------------------------------------------------------- +; Set modes of the radio +;-------------------------------------------------------------------------- + +; Upper sideband CW +[pmCW_U] +Command=FEFE70E0.06.07.FD +ReplyLength=13 +Validate=FEFE70E00607FD.FEFEE070FBFD + +; Lower sideband CW +[pmCW_L] +Command=FEFE70E0.06.03.FD +ReplyLength=13 +Validate=FEFE70E00603FD.FEFEE070FBFD + +; USB +[pmSSB_U] +Command=FEFE70E0.06.01.FD +ReplyLength=13 +Validate=FEFE70E00601FD.FEFEE070FBFD + +; LSB +[pmSSB_L] +Command=FEFE70E0.06.00.FD +ReplyLength=13 +Validate=FEFE70E00600FD.FEFEE070FBFD + +; Upper sideband digital modes +[pmDIG_U] +Command=FEFE70E0.06.08.FD +ReplyLength=13 +Validate=FEFE70E00608FD.FEFEE070FBFD + +; Lower sideband digital modes +[pmDIG_L] +Command=FEFE70E0.06.04.FD +ReplyLength=13 +Validate=FEFE70E00604FD.FEFEE070FBFD + +; AM +[pmAM] +Command=FEFE70E0.06.02.FD +ReplyLength=13 +Validate=FEFE70E00602FD.FEFEE070FBFD + +; FM +[pmFM] +Command=FEFE70E0.06.05.FD +ReplyLength=13 +Validate=FEFE70E00605FD.FEFEE070FBFD + + +;------------------------------------------------------------------------ +; Read the status of the radio +;------------------------------------------------------------------------ + +; Read the current frequency +[STATUS1] +Command=FEFE70E0.03.FD +ReplyLength=17 +Validate=FEFE70E003FD.FEFEE070.03.0000000000.FD +Value1=11|5|vfBcdLU|1|0|pmFreq + +; Read the current operating mode +[STATUS2] +Command=FEFE70E0.04.FD +ReplyLength=14 +Validate=FEFE70E004FD.FEFEE070.04.0000.FD +Flag1=000000000000.0000000000.FF.0000|000000000000.0000000000.07.0000|pmCW_U +Flag2=000000000000.0000000000.FF.0000|000000000000.0000000000.03.0000|pmCW_L +Flag3=000000000000.0000000000.FF.0000|000000000000.0000000000.01.0000|pmSSB_U +Flag4=000000000000.0000000000.FF.0000|000000000000.0000000000.00.0000|pmSSB_L +Flag5=000000000000.0000000000.FF.0000|000000000000.0000000000.08.0000|pmDIG_U +Flag6=000000000000.0000000000.FF.0000|000000000000.0000000000.04.0000|pmDIG_L +Flag7=000000000000.0000000000.FF.0000|000000000000.0000000000.02.0000|pmAM +Flag8=000000000000.0000000000.FF.0000|000000000000.0000000000.05.0000|pmFM + +; Are we in Rx or Tx? +[STATUS3] +Command=FEFE70E0.1C00.FD +ReplyLength=15 +Validate=FEFE70E01C00FD.FEFEE070.1C00.00.FD +Flag1=00000000000000.00000000.0000.01.00|pmTx +Flag2=00000000000000.00000000.0000.FF.00|00000000000000.00000000.0000.00.00|pmRx + diff --git a/CATCheck/Rigs/IC-7000v2.ini b/CATCheck/Rigs/IC-7000v2.ini new file mode 100644 index 0000000..442cf20 --- /dev/null +++ b/CATCheck/Rigs/IC-7000v2.ini @@ -0,0 +1,204 @@ +;------------------------------------------------------------------------------- +; Icom IC-7000 version 2 +; +; IC-7000v2 File created by Bob Wilson, N6TV, n6tv@arrl.net +; +; Tested by: N6TV @ KE1B +;------------------------------------------------------------------------------- + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT1] +;Turn CI-V transceive OFF +Command=FEFE70E0.1A050092.00.FD +ReplyLength=16 +Validate=FEFE70E01A05009200FD.FEFEE070FBFD + +[INIT2] +;set CW normal to lower sideband +Command=FEFE70E0.1A050079.00.FD +ReplyLength=16 +Validate=FEFE70E01A05007900FD.FEFEE070FBFD + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreqA] +;not supported + +[pmFreqB] +;not supported + +[pmFreq] +Command=FEFE70E0.05.0000000000.FD +Value=5|5|vfBcdLU|1|0 +ReplyLength=17 +Validate=FEFE70E0050000000000FD.FEFEE070FBFD + +[pmRitOffset] +;not supported + +[pmRit0] +;not supported + +[pmPitch] +;test the 0.425|-127.5 params. should map 300Hz->0, 900Hz->255 +Command=FEFE70E0.14.09.0000.FD +Value=6|2|vfBcdBU|0.425|-127.5 +ReplyLength=15 +Validate=FEFE70E014090000FD.FEFEE070FBFD + + + + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +Command=FEFE70E0.0F01.FD +ReplyLength=13 +Validate=FEFE70E00F01FD.FEFEE070FBFD + +[pmSplitOff] +Command=FEFE70E0.0F00.FD +ReplyLength=13 +Validate=FEFE70E00F00FD.FEFEE070FBFD + +[pmVfoA] +Command=FEFE70E0.0700.FD +ReplyLength=13 +Validate=FEFE70E00700FD.FEFEE070FBFD + +[pmVfoB] +Command=FEFE70E0.0701.FD +ReplyLength=13 +Validate=FEFE70E00701FD.FEFEE070FBFD + +[pmVfoEqual] +Command=FEFE70E0.07A0.FD +ReplyLength=13 +Validate=FEFE70E007A0FD.FEFEE070FBFD + +[pmVfoSwap] +Command=FEFE70E0.07B0.FD +ReplyLength=13 +Validate=FEFE70E007B0FD.FEFEE070FBFD + +[pmVfoAA] +Command=FEFE70E0.0700.FD.FEFE70E0.0F00.FD +ReplyLength=20 +Validate=FEFE70E00700FD.FEFE70E00F00FD.FEFEE070FBFD + +[pmVfoAB] +Command=FEFE70E0.0700.FD.FEFE70E0.0F01.FD +ReplyLength=20 +Validate=FEFE70E00700FD.FEFE70E00F01FD.FEFEE070FBFD + +[pmVfoBA] +Command=FEFE70E0.0701.FD.FEFE70E0.0F01.FD +ReplyLength=20 +Validate=FEFE70E00701FD.FEFE70E00F01FD.FEFEE070FBFD + +[pmVfoBB] +Command=FEFE70E0.0701.FD.FEFE70E0.0F00.FD +ReplyLength=20 +Validate=FEFE70E00701FD.FEFE70E00F00FD.FEFEE070FBFD + +[pmRx] +Command=FEFE70E0.1C00.00.FD +ReplyLength=14 +Validate=FEFE70E01C0000FD.FEFEE070FBFD + +[pmTx] +Command=FEFE70E0.1C00.01.FD +ReplyLength=14 +Validate=FEFE70E01C0001FD.FEFEE070FBFD + + + + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +; CW-R +Command=FEFE70E0.06.07.FD +ReplyLength=13 +Validate=FEFE70E00607FD.FEFEE070FBFD + +[pmCW_L] +; CW Normal +Command=FEFE70E0.06.03.FD +ReplyLength=13 +Validate=FEFE70E00603FD.FEFEE070FBFD + +[pmSSB_U] +Command=FEFE70E0.06.01.FD +ReplyLength=13 +Validate=FEFE70E00601FD.FEFEE070FBFD + +[pmSSB_L] +Command=FEFE70E0.06.00.FD +ReplyLength=13 +Validate=FEFE70E00600FD.FEFEE070FBFD + +[pmDIG_U] +Command=FEFE70E0.06.08.FD +ReplyLength=13 +Validate=FEFE70E00608FD.FEFEE070FBFD + +[pmDIG_L] +Command=FEFE70E0.06.04.FD +ReplyLength=13 +Validate=FEFE70E00604FD.FEFEE070FBFD + +[pmAM] +Command=FEFE70E0.06.02.FD +ReplyLength=13 +Validate=FEFE70E00602FD.FEFEE070FBFD + +[pmFM] +Command=FEFE70E0.06.05.FD +ReplyLength=13 +Validate=FEFE70E00605FD.FEFEE070FBFD + + + + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +[STATUS1] +Command=FEFE70E0.03.FD +ReplyLength=17 +Validate=FEFE70E003FD.FEFEE070.03.0000000000.FD +Value1=11|5|vfBcdLU|1|0|pmFreq + +[STATUS2] +Command=FEFE70E0.04.FD +ReplyLength=14 +Validate=FEFE70E004FD.FEFEE070.04.0000.FD +Flag1=000000000000.0000000000.FF.0000|000000000000.0000000000.07.0000|pmCW_U +Flag2=000000000000.0000000000.FF.0000|000000000000.0000000000.03.0000|pmCW_L +Flag3=000000000000.0000000000.FF.0000|000000000000.0000000000.01.0000|pmSSB_U +Flag4=000000000000.0000000000.FF.0000|000000000000.0000000000.00.0000|pmSSB_L +Flag5=000000000000.0000000000.FF.0000|000000000000.0000000000.08.0000|pmDIG_U +Flag6=000000000000.0000000000.FF.0000|000000000000.0000000000.04.0000|pmDIG_L +Flag7=000000000000.0000000000.FF.0000|000000000000.0000000000.02.0000|pmAM +Flag8=000000000000.0000000000.FF.0000|000000000000.0000000000.05.0000|pmFM + +[STATUS3] +Command=FEFE70E0.1409.FD +ReplyLength=16 +Validate=FEFE70E01409FD.FEFEE070.1409.0000.FD +; 0=300 Hz, 255=900 Hz +Value1=13|2|vfBcdBU|2.362205|300|pmPitch + +[STATUS4] +Command=FEFE70E0.1C00.FD +ReplyLength=15 +Validate=FEFE70E01C00FD.FEFEE070.1C00.00.FD +Flag1=00000000000000.00000000.0000.01.00|pmTx +Flag2=00000000000000.00000000.0000.0F.00|00000000000000.00000000.0000.00.00|pmRx diff --git a/CATCheck/Rigs/IC-703.ini b/CATCheck/Rigs/IC-703.ini new file mode 100644 index 0000000..625798c --- /dev/null +++ b/CATCheck/Rigs/IC-703.ini @@ -0,0 +1,178 @@ +;------------------------------------------------------------------------------- +; Icom IC-703 command set +; +; File created by Alex, G7KSE +; +; Tested by: _________ +;------------------------------------------------------------------------------- + + + + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- + +;none + + + + + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreqA] +;not supported + +[pmFreqB] +;not supported + +[pmFreq] +Command=FEFE68E0.05.0000000000.FD +Value=5|5|vfBcdLU|1|0 +ReplyLength=17 +Validate=FEFE68E0050000000000FD.FEFEE068FBFD + +[pmRitOffset] +;not supported + + +[pmRit0] +;not supported + +[pmPitch] +;not supported + + + + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +Command=FEFE68E0.0F01.FD +ReplyLength=13 +Validate=FEFE68E00F01FD.FEFEE068FBFD + +[pmSplitOff] +Command=FEFE68E0.0F00.FD +ReplyLength=13 +Validate=FEFE68E00F00FD.FEFEE068FBFD + +[pmVfoA] +Command=FEFE68E0.0700.FD +ReplyLength=13 +Validate=FEFE68E00700FD.FEFEE068FBFD + +[pmVfoB] +Command=FEFE68E0.0701.FD +ReplyLength=13 +Validate=FEFE68E00701FD.FEFEE068FBFD + +[pmVfoEqual] +Command=FEFE68E0.07A0.FD +ReplyLength=13 +Validate=FEFE68E007A0FD.FEFEE068FBFD + +[pmVfoSwap] +Command=FEFE68E0.07B0.FD +ReplyLength=13 +Validate=FEFE68E007B0FD.FEFEE068FBFD + +[pmVfoAA] +;not supported + +[pmVfoAB] +;not supported + +[pmVfoBA] +;not supported + +[pmVfoBB] +;not supported + +[pmRitOn] +;not supported + +[pmRitOff] +;not supported + +[pmXitOn] +;not supported + +[pmXitOff] +;not supported + +[pmRx] +;not supported + +[pmTx] +;not supported + + + + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +Command=FEFE68E0.06.03.FD +ReplyLength=13 +Validate=FEFE68E00603FD.FEFEE068FBFD + +[pmCW_L] +;not supported + +[pmSSB_U] +Command=FEFE68E0.06.01.FD +ReplyLength=13 +Validate=FEFE68E00601FD.FEFEE068FBFD + +[pmSSB_L] +Command=FEFE68E0.06.00.FD +ReplyLength=13 +Validate=FEFE68E00600FD.FEFEE068FBFD + +[pmDIG_U] +;not supported + +[pmDIG_L] +Command=FEFE68E0.06.04.FD +ReplyLength=13 +Validate=FEFE68E00608FD.FEFEE068FBFD + +[pmAM] +Command=FEFE68E0.06.02.FD +ReplyLength=13 +Validate=FEFE68E00602FD.FEFEE068FBFD + +[pmFM] +Command=FEFE68E0.06.05.FD +ReplyLength=13 +Validate=FEFE68E00605FD.FEFEE068FBFD + + + + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +[STATUS1] +Command=FEFE68E0.03.FD +ReplyLength=17 +Validate=FFFFFFFFFFFF.FFFFFFFF.FF.0000000000.FF|FEFE68E003FD.FEFEE068.03.0000000000.FD +Value1=11|5|vfBcdLU|1|0|pmFreq + +[STATUS2] +Command=FEFE68E0.04.FD +ReplyLength=14 +Validate=FFFFFFFFFFFF.FFFFFFFF.FF.0000.FF|FEFE68E004FD.FEFEE068.04.0000.FD +Flag1=000000000000.0000000000.FF.0000|000000000000.0000000000.03.0000|pmCW_U +Flag3=000000000000.0000000000.FF.0000|000000000000.0000000000.01.0000|pmSSB_U +Flag4=000000000000.0000000000.FF.0000|000000000000.0000000000.00.0000|pmSSB_L +Flag5=000000000000.0000000000.FF.0000|000000000000.0000000000.04.0000|pmDIG_U +Flag7=000000000000.0000000000.FF.0000|000000000000.0000000000.02.0000|pmAM +Flag8=000000000000.0000000000.FF.0000|000000000000.0000000000.05.0000|pmFM +Flag9=000000000000.0000000000.FF.0000|000000000000.0000000000.06.0000|pmFM diff --git a/CATCheck/Rigs/IC-703a.ini b/CATCheck/Rigs/IC-703a.ini new file mode 100644 index 0000000..fed3e95 --- /dev/null +++ b/CATCheck/Rigs/IC-703a.ini @@ -0,0 +1,159 @@ +;------------------------------------------------------------------------------- +; Icom IC-703 command set +; +; by: Antoon Milatz (PA3BWE) +;------------------------------------------------------------------------------- + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +;none +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreqA] +;not supported + +[pmFreqB] +;not supported + +[pmFreq] +Command=FEFE68E0.05.0000000000.FD +Value=5|5|vfBcdLU|1|0 +ReplyLength=17 +Validate=FEFE68E0050000000000FD.FEFEE068FBFD + +[pmRitOffset] +;not supported + + +[pmRit0] +;not supported + +[pmPitch] +;not supported +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +Command=FEFE68E0.0F01.FD +ReplyLength=13 +Validate=FEFE68E00F01FD.FEFEE068FBFD + +[pmSplitOff] +Command=FEFE68E0.0F00.FD +ReplyLength=13 +Validate=FEFE68E00F00FD.FEFEE068FBFD + +[pmVfoA] +Command=FEFE68E0.0700.FD +ReplyLength=13 +Validate=FEFE68E00700FD.FEFEE068FBFD + +[pmVfoB] +Command=FEFE68E0.0701.FD +ReplyLength=13 +Validate=FEFE68E00701FD.FEFEE068FBFD + +[pmVfoEqual] +Command=FEFE68E0.07A0.FD +ReplyLength=13 +Validate=FEFE68E007A0FD.FEFEE068FBFD + +[pmVfoSwap] +Command=FEFE68E0.07B0.FD +ReplyLength=13 +Validate=FEFE68E007B0FD.FEFEE068FBFD + +[pmVfoAA] +;not supported + +[pmVfoAB] +;not supported + +[pmVfoBA] +;not supported + +[pmVfoBB] +;not supported + +[pmRitOn] +;not supported + +[pmRitOff] +;not supported + +[pmXitOn] +;not supported + +[pmXitOff] +;not supported + +[pmRx] +;not supported + +[pmTx] +;not supported + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +Command=FEFE68E0.06.03.FD +ReplyLength=13 +Validate=FEFE68E00603FD.FEFEE068FBFD + +[pmCW_L] +;not supported + +[pmSSB_U] +Command=FEFE68E0.06.01.FD +ReplyLength=13 +Validate=FEFE68E00601FD.FEFEE068FBFD + +[pmSSB_L] +Command=FEFE68E0.06.00.FD +ReplyLength=13 +Validate=FEFE68E00600FD.FEFEE068FBFD + +[pmDIG_U] +;not supported + +[pmDIG_L] +Command=FEFE68E0.06.04.FD +ReplyLength=13 +Validate=FEFE68E00608FD.FEFEE068FBFD + +[pmAM] +Command=FEFE68E0.06.02.FD +ReplyLength=13 +Validate=FEFE68E00602FD.FEFEE068FBFD + +[pmFM] +Command=FEFE68E0.06.05.FD +ReplyLength=13 +Validate=FEFE68E00605FD.FEFEE068FBFD + + + + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +[STATUS1] +Command=FEFE68E0.03.FD +ReplyLength=17 +Validate=FFFFFFFFFFFF.FFFFFFFF.FF.0000000000.FF|FEFE68E003FD.FEFEE068.03.0000000000.FD +Value1=11|5|vfBcdLU|1|0|pmFreq + +[STATUS2] +Command=FEFE68E0.04.FD +ReplyLength=14 +Validate=FFFFFFFFFFFF.FFFFFFFF.FF.0000.FF|FEFE68E004FD.FEFEE068.04.0000.FD +Flag1=000000000000.0000000000.FF.0000|000000000000.0000000000.03.0000|pmCW_U +Flag3=000000000000.0000000000.FF.0000|000000000000.0000000000.01.0000|pmSSB_U +Flag4=000000000000.0000000000.FF.0000|000000000000.0000000000.00.0000|pmSSB_L +Flag5=000000000000.0000000000.FF.0000|000000000000.0000000000.04.0000|pmDIG_U +Flag7=000000000000.0000000000.FF.0000|000000000000.0000000000.02.0000|pmAM +Flag8=000000000000.0000000000.FF.0000|000000000000.0000000000.05.0000|pmFM +Flag9=000000000000.0000000000.FF.0000|000000000000.0000000000.06.0000|pmFM \ No newline at end of file diff --git a/CATCheck/Rigs/IC-706 MKII.ini b/CATCheck/Rigs/IC-706 MKII.ini new file mode 100644 index 0000000..78c4434 --- /dev/null +++ b/CATCheck/Rigs/IC-706 MKII.ini @@ -0,0 +1,178 @@ +;------------------------------------------------------------------------------- +; Icom IC-706 MKII command set +; +; File created by Alex Shovkoplyas, VE3NEA ve3nea@dxatlas.com +; +; Tested by: _________ +;------------------------------------------------------------------------------- + + + + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- + +;none + + + + + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreqA] +;not supported + +[pmFreqB] +;not supported + +[pmFreq] +Command=FEFE4EE0.05.0000000000.FD +Value=5|5|vfBcdLU|1|0 +ReplyLength=17 +Validate=FEFE4EE0050000000000FD.FEFEE04EFBFD + +[pmRitOffset] +;not supported + + +[pmRit0] +;not supported + +[pmPitch] +;not supported + + + + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +Command=FEFE4EE0.0F01.FD +ReplyLength=13 +Validate=FEFE4EE00F01FD.FEFEE04EFBFD + +[pmSplitOff] +Command=FEFE4EE0.0F00.FD +ReplyLength=13 +Validate=FEFE4EE00F00FD.FEFEE04EFBFD + +[pmVfoA] +Command=FEFE4EE0.0700.FD +ReplyLength=13 +Validate=FEFE4EE00700FD.FEFEE04EFBFD + +[pmVfoB] +Command=FEFE4EE0.0701.FD +ReplyLength=13 +Validate=FEFE4EE00701FD.FEFEE04EFBFD + +[pmVfoEqual] +Command=FEFE4EE0.07A0.FD +ReplyLength=13 +Validate=FEFE4EE007A0FD.FEFEE04EFBFD + +[pmVfoSwap] +Command=FEFE4EE0.07B0.FD +ReplyLength=13 +Validate=FEFE4EE007B0FD.FEFEE04EFBFD + +[pmVfoAA] +;not supported + +[pmVfoAB] +;not supported + +[pmVfoBA] +;not supported + +[pmVfoBB] +;not supported + +[pmRitOn] +;not supported + +[pmRitOff] +;not supported + +[pmXitOn] +;not supported + +[pmXitOff] +;not supported + +[pmRx] +;not supported + +[pmTx] +;not supported + + + + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +Command=FEFE4EE0.06.03.FD +ReplyLength=13 +Validate=FEFE4EE00603FD.FEFEE04EFBFD + +[pmCW_L] +;not supported + +[pmSSB_U] +Command=FEFE4EE0.06.01.FD +ReplyLength=13 +Validate=FEFE4EE00601FD.FEFEE04EFBFD + +[pmSSB_L] +Command=FEFE4EE0.06.00.FD +ReplyLength=13 +Validate=FEFE4EE00600FD.FEFEE04EFBFD + +[pmDIG_U] +;not supported + +[pmDIG_L] +Command=FEFE4EE0.06.04.FD +ReplyLength=13 +Validate=FEFE4EE00608FD.FEFEE04EFBFD + +[pmAM] +Command=FEFE4EE0.06.02.FD +ReplyLength=13 +Validate=FEFE4EE00602FD.FEFEE04EFBFD + +[pmFM] +Command=FEFE4EE0.06.05.FD +ReplyLength=13 +Validate=FEFE4EE00605FD.FEFEE04EFBFD + + + + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +[STATUS1] +Command=FEFE4EE0.03.FD +ReplyLength=17 +Validate=FFFFFFFFFFFF.FFFFFFFF.FF.0000000000.FF|FEFE4EE003FD.FEFEE04E.03.0000000000.FD +Value1=11|5|vfBcdLU|1|0|pmFreq + +[STATUS2] +Command=FEFE4EE0.04.FD +ReplyLength=14 +Validate=FFFFFFFFFFFF.FFFFFFFF.FF.0000.FF|FEFE4EE004FD.FEFEE04E.04.0000.FD +Flag1=000000000000.0000000000.FF.0000|000000000000.0000000000.03.0000|pmCW_U +Flag3=000000000000.0000000000.FF.0000|000000000000.0000000000.01.0000|pmSSB_U +Flag4=000000000000.0000000000.FF.0000|000000000000.0000000000.00.0000|pmSSB_L +Flag5=000000000000.0000000000.FF.0000|000000000000.0000000000.04.0000|pmDIG_U +Flag7=000000000000.0000000000.FF.0000|000000000000.0000000000.02.0000|pmAM +Flag8=000000000000.0000000000.FF.0000|000000000000.0000000000.05.0000|pmFM +Flag9=000000000000.0000000000.FF.0000|000000000000.0000000000.06.0000|pmFM diff --git a/CATCheck/Rigs/IC-706 MKIIG.ini b/CATCheck/Rigs/IC-706 MKIIG.ini new file mode 100644 index 0000000..7877af5 --- /dev/null +++ b/CATCheck/Rigs/IC-706 MKIIG.ini @@ -0,0 +1,178 @@ +;------------------------------------------------------------------------------- +; Icom IC-706 MKIIG command set +; +; File created by Alex Shovkoplyas, VE3NEA ve3nea@dxatlas.com +; +; Tested by: _________ +;------------------------------------------------------------------------------- + + + + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- + +;none + + + + + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreqA] +;not supported + +[pmFreqB] +;not supported + +[pmFreq] +Command=FEFE58E0.05.0000000000.FD +Value=5|5|vfBcdLU|1|0 +ReplyLength=17 +Validate=FEFE58E0050000000000FD.FEFEE058FBFD + +[pmRitOffset] +;not supported + + +[pmRit0] +;not supported + +[pmPitch] +;not supported + + + + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +Command=FEFE58E0.0F01.FD +ReplyLength=13 +Validate=FEFE58E00F01FD.FEFEE058FBFD + +[pmSplitOff] +Command=FEFE58E0.0F00.FD +ReplyLength=13 +Validate=FEFE58E00F00FD.FEFEE058FBFD + +[pmVfoA] +Command=FEFE58E0.0700.FD +ReplyLength=13 +Validate=FEFE58E00700FD.FEFEE058FBFD + +[pmVfoB] +Command=FEFE58E0.0701.FD +ReplyLength=13 +Validate=FEFE58E00701FD.FEFEE058FBFD + +[pmVfoEqual] +Command=FEFE58E0.07A0.FD +ReplyLength=13 +Validate=FEFE58E007A0FD.FEFEE058FBFD + +[pmVfoSwap] +Command=FEFE58E0.07B0.FD +ReplyLength=13 +Validate=FEFE58E007B0FD.FEFEE058FBFD + +[pmVfoAA] +;not supported + +[pmVfoAB] +;not supported + +[pmVfoBA] +;not supported + +[pmVfoBB] +;not supported + +[pmRitOn] +;not supported + +[pmRitOff] +;not supported + +[pmXitOn] +;not supported + +[pmXitOff] +;not supported + +[pmRx] +;not supported + +[pmTx] +;not supported + + + + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +Command=FEFE58E0.06.03.FD +ReplyLength=13 +Validate=FEFE58E00603FD.FEFEE058FBFD + +[pmCW_L] +;not supported + +[pmSSB_U] +Command=FEFE58E0.06.01.FD +ReplyLength=13 +Validate=FEFE58E00601FD.FEFEE058FBFD + +[pmSSB_L] +Command=FEFE58E0.06.00.FD +ReplyLength=13 +Validate=FEFE58E00600FD.FEFEE058FBFD + +[pmDIG_U] +;not supported + +[pmDIG_L] +Command=FEFE58E0.06.04.FD +ReplyLength=13 +Validate=FEFE58E00608FD.FEFEE058FBFD + +[pmAM] +Command=FEFE58E0.06.02.FD +ReplyLength=13 +Validate=FEFE58E00602FD.FEFEE058FBFD + +[pmFM] +Command=FEFE58E0.06.05.FD +ReplyLength=13 +Validate=FEFE58E00605FD.FEFEE058FBFD + + + + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +[STATUS1] +Command=FEFE58E0.03.FD +ReplyLength=17 +Validate=FFFFFFFFFFFF.FFFFFFFF.FF.0000000000.FF|FEFE58E003FD.FEFEE058.03.0000000000.FD +Value1=11|5|vfBcdLU|1|0|pmFreq + +[STATUS2] +Command=FEFE58E0.04.FD +ReplyLength=14 +Validate=FFFFFFFFFFFF.FFFFFFFF.FF.0000.FF|FEFE58E004FD.FEFEE058.04.0000.FD +Flag1=000000000000.0000000000.FF.0000|000000000000.0000000000.03.0000|pmCW_U +Flag3=000000000000.0000000000.FF.0000|000000000000.0000000000.01.0000|pmSSB_U +Flag4=000000000000.0000000000.FF.0000|000000000000.0000000000.00.0000|pmSSB_L +Flag5=000000000000.0000000000.FF.0000|000000000000.0000000000.04.0000|pmDIG_U +Flag7=000000000000.0000000000.FF.0000|000000000000.0000000000.02.0000|pmAM +Flag8=000000000000.0000000000.FF.0000|000000000000.0000000000.05.0000|pmFM +Flag9=000000000000.0000000000.FF.0000|000000000000.0000000000.06.0000|pmFM diff --git a/CATCheck/Rigs/IC-706.ini b/CATCheck/Rigs/IC-706.ini new file mode 100644 index 0000000..4a0efa5 --- /dev/null +++ b/CATCheck/Rigs/IC-706.ini @@ -0,0 +1,178 @@ +;------------------------------------------------------------------------------- +; Icom IC-706Mk I command set +; +; File created by +; +; Tested by: Marios 5B4WN +;------------------------------------------------------------------------------- + + + + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- + +;none + + + + + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreqA] +;not supported + +[pmFreqB] +;not supported + +[pmFreq] +Command=FEFE48E0.05.0000000000.FD +Value=5|5|vfBcdLU|1|0 +ReplyLength=17 +Validate=FEFE48E0050000000000FD.FEFEE048FBFD + +[pmRitOffset] +;not supported + + +[pmRit0] +;not supported + +[pmPitch] +;not supported + + + + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +Command=FEFE48E0.0F01.FD +ReplyLength=13 +Validate=FEFE48E00F01FD.FEFEE048FBFD + +[pmSplitOff] +Command=FEFE48E0.0F00.FD +ReplyLength=13 +Validate=FEFE48E00F00FD.FEFEE048FBFD + +[pmVfoA] +Command=FEFE48E0.0700.FD +ReplyLength=13 +Validate=FEFE48E00700FD.FEFEE048FBFD + +[pmVfoB] +Command=FEFE48E0.0701.FD +ReplyLength=13 +Validate=FEFE48E00701FD.FEFEE048FBFD + +[pmVfoEqual] +Command=FEFE48E0.07A0.FD +ReplyLength=13 +Validate=FEFE48E007A0FD.FEFEE048FBFD + +[pmVfoSwap] +Command=FEFE48E0.07B0.FD +ReplyLength=13 +Validate=FEFE48E007B0FD.FEFEE048FBFD + +[pmVfoAA] +;not supported + +[pmVfoAB] +;not supported + +[pmVfoBA] +;not supported + +[pmVfoBB] +;not supported + +[pmRitOn] +;not supported + +[pmRitOff] +;not supported + +[pmXitOn] +;not supported + +[pmXitOff] +;not supported + +[pmRx] +;not supported + +[pmTx] +;not supported + + + + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +Command=FEFE48E0.06.03.FD +ReplyLength=13 +Validate=FEFE48E00603FD.FEFEE048FBFD + +[pmCW_L] +;not supported + +[pmSSB_U] +Command=FEFE48E0.06.01.FD +ReplyLength=13 +Validate=FEFE48E00601FD.FEFEE048FBFD + +[pmSSB_L] +Command=FEFE48E0.06.00.FD +ReplyLength=13 +Validate=FEFE48E00600FD.FEFEE048FBFD + +[pmDIG_U] +;not supported + +[pmDIG_L] +Command=FEFE48E0.06.04.FD +ReplyLength=13 +Validate=FEFE48E00608FD.FEFEE048FBFD + +[pmAM] +Command=FEFE48E0.06.02.FD +ReplyLength=13 +Validate=FEFE48E00602FD.FEFEE048FBFD + +[pmFM] +Command=FEFE48E0.06.05.FD +ReplyLength=13 +Validate=FEFE48E00605FD.FEFEE048FBFD + + + + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +[STATUS1] +Command=FEFE48E0.03.FD +ReplyLength=17 +Validate=FFFFFFFFFFFF.FFFFFFFF.FF.0000000000.FF|FEFE48E003FD.FEFEE048.03.0000000000.FD +Value1=11|5|vfBcdLU|1|0|pmFreq + +[STATUS2] +Command=FEFE48E0.04.FD +ReplyLength=14 +Validate=FFFFFFFFFFFF.FFFFFFFF.FF.0000.FF|FEFE48E004FD.FEFEE048.04.0000.FD +Flag1=000000000000.0000000000.FF.0000|000000000000.0000000000.03.0000|pmCW_U +Flag3=000000000000.0000000000.FF.0000|000000000000.0000000000.01.0000|pmSSB_U +Flag4=000000000000.0000000000.FF.0000|000000000000.0000000000.00.0000|pmSSB_L +Flag5=000000000000.0000000000.FF.0000|000000000000.0000000000.04.0000|pmDIG_U +Flag7=000000000000.0000000000.FF.0000|000000000000.0000000000.02.0000|pmAM +Flag8=000000000000.0000000000.FF.0000|000000000000.0000000000.05.0000|pmFM +Flag9=000000000000.0000000000.FF.0000|000000000000.0000000000.06.0000|pmFM diff --git a/CATCheck/Rigs/IC-7100.ini b/CATCheck/Rigs/IC-7100.ini new file mode 100644 index 0000000..8a4a40c --- /dev/null +++ b/CATCheck/Rigs/IC-7100.ini @@ -0,0 +1,212 @@ +;------------------------------------------------------------------------------- +; Icom IC-7100 +; +; IC-7100 File created by Bob Wilson, N6TV, n6tv@arrl.net +; +; Tested by: ____________ +;------------------------------------------------------------------------------- + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT1] +;Turn CI-V transceive OFF +Command=FEFE88E0.1A050095.00.FD +ReplyLength=16 +Validate=FEFE88E01A05009500FD.FEFEE088FBFD + +[INIT2] +;set CW normal to lower sideband +Command=FEFE88E0.1A050032.00.FD +ReplyLength=16 +Validate=FEFE88E01A05003200FD.FEFEE088FBFD + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreqA] +;not supported + +[pmFreqB] +;not supported + +[pmFreq] +Command=FEFE88E0.05.0000000000.FD +Value=5|5|vfBcdLU|1|0 +ReplyLength=17 +Validate=FEFE88E0050000000000FD.FEFEE088FBFD + +[pmRitOffset] +;not supported + +[pmRit0] +;not supported + +[pmPitch] +;test the 0.425|-127.5 params. should map 300Hz->0, 900Hz->255 +Command=FEFE88E0.14.09.0000.FD +Value=6|2|vfBcdBU|0.425|-127.5 +ReplyLength=15 +Validate=FEFE88E014090000FD.FEFEE088FBFD + + + + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +Command=FEFE88E0.0F01.FD +ReplyLength=13 +Validate=FEFE88E00F01FD.FEFEE088FBFD + +[pmSplitOff] +Command=FEFE88E0.0F00.FD +ReplyLength=13 +Validate=FEFE88E00F00FD.FEFEE088FBFD + +[pmVfoA] +Command=FEFE88E0.0700.FD +ReplyLength=13 +Validate=FEFE88E00700FD.FEFEE088FBFD + +[pmVfoB] +Command=FEFE88E0.0701.FD +ReplyLength=13 +Validate=FEFE88E00701FD.FEFEE088FBFD + +[pmVfoEqual] +Command=FEFE88E0.07A0.FD +ReplyLength=13 +Validate=FEFE88E007A0FD.FEFEE088FBFD + +[pmVfoSwap] +Command=FEFE88E0.07B0.FD +ReplyLength=13 +Validate=FEFE88E007B0FD.FEFEE088FBFD + +[pmVfoAA] +Command=FEFE88E0.0F00.FD +ReplyLength=13 +Validate=FEFE88E00F00FD.FEFEE088FBFD + +[pmVfoAB] +Command=FEFE88E0.0F01.FD +ReplyLength=13 +Validate=FEFE88E00F01FD.FEFEE088FBFD + +[pmVfoBA] +;not supported + +[pmVfoBB] +;not supported + +[pmRitOn] +;Not supported + +[pmRitOff] +;Not supported + +[pmXitOn] +;Not supported + +[pmXitOff] +;Not supported + +[pmRx] +Command=FEFE88E0.1C00.00.FD +ReplyLength=14 +Validate=FEFE88E01C0000FD.FEFEE088FBFD + +[pmTx] +Command=FEFE88E0.1C00.01.FD +ReplyLength=14 +Validate=FEFE88E01C0001FD.FEFEE088FBFD + + + + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +; CW-R +Command=FEFE88E0.06.07.FD +ReplyLength=13 +Validate=FEFE88E00607FD.FEFEE088FBFD + +[pmCW_L] +; CW Normal +Command=FEFE88E0.06.03.FD +ReplyLength=13 +Validate=FEFE88E00603FD.FEFEE088FBFD + +[pmSSB_U] +Command=FEFE88E0.06.01.FD +ReplyLength=13 +Validate=FEFE88E00601FD.FEFEE088FBFD + +[pmSSB_L] +Command=FEFE88E0.06.00.FD +ReplyLength=13 +Validate=FEFE88E00600FD.FEFEE088FBFD + +[pmDIG_U] +Command=FEFE88E0.06.08.FD +ReplyLength=13 +Validate=FEFE88E00608FD.FEFEE088FBFD + +[pmDIG_L] +Command=FEFE88E0.06.04.FD +ReplyLength=13 +Validate=FEFE88E00604FD.FEFEE088FBFD + +[pmAM] +Command=FEFE88E0.06.02.FD +ReplyLength=13 +Validate=FEFE88E00602FD.FEFEE088FBFD + +[pmFM] +Command=FEFE88E0.06.05.FD +ReplyLength=13 +Validate=FEFE88E00605FD.FEFEE088FBFD + + + + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +[STATUS1] +Command=FEFE88E0.03.FD +ReplyLength=17 +Validate=FEFE88E003FD.FEFEE088.03.0000000000.FD +Value1=11|5|vfBcdLU|1|0|pmFreq + +[STATUS2] +Command=FEFE88E0.04.FD +ReplyLength=14 +Validate=FEFE88E004FD.FEFEE088.04.0000.FD +Flag1=000000000000.0000000000.FF.0000|000000000000.0000000000.07.0000|pmCW_U +Flag2=000000000000.0000000000.FF.0000|000000000000.0000000000.03.0000|pmCW_L +Flag3=000000000000.0000000000.FF.0000|000000000000.0000000000.01.0000|pmSSB_U +Flag4=000000000000.0000000000.FF.0000|000000000000.0000000000.00.0000|pmSSB_L +Flag5=000000000000.0000000000.FF.0000|000000000000.0000000000.08.0000|pmDIG_U +Flag6=000000000000.0000000000.FF.0000|000000000000.0000000000.04.0000|pmDIG_L +Flag7=000000000000.0000000000.FF.0000|000000000000.0000000000.02.0000|pmAM +Flag8=000000000000.0000000000.FF.0000|000000000000.0000000000.05.0000|pmFM + +[STATUS3] +Command=FEFE88E0.1409.FD +ReplyLength=16 +Validate=FEFE88E01409FD.FEFEE088.1409.0000.FD +; 0=300 Hz, 255=900 Hz +Value1=13|2|vfBcdBU|2.362205|300|pmPitch + +[STATUS4] +Command=FEFE88E0.1C00.FD +ReplyLength=15 +Validate=FEFE88E01C00FD.FEFEE088.1C00.00.FD +Flag1=00000000000000.00000000.0000.01.00|pmTx +Flag2=00000000000000.00000000.0000.0F.00|00000000000000.00000000.0000.00.00|pmRx diff --git a/CATCheck/Rigs/IC-7100e4-DATA.ini b/CATCheck/Rigs/IC-7100e4-DATA.ini new file mode 100644 index 0000000..ba4bb4d --- /dev/null +++ b/CATCheck/Rigs/IC-7100e4-DATA.ini @@ -0,0 +1,263 @@ +;------------------------------------------------------------------------------- +; Icom IC-7100e4-DATA +; +; IC-7100e4-DATA File created by Bob Wilson, N6TV, n6tv@arrl.net +; +; Requires firmware E4 (v1.10) or later. +; +; Same as IC-7100e4.ini, but selects USB-D and LSB-D for DIG modes instead of RTTY and RTTY-R +; and selects FIL1 insteads of the default for USB, LSB, USB-D and LSB-D. +; +; Written by N6TV for G8CYK, 28 September 2018 21:33 UTC +;------------------------------------------------------------------------------- + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT1] +;Turn CI-V transceive OFF +Command=FEFE88E0.1A050095.00.FD +ReplyLength=16 +Validate=FEFE88E01A05009500FD.FEFEE088FBFD + +[INIT2] +;set CW normal to lower sideband +Command=FEFE88E0.1A050032.00.FD +ReplyLength=16 +Validate=FEFE88E01A05003200FD.FEFEE088FBFD + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreqA] +Command=FEFE88E0.25.00.0000000000.FD +Value=6|5|vfBcdLU|1|0 +ReplyLength=18 +Validate=FEFE88E025000000000000FD.FEFEE088FBFD + +[pmFreqB] +Command=FEFE88E0.25.01.0000000000.FD +Value=6|5|vfBcdLU|1|0 +ReplyLength=18 +Validate=FEFE88E025010000000000FD.FEFEE088FBFD + +[pmFreq] +; not supported + +[pmRitOffset] +;not supported + +[pmRit0] +Command=FEFE88E0.21.00000000.FD +ReplyLength=16 +Validate=FEFE88E02100000000FD.FEFEE088FBFD + +[pmPitch] +;test the 0.425|-127.5 params. should map 300Hz->0, 900Hz->255 +Command=FEFE88E0.14.09.0000.FD +Value=6|2|vfBcdBU|0.425|-127.5 +ReplyLength=15 +Validate=FEFE88E014090000FD.FEFEE088FBFD + + + + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +Command=FEFE88E0.0F01.FD +ReplyLength=13 +Validate=FEFE88E00F01FD.FEFEE088FBFD + +[pmSplitOff] +Command=FEFE88E0.0F00.FD +ReplyLength=13 +Validate=FEFE88E00F00FD.FEFEE088FBFD + +[pmVfoA] +Command=FEFE88E0.0700.FD +ReplyLength=13 +Validate=FEFE88E00700FD.FEFEE088FBFD + +[pmVfoB] +Command=FEFE88E0.0701.FD +ReplyLength=13 +Validate=FEFE88E00701FD.FEFEE088FBFD + +[pmVfoEqual] +Command=FEFE88E0.07A0.FD +ReplyLength=13 +Validate=FEFE88E007A0FD.FEFEE088FBFD + +[pmVfoSwap] +Command=FEFE88E0.07B0.FD +ReplyLength=13 +Validate=FEFE88E007B0FD.FEFEE088FBFD + +[pmVfoAA] +Command=FEFE88E0.0700.FD.FEFE88E0.0F00.FD +ReplyLength=20 +Validate=FEFE88E00700FD.FEFE88E00F00FD.FEFEE088FBFD + +[pmVfoAB] +Command=FEFE88E0.0700.FD.FEFE88E0.0F01.FD +ReplyLength=20 +Validate=FEFE88E00700FD.FEFE88E00F01FD.FEFEE088FBFD + +[pmVfoBA] +Command=FEFE88E0.0701.FD.FEFE88E0.0F01.FD +ReplyLength=20 +Validate=FEFE88E00701FD.FEFE88E00F01FD.FEFEE088FBFD + +[pmVfoBB] +Command=FEFE88E0.0701.FD.FEFE88E0.0F00.FD +ReplyLength=20 +Validate=FEFE88E00701FD.FEFE88E00F00FD.FEFEE088FBFD + +[pmRitOn] +Command=FEFE88E0.21.0101.FD +ReplyLength=14 +Validate=FEFE88E0210101FD.FEFEE088FBFD + +[pmRitOff] +Command=FEFE88E0.21.0100.FD +ReplyLength=14 +Validate=FEFE88E0210100FD.FEFEE088FBFD + +[pmXitOn] +;Not supported + +[pmXitOff] +;Not supported + +[pmRx] +Command=FEFE88E0.1C00.00.FD +ReplyLength=14 +Validate=FEFE88E01C0000FD.FEFEE088FBFD + +[pmTx] +Command=FEFE88E0.1C00.01.FD +ReplyLength=14 +Validate=FEFE88E01C0001FD.FEFEE088FBFD + + + + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +; CW-R +Command=FEFE88E0.2600.07.FD +ReplyLength=14 +Validate=FEFE88E0260007FD.FEFEE088FBFD + +[pmCW_L] +; CW Normal +Command=FEFE88E0.2600.03.FD +ReplyLength=14 +Validate=FEFE88E0260003FD.FEFEE088FBFD + +[pmSSB_U] +; These lines select USB with FIL1 +Command=FEFE88E0.2600.01.00.01.FD +ReplyLength=16 +Validate=FEFE88E02600010001FD.FEFEE088FBFD + +[pmSSB_L] +; These lines select LSB with FIL1 +Command=FEFE88E0.2600.00.00.01.FD +ReplyLength=16 +Validate=FEFE88E02600000001FD.FEFEE088FBFD + +[pmDIG_U] +; These lines select USB-D for USB digital mode, FIL1 +Command=FEFE88E0.2600.01.01.01.FD +ReplyLength=16 +Validate=FEFE88E02600010101FD.FEFEE088FBFD + +[pmDIG_L] +; These lines select LSB-D for LSB digital mode, FIL1 +Command=FEFE88E0.2600.00.01.01.FD +ReplyLength=16 +Validate=FEFE88E02600000101FD.FEFEE088FBFD + +[pmAM] +Command=FEFE88E0.2600.02.FD +ReplyLength=14 +Validate=FEFE88E0260002FD.FEFEE088FBFD + +[pmFM] +Command=FEFE88E0.2600.05.FD +ReplyLength=14 +Validate=FEFE88E0260005FD.FEFEE088FBFD + + + + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +[STATUS1] +Command=FEFE88E0.2500.FD +ReplyLength=19 +Validate=FEFE88E02500FD.FEFEE088.2500.0000000000.FD +Value1=13|5|vfBcdLU|1|0|pmFreqA + +[STATUS2] +Command=FEFE88E0.2501.FD +ReplyLength=19 +Validate=FEFE88E02501FD.FEFEE088.2501.0000000000.FD +Value1=13|5|vfBcdLU|1|0|pmFreqB + +[STATUS3] +Command=FEFE88E0.2600.FD +ReplyLength=17 +Validate=FEFE88E02600FD.FEFEE088.2600.000000.FD +Flag1=00000000000000.00000000.0000.FF0000.00|00000000000000.00000000.0000.030000.00|pmCW_L +Flag2=00000000000000.00000000.0000.FF0000.00|00000000000000.00000000.0000.070000.00|pmCW_U +Flag3=00000000000000.00000000.0000.FFFF00.00|00000000000000.00000000.0000.010000.00|pmSSB_U +Flag4=00000000000000.00000000.0000.FFFF00.00|00000000000000.00000000.0000.000000.00|pmSSB_L +Flag5=00000000000000.00000000.0000.FF0000.00|00000000000000.00000000.0000.080000.00|pmDIG_U +Flag6=00000000000000.00000000.0000.FF0000.00|00000000000000.00000000.0000.040000.00|pmDIG_L +Flag7=00000000000000.00000000.0000.FFFF00.00|00000000000000.00000000.0000.010100.00|pmDIG_U +Flag8=00000000000000.00000000.0000.FFFF00.00|00000000000000.00000000.0000.000100.00|pmDIG_L +Flag9=00000000000000.00000000.0000.FF0000.00|00000000000000.00000000.0000.020000.00|pmAM +Flag10=00000000000000.00000000.0000.FF0000.00|00000000000000.00000000.0000.050000.00|pmFM + +[STATUS4] +Command=FEFE88E0.1409.FD +ReplyLength=16 +Validate=FEFE88E01409FD.FEFEE088.1409.0000.FD +; 0=300 Hz, 255=900 Hz +Value1=13|2|vfBcdBU|2.362205|300|pmPitch + +[STATUS5] +Command=FEFE88E0.1C00.FD +ReplyLength=15 +Validate=FEFE88E01C00FD.FEFEE088.1C00.00.FD +Flag1=00000000000000.00000000.0000.01.00|pmTx +Flag2=00000000000000.00000000.0000.0F.00|00000000000000.00000000.0000.00.00|pmRx + +[STATUS6] +Command=FEFE88E0.0F.FD +ReplyLength=13 +Validate=FEFE88E00FFD.FEFEE088.0F.00.FD +Flag1=000000000000.00000000.00.01.00|pmSplitOn +Flag2=000000000000.00000000.00.0F.00|000000000000.00000000.00.00.00|pmSplitOff + +[STATUS7] +Command=FEFE88E0.0F.FD +ReplyLength=13 +Validate=FEFE88E00FFD.FEFEE088.0F.00.FD +Flag1=000000000000.00000000.00.01.00|pmVfoAB +Flag2=000000000000.00000000.00.0F.00|000000000000.00000000.00.00.00|pmVfoAA + +[STATUS8] +Command=FEFE88E0.2101.FD +ReplyLength=15 +Validate=FEFE88E02101FD.FEFEE088.2101.00.FD +Flag1=00000000000000.00000000.0000.01.00|pmRitOn +Flag2=00000000000000.00000000.0000.0F.00|00000000000000.00000000.0000.00.00|pmRitOff diff --git a/CATCheck/Rigs/IC-7100e4.ini b/CATCheck/Rigs/IC-7100e4.ini new file mode 100644 index 0000000..3a7c62e --- /dev/null +++ b/CATCheck/Rigs/IC-7100e4.ini @@ -0,0 +1,261 @@ +;------------------------------------------------------------------------------- +; Icom IC-7100 with firmware E4 (v1.10) command set +; +; IC-7100e4 File created by Bob Wilson, N6TV, n6tv@arrl.net +; +; Tested by: N6TV @ HRO Sunnyvale, CA +;------------------------------------------------------------------------------- + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT1] +;Turn CI-V transceive OFF +Command=FEFE88E0.1A050095.00.FD +ReplyLength=16 +Validate=FEFE88E01A05009500FD.FEFEE088FBFD + +[INIT2] +;set CW normal to lower sideband +Command=FEFE88E0.1A050032.00.FD +ReplyLength=16 +Validate=FEFE88E01A05003200FD.FEFEE088FBFD + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreqA] +Command=FEFE88E0.25.00.0000000000.FD +Value=6|5|vfBcdLU|1|0 +ReplyLength=18 +Validate=FEFE88E025000000000000FD.FEFEE088FBFD + +[pmFreqB] +Command=FEFE88E0.25.01.0000000000.FD +Value=6|5|vfBcdLU|1|0 +ReplyLength=18 +Validate=FEFE88E025010000000000FD.FEFEE088FBFD + +[pmFreq] +Command=FEFE88E0.05.0000000000.FD +Value=5|5|vfBcdLU|1|0 +ReplyLength=17 +Validate=FEFE88E0050000000000FD.FEFEE088FBFD + +[pmRitOffset] +;not supported + +[pmRit0] +Command=FEFE88E0.21.00000000.FD +ReplyLength=16 +Validate=FEFE88E02100000000FD.FEFEE088FBFD + +[pmPitch] +;test the 0.425|-127.5 params. should map 300Hz->0, 900Hz->255 +Command=FEFE88E0.14.09.0000.FD +Value=6|2|vfBcdBU|0.425|-127.5 +ReplyLength=15 +Validate=FEFE88E014090000FD.FEFEE088FBFD + + + + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +Command=FEFE88E0.0F01.FD +ReplyLength=13 +Validate=FEFE88E00F01FD.FEFEE088FBFD + +[pmSplitOff] +Command=FEFE88E0.0F00.FD +ReplyLength=13 +Validate=FEFE88E00F00FD.FEFEE088FBFD + +[pmVfoA] +Command=FEFE88E0.0700.FD +ReplyLength=13 +Validate=FEFE88E00700FD.FEFEE088FBFD + +[pmVfoB] +Command=FEFE88E0.0701.FD +ReplyLength=13 +Validate=FEFE88E00701FD.FEFEE088FBFD + +[pmVfoEqual] +Command=FEFE88E0.07A0.FD +ReplyLength=13 +Validate=FEFE88E007A0FD.FEFEE088FBFD + +[pmVfoSwap] +Command=FEFE88E0.07B0.FD +ReplyLength=13 +Validate=FEFE88E007B0FD.FEFEE088FBFD + +[pmVfoAA] +Command=FEFE88E0.0700.FD.FEFE88E0.0F00.FD +ReplyLength=20 +Validate=FEFE88E00700FD.FEFE88E00F00FD.FEFEE088FBFD + +[pmVfoAB] +Command=FEFE88E0.0700.FD.FEFE88E0.0F01.FD +ReplyLength=20 +Validate=FEFE88E00700FD.FEFE88E00F01FD.FEFEE088FBFD + +[pmVfoBA] +Command=FEFE88E0.0701.FD.FEFE88E0.0F01.FD +ReplyLength=20 +Validate=FEFE88E00701FD.FEFE88E00F01FD.FEFEE088FBFD + +[pmVfoBB] +Command=FEFE88E0.0701.FD.FEFE88E0.0F00.FD +ReplyLength=20 +Validate=FEFE88E00701FD.FEFE88E00F00FD.FEFEE088FBFD + +[pmRitOn] +Command=FEFE88E0.21.0101.FD +ReplyLength=14 +Validate=FEFE88E0210101FD.FEFEE088FBFD + +[pmRitOff] +Command=FEFE88E0.21.0100.FD +ReplyLength=14 +Validate=FEFE88E0210100FD.FEFEE088FBFD + +[pmXitOn] +;Not supported + +[pmXitOff] +;Not supported + +[pmRx] +Command=FEFE88E0.1C00.00.FD +ReplyLength=14 +Validate=FEFE88E01C0000FD.FEFEE088FBFD + +[pmTx] +Command=FEFE88E0.1C00.01.FD +ReplyLength=14 +Validate=FEFE88E01C0001FD.FEFEE088FBFD + + + + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +; CW-R +Command=FEFE88E0.06.07.FD +ReplyLength=13 +Validate=FEFE88E00607FD.FEFEE088FBFD + +[pmCW_L] +; CW Normal +Command=FEFE88E0.06.03.FD +ReplyLength=13 +Validate=FEFE88E00603FD.FEFEE088FBFD + +[pmSSB_U] +Command=FEFE88E0.06.01.FD +ReplyLength=13 +Validate=FEFE88E00601FD.FEFEE088FBFD + +[pmSSB_L] +Command=FEFE88E0.06.00.FD +ReplyLength=13 +Validate=FEFE88E00600FD.FEFEE088FBFD + +[pmDIG_U] +Command=FEFE88E0.06.08.FD +ReplyLength=13 +Validate=FEFE88E00608FD.FEFEE088FBFD + +[pmDIG_L] +Command=FEFE88E0.06.04.FD +ReplyLength=13 +Validate=FEFE88E00604FD.FEFEE088FBFD + +[pmAM] +Command=FEFE88E0.06.02.FD +ReplyLength=13 +Validate=FEFE88E00602FD.FEFEE088FBFD + +[pmFM] +Command=FEFE88E0.06.05.FD +ReplyLength=13 +Validate=FEFE88E00605FD.FEFEE088FBFD + + + + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +;[STATUS1] +;Command=FEFE88E0.03.FD +;ReplyLength=17 +;Validate=FEFE88E003FD.FEFEE088.03.0000000000.FD +;Value1=11|5|vfBcdLU|1|0|pmFreq + +[STATUS1] +; Read transmit freq. +Command=FEFE88E0.1C03.FD +ReplyLength=19 +Validate=FEFE88E01C03FD.FEFEE088.1C03.0000000000.FD +Value1=13|5|vfBcdLU|1|0|pmFreq + +[STATUS2] +Command=FEFE88E0.04.FD +ReplyLength=14 +Validate=FEFE88E004FD.FEFEE088.04.0000.FD +Flag1=000000000000.0000000000.FF.0000|000000000000.0000000000.07.0000|pmCW_U +Flag2=000000000000.0000000000.FF.0000|000000000000.0000000000.03.0000|pmCW_L +Flag3=000000000000.0000000000.FF.0000|000000000000.0000000000.01.0000|pmSSB_U +Flag4=000000000000.0000000000.FF.0000|000000000000.0000000000.00.0000|pmSSB_L +Flag5=000000000000.0000000000.FF.0000|000000000000.0000000000.08.0000|pmDIG_U +Flag6=000000000000.0000000000.FF.0000|000000000000.0000000000.04.0000|pmDIG_L +Flag7=000000000000.0000000000.FF.0000|000000000000.0000000000.02.0000|pmAM +Flag8=000000000000.0000000000.FF.0000|000000000000.0000000000.05.0000|pmFM + +[STATUS3] +Command=FEFE88E0.1409.FD +ReplyLength=16 +Validate=FEFE88E01409FD.FEFEE088.1409.0000.FD +; 0=300 Hz, 255=900 Hz +Value1=13|2|vfBcdBU|2.362205|300|pmPitch + +[STATUS4] +Command=FEFE88E0.1C00.FD +ReplyLength=15 +Validate=FEFE88E01C00FD.FEFEE088.1C00.00.FD +Flag1=00000000000000.00000000.0000.01.00|pmTx +Flag2=00000000000000.00000000.0000.0F.00|00000000000000.00000000.0000.00.00|pmRx + +[STATUS5] +Command=FEFE88E0.2500.FD +ReplyLength=19 +Validate=FEFE88E02500FD.FEFEE088.2500.0000000000.FD +Value1=13|5|vfBcdLU|1|0|pmFreqA + +[STATUS6] +Command=FEFE88E0.2501.FD +ReplyLength=19 +Validate=FEFE88E02501FD.FEFEE088.2501.0000000000.FD +Value1=13|5|vfBcdLU|1|0|pmFreqB + +[STATUS7] +Command=FEFE88E0.0F.FD +ReplyLength=13 +Validate=FEFE88E00FFD.FEFEE088.0F.00.FD +Flag1=000000000000.00000000.00.01.00|pmSplitOn +Flag2=000000000000.00000000.00.0F.00|000000000000.00000000.00.00.00|pmSplitOff + +[STATUS8] +Command=FEFE88E0.2101.FD +ReplyLength=15 +Validate=FEFE88E02101FD.FEFEE088.2101.00.FD +Flag1=00000000000000.00000000.0000.01.00|pmRitOn +Flag2=00000000000000.00000000.0000.0F.00|00000000000000.00000000.0000.00.00|pmRitOff diff --git a/CATCheck/Rigs/IC-718.ini b/CATCheck/Rigs/IC-718.ini new file mode 100644 index 0000000..daf53b9 --- /dev/null +++ b/CATCheck/Rigs/IC-718.ini @@ -0,0 +1,217 @@ +;------------------------------------------------------------------------------- +; Icom IC-718 command set +; +; File created by Alex Shovkoplyas, VE3NEA ve3nea@dxatlas.com +;------------------------------------------------------------------------------- + + + + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT] +;none + + + + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreqA] +;not supported + +[pmFreqB] +;not supported + +[pmFreq] +;not sure if 5 or 2x5 bytes should be sent +Command=FEFE5EE0.05.0000000000.FD +Value=5|5|vfBcdLU|1|0 +ReplyLength=17 +Validate=FEFE5EE0050000000000FD.FEFEE05EFBFD + +[pmRitOffset] +;not supported +;+/- 1.2 KHz + +[pmRit0] +;not supported + +[pmPitch] +Command=FEFE5EE0.1409.0000.FD +;300Hz=0 600Hz=128 900Hz=255 +Value=6|2|vfBcdLU|0.425|-127.5 +ReplyLength=15 +Validate=FEFE5EE014090000FD.FEFEE05EFBFD + + + + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +Command=FEFE5EE0.0F01.FD +ReplyLength=13 +Validate=FEFE5EE00F01FD.FEFEE05EFBFD + +[pmSplitOff] +Command=FEFE5EE0.0F00.FD +ReplyLength=13 +Validate=FEFE5EE00F00FD.FEFEE05EFBFD + +[pmVfoA] +Command=FEFE5EE0.0700.FD +ReplyLength=13 +Validate=FEFE5EE00700FD.FEFEE05EFBFD + +[pmVfoB] +Command=FEFE5EE0.0701.FD +ReplyLength=13 +Validate=FEFE5EE00701FD.FEFEE05EFBFD + +[pmVfoEqual] +Command=FEFE5EE0.07A0.FD +ReplyLength=13 +Validate=FEFE5EE007A0FD.FEFEE05EFBFD + +[pmVfoSwap] +Command=FEFE5EE0.07B0.FD +ReplyLength=13 +Validate=FEFE5EE007B0FD.FEFEE05EFBFD + +[pmVfoAA] +;not supported + +[pmVfoAB] +;not supported + +[pmVfoBA] +;not supported + +[pmVfoBB] +;not supported + +[pmRitOn] +;not supported + +[pmRitOff] +;not supported + +[pmXitOn] +;not supported + +[pmXitOff] +;not supported + +[pmRx] +;not supported + +[pmTx] +;not supported + + + + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +Command=FEFE5EE0.06.03.FD +ReplyLength=13 +Validate=FEFE5EE00603FD.FEFEE05EFBFD + +[pmCW_L] +Command=FEFE5EE0.06.07.FD +ReplyLength=13 +Validate=FEFE5EE00607FD.FEFEE05EFBFD + +[pmSSB_U] +Command=FEFE5EE0.06.01.FD +ReplyLength=13 +Validate=FEFE5EE00601FD.FEFEE05EFBFD + +[pmSSB_L] +Command=FEFE5EE0.06.00.FD +ReplyLength=13 +Validate=FEFE5EE00600FD.FEFEE05EFBFD + +[pmDIG_U] +Command=FEFE5EE0.06.04.FD +ReplyLength=13 +Validate=FEFE5EE00604FD.FEFEE05EFBFD + +[pmDIG_L] +Command=FEFE5EE0.06.08.FD +ReplyLength=13 +Validate=FEFE5EE00608FD.FEFEE05EFBFD + +[pmAM] +Command=FEFE5EE0.06.02.FD +ReplyLength=13 +Validate=FEFE5EE00602FD.FEFEE05EFBFD + +[pmFM] +Command=FEFE5EE0.06.05.FD +ReplyLength=13 +Validate=FEFE5EE00605FD.FEFEE05EFBFD + + + + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +[STATUS1] +;The command name in the manual is Read Frequencies. +;However, it returns just one frequency +Command=FEFE5EE0.03.FD +ReplyLength=17 +Validate=FEFE5EE003FD.FEFEE05E.03.0000000000.FD +Value1=11|5|vfBcdLU|1|0|pmFreq + +[STATUS2] +Command=FEFE5EE0.04.FD +ReplyLength=14 +Validate=FEFE5EE004FD.FEFEE05E.04.0000.FD +;filter byte is appended to the mode byte +Flag1=000000000000.0000000000.FF.0000|000000000000.0000000000.03.0000|pmCW_U +Flag2=000000000000.0000000000.FF.0000|000000000000.0000000000.07.0000|pmCW_L +Flag3=000000000000.0000000000.FF.0000|000000000000.0000000000.01.0000|pmSSB_U +Flag4=000000000000.0000000000.FF.0000|000000000000.0000000000.00.0000|pmSSB_L +Flag5=000000000000.0000000000.FF.0000|000000000000.0000000000.04.0000|pmDIG_U +Flag6=000000000000.0000000000.FF.0000|000000000000.0000000000.08.0000|pmDIG_L +Flag7=000000000000.0000000000.FF.0000|000000000000.0000000000.02.0000|pmAM + +[STATUS3] +Command=FEFE5EE0.1409.FD +ReplyLength=16 +Validate=FEFE5EE01409FD.FEFEE05E1409.0000.FD +;Value1=13|2|vfBcdBU|2.352941|300|pmPitch +Value1=13|2|vfBcdBU|2.362205|300|pmPitch + +[STATUS4] +;Command=FEFE5EE0.07.FD +;ReplyLength=13 +;Validate=FEFE5EE007FD.FEFE5EE007.00.FD +;Flag1=0000000000000000000000.FF.00|0000000000000000000000.01.00|pmVfoA +;Flag2=0000000000000000000000.FF.00|0000000000000000000000.00.00|pmVfoB + +[STATUS5] +;Command=FEFE5EE0.1C00.FD +;ReplyLength=15 +;Validate=FEFE5EE01C00FD.FEFEE05E1C00.00.FD +;Flag1=00000000000000000000000000.FF.00|00000000000000000000000000.01.00|pmTx +;Flag2=00000000000000000000000000.FF.00|00000000000000000000000000.00.00|pmRx + +[STATUS6] +;Command=FEFE5EE0.0F.FD +;ReplyLength=13 +;Validate=FEFE5EE00FFD.FEFE5EE00F.00.FD +;Flag1=0000000000000000000000.FF.00|0000000000000000000000.01.00|pmSplitOn +;Flag2=0000000000000000000000.FF.00|0000000000000000000000.00.00|pmSplitOff + + diff --git a/CATCheck/Rigs/IC-7200.ini b/CATCheck/Rigs/IC-7200.ini new file mode 100644 index 0000000..7608d5b --- /dev/null +++ b/CATCheck/Rigs/IC-7200.ini @@ -0,0 +1,205 @@ +;------------------------------------------------------------------------------- +; Icom IC-7200 command set +; +; File created by Uwe Lauer, ulauer@pobox.com +; +; Tested (for Faros) by: ulauer +;------------------------------------------------------------------------------- + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- + +[INIT1] + +[INIT2] + +[INIT3] + + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- + +[pmFreqA] +;VFO A frequency +;not supported + +[pmFreqB] +;VFO B frequency +;not supported + +[pmFreq] +;operating frequency +Command=FEFE76E0.05.0000000000.FD +Value=5|5|vfBcdLU|1|0 +ReplyLength=17 +Validate=FEFE76E0050000000000FD.FEFEE076FBFD + +[pmRitOffset] +;RIT offset frequency +;not supported + +[pmRit0] +;not supported + +[pmPitch] +;CW pitch frequency +Command=FEFE76E0.1409.0000.FD +;300Hz=0 600Hz=128 900Hz=255 +Value=6|2|vfBcdBU|0.425|-127.5 +ReplyLength=15 +Validate=FEFE76E014090000FD.FEFEE076FBFD + + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- + +[pmSplitOn] +Command=FEFE76E0.0F01.FD +ReplyLength=13 +Validate=FEFE76E00F01FD.FEFEE076FBFD + +[pmSplitOff] +Command=FEFE76E0.0F00.FD +ReplyLength=13 +Validate=FEFE76E00F00FD.FEFEE076FBFD + +[pmVfoA] +;not supported + +[pmVfoB] +;not supported + +[pmVfoEqual] +Command=FEFE76E0.07A0.FD +ReplyLength=13 +Validate=FEFE76E007A0FD.FEFEE076FBFD + +[pmVfoSwap] +Command=FEFE76E0.07B0.FD +ReplyLength=13 +Validate=FEFE76E007B0FD.FEFEE076FBFD + +[pmVfoAA] +Command=FEFE76E0.0700.FD +ReplyLength=13 +Validate=FEFE76E00700FD.FEFEE076FBFD + +[pmVfoAB] +;not supported + +[pmVfoBA] +;not supported + +[pmVfoBB] +Command=FEFE76E0.0701.FD +ReplyLength=13 +Validate=FEFE76E00701FD.FEFEE076FBFD + +[pmRitOn] +Command=FEFE76E0.0F01.FD +ReplyLength=13 +Validate=FEFE76E00F01FD.FEFEE076FBFD + +[pmRitOff] +Command=FEFE76E0.0F00.FD +ReplyLength=13 +Validate=FEFE76E00F00FD.FEFEE076FBFD + +[pmXitOn] +;not supported + +[pmXitOff] +;not supported + +[pmRx] +Command=FEFE76E0.1C00.00.FD +ReplyLength=14 +Validate=FEFE76E01C0000FD.FEFEE076FBFD + +[pmTx] +Command=FEFE76E0.1C00.01.FD +ReplyLength=14 +Validate=FEFE76E01C0001FD.FEFEE076FBFD + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- + +[pmCW_U] +Command=FEFE76E0.0603.FD +ReplyLength=13 +Validate=FEFE76E00603FD.FEFEE076FBFD + +[pmCW_L] +Command=FEFE76E0.0607.FD +ReplyLength=13 +Validate=FEFE76E00607FD.FEFEE076FBFD + +[pmSSB_U] +Command=FEFE76E0.0601.FD +ReplyLength=13 +Validate=FEFE76E00601FD.FEFEE076FBFD + +[pmSSB_L] +Command=FEFE76E0.0600.FD +ReplyLength=13 +Validate=FEFE76E00600FD.FEFEE076FBFD + +[pmDIG_U] +Command=FEFE76E0.0608.FD +ReplyLength=13 +Validate=FEFE76E00608FD.FEFEE076FBFD + +[pmDIG_L] +Command=FEFE76E0.0604.FD +ReplyLength=13 +Validate=FEFE76E00604FD.FEFEE076FBFD. + +[pmAM] +Command=FEFE76E0.0602.FD +ReplyLength=13 +Validate=FEFE76E00602FD.FEFEE076FBFD + +[pmFM] +;not supported + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- + +[STATUS1] +Command=FEFE76E0.03.FD +ReplyLength=17 +Validate=FEFE76E003FD.FEFEE076.03.0000000000.FD +Value1=11|5|vfBcdLU|1|0|pmFreq + +[STATUS2] +Command=FEFE76E0.04.FD +ReplyLength=14 +Validate=FEFE76E004FD.FEFEE076.04.0000.FD +;is filter byte appended to the mode byte? +Flag1=000000000000.0000000000.FF.0000|000000000000.0000000000.03.0000|pmCW_U +Flag2=000000000000.0000000000.FF.0000|000000000000.0000000000.07.0000|pmCW_L +Flag3=000000000000.0000000000.FF.0000|000000000000.0000000000.01.0000|pmSSB_U +Flag4=000000000000.0000000000.FF.0000|000000000000.0000000000.00.0000|pmSSB_L +Flag5=000000000000.0000000000.FF.0000|000000000000.0000000000.08.0000|pmDIG_U +Flag6=000000000000.0000000000.FF.0000|000000000000.0000000000.04.0000|pmDIG_L +Flag7=000000000000.0000000000.FF.0000|000000000000.0000000000.02.0000|pmAM +Flag8=000000000000.0000000000.FF.0000|000000000000.0000000000.05.0000|pmFM + +[STATUS3] +Command=FEFE76E0.1409.FD +ReplyLength=16 +Validate=FEFE76E01409FD.FEFEE0761409.0000.FD +Value1=13|2|vfBcdBU|25|300|pmPitch + +[STATUS4] +Command=FEFE76E0.1C00.FD +ReplyLength=15 +Validate=FEFE76E01C00FD.FEFEE076.1C00.00.FD +Flag1=00000000000000.00000000.0000.01.00|pmTx +Flag2=00000000000000.00000000.0000.0F.00|00000000000000.00000000.0000.00.00|pmRx diff --git a/CATCheck/Rigs/IC-7200v2.ini b/CATCheck/Rigs/IC-7200v2.ini new file mode 100644 index 0000000..1977b69 --- /dev/null +++ b/CATCheck/Rigs/IC-7200v2.ini @@ -0,0 +1,200 @@ +;------------------------------------------------------------------------------- +; Icom IC-7200 version 2 +; +; IC-7200v2 File created by Bob Wilson, N6TV, n6tv@arrl.net +; +; Tested by: N6TV +;------------------------------------------------------------------------------- + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT1] +;Turn CI-V transceive OFF +Command=FEFE76E0.1A0348.00.FD +ReplyLength=15 +Validate=FEFE76E01A034800FD.FEFEE076FBFD + +[INIT2] +;set CW normal to lower sideband +Command=FEFE76E0.1A0337.00.FD +ReplyLength=15 +Validate=FEFE76E01A033700FD.FEFEE076FBFD + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreqA] +;not supported + +[pmFreqB] +;not supported + +[pmFreq] +Command=FEFE76E0.05.0000000000.FD +Value=5|5|vfBcdLU|1|0 +ReplyLength=17 +Validate=FEFE76E0050000000000FD.FEFEE076FBFD + +[pmRitOffset] +;not supported + +[pmRit0] +;not supported + +[pmPitch] +;test the 0.425|-127.5 params. should map 300Hz->0, 900Hz->255 +Command=FEFE76E0.14.09.0000.FD +Value=6|2|vfBcdBU|0.425|-127.5 +ReplyLength=15 +Validate=FEFE76E014090000FD.FEFEE076FBFD + + + + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +Command=FEFE76E0.0F01.FD +ReplyLength=13 +Validate=FEFE76E00F01FD.FEFEE076FBFD + +[pmSplitOff] +Command=FEFE76E0.0F00.FD +ReplyLength=13 +Validate=FEFE76E00F00FD.FEFEE076FBFD + +[pmVfoA] +Command=FEFE76E0.0700.FD +ReplyLength=13 +Validate=FEFE76E00700FD.FEFEE076FBFD + +[pmVfoB] +Command=FEFE76E0.0701.FD +ReplyLength=13 +Validate=FEFE76E00701FD.FEFEE076FBFD + +[pmVfoEqual] +Command=FEFE76E0.07A0.FD +ReplyLength=13 +Validate=FEFE76E007A0FD.FEFEE076FBFD + +[pmVfoSwap] +Command=FEFE76E0.07B0.FD +ReplyLength=13 +Validate=FEFE76E007B0FD.FEFEE076FBFD + +[pmVfoAA] +Command=FEFE76E0.0700.FD.FEFE76E0.0F00.FD +ReplyLength=20 +Validate=FEFE76E00700FD.FEFE76E00F00FD.FEFEE076FBFD + +[pmVfoAB] +Command=FEFE76E0.0700.FD.FEFE76E0.0F01.FD +ReplyLength=20 +Validate=FEFE76E00700FD.FEFE76E00F01FD.FEFEE076FBFD + +[pmVfoBA] +Command=FEFE76E0.0701.FD.FEFE76E0.0F01.FD +ReplyLength=20 +Validate=FEFE76E00701FD.FEFE76E00F01FD.FEFEE076FBFD + +[pmVfoBB] +Command=FEFE76E0.0701.FD.FEFE76E0.0F00.FD +ReplyLength=20 +Validate=FEFE76E00701FD.FEFE76E00F00FD.FEFEE076FBFD + +[pmRx] +Command=FEFE76E0.1C00.00.FD +ReplyLength=14 +Validate=FEFE76E01C0000FD.FEFEE076FBFD + +[pmTx] +Command=FEFE76E0.1C00.01.FD +ReplyLength=14 +Validate=FEFE76E01C0001FD.FEFEE076FBFD + + + + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +; CW-R +Command=FEFE76E0.06.07.FD +ReplyLength=13 +Validate=FEFE76E00607FD.FEFEE076FBFD + +[pmCW_L] +; CW Normal +Command=FEFE76E0.06.03.FD +ReplyLength=13 +Validate=FEFE76E00603FD.FEFEE076FBFD + +[pmSSB_U] +Command=FEFE76E0.06.01.FD +ReplyLength=13 +Validate=FEFE76E00601FD.FEFEE076FBFD + +[pmSSB_L] +Command=FEFE76E0.06.00.FD +ReplyLength=13 +Validate=FEFE76E00600FD.FEFEE076FBFD + +[pmDIG_U] +Command=FEFE76E0.06.08.FD +ReplyLength=13 +Validate=FEFE76E00608FD.FEFEE076FBFD + +[pmDIG_L] +Command=FEFE76E0.06.04.FD +ReplyLength=13 +Validate=FEFE76E00604FD.FEFEE076FBFD + +[pmAM] +Command=FEFE76E0.06.02.FD +ReplyLength=13 +Validate=FEFE76E00602FD.FEFEE076FBFD + +[pmFM] +;not supported + + + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +[STATUS1] +Command=FEFE76E0.03.FD +ReplyLength=17 +Validate=FEFE76E003FD.FEFEE076.03.0000000000.FD +Value1=11|5|vfBcdLU|1|0|pmFreq + +[STATUS2] +Command=FEFE76E0.04.FD +ReplyLength=14 +Validate=FEFE76E004FD.FEFEE076.04.0000.FD +Flag1=000000000000.0000000000.FF.0000|000000000000.0000000000.07.0000|pmCW_U +Flag2=000000000000.0000000000.FF.0000|000000000000.0000000000.03.0000|pmCW_L +Flag3=000000000000.0000000000.FF.0000|000000000000.0000000000.01.0000|pmSSB_U +Flag4=000000000000.0000000000.FF.0000|000000000000.0000000000.00.0000|pmSSB_L +Flag5=000000000000.0000000000.FF.0000|000000000000.0000000000.08.0000|pmDIG_U +Flag6=000000000000.0000000000.FF.0000|000000000000.0000000000.04.0000|pmDIG_L +Flag7=000000000000.0000000000.FF.0000|000000000000.0000000000.02.0000|pmAM + +[STATUS3] +Command=FEFE76E0.1409.FD +ReplyLength=16 +Validate=FEFE76E01409FD.FEFEE076.1409.0000.FD +; 0=300 Hz, 255=900 Hz +Value1=13|2|vfBcdBU|2.362205|300|pmPitch + +[STATUS4] +Command=FEFE76E0.1C00.FD +ReplyLength=15 +Validate=FEFE76E01C00FD.FEFEE076.1C00.00.FD +Flag1=00000000000000.00000000.0000.01.00|pmTx +Flag2=00000000000000.00000000.0000.0F.00|00000000000000.00000000.0000.00.00|pmRx diff --git a/CATCheck/Rigs/IC-725.ini b/CATCheck/Rigs/IC-725.ini new file mode 100644 index 0000000..a99c84d --- /dev/null +++ b/CATCheck/Rigs/IC-725.ini @@ -0,0 +1,172 @@ +;------------------------------------------------------------------------------- +; Icom IC-725 command set +; +; File created by Alex Shovkoplyas, VE3NEA ve3nea@dxatlas.com +;------------------------------------------------------------------------------- + + + + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT] +;none + + + + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreqA] +;not supported + +[pmFreqB] +;not supported + +[pmFreq] +Command=FEFE28E0.05.0000000000.FD +Value=5|5|vfBcdLU|1|0 +ReplyLength=17 +Validate=FEFE28E0050000000000FD.FEFEE028FBFD + +[pmRitOffset] +;not supported + +[pmRit0] +;not supported + +[pmPitch] +;not supported + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +Command=FEFE28E0.0F01.FD +ReplyLength=13 +Validate=FEFE28E00F01FD.FEFEE028FBFD + +[pmSplitOff] +Command=FEFE28E0.0F00.FD +ReplyLength=13 +Validate=FEFE28E00F00FD.FEFEE028FBFD + +[pmVfoA] +Command=FEFE28E0.0700.FD +ReplyLength=13 +Validate=FEFE28E00700FD.FEFEE028FBFD + +[pmVfoB] +Command=FEFE28E0.0701.FD +ReplyLength=13 +Validate=FEFE28E00701FD.FEFEE028FBFD + +[pmVfoEqual] +Command=FEFE28E0.07A0.FD +ReplyLength=13 +Validate=FEFE28E007A0FD.FEFEE028FBFD + +[pmVfoSwap] +;not supported + + +[pmVfoAA] +;not supported + +[pmVfoAB] +;not supported + +[pmVfoBA] +;not supported + +[pmVfoBB] +;not supported + +[pmRitOn] +;not supported + +[pmRitOff] +;not supported + +[pmXitOn] +;not supported + +[pmXitOff] +;not supported + +[pmRx] +;not supported + +[pmTx] +;not supported + + + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +Command=FEFE28E0.06.03.FD +ReplyLength=13 +Validate=FEFE28E00603FD.FEFEE028FBFD + +[pmCW_L] +Command=FEFE28E0.06.07.FD +ReplyLength=13 +Validate=FEFE28E00607FD.FEFEE028FBFD + +[pmSSB_U] +Command=FEFE28E0.06.01.FD +ReplyLength=13 +Validate=FEFE28E00601FD.FEFEE028FBFD + +[pmSSB_L] +Command=FEFE28E0.06.00.FD +ReplyLength=13 +Validate=FEFE28E00600FD.FEFEE028FBFD + +[pmDIG_U] +;not supported + +[pmDIG_L] +;not supported + +[pmAM] +Command=FEFE28E0.06.02.FD +ReplyLength=13 +Validate=FEFE28E00602FD.FEFEE028FBFD + +[pmFM] +Command=FEFE28E0.06.05.FD +ReplyLength=13 +Validate=FEFE28E00605FD.FEFEE028FBFD + + + + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +[STATUS1] +Command=FEFE28E0.03.FD +ReplyLength=17 +Validate=FFFFFFFFFFFF.FFFFFFFF.FF.0000000000.FF|FEFE28E003FD.FEFEE028.03.0000000000.FD +Value1=11|5|vfBcdLU|1|0|pmFreq + +[STATUS2] +Command=FEFE28E0.04.FD +ReplyLength=14 +Validate=FFFFFFFFFFFF.FFFFFFFF.FF.0000.FF|FEFE28E004FD.FEFEE028.04.0000.FD +;is filter byte appended to the mode byte? +Flag1=000000000000.0000000000.FF.0000|000000000000.0000000000.03.0000|pmCW_U +Flag2=000000000000.0000000000.FF.0000|000000000000.0000000000.07.0000|pmCW_L +Flag3=000000000000.0000000000.FF.0000|000000000000.0000000000.01.0000|pmSSB_U +Flag4=000000000000.0000000000.FF.0000|000000000000.0000000000.00.0000|pmSSB_L +Flag5=000000000000.0000000000.FF.0000|000000000000.0000000000.04.0000|pmDIG_U +Flag6=000000000000.0000000000.FF.0000|000000000000.0000000000.08.0000|pmDIG_L +Flag7=000000000000.0000000000.FF.0000|000000000000.0000000000.02.0000|pmAM +Flag8=000000000000.0000000000.FF.0000|000000000000.0000000000.05.0000|pmFM + diff --git a/CATCheck/Rigs/IC-725a.ini b/CATCheck/Rigs/IC-725a.ini new file mode 100644 index 0000000..cd45acc --- /dev/null +++ b/CATCheck/Rigs/IC-725a.ini @@ -0,0 +1,174 @@ +;------------------------------------------------------------------------------- +; Icom IC-725a command set +; +; File created by Vitaly Chuchko, rz3tj vfc@inbox.ru +;------------------------------------------------------------------------------- + + + + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- + +;none + + + + + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreqA] +;not supported + +[pmFreqB] +;not supported + +[pmFreq] +Command=FEFE3EE0.05.0000000000.FD +Value=5|5|vfBcdLU|1|0 +ReplyLength=17 +Validate=FEFE3EE0050000000000FD.FEFEE03EFBFD + +[pmRitOffset] +;not supported +;+/- 1.2 KHz + +[pmRit0] +;not supported + +[pmPitch] +;not supported + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +Command=FEFE3EE0.0F01.FD +ReplyLength=13 +Validate=FEFE3EE00F01FD.FEFEE03EFBFD + +[pmSplitOff] +Command=FEFE3EE0.0F00.FD +ReplyLength=13 +Validate=FEFE3EE00F00FD.FEFEE03EFBFD + +[pmVfoA] +Command=FEFE3EE0.0700.FD +ReplyLength=13 +Validate=FEFE3EE00700FD.FEFEE03EFBFD + +[pmVfoB] +Command=FEFE3EE0.0701.FD +ReplyLength=13 +Validate=FEFE3EE00701FD.FEFEE03EFBFD + +[pmVfoEqual] +Command=FEFE3EE0.07A0.FD +ReplyLength=13 +Validate=FEFE3EE007A0FD.FEFEE03EFBFD + +[pmVfoSwap] +;not supported + + +[pmVfoAA] +;not supported + +[pmVfoAB] +;not supported + +[pmVfoBA] +;not supported + +[pmVfoBB] +;not supported + +[pmRitOn] +;not supported + +[pmRitOff] +;not supported + +[pmXitOn] +;not supported + +[pmXitOff] +;not supported + +[pmRx] +;not supported + +[pmTx] +;not supported + + + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +Command=FEFE3EE0.06.03.FD +ReplyLength=13 +Validate=FEFE3EE00603FD.FEFEE03EFBFD + +[pmCW_L] +;Command=FEFE3EE0.06.07.FD +;ReplyLength=13 +;Validate=FEFE3EE00607FD.FEFEE03EFBFD + +[pmSSB_U] +Command=FEFE3EE0.06.01.FD +ReplyLength=13 +Validate=FEFE3EE00601FD.FEFEE03EFBFD + +[pmSSB_L] +Command=FEFE3EE0.06.00.FD +ReplyLength=13 +Validate=FEFE3EE00600FD.FEFEE03EFBFD + +[pmDIG_U] +;not supported + +[pmDIG_L] +;not supported + +[pmAM] +Command=FEFE3EE0.06.02.FD +ReplyLength=13 +Validate=FEFE3EE00602FD.FEFEE03EFBFD + +[pmFM] +Command=FEFE3EE0.06.05.FD +ReplyLength=13 +Validate=FEFE3EE00605FD.FEFEE03EFBFD + + + + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +[STATUS1] +Command=FEFE3EE0.03.FD +ReplyLength=17 +Validate=FFFFFFFFFFFF.FFFFFFFF.FF.0000000000.FF|FEFE3EE003FD.FEFEE03E.03.0000000000.FD +Value1=11|5|vfBcdLU|1|0|pmFreq + +[STATUS2] +Command=FEFE3EE0.04.FD +ReplyLength=14 +Validate=FFFFFFFFFFFF.FFFFFFFF.FF.0000.FF|FEFE3EE004FD.FEFEE03E.04.0000.FD +;is filter byte appended to the mode byte? +Flag1=000000000000.0000000000.FF.0000|000000000000.0000000000.03.0000|pmCW_U +Flag2=000000000000.0000000000.FF.0000|000000000000.0000000000.07.0000|pmCW_L +Flag3=000000000000.0000000000.FF.0000|000000000000.0000000000.01.0000|pmSSB_U +Flag4=000000000000.0000000000.FF.0000|000000000000.0000000000.00.0000|pmSSB_L +Flag5=000000000000.0000000000.FF.0000|000000000000.0000000000.04.0000|pmDIG_U +Flag6=000000000000.0000000000.FF.0000|000000000000.0000000000.08.0000|pmDIG_L +Flag7=000000000000.0000000000.FF.0000|000000000000.0000000000.02.0000|pmAM +Flag8=000000000000.0000000000.FF.0000|000000000000.0000000000.05.0000|pmFM + diff --git a/CATCheck/Rigs/IC-726.ini b/CATCheck/Rigs/IC-726.ini new file mode 100644 index 0000000..1c5d14a --- /dev/null +++ b/CATCheck/Rigs/IC-726.ini @@ -0,0 +1,217 @@ +;------------------------------------------------------------------------------- +; Icom IC-726 command set +; +; File created by UA3YPL +;------------------------------------------------------------------------------- + + + + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT] +;none + + + + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreqA] +;not supported + +[pmFreqB] +;not supported + +[pmFreq] +;not sure if 5 or 2x5 bytes should be sent +Command=FEFE30E0.05.0000000000.FD +Value=5|5|vfBcdLU|1|0 +ReplyLength=17 +Validate=FEFE30E0050000000000FD.FEFEE030FBFD + +[pmRitOffset] +;not supported +;+/- 1.2 KHz + +[pmRit0] +;not supported + +[pmPitch] +Command=FEFE30E0.1409.0000.FD +;300Hz=0 600Hz=128 900Hz=255 +Value=6|2|vfBcdLU|0.425|-127.5 +ReplyLength=15 +Validate=FEFE30E014090000FD.FEFEE030FBFD + + + + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +Command=FEFE30E0.0F01.FD +ReplyLength=13 +Validate=FEFE30E00F01FD.FEFEE030FBFD + +[pmSplitOff] +Command=FEFE30E0.0F00.FD +ReplyLength=13 +Validate=FEFE30E00F00FD.FEFEE030FBFD + +[pmVfoA] +Command=FEFE30E0.0700.FD +ReplyLength=13 +Validate=FEFE30E00700FD.FEFEE030FBFD + +[pmVfoB] +Command=FEFE30E0.0701.FD +ReplyLength=13 +Validate=FEFE30E00701FD.FEFEE030FBFD + +[pmVfoEqual] +Command=FEFE30E0.07A0.FD +ReplyLength=13 +Validate=FEFE30E007A0FD.FEFEE030FBFD + +[pmVfoSwap] +Command=FEFE30E0.07B0.FD +ReplyLength=13 +Validate=FEFE30E007B0FD.FEFEE030FBFD + +[pmVfoAA] +;not supported + +[pmVfoAB] +;not supported + +[pmVfoBA] +;not supported + +[pmVfoBB] +;not supported + +[pmRitOn] +;not supported + +[pmRitOff] +;not supported + +[pmXitOn] +;not supported + +[pmXitOff] +;not supported + +[pmRx] +;not supported + +[pmTx] +;not supported + + + + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +Command=FEFE30E0.06.03.FD +ReplyLength=13 +Validate=FEFE30E00603FD.FEFEE030FBFD + +[pmCW_L] +Command=FEFE30E0.06.07.FD +ReplyLength=13 +Validate=FEFE30E00607FD.FEFEE030FBFD + +[pmSSB_U] +Command=FEFE30E0.06.01.FD +ReplyLength=13 +Validate=FEFE30E00601FD.FEFEE030FBFD + +[pmSSB_L] +Command=FEFE30E0.06.00.FD +ReplyLength=13 +Validate=FEFE30E00600FD.FEFEE030FBFD + +[pmDIG_U] +Command=FEFE30E0.06.04.FD +ReplyLength=13 +Validate=FEFE30E00604FD.FEFEE030FBFD + +[pmDIG_L] +Command=FEFE30E0.06.08.FD +ReplyLength=13 +Validate=FEFE30E00608FD.FEFEE030FBFD + +[pmAM] +Command=FEFE30E0.06.02.FD +ReplyLength=13 +Validate=FEFE30E00602FD.FEFEE030FBFD + +[pmFM] +Command=FEFE30E0.06.05.FD +ReplyLength=13 +Validate=FEFE30E00605FD.FEFEE030FBFD + + + + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +[STATUS1] +;The command name in the manual is Read Frequencies. +;However, it returns just one frequency +Command=FEFE30E0.03.FD +ReplyLength=17 +Validate=FEFE30E003FD.FEFEE030.03.0000000000.FD +Value1=11|5|vfBcdLU|1|0|pmFreq + +[STATUS2] +Command=FEFE30E0.04.FD +ReplyLength=14 +Validate=FEFE30E004FD.FEFEE030.04.0000.FD +;filter byte is appended to the mode byte +Flag1=000000000000.0000000000.FF.0000|000000000000.0000000000.03.0000|pmCW_U +Flag2=000000000000.0000000000.FF.0000|000000000000.0000000000.07.0000|pmCW_L +Flag3=000000000000.0000000000.FF.0000|000000000000.0000000000.01.0000|pmSSB_U +Flag4=000000000000.0000000000.FF.0000|000000000000.0000000000.00.0000|pmSSB_L +Flag5=000000000000.0000000000.FF.0000|000000000000.0000000000.04.0000|pmDIG_U +Flag6=000000000000.0000000000.FF.0000|000000000000.0000000000.08.0000|pmDIG_L +Flag7=000000000000.0000000000.FF.0000|000000000000.0000000000.02.0000|pmAM + +[STATUS3] +Command=FEFE30E0.1409.FD +ReplyLength=16 +Validate=FEFE30E01409FD.FEFEE0301409.0000.FD +;Value1=13|2|vfBcdBU|2.352941|300|pmPitch +Value1=13|2|vfBcdBU|2.362205|300|pmPitch + +[STATUS4] +;Command=FEFE30E0.07.FD +;ReplyLength=13 +;Validate=FEFE30E007FD.FEFE30E007.00.FD +;Flag1=0000000000000000000000.FF.00|0000000000000000000000.01.00|pmVfoA +;Flag2=0000000000000000000000.FF.00|0000000000000000000000.00.00|pmVfoB + +[STATUS5] +;Command=FEFE30E0.1C00.FD +;ReplyLength=15 +;Validate=FEFE30E01C00FD.FEFEE0301C00.00.FD +;Flag1=00000000000000000000000000.FF.00|00000000000000000000000000.01.00|pmTx +;Flag2=00000000000000000000000000.FF.00|00000000000000000000000000.00.00|pmRx + +[STATUS6] +;Command=FEFE30E0.0F.FD +;ReplyLength=13 +;Validate=FEFE30E00FFD.FEFE30E00F.00.FD +;Flag1=0000000000000000000000.FF.00|0000000000000000000000.01.00|pmSplitOn +;Flag2=0000000000000000000000.FF.00|0000000000000000000000.00.00|pmSplitOff + + diff --git a/CATCheck/Rigs/IC-728.ini b/CATCheck/Rigs/IC-728.ini new file mode 100644 index 0000000..2b2887f --- /dev/null +++ b/CATCheck/Rigs/IC-728.ini @@ -0,0 +1,181 @@ +;------------------------------------------------------------------------------- +; Icom IC-728 command set +; +; File created by Alex Shovkoplyas, VE3NEA ve3nea@dxatlas.com +; Edited by Don Hatlestad, AC7FA@arrl.net http://ac7fa.net for IC-728 +; Using documented CI-V commands at: +; "The ICOM CI-V Information pages by DF4OR" +; http://www.plicht.de/ekki/civ/civtoc.html +;------------------------------------------------------------------------------- + + + + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT] +;none + + + + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreqA] +;not supported + +[pmFreqB] +;not supported + +[pmFreq] +Command=FEFE38E0.05.0000000000.FD +Value=5|5|vfBcdLU|1|0 +ReplyLength=17 +Validate=FEFE38E0050000000000FD.FEFEE038FBFD + +[pmRitOffset] +;not supported + +[pmRit0] +;not supported + +[pmPitch] +;not supported + + + + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +Command=FEFE38E0.0F01.FD +ReplyLength=13 +Validate=FEFE38E00F01FD.FEFEE038FBFD + +[pmSplitOff] +Command=FEFE38E0.0F00.FD +ReplyLength=13 +Validate=FEFE38E00F00FD.FEFEE038FBFD + +[pmVfoA] +Command=FEFE38E0.0700.FD +ReplyLength=13 +Validate=FEFE38E00700FD.FEFEE038FBFD + +[pmVfoB] +Command=FEFE38E0.0701.FD +ReplyLength=13 +Validate=FEFE38E00701FD.FEFEE038FBFD + +[pmVfoEqual] +Command=FEFE38E0.07A0.FD +ReplyLength=13 +Validate=FEFE38E007A0FD.FEFEE038FBFD + +[pmVfoSwap] +;not supported + +[pmVfoAA] +;not supported + +[pmVfoAB] +;not supported + +[pmVfoBA] +;not supported + +[pmVfoBB] +;not supported + +[pmRitOn] +;not supported + +[pmRitOff] +;not supported + +[pmXitOn] +;not supported + +[pmXitOff] +;not supported + +[pmRx] +;not supported + +[pmTx] +;not supported + + + + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +; this is the CW Wide Filter +Command=FEFE38E0.06.03.FD +; this command is the CW Narrow mode +;Command=FEFE38E0.06.03O2.FD +ReplyLength=13 +Validate=FEFE38E00603FD.FEFEE038FBFD + +[pmCW_L] +;not supported + +[pmSSB_U] +Command=FEFE38E0.06.01.FD +ReplyLength=13 +Validate=FEFE38E00601FD.FEFEE038FBFD + +[pmSSB_L] +Command=FEFE38E0.06.00.FD +ReplyLength=13 +Validate=FEFE38E00600FD.FEFEE038FBFD + +[pmDIG_U] +;not supported + +[pmDIG_L] +;not supported + +[pmAM] +Command=FEFE38E0.06.02.FD +ReplyLength=13 +Validate=FEFE38E00602FD.FEFEE038FBFD + +[pmFM] +Command=FEFE38E0.06.05.FD +ReplyLength=13 +Validate=FEFE38E00605FD.FEFEE038FBFD + + + + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +[STATUS1] +;The command name in the manual is Read Frequencies. +;However, it returns just one frequency +Command=FEFE38E0.03.FD +ReplyLength=17 +Validate=FFFFFFFFFFFF.FFFFFFFF.FF.0000000000.FF|FEFE38E003FD.FEFEE038.03.0000000000.FD +Value1=11|5|vfBcdLU|1|0|pmFreq + +[STATUS2] +Command=FEFE38E0.04.FD +ReplyLength=14 +Validate=FEFE38E004FD.FEFEE038.04.0000.FD +;filter byte is appended to the mode byte? +Flag1=000000000000.0000000000.FF.0000|000000000000.0000000000.03.0000|pmCW_U +Flag2=000000000000.0000000000.FF.0000|000000000000.0000000000.07.0000|pmCW_L +Flag3=000000000000.0000000000.FF.0000|000000000000.0000000000.01.0000|pmSSB_U +Flag4=000000000000.0000000000.FF.0000|000000000000.0000000000.00.0000|pmSSB_L +Flag5=000000000000.0000000000.FF.0000|000000000000.0000000000.04.0000|pmDIG_U +Flag6=000000000000.0000000000.FF.0000|000000000000.0000000000.08.0000|pmDIG_L +Flag7=000000000000.0000000000.FF.0000|000000000000.0000000000.02.0000|pmAM +Flag8=000000000000.0000000000.FF.0000|000000000000.0000000000.05.0000|pmFM diff --git a/CATCheck/Rigs/IC-7300-DATA.ini b/CATCheck/Rigs/IC-7300-DATA.ini new file mode 100644 index 0000000..75b7a76 --- /dev/null +++ b/CATCheck/Rigs/IC-7300-DATA.ini @@ -0,0 +1,278 @@ +;------------------------------------------------------------------------------- +; Icom IC-7300-DATA +; +; IC-7300-DATA File created by Bob Wilson, N6TV, n6tv@arrl.net +; +; Tested by: Peter Klein, KD7MW +; +; Same as IC-7300, but selects USB-D and LSB-D for DIG modes instead of RTTY and RTTY-R +; +; Updated by N6TV 2018-04-16: +; - Set USB CI-V Echo Back ON to ensure that rig returns the values coded below +;------------------------------------------------------------------------------- + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT1] +;Turn USB CI-V Echo Back ON +Command=FEFE94E0.1A050075.01.FD +ReplyLength=16 +Validate=FEFE94E01A05007501FD.FEFEE094FBFD + +[INIT2] +;Turn CI-V transceive OFF +Command=FEFE94E0.1A050071.00.FD +ReplyLength=16 +Validate=FEFE94E01A05007100FD.FEFEE094FBFD + +[INIT3] +;set CW normal to lower sideband +Command=FEFE94E0.1A050053.00.FD +ReplyLength=16 +Validate=FEFE94E01A05005300FD.FEFEE094FBFD + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreqA] +Command=FEFE94E0.25.00.0000000000.FD +Value=6|5|vfBcdLU|1|0 +ReplyLength=18 +Validate=FEFE94E025000000000000FD.FEFEE094FBFD + +[pmFreqB] +Command=FEFE94E0.25.01.0000000000.FD +Value=6|5|vfBcdLU|1|0 +ReplyLength=18 +Validate=FEFE94E025010000000000FD.FEFEE094FBFD + +[pmFreq] +; not supported + +[pmRitOffset] +;not supported + +[pmRit0] +Command=FEFE94E0.21.00000000.FD +ReplyLength=16 +Validate=FEFE94E02100000000FD.FEFEE094FBFD + +[pmPitch] +;The 0.425|-127.5 params. should map 300Hz->0, 900Hz->255 +Command=FEFE94E0.14.09.0000.FD +Value=6|2|vfBcdBU|0.425|-127.5 +ReplyLength=15 +Validate=FEFE94E014090000FD.FEFEE094FBFD + + + + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +Command=FEFE94E0.0F01.FD +ReplyLength=13 +Validate=FEFE94E00F01FD.FEFEE094FBFD + +[pmSplitOff] +Command=FEFE94E0.0F00.FD +ReplyLength=13 +Validate=FEFE94E00F00FD.FEFEE094FBFD + +[pmVfoA] +Command=FEFE94E0.0700.FD +ReplyLength=13 +Validate=FEFE94E00700FD.FEFEE094FBFD + +[pmVfoB] +Command=FEFE94E0.0701.FD +ReplyLength=13 +Validate=FEFE94E00701FD.FEFEE094FBFD + +[pmVfoEqual] +Command=FEFE94E0.07A0.FD +ReplyLength=13 +Validate=FEFE94E007A0FD.FEFEE094FBFD + +[pmVfoSwap] +Command=FEFE94E0.07B0.FD +ReplyLength=13 +Validate=FEFE94E007B0FD.FEFEE094FBFD + +[pmVfoAA] +Command=FEFE94E0.0700.FD.FEFE94E0.0F00.FD +ReplyLength=20 +Validate=FEFE94E00700FD.FEFE94E00F00FD.FEFEE094FBFD + +[pmVfoAB] +Command=FEFE94E0.0700.FD.FEFE94E0.0F01.FD +ReplyLength=20 +Validate=FEFE94E00700FD.FEFE94E00F01FD.FEFEE094FBFD + +[pmVfoBA] +Command=FEFE94E0.0701.FD.FEFE94E0.0F01.FD +ReplyLength=20 +Validate=FEFE94E00701FD.FEFE94E00F01FD.FEFEE094FBFD + +[pmVfoBB] +Command=FEFE94E0.0701.FD.FEFE94E0.0F00.FD +ReplyLength=20 +Validate=FEFE94E00701FD.FEFE94E00F00FD.FEFEE094FBFD + +[pmRitOn] +Command=FEFE94E0.21.0101.FD +ReplyLength=14 +Validate=FEFE94E0210101FD.FEFEE094FBFD + +[pmRitOff] +Command=FEFE94E0.21.0100.FD +ReplyLength=14 +Validate=FEFE94E0210100FD.FEFEE094FBFD + +[pmXitOn] +Command=FEFE94E0.21.0201.FD +ReplyLength=14 +Validate=FEFE94E0210201FD.FEFEE094FBFD + +[pmXitOff] +Command=FEFE94E0.21.0200.FD +ReplyLength=14 +Validate=FEFE94E0210200FD.FEFEE094FBFD + +[pmRx] +Command=FEFE94E0.1C00.00.FD +ReplyLength=14 +Validate=FEFE94E01C0000FD.FEFEE094FBFD + +[pmTx] +Command=FEFE94E0.1C00.01.FD +ReplyLength=14 +Validate=FEFE94E01C0001FD.FEFEE094FBFD + + + + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +; CW-R +Command=FEFE94E0.2600.07.FD +ReplyLength=14 +Validate=FEFE94E0260007FD.FEFEE094FBFD + +[pmCW_L] +; CW Normal +Command=FEFE94E0.2600.03.FD +ReplyLength=14 +Validate=FEFE94E0260003FD.FEFEE094FBFD + +[pmSSB_U] +Command=FEFE94E0.2600.01.00.FD +ReplyLength=15 +Validate=FEFE94E026000100FD.FEFEE094FBFD + +[pmSSB_L] +Command=FEFE94E0.2600.00.00.FD +ReplyLength=15 +Validate=FEFE94E026000000FD.FEFEE094FBFD + +[pmDIG_U] +; These lines select USB-D for USB digital mode +Command=FEFE94E0.2600.01.01.FD +ReplyLength=15 +Validate=FEFE94E026000101FD.FEFEE094FBFD + +[pmDIG_L] +; These lines select LSB-D for LSB digital mode +Command=FEFE94E0.2600.00.01.FD +ReplyLength=15 +Validate=FEFE94E026000001FD.FEFEE094FBFD + +[pmAM] +Command=FEFE94E0.2600.02.FD +ReplyLength=14 +Validate=FEFE94E0260002FD.FEFEE094FBFD + +[pmFM] +Command=FEFE94E0.2600.05.FD +ReplyLength=14 +Validate=FEFE94E0260005FD.FEFEE094FBFD + + + + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +[STATUS1] +Command=FEFE94E0.2500.FD +ReplyLength=19 +Validate=FEFE94E02500FD.FEFEE094.2500.0000000000.FD +Value1=13|5|vfBcdLU|1|0|pmFreqA + +[STATUS2] +Command=FEFE94E0.2501.FD +ReplyLength=19 +Validate=FEFE94E02501FD.FEFEE094.2501.0000000000.FD +Value1=13|5|vfBcdLU|1|0|pmFreqB + +[STATUS3] +Command=FEFE94E0.2600.FD +ReplyLength=17 +Validate=FEFE94E02600FD.FEFEE094.2600.000000.FD +Flag1=00000000000000.00000000.0000.FF0000.00|00000000000000.00000000.0000.030000.00|pmCW_L +Flag2=00000000000000.00000000.0000.FF0000.00|00000000000000.00000000.0000.070000.00|pmCW_U +Flag3=00000000000000.00000000.0000.FFFF00.00|00000000000000.00000000.0000.010000.00|pmSSB_U +Flag4=00000000000000.00000000.0000.FFFF00.00|00000000000000.00000000.0000.000000.00|pmSSB_L +Flag5=00000000000000.00000000.0000.FF0000.00|00000000000000.00000000.0000.080000.00|pmDIG_U +Flag6=00000000000000.00000000.0000.FF0000.00|00000000000000.00000000.0000.040000.00|pmDIG_L +Flag7=00000000000000.00000000.0000.FFFF00.00|00000000000000.00000000.0000.010100.00|pmDIG_U +Flag8=00000000000000.00000000.0000.FFFF00.00|00000000000000.00000000.0000.000100.00|pmDIG_L +Flag9=00000000000000.00000000.0000.FF0000.00|00000000000000.00000000.0000.020000.00|pmAM +Flag10=00000000000000.00000000.0000.FF0000.00|00000000000000.00000000.0000.050000.00|pmFM + +[STATUS4] +Command=FEFE94E0.1409.FD +ReplyLength=16 +Validate=FEFE94E01409FD.FEFEE094.1409.0000.FD +; 0=300 Hz, 255=900 Hz +Value1=13|2|vfBcdBU|2.362205|300|pmPitch + +[STATUS5] +Command=FEFE94E0.1C00.FD +ReplyLength=15 +Validate=FEFE94E01C00FD.FEFEE094.1C00.00.FD +Flag1=00000000000000.00000000.0000.01.00|pmTx +Flag2=00000000000000.00000000.0000.0F.00|00000000000000.00000000.0000.00.00|pmRx + +[STATUS6] +Command=FEFE94E0.0F.FD +ReplyLength=13 +Validate=FEFE94E00FFD.FEFEE094.0F.00.FD +Flag1=000000000000.00000000.00.01.00|pmSplitOn +Flag2=000000000000.00000000.00.0F.00|000000000000.00000000.00.00.00|pmSplitOff + +[STATUS7] +Command=FEFE94E0.0F.FD +ReplyLength=13 +Validate=FEFE94E00FFD.FEFEE094.0F.00.FD +Flag1=000000000000.00000000.00.01.00|pmVfoAB +Flag2=000000000000.00000000.00.0F.00|000000000000.00000000.00.00.00|pmVfoAA + +[STATUS8] +Command=FEFE94E0.2101.FD +ReplyLength=15 +Validate=FEFE94E02101FD.FEFEE094.2101.00.FD +Flag1=00000000000000.00000000.0000.01.00|pmRitOn +Flag2=00000000000000.00000000.0000.0F.00|00000000000000.00000000.0000.00.00|pmRitOff + +[STATUS9] +Command=FEFE94E0.2102.FD +ReplyLength=15 +Validate=FEFE94E02102FD.FEFEE094.2102.00.FD +Flag1=00000000000000.00000000.0000.01.00|pmXitOn +Flag2=00000000000000.00000000.0000.0F.00|00000000000000.00000000.0000.00.00|pmXitOff diff --git a/CATCheck/Rigs/IC-7300.ini b/CATCheck/Rigs/IC-7300.ini new file mode 100644 index 0000000..477cd7f --- /dev/null +++ b/CATCheck/Rigs/IC-7300.ini @@ -0,0 +1,275 @@ +;------------------------------------------------------------------------------- +; Icom IC-7300 +; +; IC-7300 File created by Bob Wilson, N6TV, n6tv@arrl.net +; +; Tested by: James Brooks, 9V1YC and K3UK +; +; Same as original IC-7300, but only returns pmVfoA and pmVfoB, not pmFreq +; for use with CW Skimmer and Contest Loggers. +; +; Updated by N6TV 2018-04-16: +; - Set USB CI-V Echo Back ON to ensure that rig returns the values coded below +;------------------------------------------------------------------------------- + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT1] +;Turn USB CI-V Echo Back ON +Command=FEFE94E0.1A050075.01.FD +ReplyLength=16 +Validate=FEFE94E01A05007501FD.FEFEE094FBFD + +[INIT2] +;Turn CI-V transceive OFF +Command=FEFE94E0.1A050071.00.FD +ReplyLength=16 +Validate=FEFE94E01A05007100FD.FEFEE094FBFD + +[INIT3] +;set CW normal to lower sideband +Command=FEFE94E0.1A050053.00.FD +ReplyLength=16 +Validate=FEFE94E01A05005300FD.FEFEE094FBFD + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreqA] +Command=FEFE94E0.25.00.0000000000.FD +Value=6|5|vfBcdLU|1|0 +ReplyLength=18 +Validate=FEFE94E025000000000000FD.FEFEE094FBFD + +[pmFreqB] +Command=FEFE94E0.25.01.0000000000.FD +Value=6|5|vfBcdLU|1|0 +ReplyLength=18 +Validate=FEFE94E025010000000000FD.FEFEE094FBFD + +[pmFreq] +; not supported + +[pmRitOffset] +;not supported + +[pmRit0] +Command=FEFE94E0.21.00000000.FD +ReplyLength=16 +Validate=FEFE94E02100000000FD.FEFEE094FBFD + +[pmPitch] +;The 0.425|-127.5 params. should map 300Hz->0, 900Hz->255 +Command=FEFE94E0.14.09.0000.FD +Value=6|2|vfBcdBU|0.425|-127.5 +ReplyLength=15 +Validate=FEFE94E014090000FD.FEFEE094FBFD + + + + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +Command=FEFE94E0.0F01.FD +ReplyLength=13 +Validate=FEFE94E00F01FD.FEFEE094FBFD + +[pmSplitOff] +Command=FEFE94E0.0F00.FD +ReplyLength=13 +Validate=FEFE94E00F00FD.FEFEE094FBFD + +[pmVfoA] +Command=FEFE94E0.0700.FD +ReplyLength=13 +Validate=FEFE94E00700FD.FEFEE094FBFD + +[pmVfoB] +Command=FEFE94E0.0701.FD +ReplyLength=13 +Validate=FEFE94E00701FD.FEFEE094FBFD + +[pmVfoEqual] +Command=FEFE94E0.07A0.FD +ReplyLength=13 +Validate=FEFE94E007A0FD.FEFEE094FBFD + +[pmVfoSwap] +Command=FEFE94E0.07B0.FD +ReplyLength=13 +Validate=FEFE94E007B0FD.FEFEE094FBFD + +[pmVfoAA] +Command=FEFE94E0.0700.FD.FEFE94E0.0F00.FD +ReplyLength=20 +Validate=FEFE94E00700FD.FEFE94E00F00FD.FEFEE094FBFD + +[pmVfoAB] +Command=FEFE94E0.0700.FD.FEFE94E0.0F01.FD +ReplyLength=20 +Validate=FEFE94E00700FD.FEFE94E00F01FD.FEFEE094FBFD + +[pmVfoBA] +Command=FEFE94E0.0701.FD.FEFE94E0.0F01.FD +ReplyLength=20 +Validate=FEFE94E00701FD.FEFE94E00F01FD.FEFEE094FBFD + +[pmVfoBB] +Command=FEFE94E0.0701.FD.FEFE94E0.0F00.FD +ReplyLength=20 +Validate=FEFE94E00701FD.FEFE94E00F00FD.FEFEE094FBFD + +[pmRitOn] +Command=FEFE94E0.21.0101.FD +ReplyLength=14 +Validate=FEFE94E0210101FD.FEFEE094FBFD + +[pmRitOff] +Command=FEFE94E0.21.0100.FD +ReplyLength=14 +Validate=FEFE94E0210100FD.FEFEE094FBFD + +[pmXitOn] +Command=FEFE94E0.21.0201.FD +ReplyLength=14 +Validate=FEFE94E0210201FD.FEFEE094FBFD + +[pmXitOff] +Command=FEFE94E0.21.0200.FD +ReplyLength=14 +Validate=FEFE94E0210200FD.FEFEE094FBFD + +[pmRx] +Command=FEFE94E0.1C00.00.FD +ReplyLength=14 +Validate=FEFE94E01C0000FD.FEFEE094FBFD + +[pmTx] +Command=FEFE94E0.1C00.01.FD +ReplyLength=14 +Validate=FEFE94E01C0001FD.FEFEE094FBFD + + + + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +; CW-R +Command=FEFE94E0.06.07.FD +ReplyLength=13 +Validate=FEFE94E00607FD.FEFEE094FBFD + +[pmCW_L] +; CW Normal +Command=FEFE94E0.06.03.FD +ReplyLength=13 +Validate=FEFE94E00603FD.FEFEE094FBFD + +[pmSSB_U] +Command=FEFE94E0.06.01.FD +ReplyLength=13 +Validate=FEFE94E00601FD.FEFEE094FBFD + +[pmSSB_L] +Command=FEFE94E0.06.00.FD +ReplyLength=13 +Validate=FEFE94E00600FD.FEFEE094FBFD + +[pmDIG_U] +Command=FEFE94E0.06.08.FD +ReplyLength=13 +Validate=FEFE94E00608FD.FEFEE094FBFD + +[pmDIG_L] +Command=FEFE94E0.06.04.FD +ReplyLength=13 +Validate=FEFE94E00604FD.FEFEE094FBFD. + +[pmAM] +Command=FEFE94E0.06.02.FD +ReplyLength=13 +Validate=FEFE94E00602FD.FEFEE094FBFD + +[pmFM] +Command=FEFE94E0.06.05.FD +ReplyLength=13 +Validate=FEFE94E00605FD.FEFEE094FBFD + + + + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +[STATUS1] +Command=FEFE94E0.2500.FD +ReplyLength=19 +Validate=FEFE94E02500FD.FEFEE094.2500.0000000000.FD +Value1=13|5|vfBcdLU|1|0|pmFreqA + +[STATUS2] +Command=FEFE94E0.2501.FD +ReplyLength=19 +Validate=FEFE94E02501FD.FEFEE094.2501.0000000000.FD +Value1=13|5|vfBcdLU|1|0|pmFreqB + +[STATUS3] +Command=FEFE94E0.04.FD +ReplyLength=14 +Validate=FEFE94E004FD.FEFEE094.04.0000.FD +Flag1=000000000000.0000000000.FF.0000|000000000000.0000000000.03.0000|pmCW_L +Flag2=000000000000.0000000000.FF.0000|000000000000.0000000000.07.0000|pmCW_U +Flag3=000000000000.0000000000.FF.0000|000000000000.0000000000.01.0000|pmSSB_U +Flag4=000000000000.0000000000.FF.0000|000000000000.0000000000.00.0000|pmSSB_L +Flag5=000000000000.0000000000.FF.0000|000000000000.0000000000.08.0000|pmDIG_U +Flag6=000000000000.0000000000.FF.0000|000000000000.0000000000.04.0000|pmDIG_L +Flag7=000000000000.0000000000.FF.0000|000000000000.0000000000.02.0000|pmAM +Flag8=000000000000.0000000000.FF.0000|000000000000.0000000000.05.0000|pmFM + +[STATUS4] +Command=FEFE94E0.1409.FD +ReplyLength=16 +Validate=FEFE94E01409FD.FEFEE094.1409.0000.FD +; 0=300 Hz, 255=900 Hz +Value1=13|2|vfBcdBU|2.362205|300|pmPitch + +[STATUS5] +Command=FEFE94E0.1C00.FD +ReplyLength=15 +Validate=FEFE94E01C00FD.FEFEE094.1C00.00.FD +Flag1=00000000000000.00000000.0000.01.00|pmTx +Flag2=00000000000000.00000000.0000.0F.00|00000000000000.00000000.0000.00.00|pmRx + +[STATUS6] +Command=FEFE94E0.0F.FD +ReplyLength=13 +Validate=FEFE94E00FFD.FEFEE094.0F.00.FD +Flag1=000000000000.00000000.00.01.00|pmSplitOn +Flag2=000000000000.00000000.00.0F.00|000000000000.00000000.00.00.00|pmSplitOff + +[STATUS7] +Command=FEFE94E0.0F.FD +ReplyLength=13 +Validate=FEFE94E00FFD.FEFEE094.0F.00.FD +Flag1=000000000000.00000000.00.01.00|pmVfoAB +Flag2=000000000000.00000000.00.0F.00|000000000000.00000000.00.00.00|pmVfoAA + +[STATUS8] +Command=FEFE94E0.2101.FD +ReplyLength=15 +Validate=FEFE94E02101FD.FEFEE094.2101.00.FD +Flag1=00000000000000.00000000.0000.01.00|pmRitOn +Flag2=00000000000000.00000000.0000.0F.00|00000000000000.00000000.0000.00.00|pmRitOff + +[STATUS9] +Command=FEFE94E0.2102.FD +ReplyLength=15 +Validate=FEFE94E02102FD.FEFEE094.2102.00.FD +Flag1=00000000000000.00000000.0000.01.00|pmXitOn +Flag2=00000000000000.00000000.0000.0F.00|00000000000000.00000000.0000.00.00|pmXitOff diff --git a/CATCheck/Rigs/IC-7315.ini b/CATCheck/Rigs/IC-7315.ini new file mode 100644 index 0000000..9ff7f48 --- /dev/null +++ b/CATCheck/Rigs/IC-7315.ini @@ -0,0 +1,47 @@ +;------------------------------------------------------------------------------- +; Icom IC-7315 command set +; +; File created by RK0SK and UR5EQF +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreq] +Command=FEFE04E0.05.00000000.FD +Value=5|4|vfBcdLU|1|0 +ReplyLength=16 +Validate=FEFE04E00500000000FD.FEFEE004FBFD +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +Command=FEFE04E0.06.03.FD +ReplyLength=13 +Validate=FEFE04E00603FD.FEFEE004FBFD + +[pmSSB_U] +Command=FEFE04E0.06.01.FD +ReplyLength=13 +Validate=FEFE04E00601FD.FEFEE004FBFD + +[pmSSB_L] +Command=FEFE04E0.06.00.FD +ReplyLength=13 +Validate=FEFE04E00600FD.FEFEE004FBFD + +[pmAM] +Command=FEFE04E0.06.02.FD +ReplyLength=13 +Validate=FEFE04E00602FD.FEFEE004FBFD + +[pmFM] +Command=FEFE04E0.06.05.FD +ReplyLength=13 +Validate=FEFE04E00605FD.FEFEE004FBFD +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +[STATUS1] +Command=FEFE04E0.03.FD +ReplyLength=16 +Validate=FEFE04E003FD.FEFEE004.03.00000000.FD +Value=11|4|vfBcdLU|1|0|pmFreq \ No newline at end of file diff --git a/CATCheck/Rigs/IC-735.ini b/CATCheck/Rigs/IC-735.ini new file mode 100644 index 0000000..cd6d2ff --- /dev/null +++ b/CATCheck/Rigs/IC-735.ini @@ -0,0 +1,93 @@ +;------------------------------------------------------------------------------- +; Icom IC-735 command set +; +; File created by Alex Shovkoplyas, VE3NEA ve3nea@dxatlas.com +; Corrected by RK0SK and UR5EQF +; and DL6JH dl6jh@t-online.de +;------------------------------------------------------------------------------- + + + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreq] +Command=FEFE04E0.05.00000000.FD +Value=5|4|vfBcdLU|1|0 +ReplyLength=16 +Validate=FEFE04E00500000000FD.FEFEE004FBFD + + + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmVfoA] +Command=FEFE04E0.0700.FD +ReplyLength=13 +Validate=FEFE04E00700FD.FEFEE004FBFD + +[pmVfoB] +Command=FEFE04E0.0701.FD +ReplyLength=13 +Validate=FEFE04E00701FD.FEFEE004FBFD + + + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +Command=FEFE04E0.06.03.FD +ReplyLength=13 +Validate=FEFE04E00603FD.FEFEE004FBFD + +[pmSSB_U] +Command=FEFE04E0.06.01.FD +ReplyLength=13 +Validate=FEFE04E00601FD.FEFEE004FBFD + +[pmSSB_L] +Command=FEFE04E0.06.00.FD +ReplyLength=13 +Validate=FEFE04E00600FD.FEFEE004FBFD + +[pmDIG_U] +Command=FEFE04E0.06.04.FD +ReplyLength=13 +Validate=FEFE04E00608FD.FEFEE004FBFD + +[pmAM] +Command=FEFE04E0.06.02.FD +ReplyLength=13 +Validate=FEFE04E00602FD.FEFEE004FBFD + +[pmFM] +Command=FEFE04E0.06.05.FD +ReplyLength=13 +Validate=FEFE04E00605FD.FEFEE004FBFD + + + + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +[STATUS1] +Command=FEFE04E0.03.FD +ReplyLength=16 +Validate=FEFE04E003FD.FEFEE004.03.00000000.FD +Value1=11|4|vfBcdLU|1|0|pmFreq + + + +[STATUS2] +Command=FEFE04E0.04.FD +ReplyLength=13 +Validate=FEFE04E004FD.FEFEE00404.00.FD +Flag1=000000000000.0000000000.FF.00|000000000000.0000000000.03.00|pmCW_U +Flag2=000000000000.0000000000.FF.00|000000000000.0000000000.01.00|pmSSB_U +Flag3=000000000000.0000000000.FF.00|000000000000.0000000000.00.00|pmSSB_L +Flag4=000000000000.0000000000.FF.00|000000000000.0000000000.04.00|pmDIG_U +Flag5=000000000000.0000000000.FF.00|000000000000.0000000000.02.00|pmAM +Flag6=000000000000.0000000000.FF.00|000000000000.0000000000.05.00|pmFM diff --git a/CATCheck/Rigs/IC-736 (untested).ini b/CATCheck/Rigs/IC-736 (untested).ini new file mode 100644 index 0000000..dcc6e35 --- /dev/null +++ b/CATCheck/Rigs/IC-736 (untested).ini @@ -0,0 +1,177 @@ +;------------------------------------------------------------------------------- +; Icom IC-738 command set +; +; File created for IC-737 by RZ4AG aia@dxsoft.com +; Modified for IC-736 by YO3IPR / G4IPR but untested +;------------------------------------------------------------------------------- + + + + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT] +;none + + + + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreqA] +;not supported + +[pmFreqB] +;not supported + +[pmFreq] +Command=FEFE40E0.05.0000000000.FD +Value=5|5|vfBcdLU|1|0 +ReplyLength=17 +Validate=FEFE40E0050000000000FD.FEFEE040FBFD + +[pmRitOffset] +;not supported + +[pmRit0] +;not supported + +[pmPitch] +;not supported + + + + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +;not supported + +[pmSplitOff] +;not supported + +[pmVfoA] +Command=FEFE40E0.0700.FD +ReplyLength=13 +Validate=FEFE40E00700FD.FEFEE040FBFD + +[pmVfoB] +Command=FEFE40E0.0701.FD +ReplyLength=13 +Validate=FEFE40E00701FD.FEFEE040FBFD + +[pmVfoEqual] +Command=FEFE40E0.07A0.FD +ReplyLength=13 +Validate=FEFE40E007A0FD.FEFEE040FBFD + +[pmVfoSwap] +;not supported + +[pmVfoAA] +;not supported + +[pmVfoAB] +;not supported + +[pmVfoBA] +;not supported + +[pmVfoBB] +;not supported + +[pmRitOn] +;not supported + +[pmRitOff] +;not supported + +[pmXitOn] +;not supported + +[pmXitOff] +;not supported + +[pmRx] +;not supported + +[pmTx] +;not supported + + + + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +Command=FEFE40E0.06.03.FD +ReplyLength=13 +Validate=FEFE40E00603FD.FEFEE040FBFD + +[pmCW_L] +Command=FEFE40E0.06.07.FD +ReplyLength=13 +Validate=FEFE40E00607FD.FEFEE040FBFD + +[pmSSB_U] +Command=FEFE40E0.06.01.FD +ReplyLength=13 +Validate=FEFE40E00601FD.FEFEE040FBFD + +[pmSSB_L] +Command=FEFE40E0.06.00.FD +ReplyLength=13 +Validate=FEFE40E00600FD.FEFEE040FBFD + +[pmDIG_U] +Command=FEFE40E0.06.04.FD +ReplyLength=13 +Validate=FEFE40E00604FD.FEFEE040FBFD + +[pmDIG_L] +Command=FEFE40E0.06.08.FD +ReplyLength=13 +Validate=FEFE40E00608FD.FEFEE040FBFD + +[pmAM] +Command=FEFE04E0.06.02.FD +ReplyLength=13 +Validate=FEFE40E00602FD.FEFEE040FBFD + +[pmFM] +Command=FEFE40E0.06.05.FD +ReplyLength=13 +Validate=FEFE40E00605FD.FEFEE040FBFD + + + + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +[STATUS1] +;The command name in the manual is Read Frequencies. +;However, it returns just one frequency +Command=FEFE40E0.03.FD +ReplyLength=17 +Validate=FEFE40E003FD.FEFEE040.03.0000000000.FD +Value1=11|5|vfBcdLU|1|0|pmFreq + +[STATUS2] +Command=FEFE40E0.04.FD +ReplyLength=14 +Validate=FEFE40E004FD.FEFEE040.04.0000.FD +;filter byte is appended to the mode byte? +Flag1=000000000000.0000000000.FF.0000|000000000000.0000000000.03.0000|pmCW_U +Flag2=000000000000.0000000000.FF.0000|000000000000.0000000000.07.0000|pmCW_L +Flag3=000000000000.0000000000.FF.0000|000000000000.0000000000.01.0000|pmSSB_U +Flag4=000000000000.0000000000.FF.0000|000000000000.0000000000.00.0000|pmSSB_L +Flag5=000000000000.0000000000.FF.0000|000000000000.0000000000.04.0000|pmDIG_U +Flag6=000000000000.0000000000.FF.0000|000000000000.0000000000.08.0000|pmDIG_L +Flag7=000000000000.0000000000.FF.0000|000000000000.0000000000.02.0000|pmAM +Flag8=000000000000.0000000000.FF.0000|000000000000.0000000000.05.0000|pmFM diff --git a/CATCheck/Rigs/IC-737.ini b/CATCheck/Rigs/IC-737.ini new file mode 100644 index 0000000..47a98b7 --- /dev/null +++ b/CATCheck/Rigs/IC-737.ini @@ -0,0 +1,176 @@ +;------------------------------------------------------------------------------- +; Icom IC-737 command set +; +; File created by RZ4AG aia@dxsoft.com +;------------------------------------------------------------------------------- + + + + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT] +;none + + + + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreqA] +;not supported + +[pmFreqB] +;not supported + +[pmFreq] +Command=FEFE3CE0.05.0000000000.FD +Value=5|5|vfBcdLU|1|0 +ReplyLength=17 +Validate=FEFE3CE0050000000000FD.FEFEE03CFBFD + +[pmRitOffset] +;not supported + +[pmRit0] +;not supported + +[pmPitch] +;not supported + + + + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +;not supported + +[pmSplitOff] +;not supported + +[pmVfoA] +Command=FEFE3CE0.0700.FD +ReplyLength=13 +Validate=FEFE3CE00700FD.FEFEE03CFBFD + +[pmVfoB] +Command=FEFE3CE0.0701.FD +ReplyLength=13 +Validate=FEFE3CE00701FD.FEFEE03CFBFD + +[pmVfoEqual] +Command=FEFE3CE0.07A0.FD +ReplyLength=13 +Validate=FEFE3CE007A0FD.FEFEE03CFBFD + +[pmVfoSwap] +;not supported + +[pmVfoAA] +;not supported + +[pmVfoAB] +;not supported + +[pmVfoBA] +;not supported + +[pmVfoBB] +;not supported + +[pmRitOn] +;not supported + +[pmRitOff] +;not supported + +[pmXitOn] +;not supported + +[pmXitOff] +;not supported + +[pmRx] +;not supported + +[pmTx] +;not supported + + + + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +Command=FEFE3CE0.06.03.FD +ReplyLength=13 +Validate=FEFE3CE00603FD.FEFEE03CFBFD + +[pmCW_L] +Command=FEFE3CE0.06.07.FD +ReplyLength=13 +Validate=FEFE3CE00607FD.FEFEE03CFBFD + +[pmSSB_U] +Command=FEFE3CE0.06.01.FD +ReplyLength=13 +Validate=FEFE3CE00601FD.FEFEE03CFBFD + +[pmSSB_L] +Command=FEFE3CE0.06.00.FD +ReplyLength=13 +Validate=FEFE3CE00600FD.FEFEE03CFBFD + +[pmDIG_U] +Command=FEFE3CE0.06.04.FD +ReplyLength=13 +Validate=FEFE3CE00604FD.FEFEE03CFBFD + +[pmDIG_L] +Command=FEFE3CE0.06.08.FD +ReplyLength=13 +Validate=FEFE3CE00608FD.FEFEE03CFBFD + +[pmAM] +Command=FEFE04E0.06.02.FD +ReplyLength=13 +Validate=FEFE3CE00602FD.FEFEE03CFBFD + +[pmFM] +Command=FEFE3CE0.06.05.FD +ReplyLength=13 +Validate=FEFE3CE00605FD.FEFEE03CFBFD + + + + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +[STATUS1] +;The command name in the manual is Read Frequencies. +;However, it returns just one frequency +Command=FEFE3CE0.03.FD +ReplyLength=17 +Validate=FEFE3CE003FD.FEFEE03C.03.0000000000.FD +Value1=11|5|vfBcdLU|1|0|pmFreq + +[STATUS2] +Command=FEFE3CE0.04.FD +ReplyLength=14 +Validate=FEFE3CE004FD.FEFEE03C.04.0000.FD +;filter byte is appended to the mode byte? +Flag1=000000000000.0000000000.FF.0000|000000000000.0000000000.03.0000|pmCW_U +Flag2=000000000000.0000000000.FF.0000|000000000000.0000000000.07.0000|pmCW_L +Flag3=000000000000.0000000000.FF.0000|000000000000.0000000000.01.0000|pmSSB_U +Flag4=000000000000.0000000000.FF.0000|000000000000.0000000000.00.0000|pmSSB_L +Flag5=000000000000.0000000000.FF.0000|000000000000.0000000000.04.0000|pmDIG_U +Flag6=000000000000.0000000000.FF.0000|000000000000.0000000000.08.0000|pmDIG_L +Flag7=000000000000.0000000000.FF.0000|000000000000.0000000000.02.0000|pmAM +Flag8=000000000000.0000000000.FF.0000|000000000000.0000000000.05.0000|pmFM diff --git a/CATCheck/Rigs/IC-738.ini b/CATCheck/Rigs/IC-738.ini new file mode 100644 index 0000000..765adba --- /dev/null +++ b/CATCheck/Rigs/IC-738.ini @@ -0,0 +1,177 @@ +;------------------------------------------------------------------------------- +; Icom IC-738 command set +; +; File created for IC-737 by RZ4AG aia@dxsoft.com +; Modified & tested on IC-738 by YO3IPR / G4IPR +;------------------------------------------------------------------------------- + + + + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT] +;none + + + + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreqA] +;not supported + +[pmFreqB] +;not supported + +[pmFreq] +Command=FEFE44E0.05.0000000000.FD +Value=5|5|vfBcdLU|1|0 +ReplyLength=17 +Validate=FEFE44E0050000000000FD.FEFEE044FBFD + +[pmRitOffset] +;not supported + +[pmRit0] +;not supported + +[pmPitch] +;not supported + + + + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +;not supported + +[pmSplitOff] +;not supported + +[pmVfoA] +Command=FEFE44E0.0700.FD +ReplyLength=13 +Validate=FEFE44E00700FD.FEFEE044FBFD + +[pmVfoB] +Command=FEFE44E0.0701.FD +ReplyLength=13 +Validate=FEFE44E00701FD.FEFEE044FBFD + +[pmVfoEqual] +Command=FEFE44E0.07A0.FD +ReplyLength=13 +Validate=FEFE44E007A0FD.FEFEE044FBFD + +[pmVfoSwap] +;not supported + +[pmVfoAA] +;not supported + +[pmVfoAB] +;not supported + +[pmVfoBA] +;not supported + +[pmVfoBB] +;not supported + +[pmRitOn] +;not supported + +[pmRitOff] +;not supported + +[pmXitOn] +;not supported + +[pmXitOff] +;not supported + +[pmRx] +;not supported + +[pmTx] +;not supported + + + + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +Command=FEFE44E0.06.03.FD +ReplyLength=13 +Validate=FEFE44E00603FD.FEFEE044FBFD + +[pmCW_L] +Command=FEFE44E0.06.07.FD +ReplyLength=13 +Validate=FEFE44E00607FD.FEFEE044FBFD + +[pmSSB_U] +Command=FEFE44E0.06.01.FD +ReplyLength=13 +Validate=FEFE44E00601FD.FEFEE044FBFD + +[pmSSB_L] +Command=FEFE44E0.06.00.FD +ReplyLength=13 +Validate=FEFE44E00600FD.FEFEE044FBFD + +[pmDIG_U] +Command=FEFE44E0.06.04.FD +ReplyLength=13 +Validate=FEFE44E00604FD.FEFEE044FBFD + +[pmDIG_L] +Command=FEFE44E0.06.08.FD +ReplyLength=13 +Validate=FEFE44E00608FD.FEFEE044FBFD + +[pmAM] +Command=FEFE04E0.06.02.FD +ReplyLength=13 +Validate=FEFE44E00602FD.FEFEE044FBFD + +[pmFM] +Command=FEFE44E0.06.05.FD +ReplyLength=13 +Validate=FEFE44E00605FD.FEFEE044FBFD + + + + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +[STATUS1] +;The command name in the manual is Read Frequencies. +;However, it returns just one frequency +Command=FEFE44E0.03.FD +ReplyLength=17 +Validate=FEFE44E003FD.FEFEE044.03.0000000000.FD +Value1=11|5|vfBcdLU|1|0|pmFreq + +[STATUS2] +Command=FEFE44E0.04.FD +ReplyLength=14 +Validate=FEFE44E004FD.FEFEE044.04.0000.FD +;filter byte is appended to the mode byte? +Flag1=000000000000.0000000000.FF.0000|000000000000.0000000000.03.0000|pmCW_U +Flag2=000000000000.0000000000.FF.0000|000000000000.0000000000.07.0000|pmCW_L +Flag3=000000000000.0000000000.FF.0000|000000000000.0000000000.01.0000|pmSSB_U +Flag4=000000000000.0000000000.FF.0000|000000000000.0000000000.00.0000|pmSSB_L +Flag5=000000000000.0000000000.FF.0000|000000000000.0000000000.04.0000|pmDIG_U +Flag6=000000000000.0000000000.FF.0000|000000000000.0000000000.08.0000|pmDIG_L +Flag7=000000000000.0000000000.FF.0000|000000000000.0000000000.02.0000|pmAM +Flag8=000000000000.0000000000.FF.0000|000000000000.0000000000.05.0000|pmFM diff --git a/CATCheck/Rigs/IC-7410 (1).ini b/CATCheck/Rigs/IC-7410 (1).ini new file mode 100644 index 0000000..2cfa5b3 --- /dev/null +++ b/CATCheck/Rigs/IC-7410 (1).ini @@ -0,0 +1,162 @@ +;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< +; +; Icom IC-7410 Omni-Rig commands +; +; File created by: Elijah Figueroa, N0ZLD (nzerozld@gmail.com) +; +; Revision 1.0 - 2011-09-11 +; +; NOTE: You MUST disable CI-V Transceive in your radio for Omni-Rig to work! +; +; Hold MENU, select item 44 (CI-V Transceive) and rotate the dial to select +; 'OFF' then push MENU to save the change. This can also be found in page 89 +; in the IC-7410 PDF manual: +; +; http://www.icomamerica.com/en/downloads/DownloadDocument.aspx?Document=544 +; +; If you have changed your default CI-V address from 80 to something else, +; do a find and replace in this INI file. First, Find FEFE80E0 and replace with +; FEFEXXE0 where XX is your numerical address. +; +;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + +;-------------------------------------------------------------------------- +; Initialize the radio +;-------------------------------------------------------------------------- + +; +; +; +[INIT1] +Command=FEFE80E0.1A050092.00.FD +ReplyLength=16 +Validate=FEFE80E01A05009200FD.FEFEE080FBFD + + +;-------------------------------------------------------------------------- +; Set frequency +;-------------------------------------------------------------------------- + +; Set operating frequency +[pmFreq] +Command=FEFE80E0.05.0000000000.FD +Value=5|5|vfBcdLU|1|0 +ReplyLength=17 +Validate=FEFE80E0050000000000FD.FEFEE080FBFD + + +;-------------------------------------------------------------------------- +; Set Split, Rx & Tx +;-------------------------------------------------------------------------- + +; Turn Split function on +[pmSplitOn] +Command=FEFE80E0.0F01.FD +ReplyLength=13 +Validate=FEFE80E00F01FD.FEFEE080FBFD + +; Turn Split function off +[pmSplitOff] +Command=FEFE80E0.0F00.FD +ReplyLength=13 +Validate=FEFE80E00F00FD.FEFEE080FBFD + +; Enable receive mode +[pmRx] +Command=FEFE80E0.1C00.00.FD +ReplyLength=14 +Validate=FEFE80E01C0000FD.FEFEE080FBFD + +; Enable transmit mode +[pmTx] +Command=FEFE80E0.1C00.01.FD +ReplyLength=14 +Validate=FEFE80E01C0001FD.FEFEE080FBFD + + +;-------------------------------------------------------------------------- +; Set modes of the radio +;-------------------------------------------------------------------------- + +; Upper sideband CW +[pmCW_U] +Command=FEFE80E0.06.07.FD +ReplyLength=13 +Validate=FEF704E00607FD.FEFEE080FBFD + +; Lower sideband CW +[pmCW_L] +Command=FEFE80E0.06.03.FD +ReplyLength=13 +Validate=FEFE80E00603FD.FEFEE080FBFD + +; USB +[pmSSB_U] +Command=FEFE80E0.06.01.FD +ReplyLength=13 +Validate=FEFE80E00601FD.FEFEE080FBFD + +; LSB +[pmSSB_L] +Command=FEFE80E0.06.00.FD +ReplyLength=13 +Validate=FEFE80E00600FD.FEFEE080FBFD + +; Upper sideband digital modes +[pmDIG_U] +Command=FEFE80E0.06.08.FD +ReplyLength=13 +Validate=FEFE80E00608FD.FEFEE080FBFD + +; Lower sideband digital modes +[pmDIG_L] +Command=FEFE80E0.06.04.FD +ReplyLength=13 +Validate=FEFE80E00604FD.FEFEE080FBFD + +; AM +[pmAM] +Command=FEFE80E0.06.02.FD +ReplyLength=13 +Validate=FEFE80E00602FD.FEFEE080FBFD + +; FM +[pmFM] +Command=FEFE80E0.06.05.FD +ReplyLength=13 +Validate=FEFE80E00605FD.FEFEE080FBFD + + +;------------------------------------------------------------------------ +; Read the status of the radio +;------------------------------------------------------------------------ + +; Read the current frequency +[STATUS1] +Command=FEFE80E0.03.FD +ReplyLength=17 +Validate=FEFE80E003FD.FEFEE080.03.0000000000.FD +Value1=11|5|vfBcdLU|1|0|pmFreq + +; Read the current operating mode +[STATUS2] +Command=FEFE80E0.04.FD +ReplyLength=14 +Validate=FEFE80E004FD.FEFEE080.04.0000.FD +Flag1=000000000000.0000000000.FF.0000|000000000000.0000000000.07.0000|pmCW_U +Flag2=000000000000.0000000000.FF.0000|000000000000.0000000000.03.0000|pmCW_L +Flag3=000000000000.0000000000.FF.0000|000000000000.0000000000.01.0000|pmSSB_U +Flag4=000000000000.0000000000.FF.0000|000000000000.0000000000.00.0000|pmSSB_L +Flag5=000000000000.0000000000.FF.0000|000000000000.0000000000.08.0000|pmDIG_U +Flag6=000000000000.0000000000.FF.0000|000000000000.0000000000.04.0000|pmDIG_L +Flag7=000000000000.0000000000.FF.0000|000000000000.0000000000.02.0000|pmAM +Flag8=000000000000.0000000000.FF.0000|000000000000.0000000000.05.0000|pmFM + +; Are we in Rx or Tx? +[STATUS3] +Command=FEFE80E0.1C00.FD +ReplyLength=15 +Validate=FEFE80E01C00FD.FEFEE080.1C00.00.FD +Flag1=00000000000000.00000000.0000.01.00|pmTx +Flag2=00000000000000.00000000.0000.FF.00|00000000000000.00000000.0000.00.00|pmRx + diff --git a/CATCheck/Rigs/IC-7410.ini b/CATCheck/Rigs/IC-7410.ini new file mode 100644 index 0000000..e5be31f --- /dev/null +++ b/CATCheck/Rigs/IC-7410.ini @@ -0,0 +1,151 @@ +;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< +; +; Icom IC-7410 Omni-Rig commands +; +; File for IC-7600 created by Makoto Kasahara / JN1GLB : jn1glb@jarl.com +; +; File modified for IC-7410 by Ian Stirling VK3MZ June 2011: +; ianstirling@optusnet.com.au +; +;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + +;-------------------------------------------------------------------------- +; Initialize the radio +;-------------------------------------------------------------------------- + +; +; +; +[INIT1] +Command=FEFE80E0.1A050089.02.FD +ReplyLength=16 +Validate=FEFE80E01A05008902FD.FEFEE080FBFD + + +;-------------------------------------------------------------------------- +; Set frequency +;-------------------------------------------------------------------------- + +; Set operating frequency +[pmFreq] +Command=FEFE80E0.05.0000000000.FD +Value=5|5|vfBcdLU|1|0 +ReplyLength=17 +Validate=FEFE80E0050000000000FD.FEFEE080FBFD + + +;-------------------------------------------------------------------------- +; Set Split, Rx & Tx +;-------------------------------------------------------------------------- + +; Turn Split function on +[pmSplitOn] +Command=FEFE80E0.0F01.FD +ReplyLength=13 +Validate=FEFE80E00F01FD.FEFEE080FBFD + +; Turn Split function off +[pmSplitOff] +Command=FEFE80E0.0F00.FD +ReplyLength=13 +Validate=FEFE80E00F00FD.FEFEE080FBFD + +; Enable receive mode +[pmRx] +Command=FEFE80E0.1C00.00.FD +ReplyLength=14 +Validate=FEFE80E01C0000FD.FEFEE080FBFD + +; Enable transmit mode +[pmTx] +Command=FEFE80E0.1C00.01.FD +ReplyLength=14 +Validate=FEFE80E01C0001FD.FEFEE080FBFD + + +;-------------------------------------------------------------------------- +; Set modes of the radio +;-------------------------------------------------------------------------- + +; Upper sideband CW +[pmCW_U] +Command=FEFE80E0.06.07.FD +ReplyLength=13 +Validate=FEFE80E00607FD.FEFEE080FBFD + +; Lower sideband CW +[pmCW_L] +Command=FEFE80E0.06.03.FD +ReplyLength=13 +Validate=FEFE80E00603FD.FEFEE080FBFD + +; USB +[pmSSB_U] +Command=FEFE80E0.06.01.FD +ReplyLength=13 +Validate=FEFE80E00601FD.FEFEE080FBFD + +; LSB +[pmSSB_L] +Command=FEFE80E0.06.00.FD +ReplyLength=13 +Validate=FEFE80E00600FD.FEFEE080FBFD + +; Upper sideband digital modes +[pmDIG_U] +Command=FEFE80E0.06.08.FD +ReplyLength=13 +Validate=FEFE80E00608FD.FEFEE080FBFD + +; Lower sideband digital modes +[pmDIG_L] +Command=FEFE80E0.06.04.FD +ReplyLength=13 +Validate=FEFE80E00604FD.FEFEE080FBFD + +; AM +[pmAM] +Command=FEFE80E0.06.02.FD +ReplyLength=13 +Validate=FEFE80E00602FD.FEFEE080FBFD + +; FM +[pmFM] +Command=FEFE80E0.06.05.FD +ReplyLength=13 +Validate=FEFE80E00605FD.FEFEE080FBFD + + +;------------------------------------------------------------------------ +; Read the status of the radio +;------------------------------------------------------------------------ + +; Read the current frequency +[STATUS1] +Command=FEFE80E0.03.FD +ReplyLength=17 +Validate=FEFE80E003FD.FEFEE080.03.0000000000.FD +Value1=11|5|vfBcdLU|1|0|pmFreq + +; Read the current operating mode +[STATUS2] +Command=FEFE80E0.04.FD +ReplyLength=14 +Validate=FEFE80E004FD.FEFEE080.04.0000.FD +Flag1=000000000000.0000000000.FF.0000|000000000000.0000000000.07.0000|pmCW_U +Flag2=000000000000.0000000000.FF.0000|000000000000.0000000000.03.0000|pmCW_L +Flag3=000000000000.0000000000.FF.0000|000000000000.0000000000.01.0000|pmSSB_U +Flag4=000000000000.0000000000.FF.0000|000000000000.0000000000.00.0000|pmSSB_L +Flag5=000000000000.0000000000.FF.0000|000000000000.0000000000.08.0000|pmDIG_U +Flag6=000000000000.0000000000.FF.0000|000000000000.0000000000.04.0000|pmDIG_L +Flag7=000000000000.0000000000.FF.0000|000000000000.0000000000.02.0000|pmAM +Flag8=000000000000.0000000000.FF.0000|000000000000.0000000000.05.0000|pmFM + +; Are we in Rx or Tx? +[STATUS3] +Command=FEFE80E0.1C00.FD +ReplyLength=15 +Validate=FEFE80E01C00FD.FEFEE080.1C00.00.FD +Flag1=00000000000000.00000000.0000.01.00|pmTx +Flag2=00000000000000.00000000.0000.FF.00|00000000000000.00000000.0000.00.00|pmRx + diff --git a/CATCheck/Rigs/IC-7410v2.ini b/CATCheck/Rigs/IC-7410v2.ini new file mode 100644 index 0000000..b19731c --- /dev/null +++ b/CATCheck/Rigs/IC-7410v2.ini @@ -0,0 +1,223 @@ +;------------------------------------------------------------------------------- +; Icom IC-7410 with corrected command set +; +; IC-7410v2 File created by Bob Wilson, N6TV, n6tv@arrl.net +; +; Tested by: N6TV @ HRO Sunnyvale, CA +;------------------------------------------------------------------------------- + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT1] +;Turn CI-V transceive OFF +Command=FEFE80E0.1A050040.00.FD +ReplyLength=16 +Validate=FEFE80E01A05004000FD.FEFEE080FBFD + +[INIT2] +;set CW normal to lower sideband +Command=FEFE80E0.1A050033.00.FD +ReplyLength=16 +Validate=FEFE80E01A05003300FD.FEFEE080FBFD + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreqA] +;not supported + +[pmFreqB] +;not supported + +[pmFreq] +Command=FEFE80E0.05.0000000000.FD +Value=5|5|vfBcdLU|1|0 +ReplyLength=17 +Validate=FEFE80E0050000000000FD.FEFEE080FBFD + +[pmRitOffset] +;not supported + +[pmRit0] +;not supported + +[pmPitch] +;test the 0.425|-127.5 params. should map 300Hz->0, 900Hz->255 +Command=FEFE80E0.14.09.0000.FD +Value=6|2|vfBcdBU|0.425|-127.5 +ReplyLength=15 +Validate=FEFE80E014090000FD.FEFEE080FBFD + + + + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +Command=FEFE80E0.0F01.FD +ReplyLength=13 +Validate=FEFE80E00F01FD.FEFEE080FBFD + +[pmSplitOff] +Command=FEFE80E0.0F00.FD +ReplyLength=13 +Validate=FEFE80E00F00FD.FEFEE080FBFD + +[pmVfoA] +Command=FEFE80E0.0700.FD +ReplyLength=13 +Validate=FEFE80E00700FD.FEFEE080FBFD + +[pmVfoB] +Command=FEFE80E0.0701.FD +ReplyLength=13 +Validate=FEFE80E00701FD.FEFEE080FBFD + +[pmVfoEqual] +Command=FEFE80E0.07A0.FD +ReplyLength=13 +Validate=FEFE80E007A0FD.FEFEE080FBFD + +[pmVfoSwap] +Command=FEFE80E0.07B0.FD +ReplyLength=13 +Validate=FEFE80E007B0FD.FEFEE080FBFD + +[pmVfoAA] +Command=FEFE80E0.0700.FD.FEFE80E0.0F00.FD +ReplyLength=20 +Validate=FEFE80E00700FD.FEFE80E00F00FD.FEFEE080FBFD + +[pmVfoAB] +Command=FEFE80E0.0700.FD.FEFE80E0.0F01.FD +ReplyLength=20 +Validate=FEFE80E00700FD.FEFE80E00F01FD.FEFEE080FBFD + +[pmVfoBA] +Command=FEFE80E0.0701.FD.FEFE80E0.0F01.FD +ReplyLength=20 +Validate=FEFE80E00701FD.FEFE80E00F01FD.FEFEE080FBFD + +[pmVfoBB] +Command=FEFE80E0.0701.FD.FEFE80E0.0F00.FD +ReplyLength=20 +Validate=FEFE80E00701FD.FEFE80E00F00FD.FEFEE080FBFD + +[pmRitOn] +;not supported + +[pmRitOff] +;not supported + +[pmXitOn] +;Not supported + +[pmXitOff] +;Not supported + +[pmRx] +Command=FEFE80E0.1C00.00.FD +ReplyLength=14 +Validate=FEFE80E01C0000FD.FEFEE080FBFD + +[pmTx] +Command=FEFE80E0.1C00.01.FD +ReplyLength=14 +Validate=FEFE80E01C0001FD.FEFEE080FBFD + + + + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +; CW-R +Command=FEFE80E0.06.07.FD +ReplyLength=13 +Validate=FEFE80E00607FD.FEFEE080FBFD + +[pmCW_L] +; CW Normal +Command=FEFE80E0.06.03.FD +ReplyLength=13 +Validate=FEFE80E00603FD.FEFEE080FBFD + +[pmSSB_U] +Command=FEFE80E0.06.01.FD +ReplyLength=13 +Validate=FEFE80E00601FD.FEFEE080FBFD + +[pmSSB_L] +Command=FEFE80E0.06.00.FD +ReplyLength=13 +Validate=FEFE80E00600FD.FEFEE080FBFD + +[pmDIG_U] +Command=FEFE80E0.06.08.FD +ReplyLength=13 +Validate=FEFE80E00608FD.FEFEE080FBFD + +[pmDIG_L] +Command=FEFE80E0.06.04.FD +ReplyLength=13 +Validate=FEFE80E00604FD.FEFEE080FBFD + +[pmAM] +Command=FEFE80E0.06.02.FD +ReplyLength=13 +Validate=FEFE80E00602FD.FEFEE080FBFD + +[pmFM] +Command=FEFE80E0.06.05.FD +ReplyLength=13 +Validate=FEFE80E00605FD.FEFEE080FBFD + + + + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +[STATUS1] +Command=FEFE80E0.03.FD +ReplyLength=17 +Validate=FEFE80E003FD.FEFEE080.03.0000000000.FD +Value1=11|5|vfBcdLU|1|0|pmFreq + +[STATUS2] +Command=FEFE80E0.04.FD +ReplyLength=14 +Validate=FEFE80E004FD.FEFEE080.04.0000.FD +Flag1=000000000000.0000000000.FF.0000|000000000000.0000000000.07.0000|pmCW_U +Flag2=000000000000.0000000000.FF.0000|000000000000.0000000000.03.0000|pmCW_L +Flag3=000000000000.0000000000.FF.0000|000000000000.0000000000.01.0000|pmSSB_U +Flag4=000000000000.0000000000.FF.0000|000000000000.0000000000.00.0000|pmSSB_L +Flag5=000000000000.0000000000.FF.0000|000000000000.0000000000.08.0000|pmDIG_U +Flag6=000000000000.0000000000.FF.0000|000000000000.0000000000.04.0000|pmDIG_L +Flag7=000000000000.0000000000.FF.0000|000000000000.0000000000.02.0000|pmAM +Flag8=000000000000.0000000000.FF.0000|000000000000.0000000000.05.0000|pmFM + +[STATUS3] +Command=FEFE80E0.1409.FD +ReplyLength=16 +Validate=FEFE80E01409FD.FEFEE080.1409.0000.FD +; 0=300 Hz, 255=900 Hz +Value1=13|2|vfBcdBU|2.362205|300|pmPitch + +[STATUS4] +Command=FEFE80E0.1C00.FD +ReplyLength=15 +Validate=FEFE80E01C00FD.FEFEE080.1C00.00.FD +Flag1=00000000000000.00000000.0000.01.00|pmTx +Flag2=00000000000000.00000000.0000.0F.00|00000000000000.00000000.0000.00.00|pmRx + +[STATUS5] +Command=FEFE80E0.0F.FD +ReplyLength=13 +Validate=FEFE80E00FFD.FEFEE080.0F.00.FD +Flag1=000000000000.00000000.00.01.00|pmSplitOn +Flag2=000000000000.00000000.00.0F.00|000000000000.00000000.00.00.00|pmSplitOff diff --git a/CATCheck/Rigs/IC-746 Pro.ini b/CATCheck/Rigs/IC-746 Pro.ini new file mode 100644 index 0000000..e821585 --- /dev/null +++ b/CATCheck/Rigs/IC-746 Pro.ini @@ -0,0 +1,213 @@ +;------------------------------------------------------------------------------- +; Icom IC-746 Pro command set +; +; File created by Alex Shovkoplyas, VE3NEA ve3nea@dxatlas.com +;------------------------------------------------------------------------------- + + + + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT1] +;disable transceive mode +Command=FEFE66E0.1A0536.00.FD +ReplyLength=15 +Validate=FEFE66E01A053600FD.FEFEE066FBFD + +[INIT2] +;disable 731 mode +Command=FEFE66E0.1A0537.00.FD +ReplyLength=15 +Validate=FEFE66E01A053700FD.FEFEE066FBFD + + + + + + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreqA] +;not supported + +[pmFreqB] +;not supported + +[pmFreq] +Command=FEFE66E0.05.0000000000.FD +Value=5|5|vfBcdLU|1|0 +ReplyLength=17 +Validate=FEFE66E0050000000000FD.FEFEE066FBFD + +[pmRitOffset] +;not supported +;+/- 1.2 KHz + +[pmRit0] +;not supported + +[pmPitch] +Command=FEFE66E0.1409.0000.FD +;300Hz=0 600Hz=128 900Hz=255 +Value=6|2|vfBcdLU|0.425|-127.5 +ReplyLength=15 +Validate=FEFE66E014090000FD.FEFEE066FBFD + + + + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +Command=FEFE66E0.0F01.FD +ReplyLength=13 +Validate=FEFE66E00F01FD.FEFEE066FBFD + +[pmSplitOff] +Command=FEFE66E0.0F00.FD +ReplyLength=13 +Validate=FEFE66E00F00FD.FEFEE066FBFD + +[pmVfoA] +Command=FEFE66E0.0700.FD +ReplyLength=13 +Validate=FEFE66E00700FD.FEFEE066FBFD + +[pmVfoB] +Command=FEFE66E0.0701.FD +ReplyLength=13 +Validate=FEFE66E00701FD.FEFEE066FBFD + +[pmVfoEqual] +Command=FEFE66E0.07A0.FD +ReplyLength=13 +Validate=FEFE66E007A0FD.FEFEE066FBFD + +[pmVfoSwap] +Command=FEFE66E0.07B0.FD +ReplyLength=13 +Validate=FEFE66E007B0FD.FEFEE066FBFD + +[pmVfoAA] +;not supported + +[pmVfoAB] +;not supported + +[pmVfoBA] +;not supported + +[pmVfoBB] +;not supported + +[pmRitOn] +;not supported + +[pmRitOff] +;not supported + +[pmXitOn] +;not supported + +[pmXitOff] +;not supported + +[pmRx] +Command=FEFE66E0.1C00.00.FD +ReplyLength=14 +Validate=FEFE66E01C0000FD.FEFEE066FBFD + +[pmTx] +Command=FEFE66E0.1C00.01.FD +ReplyLength=14 +Validate=FEFE66E01C0001FD.FEFEE066FBFD + + + + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +Command=FEFE66E0.06.03.FD +ReplyLength=13 +Validate=FEFE66E00603FD.FEFEE066FBFD + +[pmCW_L] +Command=FEFE66E0.06.07.FD +ReplyLength=13 +Validate=FEFE66E00607FD.FEFEE066FBFD + +[pmSSB_U] +Command=FEFE66E0.06.01.FD +ReplyLength=13 +Validate=FEFE66E00601FD.FEFEE066FBFD + +[pmSSB_L] +Command=FEFE66E0.06.00.FD +ReplyLength=13 +Validate=FEFE66E00600FD.FEFEE066FBFD + +[pmDIG_U] +Command=FEFE66E0.06.04.FD +ReplyLength=13 +Validate=FEFE66E00604FD.FEFEE066FBFD + +[pmDIG_L] +Command=FEFE66E0.06.08.FD +ReplyLength=13 +Validate=FEFE66E00608FD.FEFEE066FBFD + +[pmAM] +Command=FEFE66E0.06.02.FD +ReplyLength=13 +Validate=FEFE66E00602FD.FEFEE066FBFD + +[pmFM] +Command=FEFE66E0.06.05.FD +ReplyLength=13 +Validate=FEFE66E00605FD.FEFEE066FBFD + + + + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +[STATUS1] +Command=FEFE66E0.03.FD +ReplyLength=17 +Validate=FFFFFFFFFFFF.FFFFFFFF.FF.0000000000.FF|FEFE66E003FD.FEFEE066.03.0000000000.FD +Value1=11|5|vfBcdLU|1|0|pmFreq + +[STATUS2] +Command=FEFE66E0.04.FD +ReplyLength=14 +Validate=FFFFFFFFFFFF.FFFFFFFF.FF.0000.FF|FEFE66E004FD.FEFEE066.04.0000.FD +;is filter byte appended to the mode byte? +Flag1=000000000000.0000000000.FF.0000|000000000000.0000000000.03.0000|pmCW_U +Flag2=000000000000.0000000000.FF.0000|000000000000.0000000000.07.0000|pmCW_L +Flag3=000000000000.0000000000.FF.0000|000000000000.0000000000.01.0000|pmSSB_U +Flag4=000000000000.0000000000.FF.0000|000000000000.0000000000.00.0000|pmSSB_L +Flag5=000000000000.0000000000.FF.0000|000000000000.0000000000.04.0000|pmDIG_U +Flag6=000000000000.0000000000.FF.0000|000000000000.0000000000.08.0000|pmDIG_L +Flag7=000000000000.0000000000.FF.0000|000000000000.0000000000.02.0000|pmAM +Flag8=000000000000.0000000000.FF.0000|000000000000.0000000000.05.0000|pmFM + +[STATUS3] +Command=FEFE66E0.1409.FD +ReplyLength=16 +Validate=FFFFFFFFFFFFFF.FFFFFFFFFFFF.0000.FF|FEFE66E01409FD.FEFEE0661409.0000.FD +Value1=13|2|vfBcdLU|2.352941|300|pmPitch + +[STATUS4] +Command=FEFE66E0.1C00.FD +ReplyLength=15 +Validate=FFFFFFFFFFFFFF.FFFFFFFF.FFFF.00.FF|FEFE66E01C00FD.FEFEE066.1C00.00.FD +Flag1=00000000000000.00000000.0000.FF.00|00000000000000.00000000.0000.01.00|pmTx +Flag2=00000000000000.00000000.0000.FF.00|00000000000000.00000000.0000.00.00|pmRx diff --git a/CATCheck/Rigs/IC-746.ini b/CATCheck/Rigs/IC-746.ini new file mode 100644 index 0000000..f1c260e --- /dev/null +++ b/CATCheck/Rigs/IC-746.ini @@ -0,0 +1,203 @@ +;------------------------------------------------------------------------------- + ; Icom IC-746 command set +; +; File created by Alex Shovkoplyas, VE3NEA ve3nea@dxatlas.com +;------------------------------------------------------------------------------- + + + + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- + +;none + + + + + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreqA] +;not supported + +[pmFreqB] +;not supported + +[pmFreq] +Command=FEFE56E0.05.0000000000.FD +Value=5|5|vfBcdLU|1|0 +ReplyLength=17 +Validate=FEFE56E0050000000000FD.FEFEE056FBFD + +[pmRitOffset] +;not supported +;+/- 1.2 KHz + +[pmRit0] +;not supported + +[pmPitch] +Command=FEFE56E0.1409.0000.FD +;300Hz=0 600Hz=128 900Hz=255 +Value=6|2|vfBcdLU|0.425|-127.5 +ReplyLength=15 +Validate=FEFE56E014090000FD.FEFEE056FBFD + + + + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +Command=FEFE56E0.0F01.FD +ReplyLength=13 +Validate=FEFE56E00F01FD.FEFEE056FBFD + +[pmSplitOff] +Command=FEFE56E0.0F00.FD +ReplyLength=13 +Validate=FEFE56E00F00FD.FEFEE056FBFD + +[pmVfoA] +Command=FEFE56E0.0700.FD +ReplyLength=13 +Validate=FEFE56E00700FD.FEFEE056FBFD + +[pmVfoB] +Command=FEFE56E0.0701.FD +ReplyLength=13 +Validate=FEFE56E00701FD.FEFEE056FBFD + +[pmVfoEqual] +Command=FEFE56E0.07A0.FD +ReplyLength=13 +Validate=FEFE56E007A0FD.FEFEE056FBFD + +[pmVfoSwap] +Command=FEFE56E0.07B0.FD +ReplyLength=13 +Validate=FEFE56E007B0FD.FEFEE056FBFD + +[pmVfoAA] +;not supported + +[pmVfoAB] +;not supported + +[pmVfoBA] +;not supported + +[pmVfoBB] +;not supported + +[pmRitOn] +;not supported + +[pmRitOff] +;not supported + +[pmXitOn] +;not supported + +[pmXitOff] +;not supported + +[pmRx] +Command=FEFE56E0.1C00.00.FD +ReplyLength=14 +Validate=FEFE56E01C0000FD.FEFEE056FBFD + +[pmTx] +Command=FEFE56E0.1C00.01.FD +ReplyLength=14 +Validate=FEFE56E01C0001FD.FEFEE056FBFD + + + + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +Command=FEFE56E0.06.03.FD +ReplyLength=13 +Validate=FEFE56E00603FD.FEFEE056FBFD + +[pmCW_L] +Command=FEFE56E0.06.07.FD +ReplyLength=13 +Validate=FEFE56E00607FD.FEFEE056FBFD + +[pmSSB_U] +Command=FEFE56E0.06.01.FD +ReplyLength=13 +Validate=FEFE56E00601FD.FEFEE056FBFD + +[pmSSB_L] +Command=FEFE56E0.06.00.FD +ReplyLength=13 +Validate=FEFE56E00600FD.FEFEE056FBFD + +[pmDIG_U] +Command=FEFE56E0.06.04.FD +ReplyLength=13 +Validate=FEFE56E00604FD.FEFEE056FBFD + +[pmDIG_L] +Command=FEFE56E0.06.08.FD +ReplyLength=13 +Validate=FEFE56E00608FD.FEFEE056FBFD + +[pmAM] +Command=FEFE56E0.06.02.FD +ReplyLength=13 +Validate=FEFE56E00602FD.FEFEE056FBFD + +[pmFM] +Command=FEFE56E0.06.05.FD +ReplyLength=13 +Validate=FEFE56E00605FD.FEFEE056FBFD + + + + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +[STATUS1] +Command=FEFE56E0.03.FD +ReplyLength=17 +Validate=FFFFFFFFFFFF.FFFFFFFF.FF.0000000000.FF|FEFE56E003FD.FEFEE056.03.0000000000.FD +Value1=11|5|vfBcdLU|1|0|pmFreq + +[STATUS2] +Command=FEFE56E0.04.FD +ReplyLength=14 +Validate=FFFFFFFFFFFF.FFFFFFFF.FF.0000.FF|FEFE56E004FD.FEFEE056.04.0000.FD +;is filter byte appended to the mode byte? +Flag1=000000000000.0000000000.FF.0000|000000000000.0000000000.03.0000|pmCW_U +Flag2=000000000000.0000000000.FF.0000|000000000000.0000000000.07.0000|pmCW_L +Flag3=000000000000.0000000000.FF.0000|000000000000.0000000000.01.0000|pmSSB_U +Flag4=000000000000.0000000000.FF.0000|000000000000.0000000000.00.0000|pmSSB_L +Flag5=000000000000.0000000000.FF.0000|000000000000.0000000000.04.0000|pmDIG_U +Flag6=000000000000.0000000000.FF.0000|000000000000.0000000000.08.0000|pmDIG_L +Flag7=000000000000.0000000000.FF.0000|000000000000.0000000000.02.0000|pmAM +Flag8=000000000000.0000000000.FF.0000|000000000000.0000000000.05.0000|pmFM + +[STATUS3] +Command=FEFE56E0.1409.FD +ReplyLength=16 +Validate=FFFFFFFFFFFFFF.FFFFFFFFFFFF.0000.FF|FEFE56E01409FD.FEFEE0561409.0000.FD +Value1=13|2|vfBcdLU|2.352941|300|pmPitch + +[STATUS4] +Command=FEFE56E0.1C00.FD +ReplyLength=15 +Validate=FFFFFFFFFFFFFF.FFFFFFFF.FFFF.00.FF|FEFE56E01C00FD.FEFEE056.1C00.00.FD +Flag1=00000000000000.00000000.0000.FF.00|00000000000000.00000000.0000.01.00|pmTx +Flag2=00000000000000.00000000.0000.FF.00|00000000000000.00000000.0000.00.00|pmRx diff --git a/CATCheck/Rigs/IC-751.ini b/CATCheck/Rigs/IC-751.ini new file mode 100644 index 0000000..55871ae --- /dev/null +++ b/CATCheck/Rigs/IC-751.ini @@ -0,0 +1,165 @@ +;------------------------------------------------------------------------------- +; Icom IC-751 command set +; +; mod by sa2w +;------------------------------------------------------------------------------- + + + + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT] +;none + + + + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreqA] +;not supported + +[pmFreqB] +;not supported + +[pmFreq] +Command=FEFE1CE0.05.0000000000.FD +Value=5|5|vfBcdLU|1|0 +ReplyLength=17 +Validate=FEFE1CE0050000000000FD.FEFE001CFBFD + +[pmRitOffset] +;not supported + +[pmRit0] +;not supported + +[pmPitch] +;not supported + + + + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +;not supported + +[pmSplitOff] +;not supported + +[pmVfoA] +Command=FEFE1CE0.0700.FD +ReplyLength=13 +Validate=FEFE1CE00700FD.FEFE001CFBFD + +[pmVfoB] +Command=FEFE1CE0.0701.FD +ReplyLength=13 +Validate=FEFE1CE00701FD.FEFE001CFBFD + +[pmVfoEqual] +;not supported + +[pmVfoSwap] +;not supported + +[pmVfoAA] +;not supported + +[pmVfoAB] +;not supported + +[pmVfoBA] +;not supported + +[pmVfoBB] +;not supported + +[pmRitOn] +;not supported + +[pmRitOff] +;not supported + +[pmXitOn] +;not supported + +[pmXitOff] +;not supported + +[pmRx] +;not supported + +[pmTx] +;not supported + + + + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +Command=FEFE1CE0.06.03.FD +ReplyLength=13 +Validate=FEFE1CE00603FD.FEFE001CFBFD + +[pmCW_L] +;not supported + +[pmSSB_U] +Command=FEFE1CE0.06.01.FD +ReplyLength=13 +Validate=FEFE1CE00601FD.FEFE001CFBFD + +[pmSSB_L] +Command=FEFE1CE0.06.00.FD +ReplyLength=13 +Validate=FEFE1CE00600FD.FEFE001CFBFD + +[pmDIG_U] +Command=FEFE1CE0.06.04.FD +ReplyLength=13 +Validate=FEFE1CE00604FD.FEFE001CFBFD + +[pmDIG_L] +;not supported + +[pmAM] +Command=FEFE1CE0.06.02.FD +ReplyLength=13 +Validate=FEFE1CE00602FD.FEFE001CFBFD + +[pmFM] +Command=FEFE1CE0.06.05.FD +ReplyLength=13 +Validate=FEFE1CE00605FD.FEFE001CFBFD + + + + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +[STATUS1] +Command=FEFE1CE0.03.FD +ReplyLength=17 +Validate=FEFE1CE003FD.FEFE001C.03.0000000000.FD +Value1=11|5|vfBcdLU|1|0|pmFreq + +[STATUS2] +Command=FEFE1CE0.04.FD +ReplyLength=13 +Validate=FEFE1CE004FD.FEFE001C.04.00.00 +Flag1=000000000000.0000000000.FF.00|000000000000.0000000000.03.00|pmCW_U +Flag3=000000000000.0000000000.FF.00|000000000000.0000000000.01.00|pmSSB_U +Flag4=000000000000.0000000000.FF.00|000000000000.0000000000.00.00|pmSSB_L +Flag5=000000000000.0000000000.FF.00|000000000000.0000000000.04.00|pmDIG_U +Flag7=000000000000.0000000000.FF.00|000000000000.0000000000.02.00|pmAM +Flag8=000000000000.0000000000.FF.00|000000000000.0000000000.05.00|pmFM diff --git a/CATCheck/Rigs/IC-756 Pro II.ini b/CATCheck/Rigs/IC-756 Pro II.ini new file mode 100644 index 0000000..b067b05 --- /dev/null +++ b/CATCheck/Rigs/IC-756 Pro II.ini @@ -0,0 +1,242 @@ +;------------------------------------------------------------------------------- +; Icom IC-756 Pro II command set +; +; File created by Alex Shovkoplyas, VE3NEA ve3nea@dxatlas.com +; Modified by Brendan EI6IZ ei6iz@oceanfree.net +;------------------------------------------------------------------------------- + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT1] +;disable transceive mode +Command=FEFE64E0.1A0542.00.FD +ReplyLength=15 +Validate=FEFE64E01A054200FD.FEFEE064FBFD + +[INIT2] +;disable 731 mode +Command=FEFE64E0.1A0543.00.FD +ReplyLength=15 +Validate=FEFE64E01A054300FD.FEFEE064FBFD + +; Some of us don't like this option one bit! +;[INIT3] +;set CW normal to upper sideband +;Command=FEFE64E0.1A0567.01.FD +;ReplyLength=15 +;Validate=FEFE64E01A056701FD.FEFEE064FBFD + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreqA] +;not supported + +[pmFreqB] +;not supported + +[pmFreq] +Command=FEFE64E0.05.0000000000.FD +Value=5|5|vfBcdLU|1|0 +ReplyLength=17 +Validate=FEFE64E0050000000000FD.FEFEE064FBFD + +[pmRitOffset] +;not supported + + +[pmRit0] +;not supported + +[pmPitch] + + +Command=FEFE64E0.14.09.0000.FD +;300Hz=5 600Hz=128 900Hz=255 +;there's a fundamental problem here, anything between 0 and 9 = 300 10-19 =325 20-29 =350 etc +;how do we scale for this? + +Value=6|2|vfBcdBU|1|1 +ReplyLength=15 +Validate=FEFE64E014090000FD.FEFEE064FBFD + + + + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +Command=FEFE64E0.0F01.FD +ReplyLength=13 +Validate=FEFE64E00F01FD.FEFEE064FBFD + +[pmSplitOff] +Command=FEFE64E0.0F00.FD +ReplyLength=13 +Validate=FEFE64E00F00FD.FEFEE064FBFD + +[pmVfoA] +;not supported +;It's possible to select which VFO is active on the display & used for data entry, +;this isn't usually the receive VFO, perhaps this is what you want however? + +Command=FEFE64E0.07D0.FD +ReplyLength=13 +Validate=FEFE64E007D0FD.FEFEE064FBFD + + +[pmVfoB] +Command=FEFE64E0.07D1.FD +ReplyLength=13 +Validate=FEFE64E007D1FD.FEFEE064FBFD + + +[pmVfoEqual] +Command=FEFE64E0.07B1.FD +ReplyLength=13 +Validate=FEFE64E007B1FD.FEFEE064FBFD + +[pmVfoSwap] +Command=FEFE64E0.07B0.FD +ReplyLength=13 +Validate=FEFE64E007B0FD.FEFEE064FBFD + +[pmVfoAA] +;not supported + +[pmVfoAB] +;not supported + +[pmVfoBA] +;not supported + +[pmVfoBB] +;not supported + +[pmRitOn] +;not supported + +[pmRitOff] +;not supported + +[pmXitOn] +;not supported + +[pmXitOff] +;not supported + +[pmRx] +Command=FEFE64E0.1C00.00.FD +ReplyLength=14 +Validate=FEFE64E01C0000FD.FEFEE064FBFD + +[pmTx] +;is 00 after 1C required or err in doc? +; Yes we require the 00 following the 1C +Command=FEFE64E0.1C00.01.FD +ReplyLength=14 +Validate=FEFE64E01C0001FD.FEFEE064FBFD + + + + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +;swapped this around to correct for the removal of INIT3 +Command=FEFE64E0.06.07.FD +ReplyLength=13 +Validate=FEFE64E00607FD.FEFEE064FBFD + + +[pmCW_L] +;swapped this around to correct for the removal of INIT3 +Command=FEFE64E0.06.03.FD +ReplyLength=13 +Validate=FEFE64E00603FD.FEFEE064FBFD + +[pmSSB_U] +Command=FEFE64E0.06.01.FD +ReplyLength=13 +Validate=FEFE64E00601FD.FEFEE064FBFD + +[pmSSB_L] +Command=FEFE64E0.06.00.FD +ReplyLength=13 +Validate=FEFE64E00600FD.FEFEE064FBFD + +[pmDIG_U] +; if we want to use SSB-D modes we need 2 commands, fist set appropriate Sideband then set D-mode +; problem is that since the D mode status requires a different poll ( FEFE64E0.1A.06.FD) +; it always looks to the software like we are in SSB modes not SSB-D modes +Command=FEFE64E0.06.01.FD.FEFE64E0.1A.06.01.FD +ReplyLength=27 +Validate=FEFE64E00601FD.FEFEE064FBFD.FEFE64E01A0601FD.FEFEE064FBFD + + +[pmDIG_L] +Command=FEFE64E0.06.00.FD.FEFE64E0.1A.06.01.FD +ReplyLength=27 +Validate=FEFE64E00600FD.FEFEE064FBFD.FEFE64E01A0601FD.FEFEE064FBFD + + +[pmAM] +Command=FEFE64E0.06.02.FD +ReplyLength=13 +Validate=FEFE64E00602FD.FEFEE064FBFD + +[pmFM] +Command=FEFE64E0.06.05.FD +ReplyLength=13 +Validate=FEFE64E00605FD.FEFEE064FBFD + + + + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +[STATUS1] +Command=FEFE64E0.03.FD +ReplyLength=17 +Validate=FEFE64E003FD.FEFEE064.03.0000000000.FD +Value1=11|5|vfBcdLU|1|0|pmFreq + +[STATUS2] +Command=FEFE64E0.04.FD +ReplyLength=14 +Validate=FEFE64E004FD.FEFEE064.04.0000.FD +;is filter byte appended to the mode byte? +Flag1=000000000000.0000000000.03.0000|pmCW_U +Flag2=000000000000.0000000000.07.0000|pmCW_L +Flag3=000000000000.0000000000.01.0000|pmSSB_U +Flag4=000000000000.0000000000.FF.0000|pmSSB_L +Flag5=000000000000.0000000000.04.0000|pmDIG_U +Flag6=000000000000.0000000000.08.0000|pmDIG_L +Flag7=000000000000.0000000000.02.0000|pmAM +Flag8=000000000000.0000000000.05.0000|pmFM + +;we need an extended command to read the SSB D modes and this still doesn't tell us which sideband, +; you have to read the Sideband THEN check to see What the 1A06 command returns (0= normal SSB 1= D mode) +; how do we code for this? Does it even matter that we can't read this? + +[STATUS3] +;need to read pitch offset in cw mode +;there's a fundamental problem here, anything between 0 and 9 = 300 10-19 =325 20-29 =350 etc +;how do we scale for this? +Command=FEFE64E0.1409.FD +ReplyLength=16 +Validate=FEFE64E01409FD.FEFEE0641409.0000.FD +Value1=13|2|vfBcdBU|1|1|pmPitch + +[STATUS4] +Command=FEFE64E0.1C00.FD +ReplyLength=15 +Validate=FEFE64E01C00FD.FEFEE064.1C00.00.FD +Flag1=00000000000000.00000000.0000.01.00|pmTx +Flag2=00000000000000.00000000.0000.FF.00|00000000000000.00000000.0000.00.00|pmRx + diff --git a/CATCheck/Rigs/IC-756 Pro III.ini b/CATCheck/Rigs/IC-756 Pro III.ini new file mode 100644 index 0000000..52a3a76 --- /dev/null +++ b/CATCheck/Rigs/IC-756 Pro III.ini @@ -0,0 +1,229 @@ +;------------------------------------------------------------------------------------- +; ICOM IC-756 Pro III command set +; +; -File created by Alex Shovkoplyas, VE3NEA ve3nea@dxatlas.com, for an IC-756 Pro II +; -First modification by Brendan, EI6IZ, ei6iz@oceanfree.net, for an IC-756 Pro II +; -Second modification by John, K6JJ: Conversion of the set for use with an IC-756 Pro +; -address changed from 5C to 6E (Pro III) by VE3NEA +;------------------------------------------------------------------------------------- + + +;------------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------------- + +[INIT] +;None + +;------------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------------- + +[pmFreqA] +;Not supported + +[pmFreqB] +;Not supported + +[pmFreq] +;Set operating frequency +Command=FEFE6EE0.05.0000000000.FD +Value=5|5|vfBcdLU|1|0 +ReplyLength=17 +Validate=FEFE6EE0050000000000FD.FEFEE06EFBFD + +[pmRitOffset] +;Not supported + +[pmRit0] +;Not supported + +[pmPitch] +;Set CW pitch +Command=FEFE6EE0.14.09.0000.FD +;300Hz=5 600Hz=128 900Hz=255 +;there's a fundamental problem here, anything between 0 and 9 = 300 10-19 =325 20-29 =350 etc +;how do we scale for this? +;Note: This command function was borrowed in total from the IC-756 Pro II command set, +; with changes to make it recognized by the IC-756 Pro. It works more or less, +; but needs additional tweaking. It was included since both the IC-756 Pro rig +; and the Omni-Rig Client testing program support this function. K6JJ +Value=6|2|vfBcdBU|1|1 +ReplyLength=15 +Validate=FEFE6EE014090000FD.FEFEE06EFBFD + +;------------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------------- + +[pmSplitOn] +;Enable split operation, using VFO B (transmit frequency) and VFO A (receive frequency) +Command=FEFE6EE0.0F01.FD +ReplyLength=13 +Validate=FEFE6EE00F01FD.FEFEE06EFBFD + +[pmSplitOff] +;Disable split operation, transmit and receive frequencies set to VFO A frequency +Command=FEFE6EE0.0F00.FD +ReplyLength=13 +Validate=FEFE6EE00F00FD.FEFEE06EFBFD + +[pmVfoA] +;Set receiver to VFO A frequency +Command=FEFE6EE0.07D0.FD +ReplyLength=13 +Validate=FEFE6EE007D0FD.FEFEE06EFBFD + +[pmVfoB] +;Set receiver to VFO B frequency +Command=FEFE6EE0.07D1.FD +ReplyLength=13 +Validate=FEFE6EE007D1FD.FEFEE06EFBFD + +[pmVfoEqual] +;Set VFO B parameters (split transmit VFO) equal to VFO A parameters (receive VFO) +Command=FEFE6EE0.07B1.FD +ReplyLength=13 +Validate=FEFE6EE007B1FD.FEFEE06EFBFD + +[pmVfoSwap] +;Swap VFO B frequency (split transmit VFO) with VFO A frequency (receive VFO) +Command=FEFE6EE0.07B0.FD +ReplyLength=13 +Validate=FEFE6EE007B0FD.FEFEE06EFBFD + +[pmVfoAA] +;Not supported + +[pmVfoAB] +;Not supported + +[pmVfoBA] +;Not supported + +[pmVfoBB] +;Not supported + +[pmRitOn] +;Not supported + +[pmRitOff] +;Not supported + +[pmXitOn] +;Not supported + +[pmXitOff] +;Not supported + +[pmRx] +;Enable the receive mode +Command=FEFE6EE0.1C00.00.FD +ReplyLength=14 +Validate=FEFE6EE01C0000FD.FEFEE06EFBFD + +[pmTx] +;Enable the transmit mode +Command=FEFE6EE0.1C00.01.FD +ReplyLength=14 +Validate=FEFE6EE01C0001FD.FEFEE06EFBFD + +;------------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------------- + +[pmCW_U] +;Set the CW mode +Command=FEFE6EE0.06.03.FD +ReplyLength=13 +Validate=FEFE6EE00603FD.FEFEE06EFBFD + +[pmCW_L] +;Set the CW-R mode +Command=FEFE6EE0.06.07.FD +ReplyLength=13 +Validate=FEFE6EE00607FD.FEFEE06EFBFD + +[pmSSB_U] +;Set the USB mode +Command=FEFE6EE0.06.01.FD +ReplyLength=13 +Validate=FEFE6EE00601FD.FEFEE06EFBFD + +[pmSSB_L] +;Set the LSB mode +Command=FEFE6EE0.06.00.FD +ReplyLength=13 +Validate=FEFE6EE00600FD.FEFEE06EFBFD + +[pmDIG_U] +;Set the Digital RTTY mode (microphone muted) +Command=FEFE6EE0.06.04.FD.FEFE6EE0.1A.06.04.FD +ReplyLength=13 +Validate=FEFE6EE00604FD.FEFEE06EFBFD + +[pmDIG_L] +;Set the Digital RTTY-R mode (microphone muted) +Command=FEFE6EE0.06.08.FD.FEFE6EE0.1A.06.08.FD +ReplyLength=13 +Validate=FEFE6EE00608FD.FEFEE06EFBFD + +[pmAM] +;Set the AM mode +Command=FEFE6EE0.06.02.FD +ReplyLength=13 +Validate=FEFE6EE00602FD.FEFEE06EFBFD + +[pmFM] +;Set the FM mode +Command=FEFE6EE0.06.05.FD +ReplyLength=13 +Validate=FEFE6EE00605FD.FEFEE06EFBFD + +;------------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------------- + +[STATUS1] +;Read the operating frequency +Command=FEFE6EE0.03.FD +ReplyLength=17 +Validate=FEFE6EE003FD.FEFEE06E.03.0000000000.FD +Value1=11|5|vfBcdLU|1|0|pmFreq + +[STATUS2] +;Read the operating mode +Command=FEFE6EE0.04.FD +ReplyLength=14 +Validate=FEFE6EE004FD.FEFEE06E.04.0000.FD +Flag1=000000000000.0000000000.0F.0000|000000000000.0000000000.00.0000|pmSSB_L +Flag2=000000000000.0000000000.01.0000|pmSSB_U +Flag3=000000000000.0000000000.02.0000|pmAM +Flag4=000000000000.0000000000.03.0000|pmCW_U +Flag5=000000000000.0000000000.04.0000|pmDIG_U +Flag6=000000000000.0000000000.05.0000|pmFM +Flag7=000000000000.0000000000.07.0000|pmCW_L +Flag8=000000000000.0000000000.08.0000|pmDIG_L + +[STATUS3] +;Read the CW pitch +;need to read pitch offset in cw mode +;there's a fundamental problem here, anything between 0 and 9 = 300 10-19 =325 20-29 =350 etc +;how do we scale for this? +;Note: Also see the comments included with: Set CW Pitch K6JJ +Command=FEFE6EE0.1409.FD +ReplyLength=16 +Validate=FEFE6EE01409FD.FEFEE06E1409.0000.FD +Value1=13|2|vfBcdBU|1|1|pmPitch + +[STATUS4] +;Read the transmit or receive mode +Command=FEFE6EE0.1C00.FD +ReplyLength=15 +Validate=FEFE6EE01C00FD.FEFEE06E.1C00.00.FD +Flag1=00000000000000.00000000.0000.01.00|pmTx +Flag2=00000000000000.00000000.0000.FF.00|00000000000000.00000000.0000.00.00|pmRx + + + + diff --git a/CATCheck/Rigs/IC-756 Pro II_LSB.ini b/CATCheck/Rigs/IC-756 Pro II_LSB.ini new file mode 100644 index 0000000..8faab23 --- /dev/null +++ b/CATCheck/Rigs/IC-756 Pro II_LSB.ini @@ -0,0 +1,244 @@ +;------------------------------------------------------------------------------- +; Icom IC-756 Pro II command set +; +; File created by Alex Shovkoplyas, VE3NEA ve3nea@dxatlas.com +; Modified by Brendan EI6IZ ei6iz@oceanfree.net +; Modified by Grant AA9LC 1-18-18 +;------------------------------------------------------------------------------- + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT1] +;disable transceive mode +Command=FEFE64E0.1A0542.00.FD +ReplyLength=15 +Validate=FEFE64E01A054200FD.FEFEE064FBFD + +[INIT2] +;disable 731 mode +Command=FEFE64E0.1A0543.00.FD +ReplyLength=15 +Validate=FEFE64E01A054300FD.FEFEE064FBFD + +; Original INIT3 set normal CW to USB. This version sets normal CW to LSB - AA9LC 11-18-18 +[INIT3] +;set CW normal to upper sideband (back to LSB AA9LC 11-18-18 - 00.FD instead of 01.FD) +Command=FEFE64E0.1A0567.00.FD +ReplyLength=15 +Validate=FEFE64E01A056700FD.FEFEE064FBFD + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreqA] +;not supported + +[pmFreqB] +;not supported + +[pmFreq] +Command=FEFE64E0.05.0000000000.FD +Value=5|5|vfBcdLU|1|0 +ReplyLength=17 +Validate=FEFE64E0050000000000FD.FEFEE064FBFD + +[pmRitOffset] +;not supported + + +[pmRit0] +;not supported + +[pmPitch] + + +Command=FEFE64E0.14.09.0000.FD +;300Hz=5 600Hz=128 900Hz=255 +;there's a fundamental problem here, anything between 0 and 9 = 300 10-19 =325 20-29 =350 etc +;how do we scale for this? + +Value=6|2|vfBcdBU|1|1 +ReplyLength=15 +Validate=FEFE64E014090000FD.FEFEE064FBFD + + + + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +Command=FEFE64E0.0F01.FD +ReplyLength=13 +Validate=FEFE64E00F01FD.FEFEE064FBFD + +[pmSplitOff] +Command=FEFE64E0.0F00.FD +ReplyLength=13 +Validate=FEFE64E00F00FD.FEFEE064FBFD + +[pmVfoA] +;not supported +;It's possible to select which VFO is active on the display & used for data entry, +;this isn't usually the receive VFO, perhaps this is what you want however? + +Command=FEFE64E0.07D0.FD +ReplyLength=13 +Validate=FEFE64E007D0FD.FEFEE064FBFD + + +[pmVfoB] +Command=FEFE64E0.07D1.FD +ReplyLength=13 +Validate=FEFE64E007D1FD.FEFEE064FBFD + + +[pmVfoEqual] +Command=FEFE64E0.07B1.FD +ReplyLength=13 +Validate=FEFE64E007B1FD.FEFEE064FBFD + +[pmVfoSwap] +Command=FEFE64E0.07B0.FD +ReplyLength=13 +Validate=FEFE64E007B0FD.FEFEE064FBFD + +[pmVfoAA] +;not supported + +[pmVfoAB] +;not supported + +[pmVfoBA] +;not supported + +[pmVfoBB] +;not supported + +[pmRitOn] +;not supported + +[pmRitOff] +;not supported + +[pmXitOn] +;not supported + +[pmXitOff] +;not supported + +[pmRx] +Command=FEFE64E0.1C00.00.FD +ReplyLength=14 +Validate=FEFE64E01C0000FD.FEFEE064FBFD + +[pmTx] +;is 00 after 1C required or err in doc? +; Yes we require the 00 following the 1C +Command=FEFE64E0.1C00.01.FD +ReplyLength=14 +Validate=FEFE64E01C0001FD.FEFEE064FBFD + + + + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +;swapped this around to correct for the removal of INIT3 +Command=FEFE64E0.06.07.FD +ReplyLength=13 +Validate=FEFE64E00607FD.FEFEE064FBFD + + +[pmCW_L] +;swapped this around to correct for the removal of INIT3 +Command=FEFE64E0.06.03.FD +ReplyLength=13 +Validate=FEFE64E00603FD.FEFEE064FBFD + +[pmSSB_U] +Command=FEFE64E0.06.01.FD +ReplyLength=13 +Validate=FEFE64E00601FD.FEFEE064FBFD + +[pmSSB_L] +Command=FEFE64E0.06.00.FD +ReplyLength=13 +Validate=FEFE64E00600FD.FEFEE064FBFD + +[pmDIG_U] +; if we want to use SSB-D modes we need 2 commands, fist set appropriate Sideband then set D-mode +; problem is that since the D mode status requires a different poll ( FEFE64E0.1A.06.FD) +; it always looks to the software like we are in SSB modes not SSB-D modes +Command=FEFE64E0.06.01.FD.FEFE64E0.1A.06.01.FD +ReplyLength=27 +Validate=FEFE64E00601FD.FEFEE064FBFD.FEFE64E01A0601FD.FEFEE064FBFD + + +[pmDIG_L] +Command=FEFE64E0.06.00.FD.FEFE64E0.1A.06.01.FD +ReplyLength=27 +Validate=FEFE64E00600FD.FEFEE064FBFD.FEFE64E01A0601FD.FEFEE064FBFD + + +[pmAM] +Command=FEFE64E0.06.02.FD +ReplyLength=13 +Validate=FEFE64E00602FD.FEFEE064FBFD + +[pmFM] +Command=FEFE64E0.06.05.FD +ReplyLength=13 +Validate=FEFE64E00605FD.FEFEE064FBFD + + + + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +[STATUS1] +Command=FEFE64E0.03.FD +ReplyLength=17 +Validate=FEFE64E003FD.FEFEE064.03.0000000000.FD +Value1=11|5|vfBcdLU|1|0|pmFreq + +[STATUS2] +Command=FEFE64E0.04.FD +ReplyLength=14 +Validate=FEFE64E004FD.FEFEE064.04.0000.FD +;is filter byte appended to the mode byte? +; (Flags 1 & 2 were wrong -- switched .03 and .07 values to get CW and CW-R back to normal -- AA9LC) +Flag1=000000000000.0000000000.07.0000|pmCW_U +Flag2=000000000000.0000000000.03.0000|pmCW_L +Flag3=000000000000.0000000000.01.0000|pmSSB_U +; New Flag4 below is from 756-Pro.ini file by K6JJ -- AA9LC) +Flag4=000000000000.0000000000.0F.0000|000000000000.0000000000.00.0000|pmSSB_L +;Flag4=000000000000.0000000000.FF.0000|pmSSB_L (this is the original Flag4 code -- AA9LC) +Flag5=000000000000.0000000000.04.0000|pmDIG_U +Flag6=000000000000.0000000000.08.0000|pmDIG_L +Flag7=000000000000.0000000000.02.0000|pmAM +Flag8=000000000000.0000000000.05.0000|pmFM + +; we need an extended command to read the SSB D modes and this still doesn't tell us which sideband, +; you have to read the Sideband THEN check to see What the 1A06 command returns (0= normal SSB 1= D mode) +; how do we code for this? Does it even matter that we can't read this? + +[STATUS3] +;need to read pitch offset in cw mode +;there's a fundamental problem here, anything between 0 and 9 = 300 10-19 =325 20-29 =350 etc +;how do we scale for this? +Command=FEFE64E0.1409.FD +ReplyLength=16 +Validate=FEFE64E01409FD.FEFEE0641409.0000.FD +Value1=13|2|vfBcdBU|1|1|pmPitch + +[STATUS4] +Command=FEFE64E0.1C00.FD +ReplyLength=15 +Validate=FEFE64E01C00FD.FEFEE064.1C00.00.FD +Flag1=00000000000000.00000000.0000.01.00|pmTx +Flag2=00000000000000.00000000.0000.FF.00|00000000000000.00000000.0000.00.00|pmRx \ No newline at end of file diff --git a/CATCheck/Rigs/IC-756 Pro ini comments.txt b/CATCheck/Rigs/IC-756 Pro ini comments.txt new file mode 100644 index 0000000..6af4e9e --- /dev/null +++ b/CATCheck/Rigs/IC-756 Pro ini comments.txt @@ -0,0 +1,51 @@ +Comments from K6JJ for the ICOM IC-756 Pro.ini file, version 29 MAY 05: + +1. This rig does not support the function to turn the CI-V Transceive mode on and off, which apparently +the IC-756 Pro II can do. I found no difference in the operation of Omni-Rig Client (the .ini testing +program) or Band Master with the mode on or off. However, when using the IC-756 Pro with a rig control +program such as TRX-Manager, I had to turn this mode on or changes made at the rig would not show +up in the software program display. Depending upon your station configuration, you may find the need +to manually adjust this function to on or off in the rig set/others menu. + +2. The IC-756 Pro has a smaller set of commands when compared to the IC-756 Pro II command set. Thus, +certain commands that Omni-Rig supports are not supported by the IC-756 Pro. + +3. The commands for setting and reading the CW Pitch Frequency were copied from the IC-756 Pro II.ini file. +They seem to work when changes were made to them so that the IC-756 Pro would recognize the control codes, +but they seem to need some refinement, as mentioned in the .ini file remarks for both rigs. + +4. When using the Band Master program, the following mode conversions apply: + +Band Master Mode IC-756 Pro Mode +CW-U CW +CW-L CW-R +USB USB +LSB LSB +DIG-U RTTY +DIG-L RTTY-R +AM AM +FM FM + +Selecting the wanted Band Master mode will set-up the IC-756 Pro for the corresponding mode. + +5. When using the Band Master program, the following function buttons do not operate with the IC-756 Pro, +and are grayed out: + +SPLIT (see #6 below) +RIT +XIT + +6. The Band Master program TX offset button, when clicked, sets the IC-756 Pro to the Split mode and +sets the transmit VFO to the frequency of the receive VFO. No transmit frequency offset is added. +Double clicking this button makes the same change. To disable the Split mode, click on the band in-use +button. + +7. If you can improve on the IC-756 Pro.ini file and/or these comments, please do so. I knew nothing +about the IC-756 Pro rig control functions, Omni-Rig and Band Master, when I started to develop the .ini +file. I appreciated having the IC-756 Pro II.ini file already developed, which aided me greatly. I also +appreciate the Omni-Rig concept. + +73, +John +K6JJ + diff --git a/CATCheck/Rigs/IC-756 Pro.ini b/CATCheck/Rigs/IC-756 Pro.ini new file mode 100644 index 0000000..7cbdc99 --- /dev/null +++ b/CATCheck/Rigs/IC-756 Pro.ini @@ -0,0 +1,228 @@ +;------------------------------------------------------------------------------------- +; ICOM IC-756 Pro command set, version 29 MAY 05 +; +; -File created by Alex Shovkoplyas, VE3NEA ve3nea@dxatlas.com, for an IC-756 Pro II +; -First modification by Brendan, EI6IZ, ei6iz@oceanfree.net, for an IC-756 Pro II +; -Second modification by John, K6JJ: Conversion of the set for use with an IC-756 Pro +;------------------------------------------------------------------------------------- + + +;------------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------------- + +[INIT] +;None + +;------------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------------- + +[pmFreqA] +;Not supported + +[pmFreqB] +;Not supported + +[pmFreq] +;Set operating frequency +Command=FEFE5CE0.05.0000000000.FD +Value=5|5|vfBcdLU|1|0 +ReplyLength=17 +Validate=FEFE5CE0050000000000FD.FEFEE05CFBFD + +[pmRitOffset] +;Not supported + +[pmRit0] +;Not supported + +[pmPitch] +;Set CW pitch +Command=FEFE5CE0.14.09.0000.FD +;300Hz=5 600Hz=128 900Hz=255 +;there's a fundamental problem here, anything between 0 and 9 = 300 10-19 =325 20-29 =350 etc +;how do we scale for this? +;Note: This command function was borrowed in total from the IC-756 Pro II command set, +; with changes to make it recognized by the IC-756 Pro. It works more or less, +; but needs additional tweaking. It was included since both the IC-756 Pro rig +; and the Omni-Rig Client testing program support this function. K6JJ +Value=6|2|vfBcdBU|1|1 +ReplyLength=15 +Validate=FEFE5CE014090000FD.FEFEE05CFBFD + +;------------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------------- + +[pmSplitOn] +;Enable split operation, using VFO B (transmit frequency) and VFO A (receive frequency) +Command=FEFE5CE0.0F01.FD +ReplyLength=13 +Validate=FEFE5CE00F01FD.FEFEE05CFBFD + +[pmSplitOff] +;Disable split operation, transmit and receive frequencies set to VFO A frequency +Command=FEFE5CE0.0F00.FD +ReplyLength=13 +Validate=FEFE5CE00F00FD.FEFEE05CFBFD + +[pmVfoA] +;Set receiver to VFO A frequency +Command=FEFE5CE0.07D0.FD +ReplyLength=13 +Validate=FEFE5CE007D0FD.FEFEE05CFBFD + +[pmVfoB] +;Set receiver to VFO B frequency +Command=FEFE5CE0.07D1.FD +ReplyLength=13 +Validate=FEFE5CE007D1FD.FEFEE05CFBFD + +[pmVfoEqual] +;Set VFO B parameters (split transmit VFO) equal to VFO A parameters (receive VFO) +Command=FEFE5CE0.07B1.FD +ReplyLength=13 +Validate=FEFE5CE007B1FD.FEFEE05CFBFD + +[pmVfoSwap] +;Swap VFO B frequency (split transmit VFO) with VFO A frequency (receive VFO) +Command=FEFE5CE0.07B0.FD +ReplyLength=13 +Validate=FEFE5CE007B0FD.FEFEE05CFBFD + +[pmVfoAA] +;Not supported + +[pmVfoAB] +;Not supported + +[pmVfoBA] +;Not supported + +[pmVfoBB] +;Not supported + +[pmRitOn] +;Not supported + +[pmRitOff] +;Not supported + +[pmXitOn] +;Not supported + +[pmXitOff] +;Not supported + +[pmRx] +;Enable the receive mode +Command=FEFE5CE0.1C00.00.FD +ReplyLength=14 +Validate=FEFE5CE01C0000FD.FEFEE05CFBFD + +[pmTx] +;Enable the transmit mode +Command=FEFE5CE0.1C00.01.FD +ReplyLength=14 +Validate=FEFE5CE01C0001FD.FEFEE05CFBFD + +;------------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------------- + +[pmCW_U] +;Set the CW mode +Command=FEFE5CE0.06.03.FD +ReplyLength=13 +Validate=FEFE5CE00603FD.FEFEE05CFBFD + +[pmCW_L] +;Set the CW-R mode +Command=FEFE5CE0.06.07.FD +ReplyLength=13 +Validate=FEFE5CE00607FD.FEFEE05CFBFD + +[pmSSB_U] +;Set the USB mode +Command=FEFE5CE0.06.01.FD +ReplyLength=13 +Validate=FEFE5CE00601FD.FEFEE05CFBFD + +[pmSSB_L] +;Set the LSB mode +Command=FEFE5CE0.06.00.FD +ReplyLength=13 +Validate=FEFE5CE00600FD.FEFEE05CFBFD + +[pmDIG_U] +;Set the Digital RTTY mode (microphone muted) +Command=FEFE5CE0.06.04.FD.FEFE5CE0.1A.06.04.FD +ReplyLength=13 +Validate=FEFE5CE00604FD.FEFEE05CFBFD + +[pmDIG_L] +;Set the Digital RTTY-R mode (microphone muted) +Command=FEFE5CE0.06.08.FD.FEFE5CE0.1A.06.08.FD +ReplyLength=13 +Validate=FEFE5CE00608FD.FEFEE05CFBFD + +[pmAM] +;Set the AM mode +Command=FEFE5CE0.06.02.FD +ReplyLength=13 +Validate=FEFE5CE00602FD.FEFEE05CFBFD + +[pmFM] +;Set the FM mode +Command=FEFE5CE0.06.05.FD +ReplyLength=13 +Validate=FEFE5CE00605FD.FEFEE05CFBFD + +;------------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------------- + +[STATUS1] +;Read the operating frequency +Command=FEFE5CE0.03.FD +ReplyLength=17 +Validate=FEFE5CE003FD.FEFEE05C.03.0000000000.FD +Value1=11|5|vfBcdLU|1|0|pmFreq + +[STATUS2] +;Read the operating mode +Command=FEFE5CE0.04.FD +ReplyLength=14 +Validate=FEFE5CE004FD.FEFEE05C.04.0000.FD +Flag1=000000000000.0000000000.0F.0000|000000000000.0000000000.00.0000|pmSSB_L +Flag2=000000000000.0000000000.01.0000|pmSSB_U +Flag3=000000000000.0000000000.02.0000|pmAM +Flag4=000000000000.0000000000.03.0000|pmCW_U +Flag5=000000000000.0000000000.04.0000|pmDIG_U +Flag6=000000000000.0000000000.05.0000|pmFM +Flag7=000000000000.0000000000.07.0000|pmCW_L +Flag8=000000000000.0000000000.08.0000|pmDIG_L + +[STATUS3] +;Read the CW pitch +;need to read pitch offset in cw mode +;there's a fundamental problem here, anything between 0 and 9 = 300 10-19 =325 20-29 =350 etc +;how do we scale for this? +;Note: Also see the comments included with: Set CW Pitch K6JJ +Command=FEFE5CE0.1409.FD +ReplyLength=16 +Validate=FEFE5CE01409FD.FEFEE05C1409.0000.FD +Value1=13|2|vfBcdBU|1|1|pmPitch + +[STATUS4] +;Read the transmit or receive mode +Command=FEFE5CE0.1C00.FD +ReplyLength=15 +Validate=FEFE5CE01C00FD.FEFEE05C.1C00.00.FD +Flag1=00000000000000.00000000.0000.01.00|pmTx +Flag2=00000000000000.00000000.0000.FF.00|00000000000000.00000000.0000.00.00|pmRx + + + + diff --git a/CATCheck/Rigs/IC-756.ini b/CATCheck/Rigs/IC-756.ini new file mode 100644 index 0000000..bdc209d --- /dev/null +++ b/CATCheck/Rigs/IC-756.ini @@ -0,0 +1,214 @@ +;------------------------------------------------------------------------------------- +; ICOM IC-756 command set, version 18 JUN 06 +; +; -File created by Alex Shovkoplyas, VE3NEA ve3nea@dxatlas.com, for an IC-756 Pro II +; -First modification by Brendan, EI6IZ, ei6iz@oceanfree.net, for an IC-756 Pro II +; -Second modification by John, K6JJ: Conversion of the set for use with an IC-756 Pro +; -Third modification by Ron, W5RKN: Conversion of the set for use with an IC-756 +; -Modified by UT5TS, read status commands added +;------------------------------------------------------------------------------------- + + +;------------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------------- + +[INIT] +;stop scan +Command=FEFE50E0.0E.00.FD +ReplyLength=13 +Validate=FEFE50E00E00FD.FEFEE050FBFD + +;------------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------------- + +[pmFreqA] +;Not supported + +[pmFreqB] +;Not supported + +[pmFreq] +;Set operating frequency +Command=FEFE50E0.05.0000000000.FD +Value=5|5|vfBcdLU|1|0 +ReplyLength=17 +Validate=FEFE50E0050000000000FD.FEFEE050FBFD + +[pmRitOffset] +;Not supported + +[pmRit0] +;Not supported + +[pmPitch] +;Set CW pitch +;Not supported + +;------------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------------- + +[pmSplitOn] +;Enable split operation, using VFO B (transmit frequency) and VFO A (receive frequency) +Command=FEFE50E0.0F01.FD +ReplyLength=13 +Validate=FEFE50E00F01FD.FEFEE050FBFD + +[pmSplitOff] +;Disable split operation, transmit and receive frequencies set to VFO A frequency +Command=FEFE50E0.0F00.FD +ReplyLength=13 +Validate=FEFE50E00F00FD.FEFEE050FBFD + +[pmVfoA] +;Set receiver to VFO A frequency +Command=FEFE50E0.07D0.FD +ReplyLength=13 +Validate=FEFE50E007D0FD.FEFEE050FBFD + +[pmVfoB] +;Set receiver to VFO B frequency +Command=FEFE50E0.07D1.FD +ReplyLength=13 +Validate=FEFE50E007D1FD.FEFEE050FBFD + +[pmVfoEqual] +;Set VFO B parameters (split transmit VFO) equal to VFO A parameters (receive VFO) +Command=FEFE50E0.07B1.FD +ReplyLength=13 +Validate=FEFE50E007B1FD.FEFEE050FBFD + +[pmVfoSwap] +;Swap VFO B frequency (split transmit VFO) with VFO A frequency (receive VFO) +Command=FEFE50E0.07B0.FD +ReplyLength=13 +Validate=FEFE50E007B0FD.FEFEE050FBFD + +[pmVfoAA] +;Not supported + +[pmVfoAB] +;Not supported + +[pmVfoBA] +;Not supported + +[pmVfoBB] +;Not supported + +[pmRitOn] +;Not supported + +[pmRitOff] +;Not supported + +[pmXitOn] +;Not supported + +[pmXitOff] +;Not supported + +[pmRx] +;Enable the receive mode +;Not supported + +[pmTx] +;Enable the transmit mode +;Not supported + +;------------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------------- + +[pmCW_U] +;Set the CW mode +Command=FEFE50E0.06.03.FD +ReplyLength=13 +Validate=FEFE50E00603FD.FEFEE050FBFD + +[pmCW_L] +;Set the CW-R mode +;Not supported + +[pmSSB_U] +;Set the USB mode +Command=FEFE50E0.06.01.FD +ReplyLength=13 +Validate=FEFE50E00601FD.FEFEE050FBFD + +[pmSSB_L] +;Set the LSB mode +Command=FEFE50E0.06.00.FD +ReplyLength=13 +Validate=FEFE50E00600FD.FEFEE050FBFD + +[pmDIG_U] +;Set the Digital RTTY mode (microphone muted) +Command=FEFE50E0.06.04.FD +ReplyLength=13 +Validate=FEFE50E00604FD.FEFEE050FBFD + +[pmDIG_L] +;Set the Digital RTTY-R mode (microphone muted) +;Not supported + +[pmAM] +;Set the AM mode +Command=FEFE50E0.06.02.FD +ReplyLength=13 +Validate=FEFE50E00602FD.FEFEE050FBFD + +[pmFM] +;Set the FM mode +Command=FEFE50E0.06.05.FD +ReplyLength=13 +Validate=FEFE50E00605FD.FEFEE050FBFD + +;------------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------------- +[STATUS1] +;Read the operating frequency +Command=FEFE50E0.03.FD +ReplyLength=17 +Validate=FEFE50E003FD.FEFEE050.03.0000000000.FD +Value1=11|5|vfBcdLU|1|0|pmFreq + +[STATUS2] +;Read the operating mode +Command=FEFE50E0.04.FD +ReplyLength=14 +Validate=FEFE50E004FD.FEFEE050.04.0000.FD +Flag1=000000000000.0000000000.0F.0000|000000000000.0000000000.00.0000|pmSSB_L +Flag2=000000000000.0000000000.01.0000|pmSSB_U +Flag3=000000000000.0000000000.02.0000|pmAM +Flag4=000000000000.0000000000.03.0000|pmCW_U +Flag5=000000000000.0000000000.04.0000|pmDIG_U +Flag6=000000000000.0000000000.05.0000|pmFM +Flag7=000000000000.0000000000.07.0000|pmCW_L +Flag8=000000000000.0000000000.08.0000|pmDIG_L + +[STATUS3] +;Read the CW pitch +;need to read pitch offset in cw mode +;there's a fundamental problem here, anything between 0 and 9 = 300 10-19 =325 20-29 =350 etc +;how do we scale for this? +;Note: Also see the comments included with: Set CW Pitch K6JJ +Command=FEFE50E0.1409.FD +ReplyLength=16 +Validate=FEFE50E01409FD.FEFEE0501409.0000.FD +Value1=13|2|vfBcdBU|1|1|pmPitch + +[STATUS4] +;Read the transmit or receive mode +Command=FEFE50E0.1C00.FD +ReplyLength=15 +Validate=FEFE50E01C00FD.FEFEE050.1C00.00.FD +Flag1=00000000000000.00000000.0000.01.00|pmTx +Flag2=00000000000000.00000000.0000.FF.00|00000000000000.00000000.0000.00.00|pmRx + + + + diff --git a/CATCheck/Rigs/IC-7600.ini b/CATCheck/Rigs/IC-7600.ini new file mode 100644 index 0000000..3543745 --- /dev/null +++ b/CATCheck/Rigs/IC-7600.ini @@ -0,0 +1,148 @@ +;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< +; +; Icom IC-7600 Omni-Rig commands +; +; File created by: Makoto Kasahara / JN1GLB : jn1glb@jarl.com +; +;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + +;-------------------------------------------------------------------------- +; Initialize the radio +;-------------------------------------------------------------------------- + +; +; +; +[INIT1] +Command=FEFE7AE0.1A050092.00.FD +ReplyLength=16 +Validate=FEFE7AE01A05009200FD.FEFEE07AFBFD + + +;-------------------------------------------------------------------------- +; Set frequency +;-------------------------------------------------------------------------- + +; Set operating frequency +[pmFreq] +Command=FEFE7AE0.05.0000000000.FD +Value=5|5|vfBcdLU|1|0 +ReplyLength=17 +Validate=FEFE7AE0050000000000FD.FEFEE07AFBFD + + +;-------------------------------------------------------------------------- +; Set Split, Rx & Tx +;-------------------------------------------------------------------------- + +; Turn Split function on +[pmSplitOn] +Command=FEFE7AE0.0F01.FD +ReplyLength=13 +Validate=FEFE7AE00F01FD.FEFEE07AFBFD + +; Turn Split function off +[pmSplitOff] +Command=FEFE7AE0.0F00.FD +ReplyLength=13 +Validate=FEFE7AE00F00FD.FEFEE07AFBFD + +; Enable receive mode +[pmRx] +Command=FEFE7AE0.1C00.00.FD +ReplyLength=14 +Validate=FEFE7AE01C0000FD.FEFEE07AFBFD + +; Enable transmit mode +[pmTx] +Command=FEFE7AE0.1C00.01.FD +ReplyLength=14 +Validate=FEFE7AE01C0001FD.FEFEE07AFBFD + + +;-------------------------------------------------------------------------- +; Set modes of the radio +;-------------------------------------------------------------------------- + +; Upper sideband CW +[pmCW_U] +Command=FEFE7AE0.06.07.FD +ReplyLength=13 +Validate=FEFE7AE00607FD.FEFEE07AFBFD + +; Lower sideband CW +[pmCW_L] +Command=FEFE7AE0.06.03.FD +ReplyLength=13 +Validate=FEFE7AE00603FD.FEFEE07AFBFD + +; USB +[pmSSB_U] +Command=FEFE7AE0.06.01.FD +ReplyLength=13 +Validate=FEFE7AE00601FD.FEFEE07AFBFD + +; LSB +[pmSSB_L] +Command=FEFE7AE0.06.00.FD +ReplyLength=13 +Validate=FEFE7AE00600FD.FEFEE07AFBFD + +; Upper sideband digital modes +[pmDIG_U] +Command=FEFE7AE0.06.08.FD +ReplyLength=13 +Validate=FEFE7AE00608FD.FEFEE07AFBFD + +; Lower sideband digital modes +[pmDIG_L] +Command=FEFE7AE0.06.04.FD +ReplyLength=13 +Validate=FEFE7AE00604FD.FEFEE07AFBFD + +; AM +[pmAM] +Command=FEFE7AE0.06.02.FD +ReplyLength=13 +Validate=FEFE7AE00602FD.FEFEE07AFBFD + +; FM +[pmFM] +Command=FEFE7AE0.06.05.FD +ReplyLength=13 +Validate=FEFE7AE00605FD.FEFEE07AFBFD + + +;------------------------------------------------------------------------ +; Read the status of the radio +;------------------------------------------------------------------------ + +; Read the current frequency +[STATUS1] +Command=FEFE7AE0.03.FD +ReplyLength=17 +Validate=FEFE7AE003FD.FEFEE07A.03.0000000000.FD +Value1=11|5|vfBcdLU|1|0|pmFreq + +; Read the current operating mode +[STATUS2] +Command=FEFE7AE0.04.FD +ReplyLength=14 +Validate=FEFE7AE004FD.FEFEE07A.04.0000.FD +Flag1=000000000000.0000000000.FF.0000|000000000000.0000000000.07.0000|pmCW_U +Flag2=000000000000.0000000000.FF.0000|000000000000.0000000000.03.0000|pmCW_L +Flag3=000000000000.0000000000.FF.0000|000000000000.0000000000.01.0000|pmSSB_U +Flag4=000000000000.0000000000.FF.0000|000000000000.0000000000.00.0000|pmSSB_L +Flag5=000000000000.0000000000.FF.0000|000000000000.0000000000.08.0000|pmDIG_U +Flag6=000000000000.0000000000.FF.0000|000000000000.0000000000.04.0000|pmDIG_L +Flag7=000000000000.0000000000.FF.0000|000000000000.0000000000.02.0000|pmAM +Flag8=000000000000.0000000000.FF.0000|000000000000.0000000000.05.0000|pmFM + +; Are we in Rx or Tx? +[STATUS3] +Command=FEFE7AE0.1C00.FD +ReplyLength=15 +Validate=FEFE7AE01C00FD.FEFEE07A.1C00.00.FD +Flag1=00000000000000.00000000.0000.01.00|pmTx +Flag2=00000000000000.00000000.0000.FF.00|00000000000000.00000000.0000.00.00|pmRx + diff --git a/CATCheck/Rigs/IC-7600v2.ini b/CATCheck/Rigs/IC-7600v2.ini new file mode 100644 index 0000000..263de9a --- /dev/null +++ b/CATCheck/Rigs/IC-7600v2.ini @@ -0,0 +1,279 @@ +;------------------------------------------------------------------------------- +; Icom IC-7600 ver. 2.00 firmware command set +; +; IC-7600v2 File created by Bob Wilson, N6TV, n6tv@arrl.net +; +; Tested by: N6TV @ KE1B & HRO Sunnyvale, CA +;------------------------------------------------------------------------------- + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT1] +;Turn CI-V transceive OFF +Command=FEFE7AE0.1A050097.00.FD +ReplyLength=16 +Validate=FEFE7AE01A05009700FD.FEFEE07AFBFD + +[INIT2] +;disable RS-232C decode, use CI-V +Command=FEFE7AE0.1A050098.00.FD +ReplyLength=16 +Validate=FEFE7AE01A05009800FD.FEFEE07AFBFD + +[INIT3] +;set CW normal to lower sideband +Command=FEFE7AE0.1A050089.00.FD +ReplyLength=16 +Validate=FEFE7AE01A05008900FD.FEFEE07AFBFD + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreqA] +Command=FEFE7AE0.25.00.0000000000.FD +Value=6|5|vfBcdLU|1|0 +ReplyLength=18 +Validate=FEFE7AE025000000000000FD.FEFEE07AFBFD + +[pmFreqB] +Command=FEFE7AE0.25.01.0000000000.FD +Value=6|5|vfBcdLU|1|0 +ReplyLength=18 +Validate=FEFE7AE025010000000000FD.FEFEE07AFBFD + +[pmFreq] +Command=FEFE7AE0.05.0000000000.FD +Value=5|5|vfBcdLU|1|0 +ReplyLength=17 +Validate=FEFE7AE0050000000000FD.FEFEE07AFBFD + +[pmRitOffset] +;not supported + +[pmRit0] +Command=FEFE7AE0.21.00000000.FD +ReplyLength=16 +Validate=FEFE7AE02100000000FD.FEFEE07AFBFD + +[pmPitch] +;test the 0.425|-127.5 params. should map 300Hz->0, 900Hz->255 +Command=FEFE7AE0.14.09.0000.FD +Value=6|2|vfBcdBU|0.425|-127.5 +ReplyLength=15 +Validate=FEFE7AE014090000FD.FEFEE07AFBFD + + + + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +Command=FEFE7AE0.0F01.FD +ReplyLength=13 +Validate=FEFE7AE00F01FD.FEFEE07AFBFD + +[pmSplitOff] +Command=FEFE7AE0.0F00.FD +ReplyLength=13 +Validate=FEFE7AE00F00FD.FEFEE07AFBFD + +[pmVfoA] +Command=FEFE7AE0.07D0.FD +ReplyLength=13 +Validate=FEFE7AE007D0FD.FEFEE07AFBFD + +[pmVfoB] +Command=FEFE7AE0.07D1.FD +ReplyLength=13 +Validate=FEFE7AE007D1FD.FEFEE07AFBFD + +[pmVfoEqual] +Command=FEFE7AE0.07B1.FD +ReplyLength=13 +Validate=FEFE7AE007B1FD.FEFEE07AFBFD + +[pmVfoSwap] +Command=FEFE7AE0.07B0.FD +ReplyLength=13 +Validate=FEFE7AE007B0FD.FEFEE07AFBFD + +[pmVfoAA] +Command=FEFE7AE0.07D0.FD.FEFE7AE0.0F00.FD +ReplyLength=20 +Validate=FEFE7AE007D0FD.FEFE7AE00F00FD.FEFEE07AFBFD + +[pmVfoAB] +Command=FEFE7AE0.07D0.FD.FEFE7AE0.0F01.FD +ReplyLength=20 +Validate=FEFE7AE007D0FD.FEFE7AE00F01FD.FEFEE07AFBFD + +[pmVfoBA] +Command=FEFE7AE0.07D1.FD.FEFE7AE0.0F01.FD +ReplyLength=20 +Validate=FEFE7AE007D1FD.FEFE7AE00F01FD.FEFEE07AFBFD + +[pmVfoBB] +Command=FEFE7AE0.07D1.FD.FEFE7AE0.0F00.FD +ReplyLength=20 +Validate=FEFE7AE007D1FD.FEFE7AE00F00FD.FEFEE07AFBFD + +[pmRitOn] +Command=FEFE7AE0.21.0101.FD +ReplyLength=14 +Validate=FEFE7AE0210101FD.FEFEE07AFBFD + +[pmRitOff] +Command=FEFE7AE0.21.0100.FD +ReplyLength=14 +Validate=FEFE7AE0210100FD.FEFEE07AFBFD + +[pmXitOn] +Command=FEFE7AE0.21.0201.FD +ReplyLength=14 +Validate=FEFE7AE0210201FD.FEFEE07AFBFD + +[pmXitOff] +Command=FEFE7AE0.21.0200.FD +ReplyLength=14 +Validate=FEFE7AE0210200FD.FEFEE07AFBFD + +[pmRx] +Command=FEFE7AE0.1C00.00.FD +ReplyLength=14 +Validate=FEFE7AE01C0000FD.FEFEE07AFBFD + +[pmTx] +Command=FEFE7AE0.1C00.01.FD +ReplyLength=14 +Validate=FEFE7AE01C0001FD.FEFEE07AFBFD + + + + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +; CW-R +Command=FEFE7AE0.06.07.FD +ReplyLength=13 +Validate=FEFE7AE00607FD.FEFEE07AFBFD + +[pmCW_L] +; CW Normal +Command=FEFE7AE0.06.03.FD +ReplyLength=13 +Validate=FEFE7AE00603FD.FEFEE07AFBFD + +[pmSSB_U] +Command=FEFE7AE0.06.01.FD +ReplyLength=13 +Validate=FEFE7AE00601FD.FEFEE07AFBFD + +[pmSSB_L] +Command=FEFE7AE0.06.00.FD +ReplyLength=13 +Validate=FEFE7AE00600FD.FEFEE07AFBFD + +[pmDIG_U] +Command=FEFE7AE0.06.08.FD +ReplyLength=13 +Validate=FEFE7AE00608FD.FEFEE07AFBFD + +[pmDIG_L] +Command=FEFE7AE0.06.04.FD +ReplyLength=13 +Validate=FEFE7AE00604FD.FEFEE07AFBFD + +[pmAM] +Command=FEFE7AE0.06.02.FD +ReplyLength=13 +Validate=FEFE7AE00602FD.FEFEE07AFBFD + +[pmFM] +Command=FEFE7AE0.06.05.FD +ReplyLength=13 +Validate=FEFE7AE00605FD.FEFEE07AFBFD + + + + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +[STATUS1] +; Read transmit freq. +Command=FEFE7AE0.1C03.FD +ReplyLength=19 +Validate=FEFE7AE01C03FD.FEFEE07A.1C03.0000000000.FD +Value1=13|5|vfBcdLU|1|0|pmFreq + +[STATUS2] +Command=FEFE7AE0.04.FD +ReplyLength=14 +Validate=FEFE7AE004FD.FEFEE07A.04.0000.FD +Flag1=000000000000.0000000000.FF.0000|000000000000.0000000000.07.0000|pmCW_U +Flag2=000000000000.0000000000.FF.0000|000000000000.0000000000.03.0000|pmCW_L +Flag3=000000000000.0000000000.FF.0000|000000000000.0000000000.01.0000|pmSSB_U +Flag4=000000000000.0000000000.FF.0000|000000000000.0000000000.00.0000|pmSSB_L +Flag5=000000000000.0000000000.FF.0000|000000000000.0000000000.08.0000|pmDIG_U +Flag6=000000000000.0000000000.FF.0000|000000000000.0000000000.04.0000|pmDIG_L +Flag7=000000000000.0000000000.FF.0000|000000000000.0000000000.02.0000|pmAM +Flag8=000000000000.0000000000.FF.0000|000000000000.0000000000.05.0000|pmFM + +[STATUS3] +Command=FEFE7AE0.1409.FD +ReplyLength=16 +Validate=FEFE7AE01409FD.FEFEE07A.1409.0000.FD +; 0=300 Hz, 255=900 Hz +Value1=13|2|vfBcdBU|2.362205|300|pmPitch + +[STATUS4] +Command=FEFE7AE0.1C00.FD +ReplyLength=15 +Validate=FEFE7AE01C00FD.FEFEE07A.1C00.00.FD +Flag1=00000000000000.00000000.0000.01.00|pmTx +Flag2=00000000000000.00000000.0000.0F.00|00000000000000.00000000.0000.00.00|pmRx + +[STATUS5] +Command=FEFE7AE0.2500.FD +ReplyLength=19 +Validate=FEFE7AE02500FD.FEFEE07A.2500.0000000000.FD +Value1=13|5|vfBcdLU|1|0|pmFreqA + +[STATUS6] +Command=FEFE7AE0.2501.FD +ReplyLength=19 +Validate=FEFE7AE02501FD.FEFEE07A.2501.0000000000.FD +Value1=13|5|vfBcdLU|1|0|pmFreqB + +[STATUS7] +Command=FEFE7AE0.0F.FD +ReplyLength=13 +Validate=FEFE7AE00FFD.FEFEE07A.0F.00.FD +Flag1=000000000000.00000000.00.01.00|pmSplitOn +Flag2=000000000000.00000000.00.0F.00|000000000000.00000000.00.00.00|pmSplitOff + +[STATUS8] +Command=FEFE7AE0.2101.FD +ReplyLength=15 +Validate=FEFE7AE02101FD.FEFEE07A.2101.00.FD +Flag1=00000000000000.00000000.0000.01.00|pmRitOn +Flag2=00000000000000.00000000.0000.0F.00|00000000000000.00000000.0000.00.00|pmRitOff + +[STATUS9] +Command=FEFE7AE0.2102.FD +ReplyLength=15 +Validate=FEFE7AE02102FD.FEFEE07A.2102.00.FD +Flag1=00000000000000.00000000.0000.01.00|pmXitOn +Flag2=00000000000000.00000000.0000.0F.00|00000000000000.00000000.0000.00.00|pmXitOff + +[STATUS10] +Command=FEFE7AE0.07D2.FD +ReplyLength=15 +Validate=FEFE7AE007D2FD.FEFEE07A.07D2.00.FD +Flag1=00000000000000.00000000.0000.01.00|pmVfoB +Flag2=00000000000000.00000000.0000.0F.00|00000000000000.00000000.0000.00.00|pmVfoA diff --git a/CATCheck/Rigs/IC-761.ini b/CATCheck/Rigs/IC-761.ini new file mode 100644 index 0000000..acbdc8a --- /dev/null +++ b/CATCheck/Rigs/IC-761.ini @@ -0,0 +1,165 @@ +;------------------------------------------------------------------------------- +; Icom IC-761 command set +; +; File created by Lou Sica, AC0X lsica@comcast.net +;------------------------------------------------------------------------------- + + + + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT] +;none + + + + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreqA] +;not supported + +[pmFreqB] +;not supported + +[pmFreq] +Command=FEFE1EE0.05.0000000000.FD +Value=5|5|vfBcdLU|1|0 +ReplyLength=17 +Validate=FEFE1EE0050000000000FD.FEFE001EFBFD + +[pmRitOffset] +;not supported + +[pmRit0] +;not supported + +[pmPitch] +;not supported + + + + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +;not supported + +[pmSplitOff] +;not supported + +[pmVfoA] +Command=FEFE1EE0.0700.FD +ReplyLength=13 +Validate=FEFE1EE00700FD.FEFE001EFBFD + +[pmVfoB] +Command=FEFE1EE0.0701.FD +ReplyLength=13 +Validate=FEFE1EE00701FD.FEFE001EFBFD + +[pmVfoEqual] +;not supported + +[pmVfoSwap] +;not supported + +[pmVfoAA] +;not supported + +[pmVfoAB] +;not supported + +[pmVfoBA] +;not supported + +[pmVfoBB] +;not supported + +[pmRitOn] +;not supported + +[pmRitOff] +;not supported + +[pmXitOn] +;not supported + +[pmXitOff] +;not supported + +[pmRx] +;not supported + +[pmTx] +;not supported + + + + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +Command=FEFE1EE0.06.03.FD +ReplyLength=13 +Validate=FEFE1EE00603FD.FEFE001EFBFD + +[pmCW_L] +;not supported + +[pmSSB_U] +Command=FEFE1EE0.06.01.FD +ReplyLength=13 +Validate=FEFE1EE00601FD.FEFE001EFBFD + +[pmSSB_L] +Command=FEFE1EE0.06.00.FD +ReplyLength=13 +Validate=FEFE1EE00600FD.FEFE001EFBFD + +[pmDIG_U] +Command=FEFE1EE0.06.04.FD +ReplyLength=13 +Validate=FEFE1EE00604FD.FEFE001EFBFD + +[pmDIG_L] +;not supported + +[pmAM] +Command=FEFE1EE0.06.02.FD +ReplyLength=13 +Validate=FEFE1EE00602FD.FEFE001EFBFD + +[pmFM] +Command=FEFE1EE0.06.05.FD +ReplyLength=13 +Validate=FEFE1EE00605FD.FEFE001EFBFD + + + + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +[STATUS1] +Command=FEFE1EE0.03.FD +ReplyLength=17 +Validate=FEFE1EE003FD.FEFE001E.03.0000000000.FD +Value1=11|5|vfBcdLU|1|0|pmFreq + +[STATUS2] +Command=FEFE1EE0.04.FD +ReplyLength=13 +Validate=FEFE1EE004FD.FEFE001E.04.00.00 +Flag1=000000000000.0000000000.FF.00|000000000000.0000000000.03.00|pmCW_U +Flag3=000000000000.0000000000.FF.00|000000000000.0000000000.01.00|pmSSB_U +Flag4=000000000000.0000000000.FF.00|000000000000.0000000000.00.00|pmSSB_L +Flag5=000000000000.0000000000.FF.00|000000000000.0000000000.04.00|pmDIG_U +Flag7=000000000000.0000000000.FF.00|000000000000.0000000000.02.00|pmAM +Flag8=000000000000.0000000000.FF.00|000000000000.0000000000.05.00|pmFM diff --git a/CATCheck/Rigs/IC-7610-DATA.ini b/CATCheck/Rigs/IC-7610-DATA.ini new file mode 100644 index 0000000..b399f83 --- /dev/null +++ b/CATCheck/Rigs/IC-7610-DATA.ini @@ -0,0 +1,274 @@ +;------------------------------------------------------------------------------- +; Icom IC-7610-DATA +; +; IC-7600-DATA File created by Bob Wilson, N6TV, n6tv@arrl.net, 2018-04-16 +; +; Tested by: Andy O'Brien, K3UK +; +; Same as IC-7610, but selects USB-D and LSB-D for DIG modes instead of RTTY and RTTY-R +; Note: Uses DATA2 MOD (aka Data Mode 2 or D2) so Modulation Input defaults to USB +;------------------------------------------------------------------------------- + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT1] +;Turn USB CI-V Echo Back ON +Command=FEFE98E0.1A050116.01.FD +ReplyLength=16 +Validate=FEFE98E01A05011601FD.FEFEE098FBFD + +[INIT2] +;Turn CI-V transceive OFF +Command=FEFE98E0.1A050112.00.FD +ReplyLength=16 +Validate=FEFE98E01A05011200FD.FEFEE098FBFD + +[INIT3] +;set CW normal to lower sideband +Command=FEFE98E0.1A050062.00.FD +ReplyLength=16 +Validate=FEFE98E01A05006200FD.FEFEE098FBFD + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreqA] +Command=FEFE98E0.25.00.0000000000.FD +Value=6|5|vfBcdLU|1|0 +ReplyLength=18 +Validate=FEFE98E025000000000000FD.FEFEE098FBFD + +[pmFreqB] +Command=FEFE98E0.25.01.0000000000.FD +Value=6|5|vfBcdLU|1|0 +ReplyLength=18 +Validate=FEFE98E025010000000000FD.FEFEE098FBFD + +[pmFreq] +; not supported + +[pmRitOffset] +;not supported + +[pmRit0] +Command=FEFE98E0.21.00000000.FD +ReplyLength=16 +Validate=FEFE98E02100000000FD.FEFEE098FBFD + +[pmPitch] +;The 0.425|-127.5 params. should map 300Hz->0, 900Hz->255 +Command=FEFE98E0.14.09.0000.FD +Value=6|2|vfBcdBU|0.425|-127.5 +ReplyLength=15 +Validate=FEFE98E014090000FD.FEFEE098FBFD + + + + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +Command=FEFE98E0.0F01.FD +ReplyLength=13 +Validate=FEFE98E00F01FD.FEFEE098FBFD + +[pmSplitOff] +Command=FEFE98E0.0F00.FD +ReplyLength=13 +Validate=FEFE98E00F00FD.FEFEE098FBFD + +[pmVfoA] +Command=FEFE98E0.07D0.FD +ReplyLength=13 +Validate=FEFE98E007D0FD.FEFEE098FBFD + +[pmVfoB] +Command=FEFE98E0.07D1.FD +ReplyLength=13 +Validate=FEFE98E007D1FD.FEFEE098FBFD + +[pmVfoEqual] +Command=FEFE98E0.07B1.FD +ReplyLength=13 +Validate=FEFE98E007B1FD.FEFEE098FBFD + +[pmVfoSwap] +Command=FEFE98E0.07B0.FD +ReplyLength=13 +Validate=FEFE98E007B0FD.FEFEE098FBFD + +[pmVfoAA] +; not supported + +[pmVfoAB] +; not supported + +[pmVfoBA] +; not supported + +[pmVfoBB] +; not supported + +[pmRitOn] +Command=FEFE98E0.21.0101.FD +ReplyLength=14 +Validate=FEFE98E0210101FD.FEFEE098FBFD + +[pmRitOff] +Command=FEFE98E0.21.0100.FD +ReplyLength=14 +Validate=FEFE98E0210100FD.FEFEE098FBFD + +[pmXitOn] +Command=FEFE98E0.21.0201.FD +ReplyLength=14 +Validate=FEFE98E0210201FD.FEFEE098FBFD + +[pmXitOff] +Command=FEFE98E0.21.0200.FD +ReplyLength=14 +Validate=FEFE98E0210200FD.FEFEE098FBFD + +[pmRx] +Command=FEFE98E0.1C00.00.FD +ReplyLength=14 +Validate=FEFE98E01C0000FD.FEFEE098FBFD + +[pmTx] +Command=FEFE98E0.1C00.01.FD +ReplyLength=14 +Validate=FEFE98E01C0001FD.FEFEE098FBFD + + + + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +; CW-R +Command=FEFE98E0.2600.07.FD +ReplyLength=14 +Validate=FEFE98E0260007FD.FEFEE098FBFD + +[pmCW_L] +; CW Normal +Command=FEFE98E0.2600.03.FD +ReplyLength=14 +Validate=FEFE98E0260003FD.FEFEE098FBFD + +[pmSSB_U] +Command=FEFE98E0.2600.01.00.FD +ReplyLength=15 +Validate=FEFE98E026000100FD.FEFEE098FBFD + +[pmSSB_L] +Command=FEFE98E0.2600.00.00.FD +ReplyLength=15 +Validate=FEFE98E026000000FD.FEFEE098FBFD + +[pmDIG_U] +; These lines select USB-D Data Mode 2 (DATA2 MOD) which defaults to USB sound card modulation, +; FIL1 +Command=FEFE98E0.2600.01.02.01.FD +ReplyLength=16 +Validate=FEFE98E02600010201FD.FEFEE098FBFD + +[pmDIG_L] +; These lines select LSB-D Data Mode 2 (DATA2 MOD) which defaults to USB sound card modulation, +; FIL1 +Command=FEFE98E0.2600.00.02.01.FD +ReplyLength=16 +Validate=FEFE98E02600000201FD.FEFEE098FBFD + +[pmAM] +Command=FEFE98E0.2600.02.FD +ReplyLength=14 +Validate=FEFE98E0260002FD.FEFEE098FBFD + +[pmFM] +Command=FEFE98E0.2600.05.FD +ReplyLength=14 +Validate=FEFE98E0260005FD.FEFEE098FBFD + + + + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +[STATUS1] +Command=FEFE98E0.2500.FD +ReplyLength=19 +Validate=FEFE98E02500FD.FEFEE098.2500.0000000000.FD +Value1=13|5|vfBcdLU|1|0|pmFreqA + +[STATUS2] +Command=FEFE98E0.2501.FD +ReplyLength=19 +Validate=FEFE98E02501FD.FEFEE098.2501.0000000000.FD +Value1=13|5|vfBcdLU|1|0|pmFreqB + +[STATUS3] +Command=FEFE98E0.2600.FD +ReplyLength=17 +Validate=FEFE98E02600FD.FEFEE098.2600.000000.FD +Flag1=00000000000000.00000000.0000.FF0000.00|00000000000000.00000000.0000.030000.00|pmCW_L +Flag2=00000000000000.00000000.0000.FF0000.00|00000000000000.00000000.0000.070000.00|pmCW_U +Flag3=00000000000000.00000000.0000.FFFF00.00|00000000000000.00000000.0000.010000.00|pmSSB_U +Flag4=00000000000000.00000000.0000.FFFF00.00|00000000000000.00000000.0000.000000.00|pmSSB_L +Flag5=00000000000000.00000000.0000.FF0000.00|00000000000000.00000000.0000.080000.00|pmDIG_U +Flag6=00000000000000.00000000.0000.FF0000.00|00000000000000.00000000.0000.040000.00|pmDIG_L +Flag71=00000000000000.00000000.0000.FFFF00.00|00000000000000.00000000.0000.010100.00|pmDIG_U +Flag72=00000000000000.00000000.0000.FFFF00.00|00000000000000.00000000.0000.010200.00|pmDIG_U +Flag73=00000000000000.00000000.0000.FFFF00.00|00000000000000.00000000.0000.010300.00|pmDIG_U +Flag81=00000000000000.00000000.0000.FFFF00.00|00000000000000.00000000.0000.000100.00|pmDIG_L +Flag82=00000000000000.00000000.0000.FFFF00.00|00000000000000.00000000.0000.000200.00|pmDIG_L +Flag83=00000000000000.00000000.0000.FFFF00.00|00000000000000.00000000.0000.000300.00|pmDIG_L +Flag9=00000000000000.00000000.0000.FF0000.00|00000000000000.00000000.0000.020000.00|pmAM +Flag10=00000000000000.00000000.0000.FF0000.00|00000000000000.00000000.0000.050000.00|pmFM + +[STATUS4] +Command=FEFE98E0.1409.FD +ReplyLength=16 +Validate=FEFE98E01409FD.FEFEE098.1409.0000.FD +; 0=300 Hz, 255=900 Hz +Value1=13|2|vfBcdBU|2.362205|300|pmPitch + +[STATUS5] +Command=FEFE98E0.1C00.FD +ReplyLength=15 +Validate=FEFE98E01C00FD.FEFEE098.1C00.00.FD +Flag1=00000000000000.00000000.0000.01.00|pmTx +Flag2=00000000000000.00000000.0000.0F.00|00000000000000.00000000.0000.00.00|pmRx + +[STATUS6] +Command=FEFE98E0.0F.FD +ReplyLength=13 +Validate=FEFE98E00FFD.FEFEE098.0F.00.FD +Flag1=000000000000.00000000.00.01.00|pmSplitOn +Flag2=000000000000.00000000.00.0F.00|000000000000.00000000.00.00.00|pmSplitOff + +[STATUS7] +Command=FEFE98E0.2101.FD +ReplyLength=15 +Validate=FEFE98E02101FD.FEFEE098.2101.00.FD +Flag1=00000000000000.00000000.0000.01.00|pmRitOn +Flag2=00000000000000.00000000.0000.0F.00|00000000000000.00000000.0000.00.00|pmRitOff + +[STATUS8] +Command=FEFE98E0.2102.FD +ReplyLength=15 +Validate=FEFE98E02102FD.FEFEE098.2102.00.FD +Flag1=00000000000000.00000000.0000.01.00|pmXitOn +Flag2=00000000000000.00000000.0000.0F.00|00000000000000.00000000.0000.00.00|pmXitOff + +[STATUS9] +Command=FEFE98E0.07D2.FD +ReplyLength=15 +Validate=FEFE98E007D2FD.FEFEE098.07D2.00.FD +Flag1=00000000000000.00000000.0000.01.00|pmVfoB +Flag2=00000000000000.00000000.0000.0F.00|00000000000000.00000000.0000.00.00|pmVfoA diff --git a/CATCheck/Rigs/IC-7610.ini b/CATCheck/Rigs/IC-7610.ini new file mode 100644 index 0000000..2a53bd1 --- /dev/null +++ b/CATCheck/Rigs/IC-7610.ini @@ -0,0 +1,279 @@ +;------------------------------------------------------------------------------- +; Icom IC-7610 +; +; IC-7610 File created by Ronald Albrecht, KC5KE +; +; Tested by: Ronald Albrecht, KC5KE +; Andy O'Brien, K3UK +; +; Updated by: Bob Wilson, N6TV, n6tv@arrl.net 2/6/2018: +; - Fix INIT1 and INIT2 (different for every Icom rig). +; - Return pmFreqA and pmFreqB individually instead of pmFreq +; - Fix pmVfoEqual, pmVfoA, pmVfoB +; Updated by N6TV 2018-04-16: +; - Set USB CI-V Echo Back ON to ensure that rig returns the values coded below +; - Corrected pmVfoAA, pmVfoAB, pmVfoBA, pmVfoBB commands +; - Removed pmVfoAA and pmVfoAB from STATUS (use pmVfoA and pmVfoB instead) +;------------------------------------------------------------------------------- + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT1] +;Turn USB CI-V Echo Back ON +Command=FEFE98E0.1A050116.01.FD +ReplyLength=16 +Validate=FEFE98E01A05011601FD.FEFEE098FBFD + +[INIT2] +;Turn CI-V transceive OFF +Command=FEFE98E0.1A050112.00.FD +ReplyLength=16 +Validate=FEFE98E01A05011200FD.FEFEE098FBFD + +[INIT3] +;set CW normal to lower sideband +Command=FEFE98E0.1A050062.00.FD +ReplyLength=16 +Validate=FEFE98E01A05006200FD.FEFEE098FBFD + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreqA] +Command=FEFE98E0.25.00.0000000000.FD +Value=6|5|vfBcdLU|1|0 +ReplyLength=18 +Validate=FEFE98E025000000000000FD.FEFEE098FBFD + +[pmFreqB] +Command=FEFE98E0.25.01.0000000000.FD +Value=6|5|vfBcdLU|1|0 +ReplyLength=18 +Validate=FEFE98E025010000000000FD.FEFEE098FBFD + +[pmFreq] +; not supported + +[pmRitOffset] +;not supported + +[pmRit0] +Command=FEFE98E0.21.00000000.FD +ReplyLength=16 +Validate=FEFE98E02100000000FD.FEFEE098FBFD + +[pmPitch] +;The 0.425|-127.5 params. should map 300Hz->0, 900Hz->255 +Command=FEFE98E0.14.09.0000.FD +Value=6|2|vfBcdBU|0.425|-127.5 +ReplyLength=15 +Validate=FEFE98E014090000FD.FEFEE098FBFD + + + + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +Command=FEFE98E0.0F01.FD +ReplyLength=13 +Validate=FEFE98E00F01FD.FEFEE098FBFD + +[pmSplitOff] +Command=FEFE98E0.0F00.FD +ReplyLength=13 +Validate=FEFE98E00F00FD.FEFEE098FBFD + +[pmVfoA] +Command=FEFE98E0.07D0.FD +ReplyLength=13 +Validate=FEFE98E007D0FD.FEFEE098FBFD + +[pmVfoB] +Command=FEFE98E0.07D1.FD +ReplyLength=13 +Validate=FEFE98E007D1FD.FEFEE098FBFD + +[pmVfoEqual] +Command=FEFE98E0.07B1.FD +ReplyLength=13 +Validate=FEFE98E007B1FD.FEFEE098FBFD + +[pmVfoSwap] +Command=FEFE98E0.07B0.FD +ReplyLength=13 +Validate=FEFE98E007B0FD.FEFEE098FBFD + +[pmVfoAA] +Command=FEFE98E0.07D0.FD.FEFE98E0.0F00.FD +ReplyLength=20 +Validate=FEFE98E007D0FD.FEFE98E00F00FD.FEFEE098FBFD + +[pmVfoAB] +Command=FEFE98E0.07D0.FD.FEFE98E0.0F01.FD +ReplyLength=20 +Validate=FEFE98E007D0FD.FEFE98E00F01FD.FEFEE098FBFD + +[pmVfoBA] +Command=FEFE98E0.07D1.FD.FEFE98E0.0F01.FD +ReplyLength=20 +Validate=FEFE98E007D1FD.FEFE98E00F01FD.FEFEE098FBFD + +[pmVfoBB] +Command=FEFE98E0.07D1.FD.FEFE98E0.0F00.FD +ReplyLength=20 +Validate=FEFE98E007D1FD.FEFE98E00F00FD.FEFEE098FBFD + +[pmRitOn] +Command=FEFE98E0.21.0101.FD +ReplyLength=14 +Validate=FEFE98E0210101FD.FEFEE098FBFD + +[pmRitOff] +Command=FEFE98E0.21.0100.FD +ReplyLength=14 +Validate=FEFE98E0210100FD.FEFEE098FBFD + +[pmXitOn] +Command=FEFE98E0.21.0201.FD +ReplyLength=14 +Validate=FEFE98E0210201FD.FEFEE098FBFD + +[pmXitOff] +Command=FEFE98E0.21.0200.FD +ReplyLength=14 +Validate=FEFE98E0210200FD.FEFEE098FBFD + +[pmRx] +Command=FEFE98E0.1C00.00.FD +ReplyLength=14 +Validate=FEFE98E01C0000FD.FEFEE098FBFD + +[pmTx] +Command=FEFE98E0.1C00.01.FD +ReplyLength=14 +Validate=FEFE98E01C0001FD.FEFEE098FBFD + + + + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +; CW-R +Command=FEFE98E0.06.07.FD +ReplyLength=13 +Validate=FEFE98E00607FD.FEFEE098FBFD + +[pmCW_L] +; CW Normal +Command=FEFE98E0.06.03.FD +ReplyLength=13 +Validate=FEFE98E00603FD.FEFEE098FBFD + +[pmSSB_U] +Command=FEFE98E0.06.01.FD +ReplyLength=13 +Validate=FEFE98E00601FD.FEFEE098FBFD + +[pmSSB_L] +Command=FEFE98E0.06.00.FD +ReplyLength=13 +Validate=FEFE98E00600FD.FEFEE098FBFD + +[pmDIG_U] +Command=FEFE98E0.06.08.FD +ReplyLength=13 +Validate=FEFE98E00608FD.FEFEE098FBFD + +[pmDIG_L] +Command=FEFE98E0.06.04.FD +ReplyLength=13 +Validate=FEFE98E00604FD.FEFEE098FBFD. + +[pmAM] +Command=FEFE98E0.06.02.FD +ReplyLength=13 +Validate=FEFE98E00602FD.FEFEE098FBFD + +[pmFM] +Command=FEFE98E0.06.05.FD +ReplyLength=13 +Validate=FEFE98E00605FD.FEFEE098FBFD + + + + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +[STATUS1] +Command=FEFE98E0.2500.FD +ReplyLength=19 +Validate=FEFE98E02500FD.FEFEE098.2500.0000000000.FD +Value1=13|5|vfBcdLU|1|0|pmFreqA + +[STATUS2] +Command=FEFE98E0.2501.FD +ReplyLength=19 +Validate=FEFE98E02501FD.FEFEE098.2501.0000000000.FD +Value1=13|5|vfBcdLU|1|0|pmFreqB + +[STATUS3] +Command=FEFE98E0.04.FD +ReplyLength=14 +Validate=FEFE98E004FD.FEFEE098.04.0000.FD +Flag1=000000000000.0000000000.FF.0000|000000000000.0000000000.03.0000|pmCW_L +Flag2=000000000000.0000000000.FF.0000|000000000000.0000000000.07.0000|pmCW_U +Flag3=000000000000.0000000000.FF.0000|000000000000.0000000000.01.0000|pmSSB_U +Flag4=000000000000.0000000000.FF.0000|000000000000.0000000000.00.0000|pmSSB_L +Flag5=000000000000.0000000000.FF.0000|000000000000.0000000000.08.0000|pmDIG_U +Flag6=000000000000.0000000000.FF.0000|000000000000.0000000000.04.0000|pmDIG_L +Flag7=000000000000.0000000000.FF.0000|000000000000.0000000000.02.0000|pmAM +Flag8=000000000000.0000000000.FF.0000|000000000000.0000000000.05.0000|pmFM + +[STATUS4] +Command=FEFE98E0.1409.FD +ReplyLength=16 +Validate=FEFE98E01409FD.FEFEE098.1409.0000.FD +; 0=300 Hz, 255=900 Hz +Value1=13|2|vfBcdBU|2.362205|300|pmPitch + +[STATUS5] +Command=FEFE98E0.1C00.FD +ReplyLength=15 +Validate=FEFE98E01C00FD.FEFEE098.1C00.00.FD +Flag1=00000000000000.00000000.0000.01.00|pmTx +Flag2=00000000000000.00000000.0000.0F.00|00000000000000.00000000.0000.00.00|pmRx + +[STATUS6] +Command=FEFE98E0.0F.FD +ReplyLength=13 +Validate=FEFE98E00FFD.FEFEE098.0F.00.FD +Flag1=000000000000.00000000.00.01.00|pmSplitOn +Flag2=000000000000.00000000.00.0F.00|000000000000.00000000.00.00.00|pmSplitOff + +[STATUS7] +Command=FEFE98E0.2101.FD +ReplyLength=15 +Validate=FEFE98E02101FD.FEFEE098.2101.00.FD +Flag1=00000000000000.00000000.0000.01.00|pmRitOn +Flag2=00000000000000.00000000.0000.0F.00|00000000000000.00000000.0000.00.00|pmRitOff + +[STATUS8] +Command=FEFE98E0.2102.FD +ReplyLength=15 +Validate=FEFE98E02102FD.FEFEE098.2102.00.FD +Flag1=00000000000000.00000000.0000.01.00|pmXitOn +Flag2=00000000000000.00000000.0000.0F.00|00000000000000.00000000.0000.00.00|pmXitOff + +[STATUS9] +Command=FEFE98E0.07D2.FD +ReplyLength=15 +Validate=FEFE98E007D2FD.FEFEE098.07D2.00.FD +Flag1=00000000000000.00000000.0000.01.00|pmVfoB +Flag2=00000000000000.00000000.0000.0F.00|00000000000000.00000000.0000.00.00|pmVfoA diff --git a/CATCheck/Rigs/IC-765.ini b/CATCheck/Rigs/IC-765.ini new file mode 100644 index 0000000..32321fd --- /dev/null +++ b/CATCheck/Rigs/IC-765.ini @@ -0,0 +1,175 @@ +;------------------------------------------------------------------------------- +; Icom IC-765 command set +; +; File created by RZ4AG aia@dxsoft.com +; corrected by Rich Yost n2ry@yahoo.com +;------------------------------------------------------------------------------- + + + + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT] +;none + + + + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreqA] +;not supported + +[pmFreqB] +;not supported + +[pmFreq] +Command=FEFE2CE0.05.0000000000.FD +Value=5|5|vfBcdLU|1|0 +ReplyLength=17 +Validate=FEFE2CE0050000000000FD.FEFEE02CFBFD + +[pmRitOffset] +;not supported + +[pmRit0] +;not supported + +[pmPitch] +;not supported + + + + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +;not supported + +[pmSplitOff] +;not supported + +[pmVfoA] +Command=FEFE2CE0.0700.FD +ReplyLength=13 +Validate=FEFE2CE00700FD.FEFEE02CFBFD + +[pmVfoB] +Command=FEFE2CE0.0701.FD +ReplyLength=13 +Validate=FEFE2CE00701FD.FEFEE02CFBFD + +[pmVfoEqual] +Command=FEFE2CE0.07A0.FD +ReplyLength=13 +Validate=FEFE2CE007A0FD.FEFEE02CFBFD + +[pmVfoSwap] +;not supported + +[pmVfoAA] +;not supported + +[pmVfoAB] +;not supported + +[pmVfoBA] +;not supported + +[pmVfoBB] +;not supported + +[pmRitOn] +;not supported + +[pmRitOff] +;not supported + +[pmXitOn] +;not supported + +[pmXitOff] +;not supported + +[pmRx] +;not supported + +[pmTx] +;not supported + + + + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +Command=FEFE2CE0.06.03.FD +ReplyLength=13 +Validate=FEFE2CE00603FD.FEFEE02CFBFD + +[pmCW_L] +Command=FEFE2CE0.06.07.FD +ReplyLength=13 +Validate=FEFE2CE00607FD.FEFEE02CFBFD + +[pmSSB_U] +Command=FEFE2CE0.06.01.FD +ReplyLength=13 +Validate=FEFE2CE00601FD.FEFEE02CFBFD + +[pmSSB_L] +Command=FEFE2CE0.06.00.FD +ReplyLength=13 +Validate=FEFE2CE00600FD.FEFEE02CFBFD + +[pmDIG_U] +Command=FEFE2CE0.06.04.FD +ReplyLength=13 +Validate=FEFE2CE00604FD.FEFEE02CFBFD + +[pmDIG_L] +Command=FEFE2CE0.06.08.FD +ReplyLength=13 +Validate=FEFE2CE00608FD.FEFEE02CFBFD + +[pmAM] +Command=FEFE2CE0.06.02.FD +ReplyLength=13 +Validate=FEFE2CE00602FD.FEFEE02CFBFD + +[pmFM] +Command=FEFE2CE0.06.05.FD +ReplyLength=13 +Validate=FEFE2CE00605FD.FEFEE02CFBFD + + + + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +[STATUS1] +Command=FEFE2CE0.03.FD +ReplyLength=17 +Validate=FEFE2CE003FD.FEFEE02C.03.0000000000.FD +Value1=11|5|vfBcdLU|1|0|pmFreq + +[STATUS2] +Command=FEFE2CE0.04.FD +ReplyLength=14 +Validate=FEFE2CE004FD.FEFEE02C.04.0000.FD +;filter byte is appended to the mode byte? +Flag1=000000000000.0000000000.FF.0000|000000000000.0000000000.03.0000|pmCW_U +Flag2=000000000000.0000000000.FF.0000|000000000000.0000000000.07.0000|pmCW_L +Flag3=000000000000.0000000000.FF.0000|000000000000.0000000000.01.0000|pmSSB_U +Flag4=000000000000.0000000000.FF.0000|000000000000.0000000000.00.0000|pmSSB_L +Flag5=000000000000.0000000000.FF.0000|000000000000.0000000000.04.0000|pmDIG_U +Flag6=000000000000.0000000000.FF.0000|000000000000.0000000000.08.0000|pmDIG_L +Flag7=000000000000.0000000000.FF.0000|000000000000.0000000000.02.0000|pmAM +Flag8=000000000000.0000000000.FF.0000|000000000000.0000000000.05.0000|pmFM diff --git a/CATCheck/Rigs/IC-7700.ini b/CATCheck/Rigs/IC-7700.ini new file mode 100644 index 0000000..c3d4059 --- /dev/null +++ b/CATCheck/Rigs/IC-7700.ini @@ -0,0 +1,230 @@ +;------------------------------------------------------------------------------- +; Icom IC-7700 command set Firmware 1.20 +; +; File created by Alex Shovkoplyas, VE3NEA ve3nea@dxatlas.com and K4HW +; Updated by N6TV 7 September 2015 01:32 UTC +; +; Tested by: _________ +;------------------------------------------------------------------------------- + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT1] +;Turn CI-V transceive OFF +Command=FEFE74E0.1A050095.00.FD +ReplyLength=16 +Validate=FEFE74E01A05009500FD.FEFEE074FBFD + +[INIT2] +;disable RS-232C decode, use CI-V +Command=FEFE74E0.1A050096.00.FD +ReplyLength=16 +Validate=FEFE74E01A05009600FD.FEFEE074FBFD + +[INIT3] +;set CW normal to lower sideband +Command=FEFE74E0.1A050091.00.FD +ReplyLength=16 +Validate=FEFE74E01A05009100FD.FEFEE074FBFD + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreqA] +;not supported + +[pmFreqB] +;not supported + +[pmFreq] +Command=FEFE74E0.05.0000000000.FD +Value=5|5|vfBcdLU|1|0 +ReplyLength=17 +Validate=FEFE74E0050000000000FD.FEFEE074FBFD + +[pmRitOffset] +;not supported + +[pmRit0] +;not supported + +[pmPitch] +;test the 0.425|-127.5 params. should map 300Hz->0, 900Hz->255 +Command=FEFE74E0.14.09.0000.FD +Value=6|2|vfBcdBU|0.425|-127.5 +ReplyLength=15 +Validate=FEFE74E014090000FD.FEFEE074FBFD + + + + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +Command=FEFE74E0.0F01.FD +ReplyLength=13 +Validate=FEFE74E00F01FD.FEFEE074FBFD + +[pmSplitOff] +Command=FEFE74E0.0F00.FD +ReplyLength=13 +Validate=FEFE74E00F00FD.FEFEE074FBFD + +[pmVfoA] +Command=FEFE74E0.0700.FD +ReplyLength=13 +Validate=FEFE74E00700FD.FEFEE074FBFD + +[pmVfoB] +Command=FEFE74E0.0701.FD +ReplyLength=13 +Validate=FEFE74E00701FD.FEFEE074FBFD + +[pmVfoEqual] +Command=FEFE74E0.07A0.FD +ReplyLength=13 +Validate=FEFE74E007A0FD.FEFEE074FBFD + +[pmVfoSwap] +Command=FEFE74E0.07B0.FD +ReplyLength=13 +Validate=FEFE74E007B0FD.FEFEE074FBFD + +[pmVfoAA] +Command=FEFE74E0.0700.FD.FEFE74E0.0F00.FD +ReplyLength=20 +Validate=FEFE74E00700FD.FEFE74E00F00FD.FEFEE074FBFD + +[pmVfoAB] +Command=FEFE74E0.0700.FD.FEFE74E0.0F01.FD +ReplyLength=20 +Validate=FEFE74E00700FD.FEFE74E00F01FD.FEFEE074FBFD + +[pmVfoBA] +Command=FEFE74E0.0701.FD.FEFE74E0.0F01.FD +ReplyLength=20 +Validate=FEFE74E00701FD.FEFE74E00F01FD.FEFEE074FBFD + +[pmVfoBB] +Command=FEFE74E0.0701.FD.FEFE74E0.0F00.FD +ReplyLength=20 +Validate=FEFE74E00701FD.FEFE74E00F00FD.FEFEE074FBFD + +[pmRitOn] +;not supported + +[pmRitOff] +;not supported + +[pmXitOn] +;not supported + +[pmXitOff] +;not supported + +[pmRx] +Command=FEFE74E0.1C00.00.FD +ReplyLength=14 +Validate=FEFE74E01C0000FD.FEFEE074FBFD + +[pmTx] +Command=FEFE74E0.1C00.01.FD +ReplyLength=14 +Validate=FEFE74E01C0001FD.FEFEE074FBFD + + + + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +; CW-R +Command=FEFE74E0.06.07.FD +ReplyLength=13 +Validate=FEFE74E00607FD.FEFEE074FBFD + +[pmCW_L] +; CW Normal +Command=FEFE74E0.06.03.FD +ReplyLength=13 +Validate=FEFE74E00603FD.FEFEE074FBFD + +[pmSSB_U] +Command=FEFE74E0.06.01.FD +ReplyLength=13 +Validate=FEFE74E00601FD.FEFEE074FBFD + +[pmSSB_L] +Command=FEFE74E0.06.00.FD +ReplyLength=13 +Validate=FEFE74E00600FD.FEFEE074FBFD + +[pmDIG_U] +Command=FEFE74E0.06.08.FD +ReplyLength=13 +Validate=FEFE74E00608FD.FEFEE074FBFD + +[pmDIG_L] +Command=FEFE74E0.06.04.FD +ReplyLength=13 +Validate=FEFE74E00604FD.FEFEE074FBFD + +[pmAM] +Command=FEFE74E0.06.02.FD +ReplyLength=13 +Validate=FEFE74E00602FD.FEFEE074FBFD + +[pmFM] +Command=FEFE74E0.06.05.FD +ReplyLength=13 +Validate=FEFE74E00605FD.FEFEE074FBFD + + + + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +[STATUS1] +Command=FEFE74E0.03.FD +ReplyLength=17 +Validate=FEFE74E003FD.FEFEE074.03.0000000000.FD +Value1=11|5|vfBcdLU|1|0|pmFreq + +[STATUS2] +Command=FEFE74E0.04.FD +ReplyLength=14 +Validate=FEFE74E004FD.FEFEE074.04.0000.FD +Flag1=000000000000.0000000000.FF.0000|000000000000.0000000000.07.0000|pmCW_U +Flag2=000000000000.0000000000.FF.0000|000000000000.0000000000.03.0000|pmCW_L +Flag3=000000000000.0000000000.FF.0000|000000000000.0000000000.01.0000|pmSSB_U +Flag4=000000000000.0000000000.FF.0000|000000000000.0000000000.00.0000|pmSSB_L +Flag5=000000000000.0000000000.FF.0000|000000000000.0000000000.08.0000|pmDIG_U +Flag6=000000000000.0000000000.FF.0000|000000000000.0000000000.04.0000|pmDIG_L +Flag7=000000000000.0000000000.FF.0000|000000000000.0000000000.02.0000|pmAM +Flag8=000000000000.0000000000.FF.0000|000000000000.0000000000.05.0000|pmFM + +[STATUS3] +Command=FEFE74E0.1409.FD +ReplyLength=16 +Validate=FEFE74E01409FD.FEFEE074.1409.0000.FD +; 0=300 Hz, 255=900 Hz +Value1=13|2|vfBcdBU|2.362205|300|pmPitch + +[STATUS4] +Command=FEFE74E0.1C00.FD +ReplyLength=15 +Validate=FEFE74E01C00FD.FEFEE074.1C00.00.FD +Flag1=00000000000000.00000000.0000.01.00|pmTx +Flag2=00000000000000.00000000.0000.0F.00|00000000000000.00000000.0000.00.00|pmRx + +[STATUS5] +Command=FEFE74E0.0F.FD +ReplyLength=13 +Validate=FEFE74E00FFD.FEFEE074.0F.00.FD +Flag1=000000000000.00000000.00.01.00|pmSplitOn +Flag2=000000000000.00000000.00.0F.00|000000000000.00000000.00.00.00|pmSplitOff diff --git a/CATCheck/Rigs/IC-7700v2.ini b/CATCheck/Rigs/IC-7700v2.ini new file mode 100644 index 0000000..0b8bf14 --- /dev/null +++ b/CATCheck/Rigs/IC-7700v2.ini @@ -0,0 +1,279 @@ +;------------------------------------------------------------------------------- +; Icom IC-7700 ver. 2.10 firmware command set +; +; IC-7700 File created by Alex Shovkoplyas, VE3NEA ve3nea@dxatlas.com +; IC-7700v2 File created by Bob Wilson, N6TV, n6tv@arrl.net +; +; Tested by: KL7RA +;------------------------------------------------------------------------------- + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT1] +;Turn CI-V transceive OFF +Command=FEFE74E0.1A050095.00.FD +ReplyLength=16 +Validate=FEFE74E01A05009500FD.FEFEE074FBFD + +[INIT2] +;disable RS-232C decode, use CI-V +Command=FEFE74E0.1A050096.00.FD +ReplyLength=16 +Validate=FEFE74E01A05009600FD.FEFEE074FBFD + +[INIT3] +;set CW normal to lower sideband +Command=FEFE74E0.1A050091.00.FD +ReplyLength=16 +Validate=FEFE74E01A05009100FD.FEFEE074FBFD + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreqA] +Command=FEFE74E0.25.00.0000000000.FD +Value=6|5|vfBcdLU|1|0 +ReplyLength=18 +Validate=FEFE74E025000000000000FD.FEFEE074FBFD + +[pmFreqB] +Command=FEFE74E0.25.01.0000000000.FD +Value=6|5|vfBcdLU|1|0 +ReplyLength=18 +Validate=FEFE74E025010000000000FD.FEFEE074FBFD + +[pmFreq] +Command=FEFE74E0.05.0000000000.FD +Value=5|5|vfBcdLU|1|0 +ReplyLength=17 +Validate=FEFE74E0050000000000FD.FEFEE074FBFD + +[pmRitOffset] +;not supported + +[pmRit0] +Command=FEFE74E0.21.00000000.FD +ReplyLength=16 +Validate=FEFE74E02100000000FD.FEFEE074FBFD + +[pmPitch] +;test the 0.425|-127.5 params. should map 300Hz->0, 900Hz->255 +Command=FEFE74E0.14.09.0000.FD +Value=6|2|vfBcdBU|0.425|-127.5 +ReplyLength=15 +Validate=FEFE74E014090000FD.FEFEE074FBFD + + + + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +Command=FEFE74E0.0F01.FD +ReplyLength=13 +Validate=FEFE74E00F01FD.FEFEE074FBFD + +[pmSplitOff] +Command=FEFE74E0.0F00.FD +ReplyLength=13 +Validate=FEFE74E00F00FD.FEFEE074FBFD + +[pmVfoA] +Command=FEFE74E0.0700.FD +ReplyLength=13 +Validate=FEFE74E00700FD.FEFEE074FBFD + +[pmVfoB] +Command=FEFE74E0.0701.FD +ReplyLength=13 +Validate=FEFE74E00701FD.FEFEE074FBFD + +[pmVfoEqual] +Command=FEFE74E0.07A0.FD +ReplyLength=13 +Validate=FEFE74E007A0FD.FEFEE074FBFD + +[pmVfoSwap] +Command=FEFE74E0.07B0.FD +ReplyLength=13 +Validate=FEFE74E007B0FD.FEFEE074FBFD + +[pmVfoAA] +Command=FEFE74E0.0700.FD.FEFE74E0.0F00.FD +ReplyLength=20 +Validate=FEFE74E00700FD.FEFE74E00F00FD.FEFEE074FBFD + +[pmVfoAB] +Command=FEFE74E0.0700.FD.FEFE74E0.0F01.FD +ReplyLength=20 +Validate=FEFE74E00700FD.FEFE74E00F01FD.FEFEE074FBFD + +[pmVfoBA] +Command=FEFE74E0.0701.FD.FEFE74E0.0F01.FD +ReplyLength=20 +Validate=FEFE74E00701FD.FEFE74E00F01FD.FEFEE074FBFD + +[pmVfoBB] +Command=FEFE74E0.0701.FD.FEFE74E0.0F00.FD +ReplyLength=20 +Validate=FEFE74E00701FD.FEFE74E00F00FD.FEFEE074FBFD + +[pmRitOn] +Command=FEFE74E0.21.0101.FD +ReplyLength=14 +Validate=FEFE74E0210101FD.FEFEE074FBFD + +[pmRitOff] +Command=FEFE74E0.21.0100.FD +ReplyLength=14 +Validate=FEFE74E0210100FD.FEFEE074FBFD + +[pmXitOn] +Command=FEFE74E0.21.0201.FD +ReplyLength=14 +Validate=FEFE74E0210201FD.FEFEE074FBFD + +[pmXitOff] +Command=FEFE74E0.21.0200.FD +ReplyLength=14 +Validate=FEFE74E0210200FD.FEFEE074FBFD + +[pmRx] +Command=FEFE74E0.1C00.00.FD +ReplyLength=14 +Validate=FEFE74E01C0000FD.FEFEE074FBFD + +[pmTx] +Command=FEFE74E0.1C00.01.FD +ReplyLength=14 +Validate=FEFE74E01C0001FD.FEFEE074FBFD + + + + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +; CW-R +Command=FEFE74E0.06.07.FD +ReplyLength=13 +Validate=FEFE74E00607FD.FEFEE074FBFD + +[pmCW_L] +; CW Normal +Command=FEFE74E0.06.03.FD +ReplyLength=13 +Validate=FEFE74E00603FD.FEFEE074FBFD + +[pmSSB_U] +Command=FEFE74E0.06.01.FD +ReplyLength=13 +Validate=FEFE74E00601FD.FEFEE074FBFD + +[pmSSB_L] +Command=FEFE74E0.06.00.FD +ReplyLength=13 +Validate=FEFE74E00600FD.FEFEE074FBFD + +[pmDIG_U] +Command=FEFE74E0.06.08.FD +ReplyLength=13 +Validate=FEFE74E00608FD.FEFEE074FBFD + +[pmDIG_L] +Command=FEFE74E0.06.04.FD +ReplyLength=13 +Validate=FEFE74E00604FD.FEFEE074FBFD + +[pmAM] +Command=FEFE74E0.06.02.FD +ReplyLength=13 +Validate=FEFE74E00602FD.FEFEE074FBFD + +[pmFM] +Command=FEFE74E0.06.05.FD +ReplyLength=13 +Validate=FEFE74E00605FD.FEFEE074FBFD + + + + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +;[STATUS1] +;Command=FEFE74E0.03.FD +;ReplyLength=17 +;Validate=FEFE74E003FD.FEFEE074.03.0000000000.FD +;Value1=11|5|vfBcdLU|1|0|pmFreq + +[STATUS1] +; Read transmit freq. +Command=FEFE74E0.1C03.FD +ReplyLength=19 +Validate=FEFE74E01C03FD.FEFEE074.1C03.0000000000.FD +Value1=13|5|vfBcdLU|1|0|pmFreq + +[STATUS2] +Command=FEFE74E0.04.FD +ReplyLength=14 +Validate=FEFE74E004FD.FEFEE074.04.0000.FD +Flag1=000000000000.0000000000.FF.0000|000000000000.0000000000.07.0000|pmCW_U +Flag2=000000000000.0000000000.FF.0000|000000000000.0000000000.03.0000|pmCW_L +Flag3=000000000000.0000000000.FF.0000|000000000000.0000000000.01.0000|pmSSB_U +Flag4=000000000000.0000000000.FF.0000|000000000000.0000000000.00.0000|pmSSB_L +Flag5=000000000000.0000000000.FF.0000|000000000000.0000000000.08.0000|pmDIG_U +Flag6=000000000000.0000000000.FF.0000|000000000000.0000000000.04.0000|pmDIG_L +Flag7=000000000000.0000000000.FF.0000|000000000000.0000000000.02.0000|pmAM +Flag8=000000000000.0000000000.FF.0000|000000000000.0000000000.05.0000|pmFM + +[STATUS3] +Command=FEFE74E0.1409.FD +ReplyLength=16 +Validate=FEFE74E01409FD.FEFEE074.1409.0000.FD +; 0=300 Hz, 255=900 Hz +Value1=13|2|vfBcdBU|2.362205|300|pmPitch + +[STATUS4] +Command=FEFE74E0.1C00.FD +ReplyLength=15 +Validate=FEFE74E01C00FD.FEFEE074.1C00.00.FD +Flag1=00000000000000.00000000.0000.01.00|pmTx +Flag2=00000000000000.00000000.0000.0F.00|00000000000000.00000000.0000.00.00|pmRx + +[STATUS5] +Command=FEFE74E0.2500.FD +ReplyLength=19 +Validate=FEFE74E02500FD.FEFEE074.2500.0000000000.FD +Value1=13|5|vfBcdLU|1|0|pmFreqA + +[STATUS6] +Command=FEFE74E0.2501.FD +ReplyLength=19 +Validate=FEFE74E02501FD.FEFEE074.2501.0000000000.FD +Value1=13|5|vfBcdLU|1|0|pmFreqB + +[STATUS7] +Command=FEFE74E0.0F.FD +ReplyLength=13 +Validate=FEFE74E00FFD.FEFEE074.0F.00.FD +Flag1=000000000000.00000000.00.01.00|pmSplitOn +Flag2=000000000000.00000000.00.0F.00|000000000000.00000000.00.00.00|pmSplitOff + +[STATUS8] +Command=FEFE74E0.2101.FD +ReplyLength=15 +Validate=FEFE74E02101FD.FEFEE074.2101.00.FD +Flag1=00000000000000.00000000.0000.01.00|pmRitOn +Flag2=00000000000000.00000000.0000.0F.00|00000000000000.00000000.0000.00.00|pmRitOff + +[STATUS9] +Command=FEFE74E0.2102.FD +ReplyLength=15 +Validate=FEFE74E02102FD.FEFEE074.2102.00.FD +Flag1=00000000000000.00000000.0000.01.00|pmXitOn +Flag2=00000000000000.00000000.0000.0F.00|00000000000000.00000000.0000.00.00|pmXitOff diff --git a/CATCheck/Rigs/IC-775.ini b/CATCheck/Rigs/IC-775.ini new file mode 100644 index 0000000..9f62554 --- /dev/null +++ b/CATCheck/Rigs/IC-775.ini @@ -0,0 +1,158 @@ +;------------------------------------------------------------------------------- +; Icom IC-775 command set +; +; File created by Serge Rodnikov, UA4FFF +;------------------------------------------------------------------------------- + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +;none + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreqA] +;not supported + +[pmFreqB] +;not supported + +[pmFreq] +Command=FEFE46E0.05.0000000000.FD +Value=5|5|vfBcdLU|1|0 +ReplyLength=17 +Validate=FEFE46E0050000000000FD.FEFEE046FBFD + +[pmRitOffset] +;not supported + +[pmRit0] +;not supported + +[pmPitch] +;not supported + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +Command=FEFE46E0.0F01.FD +ReplyLength=13 +Validate=FEFE46E00F01FD.FEFEE046FBFD + +[pmSplitOff] +Command=FEFE46E0.0F00.FD +ReplyLength=13 +Validate=FEFE46E00F00FD.FEFEE046FBFD + +[pmVfoA] +;not supported + +[pmVfoB] +;not supported + +[pmVfoEqual] +Command=FEFE46E0.07B1.FD +ReplyLength=13 +Validate=FEFE46E007B1FD.FEFEE046FBFD + +[pmVfoSwap] +Command=FEFE46E0.07B0.FD +ReplyLength=13 +Validate=FEFE46E007B0FD.FEFEE046FBFD + +[pmVfoAA] +;not supported + +[pmVfoAB] +;not supported + +[pmVfoBA] +;not supported + +[pmVfoBB] +;not supported + +[pmRitOn] +;not supported + +[pmRitOff] +;not supported + +[pmXitOn] +;not supported + +[pmXitOff] +;not supported + +[pmRx] +;not supported + +[pmTx] +;not supported + + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +Command=FEFE46E0.06.0302.FD +ReplyLength=14 +Validate=FEFE46E0060302FD.FEFEE046FBFD + +[pmCW_L] +;not supported + +[pmSSB_U] +Command=FEFE46E0.06.0102.FD +ReplyLength=14 +Validate=FEFE46E0060102FD.FEFEE046FBFD + +[pmSSB_L] +Command=FEFE46E0.06.0002.FD +ReplyLength=14 +Validate=FEFE46E0060002FD.FEFEE046FBFD + +[pmDIG_U] +Command=FEFE46E0.06.04.FD +ReplyLength=13 +Validate=FEFE46E00604FD.FEFEE046FBFD + +[pmDIG_L] +;not supported + +[pmAM] +Command=FEFE46E0.06.02.FD +ReplyLength=13 +Validate=FEFE46E00602FD.FEFEE046FBFD + +[pmFM] +Command=FEFE46E0.06.05.FD +ReplyLength=13 +Validate=FEFE46E00605FD.FEFEE046FBFD + + + + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +[STATUS1] +Command=FEFE46E0.03.FD +ReplyLength=17 +Validate=FFFFFFFFFFFF.FFFFFFFF.FF.0000000000.FF|FEFE46E003FD.FEFEE046.03.0000000000.FD +Value1=11|5|vfBcdLU|1|0|pmFreq + +[STATUS2] +Command=FEFE46E0.04.FD +ReplyLength=14 +Validate=FFFFFFFFFFFF.FFFFFFFF.FF.0000.FF|FEFE46E004FD.FEFEE046.04.0000.FD +;is filter byte appended to the mode byte? +Flag1=000000000000.0000000000.FF.0000|000000000000.0000000000.03.0000|pmCW_U +Flag2=000000000000.0000000000.FF.0000|000000000000.0000000000.07.0000|pmCW_L +Flag3=000000000000.0000000000.FF.0000|000000000000.0000000000.01.0000|pmSSB_U +Flag4=000000000000.0000000000.FF.0000|000000000000.0000000000.00.0000|pmSSB_L +Flag5=000000000000.0000000000.FF.0000|000000000000.0000000000.04.0000|pmDIG_U +Flag6=000000000000.0000000000.FF.0000|000000000000.0000000000.02.0000|pmAM +Flag7=000000000000.0000000000.FF.0000|000000000000.0000000000.05.0000|pmFM diff --git a/CATCheck/Rigs/IC-78.ini b/CATCheck/Rigs/IC-78.ini new file mode 100644 index 0000000..a2da9a3 --- /dev/null +++ b/CATCheck/Rigs/IC-78.ini @@ -0,0 +1,217 @@ +;------------------------------------------------------------------------------- +; Icom IC-78 command set +; +; File created by Leonid, UA3YPL +;------------------------------------------------------------------------------- + + + + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT] +;none + + + + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreqA] +;not supported + +[pmFreqB] +;not supported + +[pmFreq] +;not sure if 5 or 2x5 bytes should be sent +Command=FEFE62E0.05.0000000000.FD +Value=5|5|vfBcdLU|1|0 +ReplyLength=17 +Validate=FEFE62E0050000000000FD.FEFEE062FBFD + +[pmRitOffset] +;not supported +;+/- 1.2 KHz + +[pmRit0] +;not supported + +[pmPitch] +Command=FEFE62E0.1409.0000.FD +;300Hz=0 600Hz=128 900Hz=255 +Value=6|2|vfBcdLU|0.425|-127.5 +ReplyLength=15 +Validate=FEFE62E014090000FD.FEFEE062FBFD + + + + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +Command=FEFE62E0.0F01.FD +ReplyLength=13 +Validate=FEFE62E00F01FD.FEFEE062FBFD + +[pmSplitOff] +Command=FEFE62E0.0F00.FD +ReplyLength=13 +Validate=FEFE62E00F00FD.FEFEE062FBFD + +[pmVfoA] +Command=FEFE62E0.0700.FD +ReplyLength=13 +Validate=FEFE62E00700FD.FEFEE062FBFD + +[pmVfoB] +Command=FEFE62E0.0701.FD +ReplyLength=13 +Validate=FEFE62E00701FD.FEFEE062FBFD + +[pmVfoEqual] +Command=FEFE62E0.07A0.FD +ReplyLength=13 +Validate=FEFE62E007A0FD.FEFEE062FBFD + +[pmVfoSwap] +Command=FEFE62E0.07B0.FD +ReplyLength=13 +Validate=FEFE62E007B0FD.FEFEE062FBFD + +[pmVfoAA] +;not supported + +[pmVfoAB] +;not supported + +[pmVfoBA] +;not supported + +[pmVfoBB] +;not supported + +[pmRitOn] +;not supported + +[pmRitOff] +;not supported + +[pmXitOn] +;not supported + +[pmXitOff] +;not supported + +[pmRx] +;not supported + +[pmTx] +;not supported + + + + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +Command=FEFE62E0.06.03.FD +ReplyLength=13 +Validate=FEFE62E00603FD.FEFEE062FBFD + +[pmCW_L] +Command=FEFE62E0.06.07.FD +ReplyLength=13 +Validate=FEFE62E00607FD.FEFEE062FBFD + +[pmSSB_U] +Command=FEFE62E0.06.01.FD +ReplyLength=13 +Validate=FEFE62E00601FD.FEFEE062FBFD + +[pmSSB_L] +Command=FEFE62E0.06.00.FD +ReplyLength=13 +Validate=FEFE62E00600FD.FEFEE062FBFD + +[pmDIG_U] +Command=FEFE62E0.06.04.FD +ReplyLength=13 +Validate=FEFE62E00604FD.FEFEE062FBFD + +[pmDIG_L] +Command=FEFE62E0.06.08.FD +ReplyLength=13 +Validate=FEFE62E00608FD.FEFEE062FBFD + +[pmAM] +Command=FEFE62E0.06.02.FD +ReplyLength=13 +Validate=FEFE62E00602FD.FEFEE062FBFD + +[pmFM] +Command=FEFE62E0.06.05.FD +ReplyLength=13 +Validate=FEFE62E00605FD.FEFEE062FBFD + + + + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +[STATUS1] +;The command name in the manual is Read Frequencies. +;However, it returns just one frequency +Command=FEFE62E0.03.FD +ReplyLength=17 +Validate=FEFE62E003FD.FEFEE062.03.0000000000.FD +Value1=11|5|vfBcdLU|1|0|pmFreq + +[STATUS2] +Command=FEFE62E0.04.FD +ReplyLength=14 +Validate=FEFE62E004FD.FEFEE062.04.0000.FD +;filter byte is appended to the mode byte +Flag1=000000000000.0000000000.FF.0000|000000000000.0000000000.03.0000|pmCW_U +Flag2=000000000000.0000000000.FF.0000|000000000000.0000000000.07.0000|pmCW_L +Flag3=000000000000.0000000000.FF.0000|000000000000.0000000000.01.0000|pmSSB_U +Flag4=000000000000.0000000000.FF.0000|000000000000.0000000000.00.0000|pmSSB_L +Flag5=000000000000.0000000000.FF.0000|000000000000.0000000000.04.0000|pmDIG_U +Flag6=000000000000.0000000000.FF.0000|000000000000.0000000000.08.0000|pmDIG_L +Flag7=000000000000.0000000000.FF.0000|000000000000.0000000000.02.0000|pmAM + +[STATUS3] +Command=FEFE62E0.1409.FD +ReplyLength=16 +Validate=FEFE62E01409FD.FEFEE0621409.0000.FD +;Value1=13|2|vfBcdBU|2.352941|300|pmPitch +Value1=13|2|vfBcdBU|2.362205|300|pmPitch + +[STATUS4] +;Command=FEFE62E0.07.FD +;ReplyLength=13 +;Validate=FEFE62E007FD.FEFE62E007.00.FD +;Flag1=0000000000000000000000.FF.00|0000000000000000000000.01.00|pmVfoA +;Flag2=0000000000000000000000.FF.00|0000000000000000000000.00.00|pmVfoB + +[STATUS5] +;Command=FEFE62E0.1C00.FD +;ReplyLength=15 +;Validate=FEFE62E01C00FD.FEFEE0621C00.00.FD +;Flag1=00000000000000000000000000.FF.00|00000000000000000000000000.01.00|pmTx +;Flag2=00000000000000000000000000.FF.00|00000000000000000000000000.00.00|pmRx + +[STATUS6] +;Command=FEFE62E0.0F.FD +;ReplyLength=13 +;Validate=FEFE62E00FFD.FEFE62E00F.00.FD +;Flag1=0000000000000000000000.FF.00|0000000000000000000000.01.00|pmSplitOn +;Flag2=0000000000000000000000.FF.00|0000000000000000000000.00.00|pmSplitOff + + diff --git a/CATCheck/Rigs/IC-7800.ini b/CATCheck/Rigs/IC-7800.ini new file mode 100644 index 0000000..29814c9 --- /dev/null +++ b/CATCheck/Rigs/IC-7800.ini @@ -0,0 +1,211 @@ +;------------------------------------------------------------------------------- +; Icom IC-7800 command set +; +; File created by Joseph White ke4tv@adelphia.net +;------------------------------------------------------------------------------- + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT1] +;disable transceive mode +Command=FEFE6AE0.1A050102.00.FD +ReplyLength=16 +Validate=FEFE6AE01A05010200FD.FEFEE06AFBFD + + +[INIT3] +;set CW normal to upper sideband +Command=FEFE6AE0.1A050097.01.FD +ReplyLength=16 +Validate=FEFE6AE01A05009701FD.FEFEE06AFBFD + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreqA] +;not supported + +[pmFreqB] +;not supported + +[pmFreq] +Command=FEFE6AE0.05.0000000000.FD +Value=5|5|vfBcdLU|1|0 +ReplyLength=17 +Validate=FEFE6AE0050000000000FD.FEFEE06AFBFD + +[pmRitOffset] +;not supported + + +[pmRit0] +;not supported + +[pmPitch] +; should 1 or 2 bytes be sent? +;test the 0.425|-127.5 params. should map 300Hz->0, 900Hz->255 +Command=FEFE6AE0.14.09.0000.FD +Value=6|2|vfBcdBU|0.425|-127.5 +ReplyLength=15 +Validate=FEFE6AE014090000FD.FEFEE06AFBFD + + + + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +Command=FEFE6AE0.0F01.FD +ReplyLength=13 +Validate=FEFE6AE00F01FD.FEFEE06AFBFD + +[pmSplitOff] +Command=FEFE6AE0.0F00.FD +ReplyLength=13 +Validate=FEFE6AE00F00FD.FEFEE06AFBFD + +[pmVfoA] +Command=FEFE6AE0.07D0.FD +ReplyLength=13 +Validate=FEFE6AE007D0FD.FEFEE06AFBFD + + +[pmVfoB] +Command=FEFE6AE0.07D1.FD +ReplyLength=13 +Validate=FEFE6AE007D1FD.FEFEE06AFBFD + + +[pmVfoEqual] +Command=FEFE6AE0.07B1.FD +ReplyLength=13 +Validate=FEFE6AE007B1FD.FEFEE06AFBFD + +[pmVfoSwap] +Command=FEFE6AE0.07B0.FD +ReplyLength=13 +Validate=FEFE6AE007B0FD.FEFEE06AFBFD + +[pmVfoAA] +;not supported + +[pmVfoAB] +;not supported + +[pmVfoBA] +;not supported + +[pmVfoBB] +;not supported + +[pmRitOn] +;not supported + +[pmRitOff] +;not supported + +[pmXitOn] +;not supported + +[pmXitOff] +;not supported + +[pmRx] +Command=FEFE6AE0.1C00.00.FD +ReplyLength=14 +Validate=FEFE6AE01C0000FD.FEFEE06AFBFD + +[pmTx] +Command=FEFE6AE0.1C00.01.FD +ReplyLength=14 +Validate=FEFE6AE01C0001FD.FEFEE06AFBFD + + + + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +Command=FEFE6AE0.06.03.FD +ReplyLength=13 +Validate=FEFE6AE00603FD.FEFEE06AFBFD + +[pmCW_L] +Command=FEFE6AE0.06.07.FD +ReplyLength=13 +Validate=FEFE6AE00607FD.FEFEE06AFBFD + +[pmSSB_U] +Command=FEFE6AE0.06.01.FD +ReplyLength=13 +Validate=FEFE6AE00601FD.FEFEE06AFBFD + +[pmSSB_L] +Command=FEFE6AE0.06.00.FD +ReplyLength=13 +Validate=FEFE6AE00600FD.FEFEE06AFBFD + +[pmDIG_U] +Command=FEFE6AE0.06.08.FD +ReplyLength=13 +Validate=FEFE6AE00608FD.FEFEE06AFBFD + + +[pmDIG_L] +Command=FEFE6AE0.06.04.FD +ReplyLength=13 +Validate=FEFE6AE00604FD.FEFEE06AFBFD. + + +[pmAM] +Command=FEFE6AE0.06.02.FD +ReplyLength=13 +Validate=FEFE6AE00602FD.FEFEE06AFBFD + +[pmFM] +Command=FEFE6AE0.06.05.FD +ReplyLength=13 +Validate=FEFE6AE00605FD.FEFEE06AFBFD + + + + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +[STATUS1] +Command=FEFE6AE0.03.FD +ReplyLength=17 +Validate=FEFE6AE003FD.FEFEE06A.03.0000000000.FD +Value1=11|5|vfBcdLU|1|0|pmFreq + +[STATUS2] +Command=FEFE6AE0.04.FD +ReplyLength=14 +Validate=FEFE6AE004FD.FEFEE06A.04.0000.FD +;is filter byte appended to the mode byte? +Flag1=000000000000.0000000000.FF.0000|000000000000.0000000000.03.0000|pmCW_U +Flag2=000000000000.0000000000.FF.0000|000000000000.0000000000.07.0000|pmCW_L +Flag3=000000000000.0000000000.FF.0000|000000000000.0000000000.01.0000|pmSSB_U +Flag4=000000000000.0000000000.FF.0000|000000000000.0000000000.00.0000|pmSSB_L +Flag5=000000000000.0000000000.FF.0000|000000000000.0000000000.08.0000|pmDIG_U +Flag6=000000000000.0000000000.FF.0000|000000000000.0000000000.04.0000|pmDIG_L +Flag7=000000000000.0000000000.FF.0000|000000000000.0000000000.02.0000|pmAM +Flag8=000000000000.0000000000.FF.0000|000000000000.0000000000.05.0000|pmFM + +[STATUS3] +Command=FEFE6AE0.1409.FD +ReplyLength=16 +Validate=FEFE6AE01409FD.FEFEE06A1409.0000.FD +Value1=13|2|vfBcdBU|25|300|pmPitch + +[STATUS4] +Command=FEFE6AE0.1C00.FD +ReplyLength=15 +Validate=FEFE6AE01C00FD.FEFEE06A.1C00.00.FD +Flag1=00000000000000.00000000.0000.01.00|pmTx +Flag2=00000000000000.00000000.0000.0F.00|00000000000000.00000000.0000.00.00|pmRx diff --git a/CATCheck/Rigs/IC-7800v3.ini b/CATCheck/Rigs/IC-7800v3.ini new file mode 100644 index 0000000..9092b1f --- /dev/null +++ b/CATCheck/Rigs/IC-7800v3.ini @@ -0,0 +1,285 @@ +;------------------------------------------------------------------------------- +; Icom IC-7800 ver. 3.10 firmware command set +; +; IC-7800v3 File created by Bob Wilson, N6TV, n6tv@arrl.net +; +; Tested by: Bob Wilson, N6TV @ K3LR +;------------------------------------------------------------------------------- + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT1] +;Turn CI-V transceive OFF +Command=FEFE6AE0.1A050101.00.FD +ReplyLength=16 +Validate=FEFE6AE01A05010100FD.FEFEE06AFBFD + +[INIT2] +;disable RS-232C decode, use CI-V +Command=FEFE6AE0.1A050102.00.FD +ReplyLength=16 +Validate=FEFE6AE01A05010200FD.FEFEE06AFBFD + +[INIT3] +;set CW normal to lower sideband +Command=FEFE6AE0.1A050097.00.FD +ReplyLength=16 +Validate=FEFE6AE01A05009700FD.FEFEE06AFBFD + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreqA] +Command=FEFE6AE0.25.00.0000000000.FD +Value=6|5|vfBcdLU|1|0 +ReplyLength=18 +Validate=FEFE6AE025000000000000FD.FEFEE06AFBFD + +[pmFreqB] +Command=FEFE6AE0.25.01.0000000000.FD +Value=6|5|vfBcdLU|1|0 +ReplyLength=18 +Validate=FEFE6AE025010000000000FD.FEFEE06AFBFD + +[pmFreq] +Command=FEFE6AE0.05.0000000000.FD +Value=5|5|vfBcdLU|1|0 +ReplyLength=17 +Validate=FEFE6AE0050000000000FD.FEFEE06AFBFD + +[pmRitOffset] +;not supported + +[pmRit0] +Command=FEFE6AE0.21.00000000.FD +ReplyLength=16 +Validate=FEFE6AE02100000000FD.FEFEE06AFBFD + +[pmPitch] +;test the 0.425|-127.5 params. should map 300Hz->0, 900Hz->255 +Command=FEFE6AE0.14.09.0000.FD +Value=6|2|vfBcdBU|0.425|-127.5 +ReplyLength=15 +Validate=FEFE6AE014090000FD.FEFEE06AFBFD + + + + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +Command=FEFE6AE0.0F01.FD +ReplyLength=13 +Validate=FEFE6AE00F01FD.FEFEE06AFBFD + +[pmSplitOff] +Command=FEFE6AE0.0F00.FD +ReplyLength=13 +Validate=FEFE6AE00F00FD.FEFEE06AFBFD + +[pmVfoA] +Command=FEFE6AE0.07D0.FD +ReplyLength=13 +Validate=FEFE6AE007D0FD.FEFEE06AFBFD + +[pmVfoB] +Command=FEFE6AE0.07D1.FD +ReplyLength=13 +Validate=FEFE6AE007D1FD.FEFEE06AFBFD + +[pmVfoEqual] +Command=FEFE6AE0.07B1.FD +ReplyLength=13 +Validate=FEFE6AE007B1FD.FEFEE06AFBFD + +[pmVfoSwap] +Command=FEFE6AE0.07B0.FD +ReplyLength=13 +Validate=FEFE6AE007B0FD.FEFEE06AFBFD + +[pmVfoAA] +Command=FEFE6AE0.0700.FD.FEFE6AE0.0F00.FD +ReplyLength=20 +Validate=FEFE6AE00700FD.FEFE6AE00F00FD.FEFEE06AFBFD + +[pmVfoAB] +Command=FEFE6AE0.0700.FD.FEFE6AE0.0F01.FD +ReplyLength=20 +Validate=FEFE6AE00700FD.FEFE6AE00F01FD.FEFEE06AFBFD + +[pmVfoBA] +Command=FEFE6AE0.0701.FD.FEFE6AE0.0F01.FD +ReplyLength=20 +Validate=FEFE6AE00701FD.FEFE6AE00F01FD.FEFEE06AFBFD + +[pmVfoBB] +Command=FEFE6AE0.0701.FD.FEFE6AE0.0F00.FD +ReplyLength=20 +Validate=FEFE6AE00701FD.FEFE6AE00F00FD.FEFEE06AFBFD + +[pmRitOn] +Command=FEFE6AE0.21.0101.FD +ReplyLength=14 +Validate=FEFE6AE0210101FD.FEFEE06AFBFD + +[pmRitOff] +Command=FEFE6AE0.21.0100.FD +ReplyLength=14 +Validate=FEFE6AE0210100FD.FEFEE06AFBFD + +[pmXitOn] +Command=FEFE6AE0.21.0201.FD +ReplyLength=14 +Validate=FEFE6AE0210201FD.FEFEE06AFBFD + +[pmXitOff] +Command=FEFE6AE0.21.0200.FD +ReplyLength=14 +Validate=FEFE6AE0210200FD.FEFEE06AFBFD + +[pmRx] +Command=FEFE6AE0.1C00.00.FD +ReplyLength=14 +Validate=FEFE6AE01C0000FD.FEFEE06AFBFD + +[pmTx] +Command=FEFE6AE0.1C00.01.FD +ReplyLength=14 +Validate=FEFE6AE01C0001FD.FEFEE06AFBFD + + + + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +; CW-R +Command=FEFE6AE0.06.07.FD +ReplyLength=13 +Validate=FEFE6AE00607FD.FEFEE06AFBFD + +[pmCW_L] +; CW Normal +Command=FEFE6AE0.06.03.FD +ReplyLength=13 +Validate=FEFE6AE00603FD.FEFEE06AFBFD + +[pmSSB_U] +Command=FEFE6AE0.06.01.FD +ReplyLength=13 +Validate=FEFE6AE00601FD.FEFEE06AFBFD + +[pmSSB_L] +Command=FEFE6AE0.06.00.FD +ReplyLength=13 +Validate=FEFE6AE00600FD.FEFEE06AFBFD + +[pmDIG_U] +Command=FEFE6AE0.06.08.FD +ReplyLength=13 +Validate=FEFE6AE00608FD.FEFEE06AFBFD + +[pmDIG_L] +Command=FEFE6AE0.06.04.FD +ReplyLength=13 +Validate=FEFE6AE00604FD.FEFEE06AFBFD. + +[pmAM] +Command=FEFE6AE0.06.02.FD +ReplyLength=13 +Validate=FEFE6AE00602FD.FEFEE06AFBFD + +[pmFM] +Command=FEFE6AE0.06.05.FD +ReplyLength=13 +Validate=FEFE6AE00605FD.FEFEE06AFBFD + + + + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +;[STATUS1] +;Command=FEFE6AE0.03.FD +;ReplyLength=17 +;Validate=FEFE6AE003FD.FEFEE06A.03.0000000000.FD +;Value1=11|5|vfBcdLU|1|0|pmFreq + +[STATUS1] +; Read transmit freq. +Command=FEFE6AE0.1C03.FD +ReplyLength=19 +Validate=FEFE6AE01C03FD.FEFEE06A.1C03.0000000000.FD +Value1=13|5|vfBcdLU|1|0|pmFreq + +[STATUS2] +Command=FEFE6AE0.04.FD +ReplyLength=14 +Validate=FEFE6AE004FD.FEFEE06A.04.0000.FD +Flag1=000000000000.0000000000.FF.0000|000000000000.0000000000.03.0000|pmCW_L +Flag2=000000000000.0000000000.FF.0000|000000000000.0000000000.07.0000|pmCW_U +Flag3=000000000000.0000000000.FF.0000|000000000000.0000000000.01.0000|pmSSB_U +Flag4=000000000000.0000000000.FF.0000|000000000000.0000000000.00.0000|pmSSB_L +Flag5=000000000000.0000000000.FF.0000|000000000000.0000000000.08.0000|pmDIG_U +Flag6=000000000000.0000000000.FF.0000|000000000000.0000000000.04.0000|pmDIG_L +Flag7=000000000000.0000000000.FF.0000|000000000000.0000000000.02.0000|pmAM +Flag8=000000000000.0000000000.FF.0000|000000000000.0000000000.05.0000|pmFM + +[STATUS3] +Command=FEFE6AE0.1409.FD +ReplyLength=16 +Validate=FEFE6AE01409FD.FEFEE06A.1409.0000.FD +; 0=300 Hz, 255=900 Hz +Value1=13|2|vfBcdBU|2.362205|300|pmPitch + +[STATUS4] +Command=FEFE6AE0.1C00.FD +ReplyLength=15 +Validate=FEFE6AE01C00FD.FEFEE06A.1C00.00.FD +Flag1=00000000000000.00000000.0000.01.00|pmTx +Flag2=00000000000000.00000000.0000.0F.00|00000000000000.00000000.0000.00.00|pmRx + +[STATUS5] +Command=FEFE6AE0.2500.FD +ReplyLength=19 +Validate=FEFE6AE02500FD.FEFEE06A.2500.0000000000.FD +Value1=13|5|vfBcdLU|1|0|pmFreqA + +[STATUS6] +Command=FEFE6AE0.2501.FD +ReplyLength=19 +Validate=FEFE6AE02501FD.FEFEE06A.2501.0000000000.FD +Value1=13|5|vfBcdLU|1|0|pmFreqB + +[STATUS7] +Command=FEFE6AE0.0F.FD +ReplyLength=13 +Validate=FEFE6AE00FFD.FEFEE06A.0F.00.FD +Flag1=000000000000.00000000.00.01.00|pmSplitOn +Flag2=000000000000.00000000.00.0F.00|000000000000.00000000.00.00.00|pmSplitOff + +[STATUS8] +Command=FEFE6AE0.2101.FD +ReplyLength=15 +Validate=FEFE6AE02101FD.FEFEE06A.2101.00.FD +Flag1=00000000000000.00000000.0000.01.00|pmRitOn +Flag2=00000000000000.00000000.0000.0F.00|00000000000000.00000000.0000.00.00|pmRitOff + +[STATUS9] +Command=FEFE6AE0.2102.FD +ReplyLength=15 +Validate=FEFE6AE02102FD.FEFEE06A.2102.00.FD +Flag1=00000000000000.00000000.0000.01.00|pmXitOn +Flag2=00000000000000.00000000.0000.0F.00|00000000000000.00000000.0000.00.00|pmXitOff + +[STATUS10] +Command=FEFE6AE0.07D2.FD +ReplyLength=15 +Validate=FEFE6AE007D2FD.FEFEE06A.07D2.00.FD +Flag1=00000000000000.00000000.0000.01.00|pmVfoB +Flag2=00000000000000.00000000.0000.0F.00|00000000000000.00000000.0000.00.00|pmVfoA diff --git a/CATCheck/Rigs/IC-781.ini b/CATCheck/Rigs/IC-781.ini new file mode 100644 index 0000000..a64b1e3 --- /dev/null +++ b/CATCheck/Rigs/IC-781.ini @@ -0,0 +1,174 @@ +;------------------------------------------------------------------------------- +; Icom IC-781 command set +; +; File created by Mel, VE2DC +;------------------------------------------------------------------------------- + + + + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT] +;none + + + + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreqA] +;not supported + +[pmFreqB] +;not supported + +[pmFreq] +Command=FEFE26E0.05.0000000000.FD +Value=5|5|vfBcdLU|1|0 +ReplyLength=17 +Validate=FEFE26E0050000000000FD.FEFEE026FBFD + +[pmRitOffset] +;not supported + +[pmRit0] +;not supported + +[pmPitch] +;not supported + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +Command=FEFE26E0.0F01.FD +ReplyLength=13 +Validate=FEFE26E00F01FD.FEFEE026FBFD + +[pmSplitOff] +Command=FEFE26E0.0F00.FD +ReplyLength=13 +Validate=FEFE26E00F00FD.FEFEE026FBFD + +[pmVfoA] +Command=FEFE26E0.0700.FD +ReplyLength=13 +Validate=FEFE26E00700FD.FEFEE026FBFD + +[pmVfoB] +Command=FEFE26E0.0701.FD +ReplyLength=13 +Validate=FEFE26E00701FD.FEFEE026FBFD + +[pmVfoEqual] +Command=FEFE26E0.07A0.FD +ReplyLength=13 +Validate=FEFE26E007A0FD.FEFEE026FBFD + +[pmVfoSwap] +;not supported + + +[pmVfoAA] +;not supported + +[pmVfoAB] +;not supported + +[pmVfoBA] +;not supported + +[pmVfoBB] +;not supported + +[pmRitOn] +;not supported + +[pmRitOff] +;not supported + +[pmXitOn] +;not supported + +[pmXitOff] +;not supported + +[pmRx] +;not supported + +[pmTx] +;not supported + + + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +Command=FEFE26E0.06.03.FD +ReplyLength=13 +Validate=FEFE26E00603FD.FEFEE026FBFD + +[pmCW_L] +Command=FEFE26E0.06.07.FD +ReplyLength=13 +Validate=FEFE26E00607FD.FEFEE026FBFD + +[pmSSB_U] +Command=FEFE26E0.06.01.FD +ReplyLength=13 +Validate=FEFE26E00601FD.FEFEE026FBFD + +[pmSSB_L] +Command=FEFE26E0.06.00.FD +ReplyLength=13 +Validate=FEFE26E00600FD.FEFEE026FBFD + +[pmDIG_U] +;not supported + +[pmDIG_L] +;not supported + +[pmAM] +Command=FEFE26E0.06.02.FD +ReplyLength=13 +Validate=FEFE26E00602FD.FEFEE026FBFD + +[pmFM] +Command=FEFE26E0.06.05.FD +ReplyLength=13 +Validate=FEFE26E00605FD.FEFEE026FBFD + + + + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +[STATUS1] +Command=FEFE26E0.03.FD +ReplyLength=17 +Validate=FFFFFFFFFFFF.FFFFFFFF.FF.0000000000.FF|FEFE26E003FD.FEFEE026.03.0000000000.FD +Value1=11|5|vfBcdLU|1|0|pmFreq + +[STATUS2] +Command=FEFE26E0.04.FD +ReplyLength=14 +Validate=FFFFFFFFFFFF.FFFFFFFF.FF.0000.FF|FEFE26E004FD.FEFEE026.04.0000.FD +;is filter byte appended to the mode byte? +;Yes except for SSB Wide in which case it may be dropped (firmware issue) +;CW_U not supported +Flag1=000000000000.0000000000.FF.0000|000000000000.0000000000.03.0000|pmCW_U +Flag2=000000000000.0000000000.FF.0000|000000000000.0000000000.03.0000|pmCW_L +Flag3=000000000000.0000000000.FF.0000|000000000000.0000000000.01.0000|pmSSB_U +Flag4=000000000000.0000000000.FF.0000|000000000000.0000000000.00.0000|pmSSB_L +Flag5=000000000000.0000000000.FF.0000|000000000000.0000000000.04.0000|pmDIG_U +Flag6=000000000000.0000000000.FF.0000|000000000000.0000000000.08.0000|pmDIG_L +Flag7=000000000000.0000000000.FF.0000|000000000000.0000000000.02.0000|pmAM +Flag8=000000000000.0000000000.FF.0000|000000000000.0000000000.05.0000|pmFM + diff --git a/CATCheck/Rigs/IC-781_2.ini b/CATCheck/Rigs/IC-781_2.ini new file mode 100644 index 0000000..3a93dad --- /dev/null +++ b/CATCheck/Rigs/IC-781_2.ini @@ -0,0 +1,185 @@ +;------------------------------------------------------------------------------- +; Icom IC-781 command set +; +; File created by Mel, VE2DC +; Modified by Alex VE3NEA for a different version of radio firmware +; Modified by Bob N6TV to add some missing commands +;------------------------------------------------------------------------------- + + + + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT] +;none + + + + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreqA] +;not supported + +[pmFreqB] +;not supported + +[pmFreq] +Command=FEFE26E0.05.0000000000.FD +Value=5|5|vfBcdLU|1|0 +ReplyLength=17 +Validate=FEFE26E0050000000000FD.FEFEE026FBFD + +[pmRitOffset] +;not supported + +[pmRit0] +;not supported + +[pmPitch] +;not supported + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +Command=FEFE26E0.0F01.FD +ReplyLength=13 +Validate=FEFE26E00F01FD.FEFEE026FBFD + +[pmSplitOff] +Command=FEFE26E0.0F00.FD +ReplyLength=13 +Validate=FEFE26E00F00FD.FEFEE026FBFD + +[pmVfoA] +Command=FEFE26E0.0700.FD +ReplyLength=13 +Validate=FEFE26E00700FD.FEFEE026FBFD + +[pmVfoB] +Command=FEFE26E0.0701.FD +ReplyLength=13 +Validate=FEFE26E00701FD.FEFEE026FBFD + +[pmVfoEqual] +Command=FEFE26E0.07A0.FD +ReplyLength=13 +Validate=FEFE26E007A0FD.FEFEE026FBFD + +[pmVfoSwap] +Command=FEFE26E0.07B0.FD +ReplyLength=13 +Validate=FEFE26E007B0FD.FEFEE026FBFD + +[pmVfoAA] +Command=FEFE26E0.0700.FD.FEFE26E0.0F00.FD +ReplyLength=20 +Validate=FEFE26E00700FD.FEFE26E00F00FD.FEFEE026FBFD + +[pmVfoAB] +Command=FEFE26E0.0700.FD.FEFE26E0.0F01.FD +ReplyLength=20 +Validate=FEFE26E00700FD.FEFE26E00F01FD.FEFEE026FBFD + +[pmVfoBA] +Command=FEFE26E0.0701.FD.FEFE26E0.0F01.FD +ReplyLength=20 +Validate=FEFE26E00701FD.FEFE26E00F01FD.FEFEE026FBFD + +[pmVfoBB] +Command=FEFE26E0.0701.FD.FEFE26E0.0F00.FD +ReplyLength=20 +Validate=FEFE26E00701FD.FEFE26E00F00FD.FEFEE026FBFD + +[pmRitOn] +;not supported + +[pmRitOff] +;not supported + +[pmXitOn] +;not supported + +[pmXitOff] +;not supported + +[pmRx] +;not supported + +[pmTx] +;not supported + + + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +Command=FEFE26E0.06.03.FD +ReplyLength=13 +Validate=FEFE26E00603FD.FEFEE026FBFD + +[pmCW_L] +Command=FEFE26E0.06.07.FD +ReplyLength=13 +Validate=FEFE26E00607FD.FEFEE026FBFD + +[pmSSB_U] +Command=FEFE26E0.06.01.FD +ReplyLength=13 +Validate=FEFE26E00601FD.FEFEE026FBFD + +[pmSSB_L] +Command=FEFE26E0.06.00.FD +ReplyLength=13 +Validate=FEFE26E00600FD.FEFEE026FBFD + +[pmDIG_U] +;not supported + +[pmDIG_L] +;not supported + +[pmAM] +Command=FEFE26E0.06.02.FD +ReplyLength=13 +Validate=FEFE26E00602FD.FEFEE026FBFD + +[pmFM] +Command=FEFE26E0.06.05.FD +ReplyLength=13 +Validate=FEFE26E00605FD.FEFEE026FBFD + + + + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +[STATUS1] +Command=FEFE26E0.03.FD +ReplyLength=17 +Validate=FFFFFFFFFFFF.FFFFFFFF.FF.0000000000.FF|FEFE26E003FD.FEFEE026.03.0000000000.FD +Value1=11|5|vfBcdLU|1|0|pmFreq + +[STATUS2] +Command=FEFE26E0.04.FD +ReplyLength=13 +Validate=FFFFFFFFFFFF.FFFFFFFF.FF.00.FF|FEFE26E004FD.FEFEE026.04.00.FD +;is filter byte appended to the mode byte? +;Yes except for SSB Wide in which case it may be dropped (firmware issue) +;CW_U not supported +Flag1=000000000000.0000000000.FF.00|000000000000.0000000000.03.00|pmCW_U +Flag2=000000000000.0000000000.FF.00|000000000000.0000000000.03.00|pmCW_L +Flag3=000000000000.0000000000.FF.00|000000000000.0000000000.01.00|pmSSB_U +Flag4=000000000000.0000000000.FF.00|000000000000.0000000000.00.00|pmSSB_L +Flag5=000000000000.0000000000.FF.00|000000000000.0000000000.04.00|pmDIG_U +Flag6=000000000000.0000000000.FF.00|000000000000.0000000000.08.00|pmDIG_L +Flag7=000000000000.0000000000.FF.00|000000000000.0000000000.02.00|pmAM +Flag8=000000000000.0000000000.FF.00|000000000000.0000000000.05.00|pmFM + diff --git a/CATCheck/Rigs/IC-7850-DATA-FIL1.ini b/CATCheck/Rigs/IC-7850-DATA-FIL1.ini new file mode 100644 index 0000000..6f5b7c2 --- /dev/null +++ b/CATCheck/Rigs/IC-7850-DATA-FIL1.ini @@ -0,0 +1,286 @@ +;------------------------------------------------------------------------------- +; Icom IC-7850-DATA-FIL1 +; +; IC-7850-DATA-FIL1 File created by Bob Wilson, N6TV, n6tv@arrl.net, 2019-02-18 +; +; Tested by: +; +; Same as IC-7850-DATA, but for digital modes, sets and selects DATA2 MOD (aka Data +; Mode 2 or D2) to the USB sound card input, and selects FIL1 +;------------------------------------------------------------------------------- + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT1] +;Turn USB CI-V Echo Back ON +Command=FEFE8EE0.1A050158.01.FD +ReplyLength=16 +Validate=FEFE8EE01A05015801FD.FEFEE08EFBFD + +[INIT2] +;Turn CI-V transceive OFF +Command=FEFE8EE0.1A050155.00.FD +ReplyLength=16 +Validate=FEFE8EE01A05015500FD.FEFEE08EFBFD + +[INIT3] +;set CW normal to lower sideband +Command=FEFE8EE0.1A050140.00.FD +ReplyLength=16 +Validate=FEFE8EE01A05014000FD.FEFEE08EFBFD + +[INIT4] +;set MOD input connector for DATA2 mode to USB sound card only +Command=FEFE8EE0.1A050064.08.FD +ReplyLength=16 +Validate=FEFE8EE01A05006408FD.FEFEE08EFBFD + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreqA] +Command=FEFE8EE0.25.00.0000000000.FD +Value=6|5|vfBcdLU|1|0 +ReplyLength=18 +Validate=FEFE8EE025000000000000FD.FEFEE08EFBFD + +[pmFreqB] +Command=FEFE8EE0.25.01.0000000000.FD +Value=6|5|vfBcdLU|1|0 +ReplyLength=18 +Validate=FEFE8EE025010000000000FD.FEFEE08EFBFD + +[pmFreq] +; not supported + +[pmRitOffset] +;not supported + +[pmRit0] +Command=FEFE8EE0.21.00000000.FD +ReplyLength=16 +Validate=FEFE8EE02100000000FD.FEFEE08EFBFD + +[pmPitch] +;The 0.425|-127.5 params. should map 300Hz->0, 900Hz->255 +Command=FEFE8EE0.14.09.0000.FD +Value=6|2|vfBcdBU|0.425|-127.5 +ReplyLength=15 +Validate=FEFE8EE014090000FD.FEFEE08EFBFD + + + + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +Command=FEFE8EE0.0F01.FD +ReplyLength=13 +Validate=FEFE8EE00F01FD.FEFEE08EFBFD + +[pmSplitOff] +Command=FEFE8EE0.0F00.FD +ReplyLength=13 +Validate=FEFE8EE00F00FD.FEFEE08EFBFD + +[pmVfoA] +Command=FEFE8EE0.07D0.FD +ReplyLength=13 +Validate=FEFE8EE007D0FD.FEFEE08EFBFD + +[pmVfoB] +Command=FEFE8EE0.07D1.FD +ReplyLength=13 +Validate=FEFE8EE007D1FD.FEFEE08EFBFD + +[pmVfoEqual] +Command=FEFE8EE0.07B1.FD +ReplyLength=13 +Validate=FEFE8EE007B1FD.FEFEE08EFBFD + +[pmVfoSwap] +Command=FEFE8EE0.07B0.FD +ReplyLength=13 +Validate=FEFE8EE007B0FD.FEFEE08EFBFD + +[pmVfoAA] +Command=FEFE8EE0.07D0.FD.FEFE8EE0.0F00.FD +ReplyLength=20 +Validate=FEFE8EE007D0FD.FEFE8EE00F00FD.FEFEE08EFBFD + +[pmVfoAB] +Command=FEFE8EE0.07D0.FD.FEFE8EE0.0F01.FD +ReplyLength=20 +Validate=FEFE8EE007D0FD.FEFE8EE00F01FD.FEFEE08EFBFD + +[pmVfoBA] +Command=FEFE8EE0.07D1.FD.FEFE8EE0.0F01.FD +ReplyLength=20 +Validate=FEFE8EE007D1FD.FEFE8EE00F01FD.FEFEE08EFBFD + +[pmVfoBB] +Command=FEFE8EE0.07D1.FD.FEFE8EE0.0F00.FD +ReplyLength=20 +Validate=FEFE8EE007D1FD.FEFE8EE00F00FD.FEFEE08EFBFD + +[pmRitOn] +Command=FEFE8EE0.21.0101.FD +ReplyLength=14 +Validate=FEFE8EE0210101FD.FEFEE08EFBFD + +[pmRitOff] +Command=FEFE8EE0.21.0100.FD +ReplyLength=14 +Validate=FEFE8EE0210100FD.FEFEE08EFBFD + +[pmXitOn] +Command=FEFE8EE0.21.0201.FD +ReplyLength=14 +Validate=FEFE8EE0210201FD.FEFEE08EFBFD + +[pmXitOff] +Command=FEFE8EE0.21.0200.FD +ReplyLength=14 +Validate=FEFE8EE0210200FD.FEFEE08EFBFD + +[pmRx] +Command=FEFE8EE0.1C00.00.FD +ReplyLength=14 +Validate=FEFE8EE01C0000FD.FEFEE08EFBFD + +[pmTx] +Command=FEFE8EE0.1C00.01.FD +ReplyLength=14 +Validate=FEFE8EE01C0001FD.FEFEE08EFBFD + + + + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +; CW-R +Command=FEFE8EE0.2600.07.FD +ReplyLength=14 +Validate=FEFE8EE0260007FD.FEFEE08EFBFD + +[pmCW_L] +; CW Normal +Command=FEFE8EE0.2600.03.FD +ReplyLength=14 +Validate=FEFE8EE0260003FD.FEFEE08EFBFD + +[pmSSB_U] +; These lines select USB with Data Mode OFF, FIL1 +Command=FEFE8EE0.2600.01.00.01.FD +ReplyLength=16 +Validate=FEFE8EE02600010001FD.FEFEE08EFBFD + +[pmSSB_L] +; These lines select LSB with Data Mode OFF, FIL1 +Command=FEFE8EE0.2600.00.00.01.FD +ReplyLength=16 +Validate=FEFE8EE02600000001FD.FEFEE08EFBFD + +[pmDIG_U] +; These lines select USB-D Data Mode 2 (DATA2 MOD) which is set for USB sound card modulation, plus FIL1 +Command=FEFE8EE0.2600.01.02.01.FD +ReplyLength=16 +Validate=FEFE8EE02600010201FD.FEFEE08EFBFD + +[pmDIG_L] +; These lines select LSB-D Data Mode 2 (DATA2 MOD) which is set for USB sound card modulation, plus FIL1 +Command=FEFE8EE0.2600.00.02.01.FD +ReplyLength=16 +Validate=FEFE8EE02600000201FD.FEFEE08EFBFD + +[pmAM] +; These lines select AM with Data Mode OFF, FIL1 +Command=FEFE8EE0.2600.02.00.01.FD +ReplyLength=16 +Validate=FEFE8EE02600020001FD.FEFEE08EFBFD + +[pmFM] +; These lines select FM with Data Mode OFF, FIL1 +Command=FEFE8EE0.2600.05.00.01.FD +ReplyLength=16 +Validate=FEFE8EE02600050001FD.FEFEE08EFBFD + + + + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +[STATUS1] +Command=FEFE8EE0.2500.FD +ReplyLength=19 +Validate=FEFE8EE02500FD.FEFEE08E.2500.0000000000.FD +Value1=13|5|vfBcdLU|1|0|pmFreqA + +[STATUS2] +Command=FEFE8EE0.2501.FD +ReplyLength=19 +Validate=FEFE8EE02501FD.FEFEE08E.2501.0000000000.FD +Value1=13|5|vfBcdLU|1|0|pmFreqB + +[STATUS3] +Command=FEFE8EE0.2600.FD +ReplyLength=17 +Validate=FEFE8EE02600FD.FEFEE08E.2600.000000.FD +Flag1=00000000000000.00000000.0000.FF0000.00|00000000000000.00000000.0000.030000.00|pmCW_L +Flag2=00000000000000.00000000.0000.FF0000.00|00000000000000.00000000.0000.070000.00|pmCW_U +Flag3=00000000000000.00000000.0000.FFFF00.00|00000000000000.00000000.0000.010000.00|pmSSB_U +Flag4=00000000000000.00000000.0000.FFFF00.00|00000000000000.00000000.0000.000000.00|pmSSB_L +Flag5=00000000000000.00000000.0000.FF0000.00|00000000000000.00000000.0000.080000.00|pmDIG_U +Flag6=00000000000000.00000000.0000.FF0000.00|00000000000000.00000000.0000.040000.00|pmDIG_L +Flag7=00000000000000.00000000.0000.FFFF00.00|00000000000000.00000000.0000.010100.00|pmDIG_U +Flag8=00000000000000.00000000.0000.FFFF00.00|00000000000000.00000000.0000.000100.00|pmDIG_L +Flag9=00000000000000.00000000.0000.FF0000.00|00000000000000.00000000.0000.020000.00|pmAM +Flag10=00000000000000.00000000.0000.FF0000.00|00000000000000.00000000.0000.050000.00|pmFM + +[STATUS4] +Command=FEFE8EE0.1409.FD +ReplyLength=16 +Validate=FEFE8EE01409FD.FEFEE08E.1409.0000.FD +; 0=300 Hz, 255=900 Hz +Value1=13|2|vfBcdBU|2.362205|300|pmPitch + +[STATUS5] +Command=FEFE8EE0.1C00.FD +ReplyLength=15 +Validate=FEFE8EE01C00FD.FEFEE08E.1C00.00.FD +Flag1=00000000000000.00000000.0000.01.00|pmTx +Flag2=00000000000000.00000000.0000.0F.00|00000000000000.00000000.0000.00.00|pmRx + +[STATUS6] +Command=FEFE8EE0.0F.FD +ReplyLength=13 +Validate=FEFE8EE00FFD.FEFEE08E.0F.00.FD +Flag1=000000000000.00000000.00.01.00|pmSplitOn +Flag2=000000000000.00000000.00.0F.00|000000000000.00000000.00.00.00|pmSplitOff + +[STATUS7] +Command=FEFE8EE0.2101.FD +ReplyLength=15 +Validate=FEFE8EE02101FD.FEFEE08E.2101.00.FD +Flag1=00000000000000.00000000.0000.01.00|pmRitOn +Flag2=00000000000000.00000000.0000.0F.00|00000000000000.00000000.0000.00.00|pmRitOff + +[STATUS8] +Command=FEFE8EE0.2102.FD +ReplyLength=15 +Validate=FEFE8EE02102FD.FEFEE08E.2102.00.FD +Flag1=00000000000000.00000000.0000.01.00|pmXitOn +Flag2=00000000000000.00000000.0000.0F.00|00000000000000.00000000.0000.00.00|pmXitOff + +[STATUS9] +Command=FEFE8EE0.07D2.FD +ReplyLength=15 +Validate=FEFE8EE007D2FD.FEFEE08E.07D2.00.FD +Flag1=00000000000000.00000000.0000.01.00|pmVfoB +Flag2=00000000000000.00000000.0000.0F.00|00000000000000.00000000.0000.00.00|pmVfoA diff --git a/CATCheck/Rigs/IC-7850-DATA.ini b/CATCheck/Rigs/IC-7850-DATA.ini new file mode 100644 index 0000000..d7031b8 --- /dev/null +++ b/CATCheck/Rigs/IC-7850-DATA.ini @@ -0,0 +1,276 @@ +;------------------------------------------------------------------------------- +; Icom IC-7850-DATA +; +; IC-7850-DATA File created by Bob Wilson, N6TV, n6tv@arrl.net, 2018-04-16 +; +; Tested by: Bob Wilson, N6TV @ K3LR +; +; Same as IC-7850, but selects USB-D and LSB-D for DIG modes instead of RTTY and RTTY-R +; Note: Uses DATA1 MOD (aka Data Mode 1 or D1). User must set DATA1 Modulation Input +;------------------------------------------------------------------------------- + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT1] +;Turn USB CI-V Echo Back ON +Command=FEFE8EE0.1A050158.01.FD +ReplyLength=16 +Validate=FEFE8EE01A05015801FD.FEFEE08EFBFD + +[INIT2] +;Turn CI-V transceive OFF +Command=FEFE8EE0.1A050155.00.FD +ReplyLength=16 +Validate=FEFE8EE01A05015500FD.FEFEE08EFBFD + +[INIT3] +;set CW normal to lower sideband +Command=FEFE8EE0.1A050140.00.FD +ReplyLength=16 +Validate=FEFE8EE01A05014000FD.FEFEE08EFBFD + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreqA] +Command=FEFE8EE0.25.00.0000000000.FD +Value=6|5|vfBcdLU|1|0 +ReplyLength=18 +Validate=FEFE8EE025000000000000FD.FEFEE08EFBFD + +[pmFreqB] +Command=FEFE8EE0.25.01.0000000000.FD +Value=6|5|vfBcdLU|1|0 +ReplyLength=18 +Validate=FEFE8EE025010000000000FD.FEFEE08EFBFD + +[pmFreq] +; not supported + +[pmRitOffset] +;not supported + +[pmRit0] +Command=FEFE8EE0.21.00000000.FD +ReplyLength=16 +Validate=FEFE8EE02100000000FD.FEFEE08EFBFD + +[pmPitch] +;The 0.425|-127.5 params. should map 300Hz->0, 900Hz->255 +Command=FEFE8EE0.14.09.0000.FD +Value=6|2|vfBcdBU|0.425|-127.5 +ReplyLength=15 +Validate=FEFE8EE014090000FD.FEFEE08EFBFD + + + + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +Command=FEFE8EE0.0F01.FD +ReplyLength=13 +Validate=FEFE8EE00F01FD.FEFEE08EFBFD + +[pmSplitOff] +Command=FEFE8EE0.0F00.FD +ReplyLength=13 +Validate=FEFE8EE00F00FD.FEFEE08EFBFD + +[pmVfoA] +Command=FEFE8EE0.07D0.FD +ReplyLength=13 +Validate=FEFE8EE007D0FD.FEFEE08EFBFD + +[pmVfoB] +Command=FEFE8EE0.07D1.FD +ReplyLength=13 +Validate=FEFE8EE007D1FD.FEFEE08EFBFD + +[pmVfoEqual] +Command=FEFE8EE0.07B1.FD +ReplyLength=13 +Validate=FEFE8EE007B1FD.FEFEE08EFBFD + +[pmVfoSwap] +Command=FEFE8EE0.07B0.FD +ReplyLength=13 +Validate=FEFE8EE007B0FD.FEFEE08EFBFD + +[pmVfoAA] +Command=FEFE8EE0.07D0.FD.FEFE8EE0.0F00.FD +ReplyLength=20 +Validate=FEFE8EE007D0FD.FEFE8EE00F00FD.FEFEE08EFBFD + +[pmVfoAB] +Command=FEFE8EE0.07D0.FD.FEFE8EE0.0F01.FD +ReplyLength=20 +Validate=FEFE8EE007D0FD.FEFE8EE00F01FD.FEFEE08EFBFD + +[pmVfoBA] +Command=FEFE8EE0.07D1.FD.FEFE8EE0.0F01.FD +ReplyLength=20 +Validate=FEFE8EE007D1FD.FEFE8EE00F01FD.FEFEE08EFBFD + +[pmVfoBB] +Command=FEFE8EE0.07D1.FD.FEFE8EE0.0F00.FD +ReplyLength=20 +Validate=FEFE8EE007D1FD.FEFE8EE00F00FD.FEFEE08EFBFD + +[pmRitOn] +Command=FEFE8EE0.21.0101.FD +ReplyLength=14 +Validate=FEFE8EE0210101FD.FEFEE08EFBFD + +[pmRitOff] +Command=FEFE8EE0.21.0100.FD +ReplyLength=14 +Validate=FEFE8EE0210100FD.FEFEE08EFBFD + +[pmXitOn] +Command=FEFE8EE0.21.0201.FD +ReplyLength=14 +Validate=FEFE8EE0210201FD.FEFEE08EFBFD + +[pmXitOff] +Command=FEFE8EE0.21.0200.FD +ReplyLength=14 +Validate=FEFE8EE0210200FD.FEFEE08EFBFD + +[pmRx] +Command=FEFE8EE0.1C00.00.FD +ReplyLength=14 +Validate=FEFE8EE01C0000FD.FEFEE08EFBFD + +[pmTx] +Command=FEFE8EE0.1C00.01.FD +ReplyLength=14 +Validate=FEFE8EE01C0001FD.FEFEE08EFBFD + + + + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +; CW-R +Command=FEFE8EE0.2600.07.FD +ReplyLength=14 +Validate=FEFE8EE0260007FD.FEFEE08EFBFD + +[pmCW_L] +; CW Normal +Command=FEFE8EE0.2600.03.FD +ReplyLength=14 +Validate=FEFE8EE0260003FD.FEFEE08EFBFD + +[pmSSB_U] +Command=FEFE8EE0.2600.01.00.FD +ReplyLength=15 +Validate=FEFE8EE026000100FD.FEFEE08EFBFD + +[pmSSB_L] +Command=FEFE8EE0.2600.00.00.FD +ReplyLength=15 +Validate=FEFE8EE026000000FD.FEFEE08EFBFD + +[pmDIG_U] +; These lines select USB-D Data Mode 1 (DATA1 MOD) which defaults to ACC-A sound card modulation +Command=FEFE8EE0.2600.01.01.FD +ReplyLength=15 +Validate=FEFE8EE026000101FD.FEFEE08EFBFD + +[pmDIG_L] +; These lines select LSB-D Data Mode 1 (DATA1 MOD) which defaults to ACC-A sound card modulation +Command=FEFE8EE0.2600.00.01.FD +ReplyLength=15 +Validate=FEFE8EE026000001FD.FEFEE08EFBFD + +[pmAM] +Command=FEFE8EE0.2600.02.FD +ReplyLength=14 +Validate=FEFE8EE0260002FD.FEFEE08EFBFD + +[pmFM] +Command=FEFE8EE0.2600.05.FD +ReplyLength=14 +Validate=FEFE8EE0260005FD.FEFEE08EFBFD + + + + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +[STATUS1] +Command=FEFE8EE0.2500.FD +ReplyLength=19 +Validate=FEFE8EE02500FD.FEFEE08E.2500.0000000000.FD +Value1=13|5|vfBcdLU|1|0|pmFreqA + +[STATUS2] +Command=FEFE8EE0.2501.FD +ReplyLength=19 +Validate=FEFE8EE02501FD.FEFEE08E.2501.0000000000.FD +Value1=13|5|vfBcdLU|1|0|pmFreqB + +[STATUS3] +Command=FEFE8EE0.2600.FD +ReplyLength=17 +Validate=FEFE8EE02600FD.FEFEE08E.2600.000000.FD +Flag1=00000000000000.00000000.0000.FF0000.00|00000000000000.00000000.0000.030000.00|pmCW_L +Flag2=00000000000000.00000000.0000.FF0000.00|00000000000000.00000000.0000.070000.00|pmCW_U +Flag3=00000000000000.00000000.0000.FFFF00.00|00000000000000.00000000.0000.010000.00|pmSSB_U +Flag4=00000000000000.00000000.0000.FFFF00.00|00000000000000.00000000.0000.000000.00|pmSSB_L +Flag5=00000000000000.00000000.0000.FF0000.00|00000000000000.00000000.0000.080000.00|pmDIG_U +Flag6=00000000000000.00000000.0000.FF0000.00|00000000000000.00000000.0000.040000.00|pmDIG_L +Flag7=00000000000000.00000000.0000.FFFF00.00|00000000000000.00000000.0000.010100.00|pmDIG_U +Flag8=00000000000000.00000000.0000.FFFF00.00|00000000000000.00000000.0000.000100.00|pmDIG_L +Flag9=00000000000000.00000000.0000.FF0000.00|00000000000000.00000000.0000.020000.00|pmAM +Flag10=00000000000000.00000000.0000.FF0000.00|00000000000000.00000000.0000.050000.00|pmFM + +[STATUS4] +Command=FEFE8EE0.1409.FD +ReplyLength=16 +Validate=FEFE8EE01409FD.FEFEE08E.1409.0000.FD +; 0=300 Hz, 255=900 Hz +Value1=13|2|vfBcdBU|2.362205|300|pmPitch + +[STATUS5] +Command=FEFE8EE0.1C00.FD +ReplyLength=15 +Validate=FEFE8EE01C00FD.FEFEE08E.1C00.00.FD +Flag1=00000000000000.00000000.0000.01.00|pmTx +Flag2=00000000000000.00000000.0000.0F.00|00000000000000.00000000.0000.00.00|pmRx + +[STATUS6] +Command=FEFE8EE0.0F.FD +ReplyLength=13 +Validate=FEFE8EE00FFD.FEFEE08E.0F.00.FD +Flag1=000000000000.00000000.00.01.00|pmSplitOn +Flag2=000000000000.00000000.00.0F.00|000000000000.00000000.00.00.00|pmSplitOff + +[STATUS7] +Command=FEFE8EE0.2101.FD +ReplyLength=15 +Validate=FEFE8EE02101FD.FEFEE08E.2101.00.FD +Flag1=00000000000000.00000000.0000.01.00|pmRitOn +Flag2=00000000000000.00000000.0000.0F.00|00000000000000.00000000.0000.00.00|pmRitOff + +[STATUS8] +Command=FEFE8EE0.2102.FD +ReplyLength=15 +Validate=FEFE8EE02102FD.FEFEE08E.2102.00.FD +Flag1=00000000000000.00000000.0000.01.00|pmXitOn +Flag2=00000000000000.00000000.0000.0F.00|00000000000000.00000000.0000.00.00|pmXitOff + +[STATUS9] +Command=FEFE8EE0.07D2.FD +ReplyLength=15 +Validate=FEFE8EE007D2FD.FEFEE08E.07D2.00.FD +Flag1=00000000000000.00000000.0000.01.00|pmVfoB +Flag2=00000000000000.00000000.0000.0F.00|00000000000000.00000000.0000.00.00|pmVfoA diff --git a/CATCheck/Rigs/IC-7850.ini b/CATCheck/Rigs/IC-7850.ini new file mode 100644 index 0000000..9cc3841 --- /dev/null +++ b/CATCheck/Rigs/IC-7850.ini @@ -0,0 +1,273 @@ +;------------------------------------------------------------------------------- +; Icom IC-7850 +; +; IC-7850 File created by Bob Wilson, N6TV, n6tv@arrl.net +; +; Tested by: Bob Wilson, N6TV @ K3LR +; +; Updated by N6TV 2018-04-16: +; - Only returns pmFreqA and pmFreqB, not pmFreq, for use with CW Skimmer and Contest Loggers +; - Set USB CI-V Echo Back ON to ensure that rig returns the values coded below +;------------------------------------------------------------------------------- + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT1] +;Turn USB CI-V Echo Back ON +Command=FEFE8EE0.1A050158.01.FD +ReplyLength=16 +Validate=FEFE8EE01A05015801FD.FEFEE08EFBFD + +[INIT2] +;Turn CI-V transceive OFF +Command=FEFE8EE0.1A050155.00.FD +ReplyLength=16 +Validate=FEFE8EE01A05015500FD.FEFEE08EFBFD + +[INIT3] +;set CW normal to lower sideband +Command=FEFE8EE0.1A050140.00.FD +ReplyLength=16 +Validate=FEFE8EE01A05014000FD.FEFEE08EFBFD + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreqA] +Command=FEFE8EE0.25.00.0000000000.FD +Value=6|5|vfBcdLU|1|0 +ReplyLength=18 +Validate=FEFE8EE025000000000000FD.FEFEE08EFBFD + +[pmFreqB] +Command=FEFE8EE0.25.01.0000000000.FD +Value=6|5|vfBcdLU|1|0 +ReplyLength=18 +Validate=FEFE8EE025010000000000FD.FEFEE08EFBFD + +[pmFreq] +; not supported + +[pmRitOffset] +;not supported + +[pmRit0] +Command=FEFE8EE0.21.00000000.FD +ReplyLength=16 +Validate=FEFE8EE02100000000FD.FEFEE08EFBFD + +[pmPitch] +;The 0.425|-127.5 params. should map 300Hz->0, 900Hz->255 +Command=FEFE8EE0.14.09.0000.FD +Value=6|2|vfBcdBU|0.425|-127.5 +ReplyLength=15 +Validate=FEFE8EE014090000FD.FEFEE08EFBFD + + + + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +Command=FEFE8EE0.0F01.FD +ReplyLength=13 +Validate=FEFE8EE00F01FD.FEFEE08EFBFD + +[pmSplitOff] +Command=FEFE8EE0.0F00.FD +ReplyLength=13 +Validate=FEFE8EE00F00FD.FEFEE08EFBFD + +[pmVfoA] +Command=FEFE8EE0.07D0.FD +ReplyLength=13 +Validate=FEFE8EE007D0FD.FEFEE08EFBFD + +[pmVfoB] +Command=FEFE8EE0.07D1.FD +ReplyLength=13 +Validate=FEFE8EE007D1FD.FEFEE08EFBFD + +[pmVfoEqual] +Command=FEFE8EE0.07B1.FD +ReplyLength=13 +Validate=FEFE8EE007B1FD.FEFEE08EFBFD + +[pmVfoSwap] +Command=FEFE8EE0.07B0.FD +ReplyLength=13 +Validate=FEFE8EE007B0FD.FEFEE08EFBFD + +[pmVfoAA] +Command=FEFE8EE0.07D0.FD.FEFE8EE0.0F00.FD +ReplyLength=20 +Validate=FEFE8EE007D0FD.FEFE8EE00F00FD.FEFEE08EFBFD + +[pmVfoAB] +Command=FEFE8EE0.07D0.FD.FEFE8EE0.0F01.FD +ReplyLength=20 +Validate=FEFE8EE007D0FD.FEFE8EE00F01FD.FEFEE08EFBFD + +[pmVfoBA] +Command=FEFE8EE0.07D1.FD.FEFE8EE0.0F01.FD +ReplyLength=20 +Validate=FEFE8EE007D1FD.FEFE8EE00F01FD.FEFEE08EFBFD + +[pmVfoBB] +Command=FEFE8EE0.07D1.FD.FEFE8EE0.0F00.FD +ReplyLength=20 +Validate=FEFE8EE007D1FD.FEFE8EE00F00FD.FEFEE08EFBFD + +[pmRitOn] +Command=FEFE8EE0.21.0101.FD +ReplyLength=14 +Validate=FEFE8EE0210101FD.FEFEE08EFBFD + +[pmRitOff] +Command=FEFE8EE0.21.0100.FD +ReplyLength=14 +Validate=FEFE8EE0210100FD.FEFEE08EFBFD + +[pmXitOn] +Command=FEFE8EE0.21.0201.FD +ReplyLength=14 +Validate=FEFE8EE0210201FD.FEFEE08EFBFD + +[pmXitOff] +Command=FEFE8EE0.21.0200.FD +ReplyLength=14 +Validate=FEFE8EE0210200FD.FEFEE08EFBFD + +[pmRx] +Command=FEFE8EE0.1C00.00.FD +ReplyLength=14 +Validate=FEFE8EE01C0000FD.FEFEE08EFBFD + +[pmTx] +Command=FEFE8EE0.1C00.01.FD +ReplyLength=14 +Validate=FEFE8EE01C0001FD.FEFEE08EFBFD + + + + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +; CW-R +Command=FEFE8EE0.06.07.FD +ReplyLength=13 +Validate=FEFE8EE00607FD.FEFEE08EFBFD + +[pmCW_L] +; CW Normal +Command=FEFE8EE0.06.03.FD +ReplyLength=13 +Validate=FEFE8EE00603FD.FEFEE08EFBFD + +[pmSSB_U] +Command=FEFE8EE0.06.01.FD +ReplyLength=13 +Validate=FEFE8EE00601FD.FEFEE08EFBFD + +[pmSSB_L] +Command=FEFE8EE0.06.00.FD +ReplyLength=13 +Validate=FEFE8EE00600FD.FEFEE08EFBFD + +[pmDIG_U] +Command=FEFE8EE0.06.08.FD +ReplyLength=13 +Validate=FEFE8EE00608FD.FEFEE08EFBFD + +[pmDIG_L] +Command=FEFE8EE0.06.04.FD +ReplyLength=13 +Validate=FEFE8EE00604FD.FEFEE08EFBFD. + +[pmAM] +Command=FEFE8EE0.06.02.FD +ReplyLength=13 +Validate=FEFE8EE00602FD.FEFEE08EFBFD + +[pmFM] +Command=FEFE8EE0.06.05.FD +ReplyLength=13 +Validate=FEFE8EE00605FD.FEFEE08EFBFD + + + + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +[STATUS1] +Command=FEFE8EE0.2500.FD +ReplyLength=19 +Validate=FEFE8EE02500FD.FEFEE08E.2500.0000000000.FD +Value1=13|5|vfBcdLU|1|0|pmFreqA + +[STATUS2] +Command=FEFE8EE0.2501.FD +ReplyLength=19 +Validate=FEFE8EE02501FD.FEFEE08E.2501.0000000000.FD +Value1=13|5|vfBcdLU|1|0|pmFreqB + +[STATUS3] +Command=FEFE8EE0.04.FD +ReplyLength=14 +Validate=FEFE8EE004FD.FEFEE08E.04.0000.FD +Flag1=000000000000.0000000000.FF.0000|000000000000.0000000000.03.0000|pmCW_L +Flag2=000000000000.0000000000.FF.0000|000000000000.0000000000.07.0000|pmCW_U +Flag3=000000000000.0000000000.FF.0000|000000000000.0000000000.01.0000|pmSSB_U +Flag4=000000000000.0000000000.FF.0000|000000000000.0000000000.00.0000|pmSSB_L +Flag5=000000000000.0000000000.FF.0000|000000000000.0000000000.08.0000|pmDIG_U +Flag6=000000000000.0000000000.FF.0000|000000000000.0000000000.04.0000|pmDIG_L +Flag7=000000000000.0000000000.FF.0000|000000000000.0000000000.02.0000|pmAM +Flag8=000000000000.0000000000.FF.0000|000000000000.0000000000.05.0000|pmFM + +[STATUS4] +Command=FEFE8EE0.1409.FD +ReplyLength=16 +Validate=FEFE8EE01409FD.FEFEE08E.1409.0000.FD +; 0=300 Hz, 255=900 Hz +Value1=13|2|vfBcdBU|2.362205|300|pmPitch + +[STATUS5] +Command=FEFE8EE0.1C00.FD +ReplyLength=15 +Validate=FEFE8EE01C00FD.FEFEE08E.1C00.00.FD +Flag1=00000000000000.00000000.0000.01.00|pmTx +Flag2=00000000000000.00000000.0000.0F.00|00000000000000.00000000.0000.00.00|pmRx + +[STATUS6] +Command=FEFE8EE0.0F.FD +ReplyLength=13 +Validate=FEFE8EE00FFD.FEFEE08E.0F.00.FD +Flag1=000000000000.00000000.00.01.00|pmSplitOn +Flag2=000000000000.00000000.00.0F.00|000000000000.00000000.00.00.00|pmSplitOff + +[STATUS7] +Command=FEFE8EE0.2101.FD +ReplyLength=15 +Validate=FEFE8EE02101FD.FEFEE08E.2101.00.FD +Flag1=00000000000000.00000000.0000.01.00|pmRitOn +Flag2=00000000000000.00000000.0000.0F.00|00000000000000.00000000.0000.00.00|pmRitOff + +[STATUS8] +Command=FEFE8EE0.2102.FD +ReplyLength=15 +Validate=FEFE8EE02102FD.FEFEE08E.2102.00.FD +Flag1=00000000000000.00000000.0000.01.00|pmXitOn +Flag2=00000000000000.00000000.0000.0F.00|00000000000000.00000000.0000.00.00|pmXitOff + +[STATUS9] +Command=FEFE8EE0.07D2.FD +ReplyLength=15 +Validate=FEFE8EE007D2FD.FEFEE08E.07D2.00.FD +Flag1=00000000000000.00000000.0000.01.00|pmVfoB +Flag2=00000000000000.00000000.0000.0F.00|00000000000000.00000000.0000.00.00|pmVfoA diff --git a/CATCheck/Rigs/IC-7851-DATA-FIL1.ini b/CATCheck/Rigs/IC-7851-DATA-FIL1.ini new file mode 100644 index 0000000..4daff7c --- /dev/null +++ b/CATCheck/Rigs/IC-7851-DATA-FIL1.ini @@ -0,0 +1,286 @@ +;------------------------------------------------------------------------------- +; Icom IC-7851-DATA-FIL1 +; +; IC-7851-DATA-FIL1 File created by Bob Wilson, N6TV, n6tv@arrl.net, 2019-02-18 +; +; Tested by: +; +; Same as IC-7851-DATA, but for digital modes, sets and selects DATA2 MOD (aka Data +; Mode 2 or D2) to the USB sound card input, and selects FIL1 +;------------------------------------------------------------------------------- + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT1] +;Turn USB CI-V Echo Back ON +Command=FEFE8EE0.1A050158.01.FD +ReplyLength=16 +Validate=FEFE8EE01A05015801FD.FEFEE08EFBFD + +[INIT2] +;Turn CI-V transceive OFF +Command=FEFE8EE0.1A050155.00.FD +ReplyLength=16 +Validate=FEFE8EE01A05015500FD.FEFEE08EFBFD + +[INIT3] +;set CW normal to lower sideband +Command=FEFE8EE0.1A050140.00.FD +ReplyLength=16 +Validate=FEFE8EE01A05014000FD.FEFEE08EFBFD + +[INIT4] +;set MOD input connector for DATA2 mode to USB sound card only +Command=FEFE8EE0.1A050064.08.FD +ReplyLength=16 +Validate=FEFE8EE01A05006408FD.FEFEE08EFBFD + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreqA] +Command=FEFE8EE0.25.00.0000000000.FD +Value=6|5|vfBcdLU|1|0 +ReplyLength=18 +Validate=FEFE8EE025000000000000FD.FEFEE08EFBFD + +[pmFreqB] +Command=FEFE8EE0.25.01.0000000000.FD +Value=6|5|vfBcdLU|1|0 +ReplyLength=18 +Validate=FEFE8EE025010000000000FD.FEFEE08EFBFD + +[pmFreq] +; not supported + +[pmRitOffset] +;not supported + +[pmRit0] +Command=FEFE8EE0.21.00000000.FD +ReplyLength=16 +Validate=FEFE8EE02100000000FD.FEFEE08EFBFD + +[pmPitch] +;The 0.425|-127.5 params. should map 300Hz->0, 900Hz->255 +Command=FEFE8EE0.14.09.0000.FD +Value=6|2|vfBcdBU|0.425|-127.5 +ReplyLength=15 +Validate=FEFE8EE014090000FD.FEFEE08EFBFD + + + + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +Command=FEFE8EE0.0F01.FD +ReplyLength=13 +Validate=FEFE8EE00F01FD.FEFEE08EFBFD + +[pmSplitOff] +Command=FEFE8EE0.0F00.FD +ReplyLength=13 +Validate=FEFE8EE00F00FD.FEFEE08EFBFD + +[pmVfoA] +Command=FEFE8EE0.07D0.FD +ReplyLength=13 +Validate=FEFE8EE007D0FD.FEFEE08EFBFD + +[pmVfoB] +Command=FEFE8EE0.07D1.FD +ReplyLength=13 +Validate=FEFE8EE007D1FD.FEFEE08EFBFD + +[pmVfoEqual] +Command=FEFE8EE0.07B1.FD +ReplyLength=13 +Validate=FEFE8EE007B1FD.FEFEE08EFBFD + +[pmVfoSwap] +Command=FEFE8EE0.07B0.FD +ReplyLength=13 +Validate=FEFE8EE007B0FD.FEFEE08EFBFD + +[pmVfoAA] +Command=FEFE8EE0.07D0.FD.FEFE8EE0.0F00.FD +ReplyLength=20 +Validate=FEFE8EE007D0FD.FEFE8EE00F00FD.FEFEE08EFBFD + +[pmVfoAB] +Command=FEFE8EE0.07D0.FD.FEFE8EE0.0F01.FD +ReplyLength=20 +Validate=FEFE8EE007D0FD.FEFE8EE00F01FD.FEFEE08EFBFD + +[pmVfoBA] +Command=FEFE8EE0.07D1.FD.FEFE8EE0.0F01.FD +ReplyLength=20 +Validate=FEFE8EE007D1FD.FEFE8EE00F01FD.FEFEE08EFBFD + +[pmVfoBB] +Command=FEFE8EE0.07D1.FD.FEFE8EE0.0F00.FD +ReplyLength=20 +Validate=FEFE8EE007D1FD.FEFE8EE00F00FD.FEFEE08EFBFD + +[pmRitOn] +Command=FEFE8EE0.21.0101.FD +ReplyLength=14 +Validate=FEFE8EE0210101FD.FEFEE08EFBFD + +[pmRitOff] +Command=FEFE8EE0.21.0100.FD +ReplyLength=14 +Validate=FEFE8EE0210100FD.FEFEE08EFBFD + +[pmXitOn] +Command=FEFE8EE0.21.0201.FD +ReplyLength=14 +Validate=FEFE8EE0210201FD.FEFEE08EFBFD + +[pmXitOff] +Command=FEFE8EE0.21.0200.FD +ReplyLength=14 +Validate=FEFE8EE0210200FD.FEFEE08EFBFD + +[pmRx] +Command=FEFE8EE0.1C00.00.FD +ReplyLength=14 +Validate=FEFE8EE01C0000FD.FEFEE08EFBFD + +[pmTx] +Command=FEFE8EE0.1C00.01.FD +ReplyLength=14 +Validate=FEFE8EE01C0001FD.FEFEE08EFBFD + + + + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +; CW-R +Command=FEFE8EE0.2600.07.FD +ReplyLength=14 +Validate=FEFE8EE0260007FD.FEFEE08EFBFD + +[pmCW_L] +; CW Normal +Command=FEFE8EE0.2600.03.FD +ReplyLength=14 +Validate=FEFE8EE0260003FD.FEFEE08EFBFD + +[pmSSB_U] +; These lines select USB with Data Mode OFF, FIL1 +Command=FEFE8EE0.2600.01.00.01.FD +ReplyLength=16 +Validate=FEFE8EE02600010001FD.FEFEE08EFBFD + +[pmSSB_L] +; These lines select LSB with Data Mode OFF, FIL1 +Command=FEFE8EE0.2600.00.00.01.FD +ReplyLength=16 +Validate=FEFE8EE02600000001FD.FEFEE08EFBFD + +[pmDIG_U] +; These lines select USB-D Data Mode 2 (DATA2 MOD) which is set for USB sound card modulation, plus FIL1 +Command=FEFE8EE0.2600.01.02.01.FD +ReplyLength=16 +Validate=FEFE8EE02600010201FD.FEFEE08EFBFD + +[pmDIG_L] +; These lines select LSB-D Data Mode 2 (DATA2 MOD) which is set for USB sound card modulation, plus FIL1 +Command=FEFE8EE0.2600.00.02.01.FD +ReplyLength=16 +Validate=FEFE8EE02600000201FD.FEFEE08EFBFD + +[pmAM] +; These lines select AM with Data Mode OFF, FIL1 +Command=FEFE8EE0.2600.02.00.01.FD +ReplyLength=16 +Validate=FEFE8EE02600020001FD.FEFEE08EFBFD + +[pmFM] +; These lines select FM with Data Mode OFF, FIL1 +Command=FEFE8EE0.2600.05.00.01.FD +ReplyLength=16 +Validate=FEFE8EE02600050001FD.FEFEE08EFBFD + + + + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +[STATUS1] +Command=FEFE8EE0.2500.FD +ReplyLength=19 +Validate=FEFE8EE02500FD.FEFEE08E.2500.0000000000.FD +Value1=13|5|vfBcdLU|1|0|pmFreqA + +[STATUS2] +Command=FEFE8EE0.2501.FD +ReplyLength=19 +Validate=FEFE8EE02501FD.FEFEE08E.2501.0000000000.FD +Value1=13|5|vfBcdLU|1|0|pmFreqB + +[STATUS3] +Command=FEFE8EE0.2600.FD +ReplyLength=17 +Validate=FEFE8EE02600FD.FEFEE08E.2600.000000.FD +Flag1=00000000000000.00000000.0000.FF0000.00|00000000000000.00000000.0000.030000.00|pmCW_L +Flag2=00000000000000.00000000.0000.FF0000.00|00000000000000.00000000.0000.070000.00|pmCW_U +Flag3=00000000000000.00000000.0000.FFFF00.00|00000000000000.00000000.0000.010000.00|pmSSB_U +Flag4=00000000000000.00000000.0000.FFFF00.00|00000000000000.00000000.0000.000000.00|pmSSB_L +Flag5=00000000000000.00000000.0000.FF0000.00|00000000000000.00000000.0000.080000.00|pmDIG_U +Flag6=00000000000000.00000000.0000.FF0000.00|00000000000000.00000000.0000.040000.00|pmDIG_L +Flag7=00000000000000.00000000.0000.FFFF00.00|00000000000000.00000000.0000.010100.00|pmDIG_U +Flag8=00000000000000.00000000.0000.FFFF00.00|00000000000000.00000000.0000.000100.00|pmDIG_L +Flag9=00000000000000.00000000.0000.FF0000.00|00000000000000.00000000.0000.020000.00|pmAM +Flag10=00000000000000.00000000.0000.FF0000.00|00000000000000.00000000.0000.050000.00|pmFM + +[STATUS4] +Command=FEFE8EE0.1409.FD +ReplyLength=16 +Validate=FEFE8EE01409FD.FEFEE08E.1409.0000.FD +; 0=300 Hz, 255=900 Hz +Value1=13|2|vfBcdBU|2.362205|300|pmPitch + +[STATUS5] +Command=FEFE8EE0.1C00.FD +ReplyLength=15 +Validate=FEFE8EE01C00FD.FEFEE08E.1C00.00.FD +Flag1=00000000000000.00000000.0000.01.00|pmTx +Flag2=00000000000000.00000000.0000.0F.00|00000000000000.00000000.0000.00.00|pmRx + +[STATUS6] +Command=FEFE8EE0.0F.FD +ReplyLength=13 +Validate=FEFE8EE00FFD.FEFEE08E.0F.00.FD +Flag1=000000000000.00000000.00.01.00|pmSplitOn +Flag2=000000000000.00000000.00.0F.00|000000000000.00000000.00.00.00|pmSplitOff + +[STATUS7] +Command=FEFE8EE0.2101.FD +ReplyLength=15 +Validate=FEFE8EE02101FD.FEFEE08E.2101.00.FD +Flag1=00000000000000.00000000.0000.01.00|pmRitOn +Flag2=00000000000000.00000000.0000.0F.00|00000000000000.00000000.0000.00.00|pmRitOff + +[STATUS8] +Command=FEFE8EE0.2102.FD +ReplyLength=15 +Validate=FEFE8EE02102FD.FEFEE08E.2102.00.FD +Flag1=00000000000000.00000000.0000.01.00|pmXitOn +Flag2=00000000000000.00000000.0000.0F.00|00000000000000.00000000.0000.00.00|pmXitOff + +[STATUS9] +Command=FEFE8EE0.07D2.FD +ReplyLength=15 +Validate=FEFE8EE007D2FD.FEFEE08E.07D2.00.FD +Flag1=00000000000000.00000000.0000.01.00|pmVfoB +Flag2=00000000000000.00000000.0000.0F.00|00000000000000.00000000.0000.00.00|pmVfoA diff --git a/CATCheck/Rigs/IC-7851-DATA.ini b/CATCheck/Rigs/IC-7851-DATA.ini new file mode 100644 index 0000000..e7b0e16 --- /dev/null +++ b/CATCheck/Rigs/IC-7851-DATA.ini @@ -0,0 +1,276 @@ +;------------------------------------------------------------------------------- +; Icom IC-7851-DATA +; +; IC-7851-DATA File created by Bob Wilson, N6TV, n6tv@arrl.net, 2018-04-16 +; +; Tested by: Bob Wilson, N6TV @ K3LR +; +; Same as IC-7851, but selects USB-D and LSB-D for DIG modes instead of RTTY and RTTY-R +; Note: Uses DATA1 MOD (aka Data Mode 1 or D1). User must set DATA1 Modulation Input +;------------------------------------------------------------------------------- + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT1] +;Turn USB CI-V Echo Back ON +Command=FEFE8EE0.1A050158.01.FD +ReplyLength=16 +Validate=FEFE8EE01A05015801FD.FEFEE08EFBFD + +[INIT2] +;Turn CI-V transceive OFF +Command=FEFE8EE0.1A050155.00.FD +ReplyLength=16 +Validate=FEFE8EE01A05015500FD.FEFEE08EFBFD + +[INIT3] +;set CW normal to lower sideband +Command=FEFE8EE0.1A050140.00.FD +ReplyLength=16 +Validate=FEFE8EE01A05014000FD.FEFEE08EFBFD + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreqA] +Command=FEFE8EE0.25.00.0000000000.FD +Value=6|5|vfBcdLU|1|0 +ReplyLength=18 +Validate=FEFE8EE025000000000000FD.FEFEE08EFBFD + +[pmFreqB] +Command=FEFE8EE0.25.01.0000000000.FD +Value=6|5|vfBcdLU|1|0 +ReplyLength=18 +Validate=FEFE8EE025010000000000FD.FEFEE08EFBFD + +[pmFreq] +; not supported + +[pmRitOffset] +;not supported + +[pmRit0] +Command=FEFE8EE0.21.00000000.FD +ReplyLength=16 +Validate=FEFE8EE02100000000FD.FEFEE08EFBFD + +[pmPitch] +;The 0.425|-127.5 params. should map 300Hz->0, 900Hz->255 +Command=FEFE8EE0.14.09.0000.FD +Value=6|2|vfBcdBU|0.425|-127.5 +ReplyLength=15 +Validate=FEFE8EE014090000FD.FEFEE08EFBFD + + + + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +Command=FEFE8EE0.0F01.FD +ReplyLength=13 +Validate=FEFE8EE00F01FD.FEFEE08EFBFD + +[pmSplitOff] +Command=FEFE8EE0.0F00.FD +ReplyLength=13 +Validate=FEFE8EE00F00FD.FEFEE08EFBFD + +[pmVfoA] +Command=FEFE8EE0.07D0.FD +ReplyLength=13 +Validate=FEFE8EE007D0FD.FEFEE08EFBFD + +[pmVfoB] +Command=FEFE8EE0.07D1.FD +ReplyLength=13 +Validate=FEFE8EE007D1FD.FEFEE08EFBFD + +[pmVfoEqual] +Command=FEFE8EE0.07B1.FD +ReplyLength=13 +Validate=FEFE8EE007B1FD.FEFEE08EFBFD + +[pmVfoSwap] +Command=FEFE8EE0.07B0.FD +ReplyLength=13 +Validate=FEFE8EE007B0FD.FEFEE08EFBFD + +[pmVfoAA] +Command=FEFE8EE0.07D0.FD.FEFE8EE0.0F00.FD +ReplyLength=20 +Validate=FEFE8EE007D0FD.FEFE8EE00F00FD.FEFEE08EFBFD + +[pmVfoAB] +Command=FEFE8EE0.07D0.FD.FEFE8EE0.0F01.FD +ReplyLength=20 +Validate=FEFE8EE007D0FD.FEFE8EE00F01FD.FEFEE08EFBFD + +[pmVfoBA] +Command=FEFE8EE0.07D1.FD.FEFE8EE0.0F01.FD +ReplyLength=20 +Validate=FEFE8EE007D1FD.FEFE8EE00F01FD.FEFEE08EFBFD + +[pmVfoBB] +Command=FEFE8EE0.07D1.FD.FEFE8EE0.0F00.FD +ReplyLength=20 +Validate=FEFE8EE007D1FD.FEFE8EE00F00FD.FEFEE08EFBFD + +[pmRitOn] +Command=FEFE8EE0.21.0101.FD +ReplyLength=14 +Validate=FEFE8EE0210101FD.FEFEE08EFBFD + +[pmRitOff] +Command=FEFE8EE0.21.0100.FD +ReplyLength=14 +Validate=FEFE8EE0210100FD.FEFEE08EFBFD + +[pmXitOn] +Command=FEFE8EE0.21.0201.FD +ReplyLength=14 +Validate=FEFE8EE0210201FD.FEFEE08EFBFD + +[pmXitOff] +Command=FEFE8EE0.21.0200.FD +ReplyLength=14 +Validate=FEFE8EE0210200FD.FEFEE08EFBFD + +[pmRx] +Command=FEFE8EE0.1C00.00.FD +ReplyLength=14 +Validate=FEFE8EE01C0000FD.FEFEE08EFBFD + +[pmTx] +Command=FEFE8EE0.1C00.01.FD +ReplyLength=14 +Validate=FEFE8EE01C0001FD.FEFEE08EFBFD + + + + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +; CW-R +Command=FEFE8EE0.2600.07.FD +ReplyLength=14 +Validate=FEFE8EE0260007FD.FEFEE08EFBFD + +[pmCW_L] +; CW Normal +Command=FEFE8EE0.2600.03.FD +ReplyLength=14 +Validate=FEFE8EE0260003FD.FEFEE08EFBFD + +[pmSSB_U] +Command=FEFE8EE0.2600.01.00.FD +ReplyLength=15 +Validate=FEFE8EE026000100FD.FEFEE08EFBFD + +[pmSSB_L] +Command=FEFE8EE0.2600.00.00.FD +ReplyLength=15 +Validate=FEFE8EE026000000FD.FEFEE08EFBFD + +[pmDIG_U] +; These lines select USB-D Data Mode 1 (DATA1 MOD) which defaults to ACC-A sound card modulation +Command=FEFE8EE0.2600.01.01.FD +ReplyLength=15 +Validate=FEFE8EE026000101FD.FEFEE08EFBFD + +[pmDIG_L] +; These lines select LSB-D Data Mode 1 (DATA1 MOD) which defaults to ACC-A sound card modulation +Command=FEFE8EE0.2600.00.01.FD +ReplyLength=15 +Validate=FEFE8EE026000001FD.FEFEE08EFBFD + +[pmAM] +Command=FEFE8EE0.2600.02.FD +ReplyLength=14 +Validate=FEFE8EE0260002FD.FEFEE08EFBFD + +[pmFM] +Command=FEFE8EE0.2600.05.FD +ReplyLength=14 +Validate=FEFE8EE0260005FD.FEFEE08EFBFD + + + + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +[STATUS1] +Command=FEFE8EE0.2500.FD +ReplyLength=19 +Validate=FEFE8EE02500FD.FEFEE08E.2500.0000000000.FD +Value1=13|5|vfBcdLU|1|0|pmFreqA + +[STATUS2] +Command=FEFE8EE0.2501.FD +ReplyLength=19 +Validate=FEFE8EE02501FD.FEFEE08E.2501.0000000000.FD +Value1=13|5|vfBcdLU|1|0|pmFreqB + +[STATUS3] +Command=FEFE8EE0.2600.FD +ReplyLength=17 +Validate=FEFE8EE02600FD.FEFEE08E.2600.000000.FD +Flag1=00000000000000.00000000.0000.FF0000.00|00000000000000.00000000.0000.030000.00|pmCW_L +Flag2=00000000000000.00000000.0000.FF0000.00|00000000000000.00000000.0000.070000.00|pmCW_U +Flag3=00000000000000.00000000.0000.FFFF00.00|00000000000000.00000000.0000.010000.00|pmSSB_U +Flag4=00000000000000.00000000.0000.FFFF00.00|00000000000000.00000000.0000.000000.00|pmSSB_L +Flag5=00000000000000.00000000.0000.FF0000.00|00000000000000.00000000.0000.080000.00|pmDIG_U +Flag6=00000000000000.00000000.0000.FF0000.00|00000000000000.00000000.0000.040000.00|pmDIG_L +Flag7=00000000000000.00000000.0000.FFFF00.00|00000000000000.00000000.0000.010100.00|pmDIG_U +Flag8=00000000000000.00000000.0000.FFFF00.00|00000000000000.00000000.0000.000100.00|pmDIG_L +Flag9=00000000000000.00000000.0000.FF0000.00|00000000000000.00000000.0000.020000.00|pmAM +Flag10=00000000000000.00000000.0000.FF0000.00|00000000000000.00000000.0000.050000.00|pmFM + +[STATUS4] +Command=FEFE8EE0.1409.FD +ReplyLength=16 +Validate=FEFE8EE01409FD.FEFEE08E.1409.0000.FD +; 0=300 Hz, 255=900 Hz +Value1=13|2|vfBcdBU|2.362205|300|pmPitch + +[STATUS5] +Command=FEFE8EE0.1C00.FD +ReplyLength=15 +Validate=FEFE8EE01C00FD.FEFEE08E.1C00.00.FD +Flag1=00000000000000.00000000.0000.01.00|pmTx +Flag2=00000000000000.00000000.0000.0F.00|00000000000000.00000000.0000.00.00|pmRx + +[STATUS6] +Command=FEFE8EE0.0F.FD +ReplyLength=13 +Validate=FEFE8EE00FFD.FEFEE08E.0F.00.FD +Flag1=000000000000.00000000.00.01.00|pmSplitOn +Flag2=000000000000.00000000.00.0F.00|000000000000.00000000.00.00.00|pmSplitOff + +[STATUS7] +Command=FEFE8EE0.2101.FD +ReplyLength=15 +Validate=FEFE8EE02101FD.FEFEE08E.2101.00.FD +Flag1=00000000000000.00000000.0000.01.00|pmRitOn +Flag2=00000000000000.00000000.0000.0F.00|00000000000000.00000000.0000.00.00|pmRitOff + +[STATUS8] +Command=FEFE8EE0.2102.FD +ReplyLength=15 +Validate=FEFE8EE02102FD.FEFEE08E.2102.00.FD +Flag1=00000000000000.00000000.0000.01.00|pmXitOn +Flag2=00000000000000.00000000.0000.0F.00|00000000000000.00000000.0000.00.00|pmXitOff + +[STATUS9] +Command=FEFE8EE0.07D2.FD +ReplyLength=15 +Validate=FEFE8EE007D2FD.FEFEE08E.07D2.00.FD +Flag1=00000000000000.00000000.0000.01.00|pmVfoB +Flag2=00000000000000.00000000.0000.0F.00|00000000000000.00000000.0000.00.00|pmVfoA diff --git a/CATCheck/Rigs/IC-7851.ini b/CATCheck/Rigs/IC-7851.ini new file mode 100644 index 0000000..23371d4 --- /dev/null +++ b/CATCheck/Rigs/IC-7851.ini @@ -0,0 +1,273 @@ +;------------------------------------------------------------------------------- +; Icom IC-7851 +; +; IC-7851 File created by Bob Wilson, N6TV, n6tv@arrl.net +; +; Tested by: Bob Wilson, N6TV @ K3LR +; +; Updated by N6TV 2018-04-16: +; - Only returns pmFreqA and pmFreqB, not pmFreq, for use with CW Skimmer and Contest Loggers +; - Set USB CI-V Echo Back ON to ensure that rig returns the values coded below +;------------------------------------------------------------------------------- + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT1] +;Turn USB CI-V Echo Back ON +Command=FEFE8EE0.1A050158.01.FD +ReplyLength=16 +Validate=FEFE8EE01A05015801FD.FEFEE08EFBFD + +[INIT2] +;Turn CI-V transceive OFF +Command=FEFE8EE0.1A050155.00.FD +ReplyLength=16 +Validate=FEFE8EE01A05015500FD.FEFEE08EFBFD + +[INIT3] +;set CW normal to lower sideband +Command=FEFE8EE0.1A050140.00.FD +ReplyLength=16 +Validate=FEFE8EE01A05014000FD.FEFEE08EFBFD + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreqA] +Command=FEFE8EE0.25.00.0000000000.FD +Value=6|5|vfBcdLU|1|0 +ReplyLength=18 +Validate=FEFE8EE025000000000000FD.FEFEE08EFBFD + +[pmFreqB] +Command=FEFE8EE0.25.01.0000000000.FD +Value=6|5|vfBcdLU|1|0 +ReplyLength=18 +Validate=FEFE8EE025010000000000FD.FEFEE08EFBFD + +[pmFreq] +; not supported + +[pmRitOffset] +;not supported + +[pmRit0] +Command=FEFE8EE0.21.00000000.FD +ReplyLength=16 +Validate=FEFE8EE02100000000FD.FEFEE08EFBFD + +[pmPitch] +;The 0.425|-127.5 params. should map 300Hz->0, 900Hz->255 +Command=FEFE8EE0.14.09.0000.FD +Value=6|2|vfBcdBU|0.425|-127.5 +ReplyLength=15 +Validate=FEFE8EE014090000FD.FEFEE08EFBFD + + + + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +Command=FEFE8EE0.0F01.FD +ReplyLength=13 +Validate=FEFE8EE00F01FD.FEFEE08EFBFD + +[pmSplitOff] +Command=FEFE8EE0.0F00.FD +ReplyLength=13 +Validate=FEFE8EE00F00FD.FEFEE08EFBFD + +[pmVfoA] +Command=FEFE8EE0.07D0.FD +ReplyLength=13 +Validate=FEFE8EE007D0FD.FEFEE08EFBFD + +[pmVfoB] +Command=FEFE8EE0.07D1.FD +ReplyLength=13 +Validate=FEFE8EE007D1FD.FEFEE08EFBFD + +[pmVfoEqual] +Command=FEFE8EE0.07B1.FD +ReplyLength=13 +Validate=FEFE8EE007B1FD.FEFEE08EFBFD + +[pmVfoSwap] +Command=FEFE8EE0.07B0.FD +ReplyLength=13 +Validate=FEFE8EE007B0FD.FEFEE08EFBFD + +[pmVfoAA] +Command=FEFE8EE0.07D0.FD.FEFE8EE0.0F00.FD +ReplyLength=20 +Validate=FEFE8EE007D0FD.FEFE8EE00F00FD.FEFEE08EFBFD + +[pmVfoAB] +Command=FEFE8EE0.07D0.FD.FEFE8EE0.0F01.FD +ReplyLength=20 +Validate=FEFE8EE007D0FD.FEFE8EE00F01FD.FEFEE08EFBFD + +[pmVfoBA] +Command=FEFE8EE0.07D1.FD.FEFE8EE0.0F01.FD +ReplyLength=20 +Validate=FEFE8EE007D1FD.FEFE8EE00F01FD.FEFEE08EFBFD + +[pmVfoBB] +Command=FEFE8EE0.07D1.FD.FEFE8EE0.0F00.FD +ReplyLength=20 +Validate=FEFE8EE007D1FD.FEFE8EE00F00FD.FEFEE08EFBFD + +[pmRitOn] +Command=FEFE8EE0.21.0101.FD +ReplyLength=14 +Validate=FEFE8EE0210101FD.FEFEE08EFBFD + +[pmRitOff] +Command=FEFE8EE0.21.0100.FD +ReplyLength=14 +Validate=FEFE8EE0210100FD.FEFEE08EFBFD + +[pmXitOn] +Command=FEFE8EE0.21.0201.FD +ReplyLength=14 +Validate=FEFE8EE0210201FD.FEFEE08EFBFD + +[pmXitOff] +Command=FEFE8EE0.21.0200.FD +ReplyLength=14 +Validate=FEFE8EE0210200FD.FEFEE08EFBFD + +[pmRx] +Command=FEFE8EE0.1C00.00.FD +ReplyLength=14 +Validate=FEFE8EE01C0000FD.FEFEE08EFBFD + +[pmTx] +Command=FEFE8EE0.1C00.01.FD +ReplyLength=14 +Validate=FEFE8EE01C0001FD.FEFEE08EFBFD + + + + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +; CW-R +Command=FEFE8EE0.06.07.FD +ReplyLength=13 +Validate=FEFE8EE00607FD.FEFEE08EFBFD + +[pmCW_L] +; CW Normal +Command=FEFE8EE0.06.03.FD +ReplyLength=13 +Validate=FEFE8EE00603FD.FEFEE08EFBFD + +[pmSSB_U] +Command=FEFE8EE0.06.01.FD +ReplyLength=13 +Validate=FEFE8EE00601FD.FEFEE08EFBFD + +[pmSSB_L] +Command=FEFE8EE0.06.00.FD +ReplyLength=13 +Validate=FEFE8EE00600FD.FEFEE08EFBFD + +[pmDIG_U] +Command=FEFE8EE0.06.08.FD +ReplyLength=13 +Validate=FEFE8EE00608FD.FEFEE08EFBFD + +[pmDIG_L] +Command=FEFE8EE0.06.04.FD +ReplyLength=13 +Validate=FEFE8EE00604FD.FEFEE08EFBFD. + +[pmAM] +Command=FEFE8EE0.06.02.FD +ReplyLength=13 +Validate=FEFE8EE00602FD.FEFEE08EFBFD + +[pmFM] +Command=FEFE8EE0.06.05.FD +ReplyLength=13 +Validate=FEFE8EE00605FD.FEFEE08EFBFD + + + + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +[STATUS1] +Command=FEFE8EE0.2500.FD +ReplyLength=19 +Validate=FEFE8EE02500FD.FEFEE08E.2500.0000000000.FD +Value1=13|5|vfBcdLU|1|0|pmFreqA + +[STATUS2] +Command=FEFE8EE0.2501.FD +ReplyLength=19 +Validate=FEFE8EE02501FD.FEFEE08E.2501.0000000000.FD +Value1=13|5|vfBcdLU|1|0|pmFreqB + +[STATUS3] +Command=FEFE8EE0.04.FD +ReplyLength=14 +Validate=FEFE8EE004FD.FEFEE08E.04.0000.FD +Flag1=000000000000.0000000000.FF.0000|000000000000.0000000000.03.0000|pmCW_L +Flag2=000000000000.0000000000.FF.0000|000000000000.0000000000.07.0000|pmCW_U +Flag3=000000000000.0000000000.FF.0000|000000000000.0000000000.01.0000|pmSSB_U +Flag4=000000000000.0000000000.FF.0000|000000000000.0000000000.00.0000|pmSSB_L +Flag5=000000000000.0000000000.FF.0000|000000000000.0000000000.08.0000|pmDIG_U +Flag6=000000000000.0000000000.FF.0000|000000000000.0000000000.04.0000|pmDIG_L +Flag7=000000000000.0000000000.FF.0000|000000000000.0000000000.02.0000|pmAM +Flag8=000000000000.0000000000.FF.0000|000000000000.0000000000.05.0000|pmFM + +[STATUS4] +Command=FEFE8EE0.1409.FD +ReplyLength=16 +Validate=FEFE8EE01409FD.FEFEE08E.1409.0000.FD +; 0=300 Hz, 255=900 Hz +Value1=13|2|vfBcdBU|2.362205|300|pmPitch + +[STATUS5] +Command=FEFE8EE0.1C00.FD +ReplyLength=15 +Validate=FEFE8EE01C00FD.FEFEE08E.1C00.00.FD +Flag1=00000000000000.00000000.0000.01.00|pmTx +Flag2=00000000000000.00000000.0000.0F.00|00000000000000.00000000.0000.00.00|pmRx + +[STATUS6] +Command=FEFE8EE0.0F.FD +ReplyLength=13 +Validate=FEFE8EE00FFD.FEFEE08E.0F.00.FD +Flag1=000000000000.00000000.00.01.00|pmSplitOn +Flag2=000000000000.00000000.00.0F.00|000000000000.00000000.00.00.00|pmSplitOff + +[STATUS7] +Command=FEFE8EE0.2101.FD +ReplyLength=15 +Validate=FEFE8EE02101FD.FEFEE08E.2101.00.FD +Flag1=00000000000000.00000000.0000.01.00|pmRitOn +Flag2=00000000000000.00000000.0000.0F.00|00000000000000.00000000.0000.00.00|pmRitOff + +[STATUS8] +Command=FEFE8EE0.2102.FD +ReplyLength=15 +Validate=FEFE8EE02102FD.FEFEE08E.2102.00.FD +Flag1=00000000000000.00000000.0000.01.00|pmXitOn +Flag2=00000000000000.00000000.0000.0F.00|00000000000000.00000000.0000.00.00|pmXitOff + +[STATUS9] +Command=FEFE8EE0.07D2.FD +ReplyLength=15 +Validate=FEFE8EE007D2FD.FEFEE08E.07D2.00.FD +Flag1=00000000000000.00000000.0000.01.00|pmVfoB +Flag2=00000000000000.00000000.0000.0F.00|00000000000000.00000000.0000.00.00|pmVfoA diff --git a/CATCheck/Rigs/IC-821PST.ini b/CATCheck/Rigs/IC-821PST.ini new file mode 100644 index 0000000..4d84566 --- /dev/null +++ b/CATCheck/Rigs/IC-821PST.ini @@ -0,0 +1,203 @@ +;------------------------------------------------------------------------------- + ; Icom IC-821PST command set +; +; File created for IC-970D by Alex Shovkoplyas, VE3NEA ve3nea@dxatlas.com + Corrected by Vlad Tarasov , RA4HO, ra4ho@ncts.ru +; Adapted and tested by MM0RBZ Specifically to use IC-821 with +; PstRotator software for mode V/U and U/v satellites. +; PstRotator has embedded code to use this .ini so please do not re-name it. +; Use with other software may produce undesirable results. +; +;------------------------------------------------------------------------------- + + + + + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- + +;none + + + + + + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreqA] +Command=FEFE4CE0.05.0000000000.FD +Value=5|5|vfBcdLU|1|0 +ReplyLength=17 +Validate=FEFE4CE0050000000000FD.FEFEE04CFBFD + +[pmFreqB] +Command=FEFE4CE0.05.0000000000.FD +Value=5|5|vfBcdLU|1|0 +ReplyLength=17 +Validate=FEFE4CE0050000000000FD.FEFEE04CFBFD + +[pmFreq] +Command=FEFE4CE0.05.0000000000.FD +Value=5|5|vfBcdLU|1|0 +ReplyLength=17 +Validate=FEFE4CE0050000000000FD.FEFEE04CFBFD + +[pmRitOffset] +;not supported +;+/- 1.2 KHz + +[pmRit0] +;not supported + +[pmPitch] +;not supported + + + + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +Command=FEFE4CE0.0F01.FD +ReplyLength=13 +Validate=FEFE4CE00F01FD.FEFEE04CFBFD + +[pmSplitOff] +Command=FEFE4CE0.0F00.FD +ReplyLength=13 +Validate=FEFE4CE00F00FD.FEFEE04CFBFD + +[pmVfoA] +;SELECT Sub BAND (RX) +Command=FEFE4CE0.07D1.FD +ReplyLength=13 +Validate=FEFE4CE007D1FD.FEFEE04CFBFD + +[pmVfoB] +;SELECT Main BAND (TX) +Command=FEFE4CE0.07D0.FD +ReplyLength=13 +Validate=FEFE4CE007D0FD.FEFEE04CFBFD + + + +[pmVfoEqual] +;SELECT Sub BAND (RX), this is not an error +Command=FEFE4CE0.07D1.FD +ReplyLength=13 +Validate=FEFE4CE007D1FD.FEFEE04CFBFD + +[pmVfoSwap] +;SWAP MAIN AND SUB +Command=FEFE4CE0.07B0.FD +ReplyLength=13 +Validate=FEFE4CE007B0FD.FEFEE04CFBFD + +[pmVfoAA] +;not supported + +[pmVfoAB] +;not supported + +[pmVfoBA] +;not supported + +[pmVfoBB] +;not supported + +[pmRitOn] +;not supported + +[pmRitOff] +;not supported + +[pmXitOn] +;not supported + +[pmXitOff] +;not supported + +[pmRx] +;not supported + + +[pmTx] +;not supported + + + + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +Command=FEFE4CE0.06.03.FD +ReplyLength=13 +Validate=FEFE4CE00603FD.FEFEE04CFBFD + +[pmCW_L] +;NOT SUPPORTED + +[pmSSB_U] +Command=FEFE4CE0.06.01.FD +ReplyLength=13 +Validate=FEFE4CE00601FD.FEFEE04CFBFD + +[pmSSB_L] +Command=FEFE4CE0.06.00.FD +ReplyLength=13 +Validate=FEFE4CE00600FD.FEFEE04CFBFD + +[pmDIG_U] +;not supported +[pmDIG_L] +;not supported + +[pmAM] +;not supported + +[pmFM] +Command=FEFE4CE0.06.05.FD +ReplyLength=13 +Validate=FEFE4CE00605FD.FEFEE04CFBFD + + + + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +[STATUS1] +;READ CURRENT FREQUENCY DATA +Command=FEFE4CE0.03.FD +ReplyLength=17 +Validate=FFFFFFFFFFFF.FFFFFFFF.FF.0000000000.FF|FEFE4CE003FD.FEFEE04C.03.0000000000.FD +Value1=11|5|vfBcdLU|1|0|pmFreq + +[STATUS2] +;READ CURRENT MODE +Command=FEFE4CE0.04.FD +ReplyLength=14 +Validate=FFFFFFFFFFFF.FFFFFFFF.FF.0000.FF|FEFE4CE004FD.FEFEE04C.04.0000.FD +is filter byte appended to the mode byte? +Flag1=000000000000.0000000000.FF.0000|000000000000.0000000000.03.0000|pmCW_U +Flag2=000000000000.0000000000.FF.0000|000000000000.0000000000.07.0000|pmCW_L +Flag3=000000000000.0000000000.FF.0000|000000000000.0000000000.01.0000|pmSSB_U +Flag4=000000000000.0000000000.FF.0000|000000000000.0000000000.00.0000|pmSSB_L +Flag5=000000000000.0000000000.FF.0000|000000000000.0000000000.04.0000|pmDIG_U +Flag6=000000000000.0000000000.FF.0000|000000000000.0000000000.08.0000|pmDIG_L +Flag7=000000000000.0000000000.FF.0000|000000000000.0000000000.02.0000|pmAM +Flag8=000000000000.0000000000.FF.0000|000000000000.0000000000.05.0000|pmFM + +[STATUS3] +;not supported + + + + diff --git a/CATCheck/Rigs/IC-910.ini b/CATCheck/Rigs/IC-910.ini new file mode 100644 index 0000000..c0903e6 --- /dev/null +++ b/CATCheck/Rigs/IC-910.ini @@ -0,0 +1,174 @@ +;------------------------------------------------------------------------------- +; Icom IC-910 command set +; +; Original IC-706MkII file created by Alex Shovkoplyas, VE3NEA ve3nea@dxatlas.com +; Modified to work with IC-910 by Dave Hardy VK2JDH +; Tested by: _________ +;------------------------------------------------------------------------------- + + + + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- + +;none + + + + + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreqA] +;not supported + +[pmFreqB] +;not supported + +[pmFreq] +Command=FEFE60E0.05.0000000000.FD +Value=5|5|vfBcdLU|1|0 +ReplyLength=17 +Validate=FEFE68E0050000000000FD.FEFEE060FBFD + +[pmRitOffset] +;not supported + + +[pmRit0] +;not supported + +[pmPitch] +;not supported + + + + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +Command=FEFE60E0.0F01.FD +ReplyLength=13 +Validate=FEFE60E00F01FD.FEFEE060FBFD + +[pmSplitOff] +Command=FEFE60E0.0F00.FD +ReplyLength=13 +Validate=FEFE60E00F00FD.FEFEE060FBFD + +[pmVfoA] +Command=FEFE60E0.0700.FD +ReplyLength=13 +Validate=FEFE60E00700FD.FEFEE060FBFD + +[pmVfoB] +Command=FEFE60E0.0701.FD +ReplyLength=13 +Validate=FEFE60E00701FD.FEFEE060FBFD + +[pmVfoEqual] +Command=FEFE60E0.07A0.FD +ReplyLength=13 +Validate=FEFE60E007A0FD.FEFEE060FBFD + +[pmVfoSwap] +Command=FEFE60E0.07B0.FD +ReplyLength=13 +Validate=FEFE60E007B0FD.FEFEE060FBFD + +[pmVfoAA] +;not supported + +[pmVfoAB] +;not supported + +[pmVfoBA] +;not supported + +[pmVfoBB] +;not supported + +[pmRitOn] +;not supported + +[pmRitOff] +;not supported + +[pmXitOn] +;not supported + +[pmXitOff] +;not supported + +[pmRx] +;not supported + +[pmTx] +;not supported + + + + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +Command=FEFE60E0.06.03.FD +ReplyLength=13 +Validate=FEFE60E00603FD.FEFEE060FBFD + +[pmCW_L] +;not supported + +[pmSSB_U] +Command=FEFE60E0.06.01.FD +ReplyLength=13 +Validate=FEFE60E00601FD.FEFEE060FBFD + +[pmSSB_L] +Command=FEFE60E0.06.00.FD +ReplyLength=13 +Validate=FEFE60E00600FD.FEFEE060FBFD + +[pmDIG_U] +;not supported + +[pmDIG_L] +;not supported + +[pmAM] +;not supported + +[pmFM] +Command=FEFE60E0.06.04.FD +ReplyLength=13 +Validate=FEFE60E00605FD.FEFEE060FBFD + + + + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +[STATUS1] +Command=FEFE60E0.03.FD +ReplyLength=17 +Validate=FFFFFFFFFFFF.FFFFFFFF.FF.0000000000.FF|FEFE60E003FD.FEFEE060.03.0000000000.FD +Value1=11|5|vfBcdLU|1|0|pmFreq + +[STATUS2] +Command=FEFE60E0.04.FD +ReplyLength=14 +Validate=FFFFFFFFFFFF.FFFFFFFF.FF.0000.FF|FEFE60E004FD.FEFEE060.04.0000.FD +Flag1=000000000000.0000000000.FF.0000|000000000000.0000000000.03.0000|pmCW_U +Flag3=000000000000.0000000000.FF.0000|000000000000.0000000000.01.0000|pmSSB_U +Flag4=000000000000.0000000000.FF.0000|000000000000.0000000000.00.0000|pmSSB_L +Flag5=000000000000.0000000000.FF.0000|000000000000.0000000000.04.0000|pmDIG_U +Flag7=000000000000.0000000000.FF.0000|000000000000.0000000000.02.0000|pmAM +Flag8=000000000000.0000000000.FF.0000|000000000000.0000000000.05.0000|pmFM +Flag9=000000000000.0000000000.FF.0000|000000000000.0000000000.06.0000|pmFM diff --git a/CATCheck/Rigs/IC-9100.ini b/CATCheck/Rigs/IC-9100.ini new file mode 100644 index 0000000..a64bad2 Binary files /dev/null and b/CATCheck/Rigs/IC-9100.ini differ diff --git a/CATCheck/Rigs/IC-9100v2.ini b/CATCheck/Rigs/IC-9100v2.ini new file mode 100644 index 0000000..62a1dea --- /dev/null +++ b/CATCheck/Rigs/IC-9100v2.ini @@ -0,0 +1,223 @@ +;------------------------------------------------------------------------------- +; Icom IC-9100 with corrected command set +; +; IC-9100v2 File created by Bob Wilson, N6TV, n6tv@arrl.net +; +; Tested by: N6TV @ HRO Sunnyvale, CA +;------------------------------------------------------------------------------- + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT1] +;Turn CI-V transceive OFF +Command=FEFE7CE0.1A050058.00.FD +ReplyLength=16 +Validate=FEFE7CE01A05005800FD.FEFEE07CFBFD + +[INIT2] +;set CW normal to lower sideband +Command=FEFE7CE0.1A050040.00.FD +ReplyLength=16 +Validate=FEFE7CE01A05004000FD.FEFEE07CFBFD + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreqA] +;not supported + +[pmFreqB] +;not supported + +[pmFreq] +Command=FEFE7CE0.05.0000000000.FD +Value=5|5|vfBcdLU|1|0 +ReplyLength=17 +Validate=FEFE7CE0050000000000FD.FEFEE07CFBFD + +[pmRitOffset] +;not supported + +[pmRit0] +;not supported + +[pmPitch] +;test the 0.425|-127.5 params. should map 300Hz->0, 900Hz->255 +Command=FEFE7CE0.14.09.0000.FD +Value=6|2|vfBcdBU|0.425|-127.5 +ReplyLength=15 +Validate=FEFE7CE014090000FD.FEFEE07CFBFD + + + + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +Command=FEFE7CE0.0F01.FD +ReplyLength=13 +Validate=FEFE7CE00F01FD.FEFEE07CFBFD + +[pmSplitOff] +Command=FEFE7CE0.0F00.FD +ReplyLength=13 +Validate=FEFE7CE00F00FD.FEFEE07CFBFD + +[pmVfoA] +Command=FEFE7CE0.0700.FD +ReplyLength=13 +Validate=FEFE7CE00700FD.FEFEE07CFBFD + +[pmVfoB] +Command=FEFE7CE0.0701.FD +ReplyLength=13 +Validate=FEFE7CE00701FD.FEFEE07CFBFD + +[pmVfoEqual] +Command=FEFE7CE0.07A0.FD +ReplyLength=13 +Validate=FEFE7CE007A0FD.FEFEE07CFBFD + +[pmVfoSwap] +Command=FEFE7CE0.07B0.FD +ReplyLength=13 +Validate=FEFE7CE007B0FD.FEFEE07CFBFD + +[pmVfoAA] +Command=FEFE7CE0.0700.FD.FEFE7CE0.0F00.FD +ReplyLength=20 +Validate=FEFE7CE00700FD.FEFE7CE00F00FD.FEFEE07CFBFD + +[pmVfoAB] +Command=FEFE7CE0.0700.FD.FEFE7CE0.0F01.FD +ReplyLength=20 +Validate=FEFE7CE00700FD.FEFE7CE00F01FD.FEFEE07CFBFD + +[pmVfoBA] +Command=FEFE7CE0.0701.FD.FEFE7CE0.0F01.FD +ReplyLength=20 +Validate=FEFE7CE00701FD.FEFE7CE00F01FD.FEFEE07CFBFD + +[pmVfoBB] +Command=FEFE7CE0.0701.FD.FEFE7CE0.0F00.FD +ReplyLength=20 +Validate=FEFE7CE00701FD.FEFE7CE00F00FD.FEFEE07CFBFD + +[pmRitOn] +;not supported + +[pmRitOff] +;not supported + +[pmXitOn] +;Not supported + +[pmXitOff] +;Not supported + +[pmRx] +Command=FEFE7CE0.1C00.00.FD +ReplyLength=14 +Validate=FEFE7CE01C0000FD.FEFEE07CFBFD + +[pmTx] +Command=FEFE7CE0.1C00.01.FD +ReplyLength=14 +Validate=FEFE7CE01C0001FD.FEFEE07CFBFD + + + + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +; CW-R +Command=FEFE7CE0.06.07.FD +ReplyLength=13 +Validate=FEFE7CE00607FD.FEFEE07CFBFD + +[pmCW_L] +; CW Normal +Command=FEFE7CE0.06.03.FD +ReplyLength=13 +Validate=FEFE7CE00603FD.FEFEE07CFBFD + +[pmSSB_U] +Command=FEFE7CE0.06.01.FD +ReplyLength=13 +Validate=FEFE7CE00601FD.FEFEE07CFBFD + +[pmSSB_L] +Command=FEFE7CE0.06.00.FD +ReplyLength=13 +Validate=FEFE7CE00600FD.FEFEE07CFBFD + +[pmDIG_U] +Command=FEFE7CE0.06.08.FD +ReplyLength=13 +Validate=FEFE7CE00608FD.FEFEE07CFBFD + +[pmDIG_L] +Command=FEFE7CE0.06.04.FD +ReplyLength=13 +Validate=FEFE7CE00604FD.FEFEE07CFBFD + +[pmAM] +Command=FEFE7CE0.06.02.FD +ReplyLength=13 +Validate=FEFE7CE00602FD.FEFEE07CFBFD + +[pmFM] +Command=FEFE7CE0.06.05.FD +ReplyLength=13 +Validate=FEFE7CE00605FD.FEFEE07CFBFD + + + + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +[STATUS1] +Command=FEFE7CE0.03.FD +ReplyLength=17 +Validate=FEFE7CE003FD.FEFEE07C.03.0000000000.FD +Value1=11|5|vfBcdLU|1|0|pmFreq + +[STATUS2] +Command=FEFE7CE0.04.FD +ReplyLength=14 +Validate=FEFE7CE004FD.FEFEE07C.04.0000.FD +Flag1=000000000000.0000000000.FF.0000|000000000000.0000000000.07.0000|pmCW_U +Flag2=000000000000.0000000000.FF.0000|000000000000.0000000000.03.0000|pmCW_L +Flag3=000000000000.0000000000.FF.0000|000000000000.0000000000.01.0000|pmSSB_U +Flag4=000000000000.0000000000.FF.0000|000000000000.0000000000.00.0000|pmSSB_L +Flag5=000000000000.0000000000.FF.0000|000000000000.0000000000.08.0000|pmDIG_U +Flag6=000000000000.0000000000.FF.0000|000000000000.0000000000.04.0000|pmDIG_L +Flag7=000000000000.0000000000.FF.0000|000000000000.0000000000.02.0000|pmAM +Flag8=000000000000.0000000000.FF.0000|000000000000.0000000000.05.0000|pmFM + +[STATUS3] +Command=FEFE7CE0.1409.FD +ReplyLength=16 +Validate=FEFE7CE01409FD.FEFEE07C.1409.0000.FD +; 0=300 Hz, 255=900 Hz +Value1=13|2|vfBcdBU|2.362205|300|pmPitch + +[STATUS4] +Command=FEFE7CE0.1C00.FD +ReplyLength=15 +Validate=FEFE7CE01C00FD.FEFEE07C.1C00.00.FD +Flag1=00000000000000.00000000.0000.01.00|pmTx +Flag2=00000000000000.00000000.0000.0F.00|00000000000000.00000000.0000.00.00|pmRx + +[STATUS5] +Command=FEFE7CE0.0F.FD +ReplyLength=13 +Validate=FEFE7CE00FFD.FEFEE07C.0F.00.FD +Flag1=000000000000.00000000.00.01.00|pmSplitOn +Flag2=000000000000.00000000.00.FF.00|000000000000.00000000.00.00.00|pmSplitOff diff --git a/CATCheck/Rigs/IC-9700.ini b/CATCheck/Rigs/IC-9700.ini new file mode 100644 index 0000000..718afb7 --- /dev/null +++ b/CATCheck/Rigs/IC-9700.ini @@ -0,0 +1,277 @@ +;------------------------------------------------------------------------------- +; Icom IC-9700 +; +; IC-7300 File created by Bob Wilson, N6TV, n6tv@arrl.net +; modified by HB9RYZ [info@hb9ryz.ch] in order to use this ini-File with the new IC-9700. +; the default CI-V address has been chnanged from 94h to A2 +; +; Tested by: Wolfgang Sidler, HB9RYZ +; +; Same as original IC-7300, but only returns pmVfoA and pmVfoB, not pmFreq +; for use with CW Skimmer and Contest Loggers. +; +; Updated by HB9RYZ 2019-05-10: +; - Set USB CI-V Echo Back ON to ensure that rig returns the values coded below +;------------------------------------------------------------------------------- + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT1] +;Turn USB CI-V Echo Back ON +Command=FEFEA2E0.1A050075.01.FD +ReplyLength=16 +Validate=FEFEA2E01A05007501FD.FEFEE0A2FBFD + +[INIT2] +;Turn CI-V transceive OFF +Command=FEFEA2E0.1A050071.00.FD +ReplyLength=16 +Validate=FEFEA2E01A05007100FD.FEFEE0A2FBFD + +[INIT3] +;set CW normal to lower sideband +Command=FEFEA2E0.1A050053.00.FD +ReplyLength=16 +Validate=FEFEA2E01A05005300FD.FEFEE0A2FBFD + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreqA] +Command=FEFEA2E0.25.00.0000000000.FD +Value=6|5|vfBcdLU|1|0 +ReplyLength=18 +Validate=FEFEA2E025000000000000FD.FEFEE0A2FBFD + +[pmFreqB] +Command=FEFEA2E0.25.01.0000000000.FD +Value=6|5|vfBcdLU|1|0 +ReplyLength=18 +Validate=FEFEA2E025010000000000FD.FEFEE0A2FBFD + +[pmFreq] +; not supported + +[pmRitOffset] +;not supported + +[pmRit0] +Command=FEFEA2E0.21.00000000.FD +ReplyLength=16 +Validate=FEFEA2E02100000000FD.FEFEE0A2FBFD + +[pmPitch] +;The 0.425|-127.5 params. should map 300Hz->0, 900Hz->255 +Command=FEFEA2E0.14.09.0000.FD +Value=6|2|vfBcdBU|0.425|-127.5 +ReplyLength=15 +Validate=FEFEA2E014090000FD.FEFEE0A2FBFD + + + + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +Command=FEFEA2E0.0F01.FD +ReplyLength=13 +Validate=FEFEA2E00F01FD.FEFEE0A2FBFD + +[pmSplitOff] +Command=FEFEA2E0.0F00.FD +ReplyLength=13 +Validate=FEFEA2E00F00FD.FEFEE0A2FBFD + +[pmVfoA] +Command=FEFEA2E0.0700.FD +ReplyLength=13 +Validate=FEFEA2E00700FD.FEFEE0A2FBFD + +[pmVfoB] +Command=FEFEA2E0.0701.FD +ReplyLength=13 +Validate=FEFEA2E00701FD.FEFEE0A2FBFD + +[pmVfoEqual] +Command=FEFEA2E0.07A0.FD +ReplyLength=13 +Validate=FEFEA2E007A0FD.FEFEE0A2FBFD + +[pmVfoSwap] +Command=FEFEA2E0.07B0.FD +ReplyLength=13 +Validate=FEFEA2E007B0FD.FEFEE0A2FBFD + +[pmVfoAA] +Command=FEFEA2E0.0700.FD.FEFEA2E0.0F00.FD +ReplyLength=20 +Validate=FEFEA2E00700FD.FEFEA2E00F00FD.FEFEE0A2FBFD + +[pmVfoAB] +Command=FEFEA2E0.0700.FD.FEFEA2E0.0F01.FD +ReplyLength=20 +Validate=FEFEA2E00700FD.FEFEA2E00F01FD.FEFEE0A2FBFD + +[pmVfoBA] +Command=FEFEA2E0.0701.FD.FEFEA2E0.0F01.FD +ReplyLength=20 +Validate=FEFEA2E00701FD.FEFEA2E00F01FD.FEFEE0A2FBFD + +[pmVfoBB] +Command=FEFEA2E0.0701.FD.FEFEA2E0.0F00.FD +ReplyLength=20 +Validate=FEFEA2E00701FD.FEFEA2E00F00FD.FEFEE0A2FBFD + +[pmRitOn] +Command=FEFEA2E0.21.0101.FD +ReplyLength=14 +Validate=FEFEA2E0210101FD.FEFEE0A2FBFD + +[pmRitOff] +Command=FEFEA2E0.21.0100.FD +ReplyLength=14 +Validate=FEFEA2E0210100FD.FEFEE0A2FBFD + +[pmXitOn] +Command=FEFEA2E0.21.0201.FD +ReplyLength=14 +Validate=FEFEA2E0210201FD.FEFEE0A2FBFD + +[pmXitOff] +Command=FEFEA2E0.21.0200.FD +ReplyLength=14 +Validate=FEFEA2E0210200FD.FEFEE0A2FBFD + +[pmRx] +Command=FEFEA2E0.1C00.00.FD +ReplyLength=14 +Validate=FEFEA2E01C0000FD.FEFEE0A2FBFD + +[pmTx] +Command=FEFEA2E0.1C00.01.FD +ReplyLength=14 +Validate=FEFEA2E01C0001FD.FEFEE0A2FBFD + + + + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +; CW-R +Command=FEFEA2E0.06.07.FD +ReplyLength=13 +Validate=FEFEA2E00607FD.FEFEE0A2FBFD + +[pmCW_L] +; CW Normal +Command=FEFEA2E0.06.03.FD +ReplyLength=13 +Validate=FEFEA2E00603FD.FEFEE0A2FBFD + +[pmSSB_U] +Command=FEFEA2E0.06.01.FD +ReplyLength=13 +Validate=FEFEA2E00601FD.FEFEE0A2FBFD + +[pmSSB_L] +Command=FEFEA2E0.06.00.FD +ReplyLength=13 +Validate=FEFEA2E00600FD.FEFEE0A2FBFD + +[pmDIG_U] +Command=FEFEA2E0.06.08.FD +ReplyLength=13 +Validate=FEFEA2E00608FD.FEFEE0A2FBFD + +[pmDIG_L] +Command=FEFEA2E0.06.04.FD +ReplyLength=13 +Validate=FEFEA2E00604FD.FEFEE0A2FBFD. + +[pmAM] +Command=FEFEA2E0.06.02.FD +ReplyLength=13 +Validate=FEFEA2E00602FD.FEFEE0A2FBFD + +[pmFM] +Command=FEFEA2E0.06.05.FD +ReplyLength=13 +Validate=FEFEA2E00605FD.FEFEE0A2FBFD + + + + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +[STATUS1] +Command=FEFEA2E0.2500.FD +ReplyLength=19 +Validate=FEFEA2E02500FD.FEFEE0A2.2500.0000000000.FD +Value1=13|5|vfBcdLU|1|0|pmFreqA + +[STATUS2] +Command=FEFEA2E0.2501.FD +ReplyLength=19 +Validate=FEFEA2E02501FD.FEFEE0A2.2501.0000000000.FD +Value1=13|5|vfBcdLU|1|0|pmFreqB + +[STATUS3] +Command=FEFEA2E0.04.FD +ReplyLength=14 +Validate=FEFEA2E004FD.FEFEE0A2.04.0000.FD +Flag1=000000000000.0000000000.FF.0000|000000000000.0000000000.03.0000|pmCW_L +Flag2=000000000000.0000000000.FF.0000|000000000000.0000000000.07.0000|pmCW_U +Flag3=000000000000.0000000000.FF.0000|000000000000.0000000000.01.0000|pmSSB_U +Flag4=000000000000.0000000000.FF.0000|000000000000.0000000000.00.0000|pmSSB_L +Flag5=000000000000.0000000000.FF.0000|000000000000.0000000000.08.0000|pmDIG_U +Flag6=000000000000.0000000000.FF.0000|000000000000.0000000000.04.0000|pmDIG_L +Flag7=000000000000.0000000000.FF.0000|000000000000.0000000000.02.0000|pmAM +Flag8=000000000000.0000000000.FF.0000|000000000000.0000000000.05.0000|pmFM + +[STATUS4] +Command=FEFEA2E0.1409.FD +ReplyLength=16 +Validate=FEFEA2E01409FD.FEFEE0A2.1409.0000.FD +; 0=300 Hz, 255=900 Hz +Value1=13|2|vfBcdBU|2.362205|300|pmPitch + +[STATUS5] +Command=FEFEA2E0.1C00.FD +ReplyLength=15 +Validate=FEFEA2E01C00FD.FEFEE0A2.1C00.00.FD +Flag1=00000000000000.00000000.0000.01.00|pmTx +Flag2=00000000000000.00000000.0000.0F.00|00000000000000.00000000.0000.00.00|pmRx + +[STATUS6] +Command=FEFEA2E0.0F.FD +ReplyLength=13 +Validate=FEFEA2E00FFD.FEFEE0A2.0F.00.FD +Flag1=000000000000.00000000.00.01.00|pmSplitOn +Flag2=000000000000.00000000.00.0F.00|000000000000.00000000.00.00.00|pmSplitOff + +[STATUS7] +Command=FEFEA2E0.0F.FD +ReplyLength=13 +Validate=FEFEA2E00FFD.FEFEE0A2.0F.00.FD +Flag1=000000000000.00000000.00.01.00|pmVfoAB +Flag2=000000000000.00000000.00.0F.00|000000000000.00000000.00.00.00|pmVfoAA + +[STATUS8] +Command=FEFEA2E0.2101.FD +ReplyLength=15 +Validate=FEFEA2E02101FD.FEFEE0A2.2101.00.FD +Flag1=00000000000000.00000000.0000.01.00|pmRitOn +Flag2=00000000000000.00000000.0000.0F.00|00000000000000.00000000.0000.00.00|pmRitOff + +[STATUS9] +Command=FEFEA2E0.2102.FD +ReplyLength=15 +Validate=FEFEA2E02102FD.FEFEE0A2.2102.00.FD +Flag1=00000000000000.00000000.0000.01.00|pmXitOn +Flag2=00000000000000.00000000.0000.0F.00|00000000000000.00000000.0000.00.00|pmXitOff diff --git a/CATCheck/Rigs/IC-M710.ini b/CATCheck/Rigs/IC-M710.ini new file mode 100644 index 0000000..27441de --- /dev/null +++ b/CATCheck/Rigs/IC-M710.ini @@ -0,0 +1,177 @@ +;------------------------------------------------------------------------------- +; Icom IC-M710 command set +; +; File created by Alex Ushakov, RA6UAZ +; +; Tested by: _________ +;------------------------------------------------------------------------------- + + + + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT] +;Command=($PICOA,90,01,REMOTE,ON) +;Command=24.50.49.43.4F.41.2C.39.30.2C.30.31.2C.52.45.4D.4F.54.45.2C.4F.4E.0D.0A +;ReplyEnd=0A +;Validate=24.50.49.43.4F.41.2C.39.30.2C.30.31.2C.52.45.4D.4F.54.45.2C.4F.4E.2A.35.39.0D.0A + + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreqA] +;$PICOA,90,01,RXF,14.103600 +;Command=24.50.49.43.4F.41.2C.39.30.2C.30.31.2C.52.58.46.2C.31.34.2E.31.30.33.36.30.30.0D.0A +;ReplyEnd=0A +;Value=17|9|vfDPIcom|1|0 + +[pmFreqB] +;$PICOA,90,01,TXF,14.103600 +;ReplyEnd=0A +;Command=24.50.49.43.4F.41.2C.39.30.2C.30.31.2C.54.58.46.2C.31.34.2E.31.30.33.36.30.30.0D.0A +;Value=17|9|vfDPIcom|1|0 + +[pmFreq] +;$PICOA,90,01,RXF,14.103600 +Command=24.50.49.43.4F.41.2C.39.30.2C.30.31.2C.52.58.46.2C.31.34.2E.31.30.33.36.30.30.0D.0A +ReplyEnd=0A +Value=17|9|vfDPIcom|1|0 + +[pmRitOffset] +;not supported + +[pmRit0] +;not supported + +[pmPitch] +;not supported + + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +;not supported + +[pmSplitOff] +;not supported + +[pmVfoA] +;not supported + +[pmVfoB] +;not supported + +[pmVfoEqual] +;not supported + +[pmVfoSwap] +;not supported + +[pmVfoAA] +;not supported + +[pmVfoAB] +;not supported + +[pmVfoBA] +;not supported + +[pmVfoBB] +;not supported + +[pmRitOn] +;not supported + +[pmRitOff] +;not supported + +[pmXitOn] +;not supported + +[pmXitOff] +;not supported + +[pmRx] +;$PICOA,90,01,TRX,RX +Command=24.50.49.43.4F.41.2C.39.30.2C.30.31.2C.54.52.58.2C.52.58.0D.0A +ReplyEnd=0A + +[pmTx] +;$PICOA,90,01,TRX,TX +Command=24.50.49.43.4F.41.2C.39.30.2C.30.31.2C.54.52.58.2C.54.58.0D.0A +ReplyEnd=0A + + + + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +;$PICOA,90,01,MODE,A1A +Command=24.50.49.43.4F.41.2C.39.30.2C.30.31.2C.4D.4F.44.45.2C.41.31.41.0D.0A +ReplyEnd=0A + +[pmCW_L] +;not supported + +[pmSSB_U] +;$PICOA,90,01,MODE,J3E +Command=24.50.49.43.4F.41.2C.39.30.2C.30.31.2C.4D.4F.44.45.2C.4A.33.45.0D.0A +ReplyEnd=0A + +[pmSSB_L] +;$PICOA,90,01,MODE,LSB +Command=24.50.49.43.4F.41.2C.39.30.2C.30.31.2C.4D.4F.44.45.2C.4C.53.42.0D.0A +ReplyEnd=0A + +[pmDIG_U] +;not supported + +[pmDIG_L] +;not supported + +[pmAM] +;$PICOA,90,01,MODE,H3E +Command=24.50.49.43.4F.41.2C.39.30.2C.30.31.2C.4D.4F.44.45.2C.48.33.45.0D.0A +ReplyEnd=0A + +[pmFM] +;not supported + + + + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +[STATUS1] +;$PICOA,90,01,RXF +;$PICOA,01,90,RXF,14.103600*3F +Command=24.50.49.43.4F.41.2C.39.30.2C.30.31.2C.52.58.46.0D.0A +ReplyEnd=0A +Value1=17|9|vfDPIcom|1|0|pmFreq +Value2=17|9|vfDPIcom|1|0|pmFreqA +Value3=17|9|vfDPIcom|1|0|pmFreqB + +[STATUS2] +;$PICOA,90,01,MODE +Command=24.50.49.43.4F.41.2C.39.30.2C.30.31.2C.4D.4F.44.45.0D.0A +ReplyEnd=0A +Flag1=00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.FF.FF.FF.00.00.00.0D.0A|00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.41.31.41.00.00.00.0D.0A|pmCW_U +Flag2=00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.FF.FF.FF.00.00.00.0D.0A|00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.4A.33.45.00.00.00.0D.0A|pmSSB_U +Flag3=00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.FF.FF.FF.00.00.00.0D.0A|00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.4C.53.42.00.00.00.0D.0A|pmSSB_L +Flag4=00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.FF.FF.FF.00.00.00.0D.0A|00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.48.33.45.00.00.00.0D.0A|pmAM + +[STATUS3] +;$PICOA,90,01,TRX +Command=24.50.49.43.4F.41.2C.39.30.2C.30.31.2C.54.52.58.0D.0A +ReplyEnd=0A +Flag1=00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.FF.FF.00.00.00.0D.0A|00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.52.58.00.00.00.0D.0A|pmRX +Flag2=00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.FF.FF.00.00.00.0D.0A|00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.54.58.00.00.00.0D.0A|pmTX + diff --git a/CATCheck/Rigs/IC-R75-chromos.ini b/CATCheck/Rigs/IC-R75-chromos.ini new file mode 100644 index 0000000..a92c764 --- /dev/null +++ b/CATCheck/Rigs/IC-R75-chromos.ini @@ -0,0 +1,201 @@ +;------------------------------------------------------------------------------------- +; ICOM IC-R75 command set, version 9 May 2010 +; +; -File created by Alex Shovkoplyas, VE3NEA ve3nea@dxatlas.com, for an IC-756 Pro II +; -First modification by Brendan, EI6IZ, ei6iz@oceanfree.net, for an IC-756 Pro II +; -Second modification by John, K6JJ: Conversion of the set for use with an IC-756 Pro +; -Third modification by Ron, W5RKN: Conversion of the set for use with an IC-756 +; -Fourth modification by Ron, W5RKN: Conversion of the set for use with an IC-R8500 +; -Fifth modification by John, W0JFR: Conversion of the set for use with an IC-R75 +; -Sixth modification by Mirek, OK1-36292, chromos@chromos.cz: add CW-R, RTTY and RTTY-R modes, in LSB and USB wide filters to normal +;------------------------------------------------------------------------------------- + + +;------------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------------- + +[INIT] +;stop scan +Command=FEFE5AE0.0E.00.FD +ReplyLength=13 +Validate=FEFE5AE00E00FD.FEFEE05AFBFD + +;------------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------------- + +[pmFreqA] +;Not supported + +[pmFreqB] +;Not supported + +[pmFreq] +;Set operating frequency +Command=FEFE5AE0.05.0000000000.FD +Value=5|5|vfBcdLU|1|0 +ReplyLength=17 +Validate=FEFE5AE0050000000000FD.FEFEE05AFBFD + +[pmRitOffset] +;Not supported + +[pmRit0] +;Not supported + +[pmPitch] +;Set CW pitch +;Not supported + +;------------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------------- + +[pmSplitOn] +;Enable split operation, using VFO B (transmit frequency) and VFO A (receive frequency) +;Not supported + +[pmSplitOff] +;Disable split operation, transmit and receive frequencies set to VFO A frequency +;Not supported on R75, so this is a dummy command expected to fail +;Command=FEFE5AE0.0F00.FD +;ReplyLength=13 +;Validate=FEFE5AE00F00FD.FEFEE05AFAFD + +[pmVfoA] +;Set receiver to VFO A frequency +;Not supported + +[pmVfoB] +;Set receiver to VFO B frequency +;Not supported + +[pmVfoEqual] +;Set VFO B parameters (split transmit VFO) equal to VFO A parameters (receive VFO) +;Not supported + +[pmVfoSwap] +;Swap VFO B frequency (split transmit VFO) with VFO A frequency (receive VFO) +;Not supported + +[pmVfoAA] +;Not supported + +[pmVfoAB] +;Not supported + +[pmVfoBA] +;Not supported + +[pmVfoBB] +;Not supported + +[pmRitOn] +;Not supported + +[pmRitOff] +;Not supported + +[pmXitOn] +;Not supported + +[pmXitOff] +;Not supported + +[pmRx] +;Enable the receive mode +;Not supported + +[pmTx] +;Enable the transmit mode +;Not supported + +;------------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------------- + +[pmCW_U] +;Set the CW mode +Command=FEFE5AE0.06.0301.FD +ReplyLength=14 +Validate=FEFE5AE0060301FD.FEFEE05AFBFD + +[pmCW_L] +;Set the CW-R mode +Command=FEFE5AE0.06.0701.FD +ReplyLength=14 +Validate=FEFE5AE0060701FD.FEFEE05AFBFD + +[pmSSB_U] +;Set the USB mode +Command=FEFE5AE0.06.0102.FD +ReplyLength=14 +Validate=FEFE5AE0060102FD.FEFEE05AFBFD + +[pmSSB_L] +;Set the LSB mode +Command=FEFE5AE0.06.0002.FD +ReplyLength=14 +Validate=FEFE5AE0060002FD.FEFEE05AFBFD + +[pmDIG_U] +;Set the Digital RTTY mode (microphone muted) +Command=FEFE5AE0.06.0402.FD +ReplyLength=14 +Validate=FEFE5AE0060402FD.FEFEE05AFBFD + +[pmDIG_L] +;Set the Digital RTTY-R mode (microphone muted) +Command=FEFE5AE0.06.0802.FD +ReplyLength=14 +Validate=FEFE5AE0060802FD.FEFEE05AFBFD + +[pmAM] +;Set the AM mode +Command=FEFE5AE0.06.0202.FD +ReplyLength=14 +Validate=FEFE5AE0060202FD.FEFEE05AFBFD + +[pmFM] +;Set the FM mode +Command=FEFE5AE0.06.0502.FD +ReplyLength=14 +Validate=FEFE5AE0060502FD.FEFEE05AFBFD + +;------------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------------- + +[STATUS1] +;Read the operating frequency +Command=FEFE5AE0.03.FD +ReplyLength=17 +Validate=FEFE5AE003FD.FEFEE05A.03.0000000000.FD +Value1=11|5|vfBcdLU|1|0|pmFreq + +[STATUS2] +;Read the operating mode +Command=FEFE5AE0.04.FD +ReplyLength=14 +Validate=FEFE5AE004FD.FEFEE05A.05.0000.FD +Flag1=000000000000.0000000000.0F.0000|000000000000.0000000000.00.0000|pmSSB_L +Flag2=000000000000.0000000000.01.0000|pmSSB_U +Flag3=000000000000.0000000000.02.0000|pmAM +Flag4=000000000000.0000000000.03.0000|pmCW_U +Flag5=000000000000.0000000000.04.0000|pmDIG_U +Flag6=000000000000.0000000000.05.0000|pmFM +Flag7=000000000000.0000000000.07.0000|pmCW_L +Flag8=000000000000.0000000000.08.0000|pmDIG_L + +[STATUS3] +;Read the CW pitch +;Not supported + +[STATUS4] +;Read the transmit or receive mode +;Not supported + + + + diff --git a/CATCheck/Rigs/IC-R75.ini b/CATCheck/Rigs/IC-R75.ini new file mode 100644 index 0000000..84aef74 --- /dev/null +++ b/CATCheck/Rigs/IC-R75.ini @@ -0,0 +1,194 @@ +;------------------------------------------------------------------------------------- +; ICOM IC-R75 command set, version 8 Jul 2006 +; +; -File created by Alex Shovkoplyas, VE3NEA ve3nea@dxatlas.com, for an IC-756 Pro II +; -First modification by Brendan, EI6IZ, ei6iz@oceanfree.net, for an IC-756 Pro II +; -Second modification by John, K6JJ: Conversion of the set for use with an IC-756 Pro +; -Third modification by Ron, W5RKN: Conversion of the set for use with an IC-756 +; -Fourth modification by Ron, W5RKN: Conversion of the set for use with an IC-R8500 +; -Fifth modification by John, W0JFR: Conversion of the set for use with an IC-R75 +;------------------------------------------------------------------------------------- + + +;------------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------------- + +[INIT] +;stop scan +Command=FEFE5AE0.0E.00.FD +ReplyLength=13 +Validate=FEFE5AE00E00FD.FEFEE05AFBFD + +;------------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------------- + +[pmFreqA] +;Not supported + +[pmFreqB] +;Not supported + +[pmFreq] +;Set operating frequency +Command=FEFE5AE0.05.0000000000.FD +Value=5|5|vfBcdLU|1|0 +ReplyLength=17 +Validate=FEFE5AE0050000000000FD.FEFEE05AFBFD + +[pmRitOffset] +;Not supported + +[pmRit0] +;Not supported + +[pmPitch] +;Set CW pitch +;Not supported + +;------------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------------- + +[pmSplitOn] +;Enable split operation, using VFO B (transmit frequency) and VFO A (receive frequency) +;Not supported + +[pmSplitOff] +;Disable split operation, transmit and receive frequencies set to VFO A frequency +;Not supported on R75, so this is a dummy command expected to fail +Command=FEFE5AE0.0F00.FD +ReplyLength=13 +Validate=FEFE5AE00F00FD.FEFEE05AFAFD + +[pmVfoA] +;Set receiver to VFO A frequency +;Not supported + +[pmVfoB] +;Set receiver to VFO B frequency +;Not supported + +[pmVfoEqual] +;Set VFO B parameters (split transmit VFO) equal to VFO A parameters (receive VFO) +;Not supported + +[pmVfoSwap] +;Swap VFO B frequency (split transmit VFO) with VFO A frequency (receive VFO) +;Not supported + +[pmVfoAA] +;Not supported + +[pmVfoAB] +;Not supported + +[pmVfoBA] +;Not supported + +[pmVfoBB] +;Not supported + +[pmRitOn] +;Not supported + +[pmRitOff] +;Not supported + +[pmXitOn] +;Not supported + +[pmXitOff] +;Not supported + +[pmRx] +;Enable the receive mode +;Not supported + +[pmTx] +;Enable the transmit mode +;Not supported + +;------------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------------- + +[pmCW_U] +;Set the CW mode +Command=FEFE5AE0.06.0301.FD +ReplyLength=14 +Validate=FEFE5AE0060301FD.FEFEE05AFBFD + +[pmCW_L] +;Set the CW-R mode +;Not supported + +[pmSSB_U] +;Set the USB mode +Command=FEFE5AE0.06.0101.FD +ReplyLength=14 +Validate=FEFE5AE0060101FD.FEFEE05AFBFD + +[pmSSB_L] +;Set the LSB mode +Command=FEFE5AE0.06.0001.FD +ReplyLength=14 +Validate=FEFE5AE0060001FD.FEFEE05AFBFD + +[pmDIG_U] +;Set the Digital RTTY mode (microphone muted) +;Not supported + +[pmDIG_L] +;Set the Digital RTTY-R mode (microphone muted) +;Not supported + +[pmAM] +;Set the AM mode +Command=FEFE5AE0.06.0202.FD +ReplyLength=14 +Validate=FEFE5AE0060202FD.FEFEE05AFBFD + +[pmFM] +;Set the FM mode +Command=FEFE5AE0.06.0502.FD +ReplyLength=14 +Validate=FEFE5AE0060502FD.FEFEE05AFBFD + +;------------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------------- + +[STATUS1] +;Read the operating frequency +Command=FEFE5AE0.03.FD +ReplyLength=17 +Validate=FEFE5AE003FD.FEFEE05A.03.0000000000.FD +Value1=11|5|vfBcdLU|1|0|pmFreq + +[STATUS2] +;Read the operating mode +Command=FEFE5AE0.04.FD +ReplyLength=14 +Validate=FEFE5AE004FD.FEFEE05A.05.0000.FD +Flag1=000000000000.0000000000.0F.0000|000000000000.0000000000.00.0000|pmSSB_L +Flag2=000000000000.0000000000.01.0000|pmSSB_U +Flag3=000000000000.0000000000.02.0000|pmAM +Flag4=000000000000.0000000000.03.0000|pmCW_U +;Flag5=000000000000.0000000000.04.0000|pmDIG_U +Flag6=000000000000.0000000000.05.0000|pmFM +;Flag7=000000000000.0000000000.07.0000|pmCW_L +;Flag8=000000000000.0000000000.08.0000|pmDIG_L + +[STATUS3] +;Read the CW pitch +;Not supported + +[STATUS4] +;Read the transmit or receive mode +;Not supported + + + + diff --git a/CATCheck/Rigs/IC-R8500.ini b/CATCheck/Rigs/IC-R8500.ini new file mode 100644 index 0000000..60115dd --- /dev/null +++ b/CATCheck/Rigs/IC-R8500.ini @@ -0,0 +1,193 @@ +;------------------------------------------------------------------------------------- +; ICOM IC-R8500 command set, version 19 JUN 06 +; +; -File created by Alex Shovkoplyas, VE3NEA ve3nea@dxatlas.com, for an IC-756 Pro II +; -First modification by Brendan, EI6IZ, ei6iz@oceanfree.net, for an IC-756 Pro II +; -Second modification by John, K6JJ: Conversion of the set for use with an IC-756 Pro +; -Third modification by Ron, W5RKN: Conversion of the set for use with an IC-756 +; -Fourth modification by Ron, W5RKN: Conversion of the set for use with an IC-R8500 +;------------------------------------------------------------------------------------- + + +;------------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------------- + +[INIT] +;stop scan +Command=FEFE4AE0.0E.00.FD +ReplyLength=13 +Validate=FEFE4AE00E00FD.FEFEE04AFBFD + +;------------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------------- + +[pmFreqA] +;Not supported + +[pmFreqB] +;Not supported + +[pmFreq] +;Set operating frequency +Command=FEFE4AE0.05.0000000000.FD +Value=5|5|vfBcdLU|1|0 +ReplyLength=17 +Validate=FEFE4AE0050000000000FD.FEFEE04AFBFD + +[pmRitOffset] +;Not supported + +[pmRit0] +;Not supported + +[pmPitch] +;Set CW pitch +;Not supported + +;------------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------------- + +[pmSplitOn] +;Enable split operation, using VFO B (transmit frequency) and VFO A (receive frequency) +;Not supported + +[pmSplitOff] +;Disable split operation, transmit and receive frequencies set to VFO A frequency +;Not supported on R8500, so this is a dummy command expected to fail +Command=FEFE4AE0.0F00.FD +ReplyLength=13 +Validate=FEFE4AE00F00FD.FEFEE04AFAFD + +[pmVfoA] +;Set receiver to VFO A frequency +;Not supported + +[pmVfoB] +;Set receiver to VFO B frequency +;Not supported + +[pmVfoEqual] +;Set VFO B parameters (split transmit VFO) equal to VFO A parameters (receive VFO) +;Not supported + +[pmVfoSwap] +;Swap VFO B frequency (split transmit VFO) with VFO A frequency (receive VFO) +;Not supported + +[pmVfoAA] +;Not supported + +[pmVfoAB] +;Not supported + +[pmVfoBA] +;Not supported + +[pmVfoBB] +;Not supported + +[pmRitOn] +;Not supported + +[pmRitOff] +;Not supported + +[pmXitOn] +;Not supported + +[pmXitOff] +;Not supported + +[pmRx] +;Enable the receive mode +;Not supported + +[pmTx] +;Enable the transmit mode +;Not supported + +;------------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------------- + +[pmCW_U] +;Set the CW mode +Command=FEFE4AE0.06.0301.FD +ReplyLength=14 +Validate=FEFE4AE0060301FD.FEFEE04AFBFD + +[pmCW_L] +;Set the CW-R mode +;Not supported + +[pmSSB_U] +;Set the USB mode +Command=FEFE4AE0.06.0101.FD +ReplyLength=14 +Validate=FEFE4AE0060101FD.FEFEE04AFBFD + +[pmSSB_L] +;Set the LSB mode +Command=FEFE4AE0.06.0001.FD +ReplyLength=14 +Validate=FEFE4AE0060001FD.FEFEE04AFBFD + +[pmDIG_U] +;Set the Digital RTTY mode (microphone muted) +;Not supported + +[pmDIG_L] +;Set the Digital RTTY-R mode (microphone muted) +;Not supported + +[pmAM] +;Set the AM mode +Command=FEFE4AE0.06.0202.FD +ReplyLength=14 +Validate=FEFE4AE0060202FD.FEFEE04AFBFD + +[pmFM] +;Set the FM mode +Command=FEFE4AE0.06.0502.FD +ReplyLength=14 +Validate=FEFE4AE0060502FD.FEFEE04AFBFD + +;------------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------------- + +[STATUS1] +;Read the operating frequency +Command=FEFE4AE0.03.FD +ReplyLength=17 +Validate=FEFE4AE003FD.FEFEE04A.03.0000000000.FD +Value1=11|5|vfBcdLU|1|0|pmFreq + +[STATUS2] +;Read the operating mode +Command=FEFE4AE0.04.FD +ReplyLength=14 +Validate=FEFE4AE004FD.FEFEE04A.04.0000.FD +Flag1=000000000000.0000000000.0F.0000|000000000000.0000000000.00.0000|pmSSB_L +Flag2=000000000000.0000000000.01.0000|pmSSB_U +Flag3=000000000000.0000000000.02.0000|pmAM +Flag4=000000000000.0000000000.03.0000|pmCW_U +;Flag5=000000000000.0000000000.04.0000|pmDIG_U +Flag6=000000000000.0000000000.05.0000|pmFM +;Flag7=000000000000.0000000000.07.0000|pmCW_L +;Flag8=000000000000.0000000000.08.0000|pmDIG_L + +[STATUS3] +;Read the CW pitch +;Not supported + +[STATUS4] +;Read the transmit or receive mode +;Not supported + + + + diff --git a/CATCheck/Rigs/IC-R9000.ini b/CATCheck/Rigs/IC-R9000.ini new file mode 100644 index 0000000..219b054 --- /dev/null +++ b/CATCheck/Rigs/IC-R9000.ini @@ -0,0 +1,194 @@ +;------------------------------------------------------------------------------------- +; ICOM IC-R9000 command set, version 17 AUG 08 +; +; -File created by Alex Shovkoplyas, VE3NEA ve3nea@dxatlas.com, for an IC-756 Pro II +; -First modification by Brendan, EI6IZ, ei6iz@oceanfree.net, for an IC-756 Pro II +; -Second modification by John, K6JJ: Conversion of the set for use with an IC-756 Pro +; -Third modification by Ron, W5RKN: Conversion of the set for use with an IC-756 +; -Fourth modification by Ron, W5RKN: Conversion of the set for use with an IC-R8500 +; -Fifth modification by Ernst, DK1VI: Conversion of the set for use with an IC-R9000 +;------------------------------------------------------------------------------------- + + +;------------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------------- + +[INIT] +;stop scan +Command=FEFE2AE0.0E.00.FD +ReplyLength=13 +Validate=FEFE2AE00E00FD.FEFEE04AFBFD + +;------------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------------- + +[pmFreqA] +;Not supported + +[pmFreqB] +;Not supported + +[pmFreq] +;Set operating frequency +Command=FEFE2AE0.00.0000000000.FD +Value=5|5|vfBcdLU|1|0 +ReplyLength=17 +Validate=FEFE2AE0000000000000FD.FEFEE02AFBFD + +[pmRitOffset] +;Not supported + +[pmRit0] +;Not supported + +[pmPitch] +;Set CW pitch +;Not supported + +;------------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------------- + +[pmSplitOn] +;Enable split operation, using VFO B (transmit frequency) and VFO A (receive frequency) +;Not supported + +[pmSplitOff] +;Disable split operation, transmit and receive frequencies set to VFO A frequency +;Not supported + +[pmVfoA] +;Set receiver to VFO A frequency +;Not supported + +[pmVfoB] +;Set receiver to VFO B frequency +;Not supported + +[pmVfoEqual] +;Set VFO B parameters (split transmit VFO) equal to VFO A parameters (receive VFO) +;Not supported + +[pmVfoSwap] +;Swap VFO B frequency (split transmit VFO) with VFO A frequency (receive VFO) +;Not supported + +[pmVfoAA] +;Not supported + +[pmVfoAB] +;Not supported + +[pmVfoBA] +;Not supported + +[pmVfoBB] +;Not supported + +[pmRitOn] +;Not supported + +[pmRitOff] +;Not supported + +[pmXitOn] +;Not supported + +[pmXitOff] +;Not supported + +[pmRx] +;Enable the receive mode +;Not supported + +[pmTx] +;Enable the transmit mode +;Not supported + +;------------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------------- + +[pmCW_U] +;Set the CW mode wide +Command=FEFE2AE0.06.0301.FD +ReplyLength=14 +Validate=FEFE2AE0060301FD.FEFEE02AFBFD + +[pmCW_L] +;Set the CW-R mode +;Not supported + +[pmSSB_U] +;Set the USB mode +Command=FEFE2AE0.06.0101.FD +ReplyLength=14 +Validate=FEFE2AE0060101FD.FEFEE02AFBFD + +[pmSSB_L] +;Set the LSB mode +Command=FEFE2AE0.06.0001.FD +ReplyLength=14 +Validate=FEFE2AE0060001FD.FEFEE02AFBFD + +[pmDIG_U] +;Set the Digital RTTY mode, middle bandwith +Command=FEFE2AE0.06.0402.FD +ReplyLength=14 +Validate=FEFE2AE0060402FD.FEFEE02AFBFD + +[pmDIG_L] +;Set the Digital RTTY-R mode (microphone muted) +;Not supported + +[pmAM] +;Set the AM mode +Command=FEFE2AE0.06.0202.FD +ReplyLength=14 +Validate=FEFE2AE0060202FD.FEFEE02AFBFD + +[pmFM] +;Set the FM mode +Command=FEFE2AE0.06.0502.FD +ReplyLength=14 +Validate=FEFE2AE0060502FD.FEFEE02AFBFD + +;------------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------------- + +[STATUS1] +;Read the operating frequency +Command=FEFE2AE0.03.FD +ReplyLength=17 +Validate=FEFE2AE003FD.FEFEE02A.03.0000000000.FD +Value1=11|5|vfBcdLU|1|0|pmFreq + +[STATUS2] +;Read the operating mode +Command=FEFE2AE0.04.FD +ReplyLength=14 +Validate=FEFE2AE004FD.FEFEE02A.04.0000.FD +Flag1=000000000000.0000000000.FF.0000|000000000000.0000000000.00.0000|pmSSB_L +Flag2=000000000000.0000000000.FF.0000|000000000000.0000000000.01.0000|pmSSB_U +Flag3=000000000000.0000000000.FF.0000|000000000000.0000000000.02.0000|pmAM +Flag4=000000000000.0000000000.FF.0000|000000000000.0000000000.03.0000|pmCW_U +Flag5=000000000000.0000000000.FF.0000|000000000000.0000000000.04.0000|pmDIG_U +Flag6=000000000000.0000000000.FF.0000|000000000000.0000000000.05.0000|pmFM +;Flag7=000000000000.0000000000.07.0000|pmCW_L +;Flag8=000000000000.0000000000.08.0000|pmDIG_L + + +[STATUS3] +;Read the CW pitch +;Not supported + +[STATUS4] +;Read the transmit or receive mode +;Not supported + + + + diff --git a/CATCheck/Rigs/IC-R9500.ini b/CATCheck/Rigs/IC-R9500.ini new file mode 100644 index 0000000..c830da0 --- /dev/null +++ b/CATCheck/Rigs/IC-R9500.ini @@ -0,0 +1,201 @@ +;------------------------------------------------------------------------------------- +; ICOM IC-R9500 command set, version 12 SEP 16 +; +; -File created by Alex Shovkoplyas, VE3NEA ve3nea@dxatlas.com, for an IC-756 Pro II +; -First modification by Brendan, EI6IZ, ei6iz@oceanfree.net, for an IC-756 Pro II +; -Second modification by John, K6JJ: Conversion of the set for use with an IC-756 Pro +; -Third modification by Ron, W5RKN: Conversion of the set for use with an IC-756 +; -Fourth modification by Ron, W5RKN: Conversion of the set for use with an IC-R8500 +; -Fifth modification by Ernst, DK1VI: Conversion of the set for use with an IC-R9000 +; -Sixth modification by Frank, PA589: Conversion of the set for use with an IC-R9500 +;------------------------------------------------------------------------------------- + + +;------------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------------- + +[INIT] +;stop scan +Command=FEFE72E0.0E.00.FD +ReplyLength=13 +Validate=FEFE72E00E00FD.FEFEE072FBFD + +;------------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------------- + +[pmFreqA] +;Not supported + +[pmFreqB] +;Not supported + +[pmFreq] +;Set operating frequency +Command=FEFE72E0.00.0000000000.FD +Value=5|5|vfBcdLU|1|0 +ReplyLength=17 +Validate=FEFE72E0000000000000FD.FEFEE072FBFD + +[pmRitOffset] +;Not supported + +[pmRit0] +;Not supported + +[pmPitch] +;Set CW pitch +;Not supported + +;------------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------------- + +[pmSplitOn] +;Enable split operation, using VFO B (transmit frequency) and VFO A (receive frequency) +;Not supported + +[pmSplitOff] +;Disable split operation, transmit and receive frequencies set to VFO A frequency +;Not supported + +[pmVfoA] +;Set receiver to VFO A frequency +;Not supported + +[pmVfoB] +;Set receiver to VFO B frequency +;Not supported + +[pmVfoEqual] +;Set VFO B parameters (split transmit VFO) equal to VFO A parameters (receive VFO) +;Not supported + +[pmVfoSwap] +;Swap VFO B frequency (split transmit VFO) with VFO A frequency (receive VFO) +;Not supported + +[pmVfoAA] +;Not supported + +[pmVfoAB] +;Not supported + +[pmVfoBA] +;Not supported + +[pmVfoBB] +;Not supported + +[pmRitOn] +;Not supported + +[pmRitOff] +;Not supported + +[pmXitOn] +;Not supported + +[pmXitOff] +;Not supported + +[pmRx] +;Enable the receive mode +;Not supported + +[pmTx] +;Enable the transmit mode +;Not supported + +;------------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------------- + +[pmCW_U] +;Set the CW mode wide +Command=FEFE72E0.06.0301.FD +ReplyLength=14 +Validate=FEFE72E0060301FD.FEFEE072FBFD + +[pmCW_L] +;Set the CW-R mode +Command=FEFE72E0.06.0701.FD +ReplyLength=14 +Validate=FEFE72E0060701FD.FEFEE072FBFD + + +[pmSSB_U] +;Set the USB mode +Command=FEFE72E0.06.0101.FD +ReplyLength=14 +Validate=FEFE72E0060101FD.FEFEE072FBFD + +[pmSSB_L] +;Set the LSB mode +Command=FEFE72E0.06.0001.FD +ReplyLength=14 +Validate=FEFE72E0060001FD.FEFEE072FBFD + +[pmDIG_U] +;Set the Digital RTTY mode, middle bandwith +Command=FEFE72E0.06.0402.FD +ReplyLength=14 +Validate=FEFE72E0060402FD.FEFEE072FBFD + +[pmDIG_L] +;Set the Digital RTTY-R mode (microphone muted) +Command=FEFE72E0.06.0802.FD +ReplyLength=14 +Validate=FEFE72E0060802FD.FEFEE072FBFD + + +[pmAM] +;Set the AM mode +Command=FEFE72E0.06.0202.FD +ReplyLength=14 +Validate=FEFE72E0060202FD.FEFEE072FBFD + +[pmFM] +;Set the FM mode +Command=FEFE72E0.06.0502.FD +ReplyLength=14 +Validate=FEFE72E0060502FD.FEFEE072FBFD + +;------------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------------- + +[STATUS1] +;Read the operating frequency +Command=FEFE72E0.03.FD +ReplyLength=17 +Validate=FEFE72E003FD.FEFEE072.03.0000000000.FD +Value1=11|5|vfBcdLU|1|0|pmFreq + +[STATUS2] +;Read the operating mode +Command=FEFE72E0.04.FD +ReplyLength=14 +Validate=FEFE72E004FD.FEFEE072.04.0000.FD +Flag1=000000000000.0000000000.FF.0000|000000000000.0000000000.00.0000|pmSSB_L +Flag2=000000000000.0000000000.FF.0000|000000000000.0000000000.01.0000|pmSSB_U +Flag3=000000000000.0000000000.FF.0000|000000000000.0000000000.02.0000|pmAM +Flag4=000000000000.0000000000.FF.0000|000000000000.0000000000.03.0000|pmCW_U +Flag5=000000000000.0000000000.FF.0000|000000000000.0000000000.04.0000|pmDIG_U +Flag6=000000000000.0000000000.FF.0000|000000000000.0000000000.05.0000|pmFM +Flag7=000000000000.0000000000.FF.0000|000000000000.0000000000.06.0000|pmCW_L +Flag8=000000000000.0000000000.FF.0000|000000000000.0000000000.07.0000|pmDIG_L + + +[STATUS3] +;Read the CW pitch +;Not supported + +[STATUS4] +;Read the transmit or receive mode +;Not supported + + + + diff --git a/CATCheck/Rigs/ID-5100A.ini b/CATCheck/Rigs/ID-5100A.ini new file mode 100644 index 0000000..55c66c8 --- /dev/null +++ b/CATCheck/Rigs/ID-5100A.ini @@ -0,0 +1,170 @@ +;------------------------------------------------------------------------------- +; Icom ID-5100A command set +; +; Created by Michael Wheatley, KM6LHD, KM6LHD@gmail.com +; Tested by: _________ +; +; Feel free to correct and expand, but please email Michael Wheatley +; KM6LhD@gmail.com with changes. Thanks +; +;------------------------------------------------------------------------------- + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- + +;none + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- + +[pmFreq] +Command=FEFE8CE0.05.0000000000.FD +Value=5|5|vfBcdLU|1|0 +ReplyLength=17 +Validate=FEFE8CE0050000000000FD.FEFEE08CFBFD + +[pmFreqA] +;not supported + +[pmFreqB] +;not supported + +[pmPitch] +;not supported + +[pmRitOffset] +;not supported + +[pmRit0] +;not supported + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- + +[pmSplitOn] +;not supported + +[pmSplitOff] +;not supported + +[pmVfoA] +Command=FEFE8CE0.07D0.FD +ReplyLength=13 +Validate=FEFE8CE007D0FD.FEFEE08CFBFD + +[pmVfoB] +Command=FEFE8CE0.07D1.FD +ReplyLength=13 +Validate=FEFE8CE007D1FD.FEFEE08CFBFD + +[pmVfoEqual] +;not supported + +[pmVfoSwap] +;not supported + +[pmVfoAA] +;not supported + +[pmVfoAB] +;not supported + +[pmVfoBA] +;not supported + +[pmVfoBB] +;not supported + +[pmRitOn] +;not supported + +[pmRitOff] +;not supported + +[pmXitOn] +;not supported + +[pmXitOff] +;not supported + +[pmRx] +Command=FEFE8CE0.1C00.00FD +ReplyLength=14 +Validate=FEFE8CE01C0000FD.FEFEE08CFBFD + +[pmTx] +Command=FEFE8CE0.1C00.01FD +ReplyLength=14 +Validate=FEFE8CE01C0001FD.FEFEE08CFBFD + + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- + +[pmCW_U] +;not supported + +[pmCW_L] +;not supported + +[pmSSB_U] +;not supported + +[pmSSB_L] +;not supported + +[pmDIG_U] +;not supported + +[pmDIG_L] +;not supported + +[pmAM] +;not supported + +[pmFM] +Command=FEFE8CE0.06.05.FD +ReplyLength=13 +Validate=FEFE8CE00605FD.FEFEE08CFBFD + + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- + +[STATUS1] +Command=FEFE8CE0.03.FD +ReplyLength=17 +Validate=FEFE8CE003FD.FEFEE08C.03.0000000000.FD +Value1=11|5|vfBcdLU|1|0|pmFreq + +[STATUS2] +Command=FEFE8CE0.04.FD +ReplyLength=14 +Validate=FEFE8CE004FD.FEFEE08C.04.0000.FD +Flag1=000000000000.0000000000.FF.0000|000000000000.0000000000.02.0000|pmAM +Flag2=000000000000.0000000000.FF.0000|000000000000.0000000000.05.0000|pmFM + +[STATUS3] +Command=FEFE8CE0.1C00.FD +ReplyLength=15 +Validate=FEFE8CE01C00FD.FEFEE08C.1C00.00.FD +Flag1=00000000000000.00000000.0000.01.00|pmTx +Flag2=00000000000000.00000000.0000.FF.00|00000000000000.00000000.0000.00.00|pmRx + +;-------------------------------------------------------------------------------- +; Allow SDR Rx mute using SDR Console V3 when rig transmits +;-------------------------------------------------------------------------------- + +[STATUS6] +Command=(TX;) +ReplyEnd=(;) +Validate=(TX.;) +Flag1=(..0.)|pmRX +Flag2=(..1.)|pmTX +Flag3=(..2.)|pmTX diff --git a/CATCheck/Rigs/JST-245.ini b/CATCheck/Rigs/JST-245.ini new file mode 100644 index 0000000..dc548bb --- /dev/null +++ b/CATCheck/Rigs/JST-245.ini @@ -0,0 +1,97 @@ +;------------------------------------------------------------------------------- +; Japan Radio JST-245 command set +; +; File created by Stan Huntting, KW7KW, dxatlas@huntting.com +;------------------------------------------------------------------------------- +;Command= +;ReplyLength= +;ReplyEnd= +;Value=||||[|] +;Flag=[|]| + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT] +;none required + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreqA] +; I1F........AI0 +Command=48.31.0D.46.00.00.00.00.00.00.00.00.41.0D.48.30.0D.4F.0D +ReplyEnd=0D +Value=5|8|vfText|1|0 + +[pmFreqB] +; I1F........BI0 +Command=48.31.0D.46.00.00.00.00.00.00.00.00.42.0D.48.30.0D.4F.0D +ReplyEnd=0D +Value=5|8|vfText|1|0 + +;------------------------------------------------------------------------------- +; set vfo + +;------------------------------------------------------------------------------- +[pmVfoAA] +; I1FAI0 +Command=48.31.0D.46.41.0D.48.30.0D.4F.0D +ReplyEnd=0D + +[pmVfoBB] +; I1FBI0 +Command=48.31.0D.46.42.0D.48.30.0D.4F.0D +ReplyEnd=0D + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmDIG_L] +; I1D0I0 +Command=48.31.0D.44.30.0D.48.30.0D.4F.0D +ReplyEnd=0D + +[pmCW_U] +; I1D1I0 +Command=48.31.0D.44.31.0D.48.30.0D.4F.0D +ReplyEnd=0D + +[pmSSB_U] +; I1D2I0 +Command=48.31.0D.44.32.0D.48.30.0D.4F.0D +ReplyEnd=0D + +[pmSSB_L] +; I1D3I0 +Command=48.31.0D.44.33.0D.48.30.0D.4F.0D +ReplyEnd=0D + +[pmAM] +; I1D4I0 +Command=48.31.0D.44.34.0D.48.30.0D.4F.0D +ReplyEnd=0D + +[pmFM] +; I1D5I0 +Command=48.31.0D.44.35.0D.48.30.0D.4F.0D +ReplyEnd=0D + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +[STATUS1] +; L +Command=4C.0D +ReplyEnd=0D +; Lvabdffffffffg +Validate=4C000000000000000000000000000D +Value1=5|8|vfText|1|0|pmFreq +Flag1=(.A.............)|pmVfoAA +Flag2=(.B.............)|pmVfoBB +Flag3=(....0..........)|pmDIG_L +Flag4=(....1..........)|pmCW_U +Flag5=(....2..........)|pmSSB_U +Flag6=(....3..........)|pmSSB_L +Flag7=(....4..........)|pmAM +Flag8=(....5..........)|pmFM diff --git a/CATCheck/Rigs/Kenwood.ini b/CATCheck/Rigs/Kenwood.ini new file mode 100644 index 0000000..6733a87 --- /dev/null +++ b/CATCheck/Rigs/Kenwood.ini @@ -0,0 +1,211 @@ +;------------------------------------------------------------------------------- +; Kenwood TS-570 command set +; +; File created by Alex Shovkoplyas, VE3NEA ve3nea@dxatlas.com +;------------------------------------------------------------------------------- + +;Command= +;ReplyLength= +;ReplyEnd= +;Value=||||[|] +;Flag=[|]| + + + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT] +Command=(AI0;) +ReplyLength=0 + + + + + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreqA] +Command=(FA...........;) +Value=2|11|vfText|1|0 +ReplyLength=0 + +[pmFreqB] +Command=(FB...........;) +Value=2|11|vfText|1|0 +ReplyLength=0 + +[pmFreq] +;not supported + +[pmRitOffset] +;not supported + +[pmRit0] +Command=(RC;) +ReplyLength=0 + +[pmPitch] +Command=(PT..;) +Value=2|2|vfText|0.02|-8 +ReplyLength=0 + + + + + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +;not supported + +[pmSplitOff] +;not supported + +[pmVfoA] +;not supported + +[pmVfoB] +;not supported + +[pmVfoEqual] +;not supported + +[pmVfoSwap] +;not supported + +[pmVfoAA] +Command=(FR0;) +ReplyLength=0 + +[pmVfoAB] +Command=(FR0;FT1;) +ReplyLength=0 + +[pmVfoBA] +Command=(FR1;FT0;) + +[pmVfoBB] +Command=(FR1;) +ReplyLength=0 + +[pmRitOn] +Command=(RT1;) +ReplyLength=0 + +[pmRitOff] +Command=(RT0;) +ReplyLength=0 + +[pmXitOn] +Command=(XT1;) +ReplyLength=0 + +[pmXitOff] +Command=(XT0;) +ReplyLength=0 + +[pmRx] +Command=(RX;) +ReplyLength=0 + +[pmTx] +Command=(TX;) +ReplyLength=0 + + + + + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +Command=(MD3;) +ReplyLength=0 + +[pmCW_L] +Command=(MD7;) +ReplyLength=0 + +[pmSSB_U] +Command=(MD2;) +ReplyLength=0 + +[pmSSB_L] +Command=(MD1;) +ReplyLength=0 + +[pmDIG_U] +Command=(MD9;) +ReplyLength=0 + +[pmDIG_L] +Command=(MD6;) +ReplyLength=0 + +[pmAM] +Command=(MD5;) +ReplyLength=0 + +[pmFM] +Command=(MD4;) +ReplyLength=0 + + + + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +[STATUS1] +Command=(IF;) +ReplyEnd=(;) +Validate=(IF...................................;) +Value1=18|5|vfText|1|0|pmRitOffset +Value2=2|11|vfText|1|0|pmFreq +Flag1 =(.......................0..............)|pmRitOff +Flag2 =(.......................1..............)|pmRitOn +Flag3 =(........................0.............)|pmXitOff +Flag4 =(........................1.............)|pmXitOn +Flag5 =(............................0.........)|pmRx +Flag6 =(............................1.........)|pmTx +Flag7 =(.............................1........)|pmSSB_L +Flag8 =(.............................2........)|pmSSB_U +Flag9 =(.............................3........)|pmCW_U +Flag10=(.............................4........)|pmFM +Flag11=(.............................5........)|pmAM +Flag12=(.............................6........)|pmDIG_L +Flag13=(.............................7........)|pmCW_L +Flag14=(.............................9........)|pmDIG_U +Flag15=(..............................0.0.....)|pmVfoAA +Flag16=(..............................1.0.....)|pmVfoBB +Flag17=(............................0.0.1.....)|pmVfoAB +Flag18=(............................0.1.1.....)|pmVfoBA +Flag19=(............................1.0.1.....)|pmVfoBA +Flag20=(............................1.1.1.....)|pmVfoAB +Flag21=(................................1.....)|pmSplitOn +Flag22=(................................0.....)|pmSplitOff + + +[STATUS2] +Command=(FA;) +ReplyEnd=(;) +Validate=(FA...........;) +Value1=2|11|vfText|1|0|pmFreqA + +[STATUS3] +Command=(FB;) +ReplyEnd=(;) +Validate=(FB...........;) +Value1=2|11|vfText|1|0|pmFreqB + +[STATUS4] +Command=(PT;) +ReplyEnd=(;) +Validate=(PT..;) +Value1=2|2|vfText|50|400|pmPitch + diff --git a/CATCheck/Rigs/NRD-535DG.ini b/CATCheck/Rigs/NRD-535DG.ini new file mode 100644 index 0000000..7292077 --- /dev/null +++ b/CATCheck/Rigs/NRD-535DG.ini @@ -0,0 +1,107 @@ +;------------------------------------------------------------------------------- +; Japan Radio NRD-535DG command set +; +; File created by Eckhard Roth / 26.01.08 +;------------------------------------------------------------------------------- +;Command= +;ReplyLength= +;ReplyEnd= +;Value=||||[|] +;Flag=[|]| + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT1] +;H1 +Command=48310D +ReplyLength=0 + +[INIT2] +;I1 +Command=49310D +ReplyEnd=0D + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreq] +; E........ +Command=46.00.00.00.00.00.00.00.00.0D +Value=1|8|vfText|1|0 +ReplyEnd=0D + +[pmFreqA] +; E........ +Command=46.00.00.00.00.00.00.00.00.0D +Value=1|8|vfText|1|0 +ReplyEnd=0D + +[pmFreqB] +; E........ +Command=46.00.00.00.00.00.00.00.00.0D +Value=1|8|vfText|1|0 +ReplyEnd=0D + + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- + +[pmDIG_U] +; D0 +Command=44.30.0D +ReplyEnd=0D + +[pmCW_U] +; D1 +Command=44.31.0D +ReplyEnd=0D + +[pmSSB_U] +; D2 +Command=44.32.0D +ReplyEnd=0D + +[pmSSB_L] +; D3 +Command=44.33.0D +ReplyEnd=0D + +[pmAM] +; D4 +Command=44.34.0D +ReplyEnd=0D + +[pmFM] +; D5 +Command=44.35.0D +ReplyEnd=0D + +[pmDIG_L] +; D0 +Command=44.36.0D +ReplyEnd=0D + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +[STATUS1] +; I1 +Command=49.31.0D +ReplyLength=14 +Validate=49.00.00.00.00.00.00.00.00.00.00.00.00.0D + +Value1=4|8|vfText|1|0|pmFreq +Value2=4|8|vfText|1|0|pmFreqA +Value3=4|8|vfText|1|0|pmFreqB + + +Flag1=(...0..........)|pmDIG_U +Flag2=(...1..........)|pmCW_U +Flag3=(...2..........)|pmSSB_U +Flag4=(...3..........)|pmSSB_L +Flag5=(...4..........)|pmAM +Flag6=(...5..........)|pmFM +Flag7=(...6..........)|pmDIG_L + diff --git a/CATCheck/Rigs/Perseus.ini b/CATCheck/Rigs/Perseus.ini new file mode 100644 index 0000000..824c019 --- /dev/null +++ b/CATCheck/Rigs/Perseus.ini @@ -0,0 +1,91 @@ +;------------------------------------------------------------------------------- +; Perseus SDR command set +; +; File created by Eckhard Roth, eckrot@yahoo.de +; 25/03/03 +; V2 adapted to changed CIV-Protocol of PERSEUS +;------------------------------------------------------------------------------- + + + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreq] +Command=FEFE04E0.05.00000000.FD +Value=5|4|vfBcdLU|1|0 +ReplyLength=16 +Validate=FEFE04E0.05.00000000.FD.FEFEE004FBFD + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +Command=FEFE04E0.06.03.FD +ReplyLength=13 +Validate=FEFE04E0.06.03.FD.FEFEE004FBFD + +[pmCW_L] +Command=FEFE04E0.06.03.FD +ReplyLength=13 +Validate=FEFE04E0.06.03.FD.FEFEE004FBFD + + +[pmSSB_U] +Command=FEFE04E0.06.01.FD +ReplyLength=13 +Validate=FEFE04E0.06.01.FD.FEFEE004FBFD + +[pmSSB_L] +Command=FEFE04E0.06.00.FD +ReplyLength=13 +Validate=FEFE04E0.06.00.FD.FEFEE004FBFD + +[pmDIG_U] +Command=FEFE04E0.06.04.FD +ReplyLength=13 +Validate=FEFE04E0.06.04.FD.FEFEE004FBFD + + +[pmDIG_L] +Command=FEFE04E0.06.04.FD +ReplyLength=13 +Validate=FEFE04E0.06.04.FD.FEFEE004FBFD + +[pmAM] +Command=FEFE04E0.06.06.FD +ReplyLength=13 +Validate=FEFE04E0.06.06.FD.FEFEE004FBFD + +[pmFM] +Command=FEFE04E0.06.05.FD +ReplyLength=13 +Validate=FEFE04E0.06.05.FD.FEFEE004FBFD + + + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +[STATUS1] +Command=FEFE04E0.03.FD +ReplyLength=17 +Validate=FEFE04E003FD.FEFEE004.03.0000000000.FD + +Value1=11|5|vfBcdLU|1|0|pmFreq + +[STATUS2] +Command=FEFE04E0.04.FD +ReplyLength=14 +Validate=FEFE04E0.04.FD.FEFEE004.04.0000.FD + +Flag1=00000000.00.00.00000000.00.FF00.00|00000000.00.00.00000000.00.0300.00|pmCW_U +Flag2=00000000.00.00.00000000.00.FF00.00|00000000.00.00.00000000.00.0300.00|pmCW_L +Flag3=00000000.00.00.00000000.00.FF00.00|00000000.00.00.00000000.00.0100.00|pmSSB_U +Flag4=00000000.00.00.00000000.00.FF00.00|00000000.00.00.00000000.00.0000.00|pmSSB_L +Flag5=00000000.00.00.00000000.00.FF00.00|00000000.00.00.00000000.00.0400.00|pmDIG_U +Flag6=00000000.00.00.00000000.00.FF00.00|00000000.00.00.00000000.00.0400.00|pmDIG_L +Flag7=00000000.00.00.00000000.00.FF00.00|00000000.00.00.00000000.00.0200.00|pmAM +Flag8=00000000.00.00.00000000.00.FF00.00|00000000.00.00.00000000.00.0500.00|pmFM +Flag9=00000000.00.00.00000000.00.FF00.00|00000000.00.00.00000000.00.0600.00|pmAM + diff --git a/CATCheck/Rigs/PowerRX2.ini b/CATCheck/Rigs/PowerRX2.ini new file mode 100644 index 0000000..ca95c78 --- /dev/null +++ b/CATCheck/Rigs/PowerRX2.ini @@ -0,0 +1,216 @@ +;------------------------------------------------------------------------------- +; PowerRX2 command set +; +; modified 8Jun08 by W2RF from +; +; Kenwood TS-570 command set +; +; File created by Alex Shovkoplyas, VE3NEA ve3nea@dxatlas.com +;------------------------------------------------------------------------------- + +;Command= +;ReplyLength= +;ReplyEnd= +;Value=||||[|] +;Flag=[|]| + + + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT] +Command=(AI0;) +ReplyLength=0 + + + + + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreqA] +Command=(FB...........;) +Value=2|11|vfText|1|0 +ReplyLength=0 + +[pmFreqB] +Command=(FA...........;) +Value=2|11|vfText|1|0 +ReplyLength=0 + +[pmFreq] +;not supported + +[pmRitOffset] +;not supported + +[pmRit0] +Command=(RC;) +ReplyLength=0 + +[pmPitch] +Command=(PT..;) +Value=2|2|vfText|0.02|-8 +ReplyLength=0 + + + + + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +Command=(ZZSP1;) +ReplyLength=0 + +[pmSplitOff] +Command=(ZZSP0;) +ReplyLength=0 + +[pmVfoA] +;not supported + +[pmVfoB] +;not supported + +[pmVfoEqual] +;not supported + +[pmVfoSwap] +;not supported + +[pmVfoAA] +Command=(ZZSP0;) +ReplyLength=0 + +[pmVfoAB] +Command=(ZZSP1;) +ReplyLength=0 + +[pmVfoBA] +;not supported + +[pmVfoBB] +;not supported + +[pmRitOn] +Command=(RT1;) +ReplyLength=0 + +[pmRitOff] +Command=(RT0;) +ReplyLength=0 + +[pmXitOn] +Command=(XT1;) +ReplyLength=0 + +[pmXitOff] +Command=(XT0;) +ReplyLength=0 + +[pmRx] +Command=(RX;) +ReplyLength=0 + +[pmTx] +Command=(TX;) +ReplyLength=0 + + + + + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +Command=(MD3;) +ReplyLength=0 + +[pmCW_L] +Command=(MD7;) +ReplyLength=0 + +[pmSSB_U] +Command=(MD2;) +ReplyLength=0 + +[pmSSB_L] +Command=(MD1;) +ReplyLength=0 + +[pmDIG_U] +Command=(MD9;) +ReplyLength=0 + +[pmDIG_L] +Command=(MD6;) +ReplyLength=0 + +[pmAM] +Command=(MD5;) +ReplyLength=0 + +[pmFM] +Command=(MD4;) +ReplyLength=0 + + + + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +[STATUS1] +Command=(IF;) +ReplyEnd=(;) +Validate=(IF...................................;) +Value1=18|5|vfText|1|0|pmRitOffset +Value2=2|11|vfText|1|0|pmFreq +Flag1 =(.......................0..............)|pmRitOff +Flag2 =(.......................1..............)|pmRitOn +Flag3 =(........................0.............)|pmXitOff +Flag4 =(........................1.............)|pmXitOn +Flag5 =(............................0.........)|pmRx +Flag6 =(............................1.........)|pmTx +Flag7 =(.............................1........)|pmSSB_L +Flag8 =(.............................2........)|pmSSB_U +Flag9 =(.............................3........)|pmCW_U +Flag10=(.............................4........)|pmFM +Flag11=(.............................5........)|pmAM +Flag12=(.............................6........)|pmDIG_L +Flag13=(.............................7........)|pmCW_L +Flag14=(.............................9........)|pmDIG_U +Flag15=(..............................0.0.....)|pmVfoAA +Flag16=(..............................1.0.....)|pmVfoBB +Flag17=(............................0.0.1.....)|pmVfoAB +Flag18=(............................0.1.1.....)|pmVfoBA +Flag19=(............................1.0.1.....)|pmVfoBA +Flag20=(............................1.1.1.....)|pmVfoAB +Flag21=(................................1.....)|pmSplitOn +Flag22=(................................0.....)|pmSplitOff + + +[STATUS2] +Command=(FB;) +ReplyEnd=(;) +Validate=(FB...........;) +Value1=2|11|vfText|1|0|pmFreqA + +[STATUS3] +Command=(FA;) +ReplyEnd=(;) +Validate=(FA...........;) +Value1=2|11|vfText|1|0|pmFreqB + +[STATUS4] +Command=(PT;) +ReplyEnd=(;) +Validate=(PT..;) +Value1=2|2|vfText|50|400|pmPitch + diff --git a/CATCheck/Rigs/PowerSDR.ini b/CATCheck/Rigs/PowerSDR.ini new file mode 100644 index 0000000..a4e790f --- /dev/null +++ b/CATCheck/Rigs/PowerSDR.ini @@ -0,0 +1,216 @@ +;------------------------------------------------------------------------------- +; PowerSDR command set +; +; modified 26Apr08 by W2RF from +; +; Kenwood TS-570 command set +; +; File created by Alex Shovkoplyas, VE3NEA ve3nea@dxatlas.com +;------------------------------------------------------------------------------- + +;Command= +;ReplyLength= +;ReplyEnd= +;Value=||||[|] +;Flag=[|]| + + + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT] +Command=(AI0;) +ReplyLength=0 + + + + + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreqA] +Command=(FA...........;) +Value=2|11|vfText|1|0 +ReplyLength=0 + +[pmFreqB] +Command=(FB...........;) +Value=2|11|vfText|1|0 +ReplyLength=0 + +[pmFreq] +;not supported + +[pmRitOffset] +;not supported + +[pmRit0] +Command=(RC;) +ReplyLength=0 + +[pmPitch] +Command=(PT..;) +Value=2|2|vfText|0.02|-8 +ReplyLength=0 + + + + + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +Command=(ZZSP1;) +ReplyLength=0 + +[pmSplitOff] +Command=(ZZSP0;) +ReplyLength=0 + +[pmVfoA] +;not supported + +[pmVfoB] +;not supported + +[pmVfoEqual] +;not supported + +[pmVfoSwap] +;not supported + +[pmVfoAA] +Command=(ZZSP0;) +ReplyLength=0 + +[pmVfoAB] +Command=(ZZSP1;) +ReplyLength=0 + +[pmVfoBA] +;not supported + +[pmVfoBB] +;not supported + +[pmRitOn] +Command=(RT1;) +ReplyLength=0 + +[pmRitOff] +Command=(RT0;) +ReplyLength=0 + +[pmXitOn] +Command=(XT1;) +ReplyLength=0 + +[pmXitOff] +Command=(XT0;) +ReplyLength=0 + +[pmRx] +Command=(RX;) +ReplyLength=0 + +[pmTx] +Command=(TX;) +ReplyLength=0 + + + + + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +Command=(MD3;) +ReplyLength=0 + +[pmCW_L] +Command=(MD7;) +ReplyLength=0 + +[pmSSB_U] +Command=(MD2;) +ReplyLength=0 + +[pmSSB_L] +Command=(MD1;) +ReplyLength=0 + +[pmDIG_U] +Command=(MD9;) +ReplyLength=0 + +[pmDIG_L] +Command=(MD6;) +ReplyLength=0 + +[pmAM] +Command=(MD5;) +ReplyLength=0 + +[pmFM] +Command=(MD4;) +ReplyLength=0 + + + + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +[STATUS1] +Command=(IF;) +ReplyEnd=(;) +Validate=(IF...................................;) +Value1=18|5|vfText|1|0|pmRitOffset +Value2=2|11|vfText|1|0|pmFreq +Flag1 =(.......................0..............)|pmRitOff +Flag2 =(.......................1..............)|pmRitOn +Flag3 =(........................0.............)|pmXitOff +Flag4 =(........................1.............)|pmXitOn +Flag5 =(............................0.........)|pmRx +Flag6 =(............................1.........)|pmTx +Flag7 =(.............................1........)|pmSSB_L +Flag8 =(.............................2........)|pmSSB_U +Flag9 =(.............................3........)|pmCW_U +Flag10=(.............................4........)|pmFM +Flag11=(.............................5........)|pmAM +Flag12=(.............................6........)|pmDIG_L +Flag13=(.............................7........)|pmCW_L +Flag14=(.............................9........)|pmDIG_U +Flag15=(..............................0.0.....)|pmVfoAA +Flag16=(..............................1.0.....)|pmVfoBB +Flag17=(............................0.0.1.....)|pmVfoAB +Flag18=(............................0.1.1.....)|pmVfoBA +Flag19=(............................1.0.1.....)|pmVfoBA +Flag20=(............................1.1.1.....)|pmVfoAB +Flag21=(................................1.....)|pmSplitOn +Flag22=(................................0.....)|pmSplitOff + + +[STATUS2] +Command=(FA;) +ReplyEnd=(;) +Validate=(FA...........;) +Value1=2|11|vfText|1|0|pmFreqA + +[STATUS3] +Command=(FB;) +ReplyEnd=(;) +Validate=(FB...........;) +Value1=2|11|vfText|1|0|pmFreqB + +[STATUS4] +Command=(PT;) +ReplyEnd=(;) +Validate=(PT..;) +Value1=2|2|vfText|50|400|pmPitch + diff --git a/CATCheck/Rigs/SmartSDR.ini b/CATCheck/Rigs/SmartSDR.ini new file mode 100644 index 0000000..7168e5c --- /dev/null +++ b/CATCheck/Rigs/SmartSDR.ini @@ -0,0 +1,210 @@ +;------------------------------------------------------------------------------- +; SmartSDR command set for OmniRig +; +; File created by Tim Ellison, W4TME (tim@flexradio.com) +; modified 11-Jan-16 by W4TME +; File Version 1.2 (for use with SmartSDR CAT 1.6 and greater) +; +;------------------------------------------------------------------------------- + +;Command= +;ReplyLength= +;ReplyEnd= +;Value=||||[|] +;Flag=[|]| + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT1] +;Turn off AI +Command=(ZZAI0;) +ReplyLength=0 + +[INIT2] +;Enable DAX as audio input source +;Command=(ZZDX1;) +;ReplyLength=0 + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreqA] +Command=(ZZFA...........;) +Value=4|11|vfText|1|0 +ReplyLength=0 + +[pmFreqB] +Command=(ZZFB...........;) +Value=4|11|vfText|1|0 +ReplyLength=0 + +[pmFreq] +;operating frequency +;not supported + +[pmRitOffset] +;rit offset frequency +;not supported + +[pmRit0] +;clear RIT slice A +Command=(ZZRC;) +ReplyLength=0 + +[pmPitch] +;CW pitch frequency +Command=(PT...;) +Value=2|3|vfText|1|0 +ReplyLength=0 + + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +;split on +Command=(ZZSW1;) +ReplyLength=0 + +[pmSplitOff] +;split off +Command=(ZZSW0;) +ReplyLength=0 + +[pmVfoA] +;not supported + +[pmVfoB] +;not supported + +[pmVfoEqual] +;not supported + +[pmVfoSwap] +;not supported + +[pmVfoAA] +Command=(ZZSW0;) +ReplyLength=0 + +[pmVfoAB] +Command=(ZZSW1;) +ReplyLength=0 + +[pmVfoBA] +;not supported + +[pmVfoBB] +;not supported + + +[pmRitOn] +Command=(ZZRT1;) +ReplyLength=0 + +[pmRitOff] +Command=(ZZRT0;) +ReplyLength=0 + +[pmXitOn] +Command=(ZZXS1;) +ReplyLength=0 + +[pmXitOff] +Command=(ZZXS0;) +ReplyLength=0 + +[pmRx] +Command=(ZZTX0;) +ReplyLength=0 + +[pmTx] +Command=(ZZTX1;) +ReplyLength=0 + + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +Command=(ZZMD04;) +ReplyLength=0 + +[pmCW_L] +Command=(ZZMD03;) +ReplyLength=0 + +[pmSSB_U] +Command=(ZZMD01;) +ReplyLength=0 + +[pmSSB_L] +Command=(ZZMD00;) +ReplyLength=0 + +[pmDIG_U] +Command=(ZZMD07;) +ReplyLength=0 + +[pmDIG_L] +Command=(ZZMD09;) +ReplyLength=0 + +[pmAM] +Command=(ZZMD06;) +ReplyLength=0 + +[pmFM] +Command=(ZZMD05;) +ReplyLength=0 + + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +[STATUS1] +Command=(ZZIF;) +ReplyEnd=(;) +Validate=(ZZIF....................................;) +Value1=20|5|vfText|1|0|pmRitOffset +Value2=4|11|vfText|1|0|pmFreq +Flag1 =(.........................0...............)|pmRitOff +Flag2 =(.........................1...............)|pmRitOn +Flag3 =(..........................0..............)|pmXitOff +Flag4 =(..........................1..............)|pmXitOn +Flag5 =(..............................0..........)|pmRx +Flag6 =(..............................1..........)|pmTx +Flag7 =(...............................00........)|pmSSB_L +Flag8 =(...............................01........)|pmSSB_U +Flag9 =(...............................04........)|pmCW_U +Flag10=(...............................05........)|pmFM +Flag11=(...............................06........)|pmAM +Flag12=(...............................09........)|pmDIG_L +Flag13=(...............................03........)|pmCW_L +Flag14=(...............................07........)|pmDIG_U +Flag15=(.................................0.0.....)|pmVfoAA +Flag16=(.................................1.1.....)|pmVfoAB +Flag17=(...................................1.....)|pmSplitOn +Flag18=(...................................0.....)|pmSplitOff + + +[STATUS2] +Command=(ZZFA;) +ReplyEnd=(;) +Validate=(ZZFA...........;) +Value1=4|11|vfText|1|0|pmFreqA + +[STATUS3] +Command=(ZZFB;) +ReplyEnd=(;) +Validate=(ZZFB...........;) +Value1=4|11|vfText|1|0|pmFreqB + +[STATUS4] +Command=(PT;) +ReplyEnd=(;) +Validate=(PT...;) +Value1=2|3|vfText|1|0|pmPitch + diff --git a/CATCheck/Rigs/TH-F6A.ini b/CATCheck/Rigs/TH-F6A.ini new file mode 100644 index 0000000..ca5c70c --- /dev/null +++ b/CATCheck/Rigs/TH-F6A.ini @@ -0,0 +1,207 @@ +;------------------------------------------------------------------------------- +; Kenwood TH-F6A command set +; +; File created by N6TV +; +; Requires Kenwood PG-4Y Interface Cable +; Use the following settings for the radio's COM port: +; 9600,8,N,1 +; RTS: Handshake +; DTR: High +; Reference: http://www.radiomanual.info/schemi/Kenwood_TH-F6_TH-F7_protocol.pdf +; +; Note: For use with Faros (http://dxatlas.com/faros): +; Build a special cable for the speaker output +; (see http://www.radioctl.com/english/THF6F7Cable.html) +; Set Faros CW pitch to 1000 Hz +; Comment out both the [pmVfoA] and [pmVfoB] sections to prevent Faros +; from switching the receiver to VFO A (which is VHF only) +;------------------------------------------------------------------------------- + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT1] +; Send a CR to initialize +Command=0D +ReplyEnd=0D + +[INIT2] +; Set band control to VFO A +; BC 0 +Command=424320300D +ReplyEnd=0D + +[INIT3] +; Select VFO mode on VFO A instead of MR mode (enables direct freq entry) +; VMC 0,0 +Command=564D4320302C300D +ReplyEnd=0D + +[INIT4] +; Set band control to VFO B +; BC 1 +Command=424320310D +ReplyEnd=0D + +[INIT5] +; Select VFO mode on VFO B instead of MR mode (enables direct freq entry) +; VMC 1,0 +Command=564D4320312C300D +ReplyEnd=0D + + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreqA] +;not supported + +[pmFreqB] +;not supported + +[pmFreq] +; FQ ...........,0 +Command=465120.0000000000000000000000.2C300D +Value=3|11|vfText|1|0 +ReplyEnd=0D + +[pmRitOffset] +;not supported + +[pmRit0] +;not supported + +[pmPitch] +;not supported + + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +;not supported + +[pmSplitOff] +;not supported + +[pmVfoA] +; BC 0 +Command=424320300D +ReplyEnd=0D + +[pmVfoB] +; BC 1 +Command=424320310D +ReplyEnd=0D + +[pmVfoEqual] +;not supported + +[pmVfoSwap] +;not supported + +[pmVfoAA] +;not supported + +[pmVfoAB] +;not supported + +[pmVfoBA] +;not supported + +[pmVfoBB] +;not supported + +[pmRitOn] +;not supported + +[pmRitOff] +;not supported + +[pmXitOn] +;not supported + +[pmXitOff] +;not supported + +[pmRx] +; RX +Command=52580D +ReplyEnd=0D + +[pmTx] +; TX +Command=54580D +ReplyEnd=0D + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +; MD 5 +Command=4D4420350D +ReplyEnd=0D + +[pmCW_L] +; MD 5 +Command=4D4420350D +ReplyEnd=0D + +[pmSSB_U] +; MD 4 +Command=4D4420340D +ReplyEnd=0D + +[pmSSB_L] +; MD 3 +Command=4D4420330D +ReplyEnd=0D + +[pmDIG_U] +;not supported + +[pmDIG_L] +;not supported + +[pmAM] +; MD 2 +Command=4D4420320D +ReplyEnd=0D + +[pmFM] +; MD 0 +Command=4D4420000D +ReplyEnd=0D + + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +[STATUS1] +; MD +Command=4D440D +ReplyEnd=0D +Validate=4D4420.00.0D + Flag1=000000.FF.00|000000.30.00|pmFM + Flag2=000000.FF.00|000000.31.00|pmFM + Flag3=000000.FF.00|000000.32.00|pmAM + Flag4=000000.FF.00|000000.33.00|pmSSB_L + Flag5=000000.FF.00|000000.34.00|pmSSB_U + Flag6=000000.FF.00|000000.35.00|pmCW_L + +[STATUS2] +; BC +Command=42430D +ReplyEnd=0D +Validate=424320.00.0D + Flag1=000000.FF.00|000000.30.00|pmVfoA + Flag2=000000.FF.00|000000.31.00|pmVfoB + +[STATUS3] +; FQ +Command=46510D +ReplyEnd=0D +Validate=465120.0000000000000000000000.2C000D +Value=3|11|vfText|1|0|pmFreq diff --git a/CATCheck/Rigs/TH-F7E.ini b/CATCheck/Rigs/TH-F7E.ini new file mode 100644 index 0000000..969d59b --- /dev/null +++ b/CATCheck/Rigs/TH-F7E.ini @@ -0,0 +1,207 @@ +;------------------------------------------------------------------------------- +; Kenwood TH-F7E command set +; +; File created by N6TV +; +; Requires Kenwood PG-4Y Interface Cable +; Use the following settings for the radio's COM port: +; 9600,8,N,1 +; RTS: Handshake +; DTR: High +; Reference: http://www.radiomanual.info/schemi/Kenwood_TH-F6_TH-F7_protocol.pdf +; +; Note: For use with Faros (http://dxatlas.com/faros): +; Build a special cable for the speaker output +; (see http://www.radioctl.com/english/THF6F7Cable.html) +; Set Faros CW pitch to 1000 Hz +; Comment out both the [pmVfoA] and [pmVfoB] sections to prevent Faros +; from switching the receiver to VFO A (which is VHF only) +;------------------------------------------------------------------------------- + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT1] +; Send a CR to initialize +Command=0D +ReplyEnd=0D + +[INIT2] +; Set band control to VFO A +; BC 0 +Command=424320300D +ReplyEnd=0D + +[INIT3] +; Select VFO mode on VFO A instead of MR mode (enables direct freq entry) +; VMC 0,0 +Command=564D4320302C300D +ReplyEnd=0D + +[INIT4] +; Set band control to VFO B +; BC 1 +Command=424320310D +ReplyEnd=0D + +[INIT5] +; Select VFO mode on VFO B instead of MR mode (enables direct freq entry) +; VMC 1,0 +Command=564D4320312C300D +ReplyEnd=0D + + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreqA] +;not supported + +[pmFreqB] +;not supported + +[pmFreq] +; FQ ...........,0 +Command=465120.0000000000000000000000.2C300D +Value=3|11|vfText|1|0 +ReplyEnd=0D + +[pmRitOffset] +;not supported + +[pmRit0] +;not supported + +[pmPitch] +;not supported + + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +;not supported + +[pmSplitOff] +;not supported + +[pmVfoA] +; BC 0 +Command=424320300D +ReplyEnd=0D + +[pmVfoB] +; BC 1 +Command=424320310D +ReplyEnd=0D + +[pmVfoEqual] +;not supported + +[pmVfoSwap] +;not supported + +[pmVfoAA] +;not supported + +[pmVfoAB] +;not supported + +[pmVfoBA] +;not supported + +[pmVfoBB] +;not supported + +[pmRitOn] +;not supported + +[pmRitOff] +;not supported + +[pmXitOn] +;not supported + +[pmXitOff] +;not supported + +[pmRx] +; RX +Command=52580D +ReplyEnd=0D + +[pmTx] +; TX +Command=54580D +ReplyEnd=0D + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +; MD 5 +Command=4D4420350D +ReplyEnd=0D + +[pmCW_L] +; MD 5 +Command=4D4420350D +ReplyEnd=0D + +[pmSSB_U] +; MD 4 +Command=4D4420340D +ReplyEnd=0D + +[pmSSB_L] +; MD 3 +Command=4D4420330D +ReplyEnd=0D + +[pmDIG_U] +;not supported + +[pmDIG_L] +;not supported + +[pmAM] +; MD 2 +Command=4D4420320D +ReplyEnd=0D + +[pmFM] +; MD 0 +Command=4D4420000D +ReplyEnd=0D + + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +[STATUS1] +; MD +Command=4D440D +ReplyEnd=0D +Validate=4D4420.00.0D + Flag1=000000.FF.00|000000.30.00|pmFM + Flag2=000000.FF.00|000000.31.00|pmFM + Flag3=000000.FF.00|000000.32.00|pmAM + Flag4=000000.FF.00|000000.33.00|pmSSB_L + Flag5=000000.FF.00|000000.34.00|pmSSB_U + Flag6=000000.FF.00|000000.35.00|pmCW_L + +[STATUS2] +; BC +Command=42430D +ReplyEnd=0D +Validate=424320.00.0D + Flag1=000000.FF.00|000000.30.00|pmVfoA + Flag2=000000.FF.00|000000.31.00|pmVfoB + +[STATUS3] +; FQ +Command=46510D +ReplyEnd=0D +Validate=465120.0000000000000000000000.2C000D +Value=3|11|vfText|1|0|pmFreq diff --git a/CATCheck/Rigs/TS-2000.ini b/CATCheck/Rigs/TS-2000.ini new file mode 100644 index 0000000..758377c --- /dev/null +++ b/CATCheck/Rigs/TS-2000.ini @@ -0,0 +1,202 @@ +;------------------------------------------------------------------------------- +; Kenwood TS-2000 command set +; +; File created by Alex Shovkoplyas, VE3NEA ve3nea@dxatlas.com +;------------------------------------------------------------------------------- + +;Command= +;ReplyLength= +;ReplyEnd= +;Value=||||[|] +;Flag=[|]| + + + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT] +Command=(AI0;) +ReplyLength=0 + + + + + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreqA] +Command=(FA...........;) +Value=2|11|vfText|1|0 +ReplyLength=0 + +[pmFreqB] +Command=(FB...........;) +Value=2|11|vfText|1|0 +ReplyLength=0 + +[pmFreq] +;not supported + +[pmRitOffset] +;not supported + +[pmRit0] +Command=(RC;) +ReplyLength=0 + +[pmPitch] +;not supported + + + + + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +;not supported + +[pmSplitOff] +;not supported + +[pmVfoA] +;not supported + +[pmVfoB] +;not supported + +[pmVfoEqual] +;not supported + +[pmVfoSwap] +;not supported + +[pmVfoAA] +Command=(FR0;FT0;) +ReplyLength=0 + +[pmVfoAB] +Command=(FR0;FT1;) +ReplyLength=0 + +[pmVfoBA] +Command=(FR1;FT0;) + +[pmVfoBB] +Command=(FR1;FT1;) +ReplyLength=0 + +[pmRitOn] +Command=(RT1;) +ReplyLength=0 + +[pmRitOff] +Command=(RT0;) +ReplyLength=0 + +[pmXitOn] +Command=(XT1;) +ReplyLength=0 + +[pmXitOff] +Command=(XT0;) +ReplyLength=0 + +[pmRx] +Command=(RX;) +ReplyLength=0 + +[pmTx] +Command=(TX;) +ReplyLength=0 + + + + + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +Command=(MD3;) +ReplyLength=0 + +[pmCW_L] +Command=(MD7;) +ReplyLength=0 + +[pmSSB_U] +Command=(MD2;) +ReplyLength=0 + +[pmSSB_L] +Command=(MD1;) +ReplyLength=0 + +[pmDIG_U] +Command=(MD9;) +ReplyLength=0 + +[pmDIG_L] +Command=(MD6;) +ReplyLength=0 + +[pmAM] +Command=(MD5;) +ReplyLength=0 + +[pmFM] +Command=(MD4;) +ReplyLength=0 + + + + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +[STATUS1] +Command=(IF;) +ReplyEnd=(;) +Validate=(IF...................................;) +Value1=17|6|vfText|1|0|pmRitOffset +Value2=2|11|vfText|1|0|pmFreq +Flag1 =(.......................0..............)|pmRitOff +Flag2 =(.......................1..............)|pmRitOn +Flag3 =(........................0.............)|pmXitOff +Flag4 =(........................1.............)|pmXitOn +Flag5 =(............................0.........)|pmRx +Flag6 =(............................1.........)|pmTx +Flag7 =(.............................1........)|pmSSB_L +Flag8 =(.............................2........)|pmSSB_U +Flag9 =(.............................3........)|pmCW_U +Flag10=(.............................4........)|pmFM +Flag11=(.............................5........)|pmAM +Flag12=(.............................6........)|pmDIG_L +Flag13=(.............................7........)|pmCW_L +Flag14=(.............................9........)|pmDIG_U +Flag15=(..............................0.0.....)|pmVfoAA +Flag16=(..............................1.0.....)|pmVfoBB +Flag17=(............................0.0.1.....)|pmVfoAB +Flag18=(............................0.1.1.....)|pmVfoBA +Flag19=(............................1.0.1.....)|pmVfoBA +Flag20=(............................1.1.1.....)|pmVfoAB +Flag21=(................................1.....)|pmSplitOn +Flag22=(................................0.....)|pmSplitOff + + +[STATUS2] +Command=(FA;) +ReplyEnd=(;) +Validate=(FA...........;) +Value1=2|11|vfText|1|0|pmFreqA + +[STATUS3] +Command=(FB;) +ReplyEnd=(;) +Validate=(FB...........;) +Value1=2|11|vfText|1|0|pmFreqB diff --git a/CATCheck/Rigs/TS-440.ini b/CATCheck/Rigs/TS-440.ini new file mode 100644 index 0000000..0e0e9ca --- /dev/null +++ b/CATCheck/Rigs/TS-440.ini @@ -0,0 +1,195 @@ +;------------------------------------------------------------------------------- +; Kenwood TS-440 command set +; +; File created by Alex Shovkoplyas, VE3NEA ve3nea@dxatlas.com +;------------------------------------------------------------------------------- + + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT] +Command=(AI0;) +ReplyLength=0 + + + + + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreqA] +Command=(FA...........;) +Value=2|11|vfText|1|0 +ReplyLength=0 + +[pmFreqB] +Command=(FB...........;) +Value=2|11|vfText|1|0 +ReplyLength=0 + +[pmFreq] +;not supported + +[pmRitOffset] +;not supported + +[pmRit0] +Command=(RC;) +ReplyLength=0 + +[pmPitch] +;not supported + + + + + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +Command=(SP1;) +ReplyLength=0 + +[pmSplitOff] +Command=(SP0;) +ReplyLength=0 + +[pmVfoA] +Command=(FN0;) +ReplyLength=0 + +[pmVfoB] +Command=(FN1;) +ReplyLength=0 + +[pmVfoEqual] +;not supported + +[pmVfoSwap] +;not supported + +[pmVfoAA] +Command=(FN0;SP0;) +ReplyLength=0 + +[pmVfoAB] +Command=(FN0;SP1;) + +[pmVfoBA] +Command=(FN1;SP1;) + +[pmVfoBB] +Command=(FN1;SP0;) + +[pmRitOn] +Command=(RT1;) +ReplyLength=0 + +[pmRitOff] +Command=(RT0;) +ReplyLength=0 + +[pmXitOn] +Command=(XT1;) +ReplyLength=0 + +[pmXitOff] +Command=(XT0;) +ReplyLength=0 + +[pmRx] +Command=(RX;) +ReplyLength=0 + +[pmTx] +Command=(TX;) +ReplyLength=0 + + + + + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +Command=(MD3;) +ReplyLength=0 + +[pmCW_L] +;not supported + +[pmSSB_U] +Command=(MD2;) +ReplyLength=0 + +[pmSSB_L] +Command=(MD1;) +ReplyLength=0 + +[pmDIG_U] +;not supported + +[pmDIG_L] +Command=(MD6;) +ReplyLength=0 + +[pmAM] +Command=(MD5;) +ReplyLength=0 + +[pmFM] +Command=(MD4;) +ReplyLength=0 + + + + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +[STATUS1] +Command=(IF;) +ReplyEnd=(;) +Validate=(IF...................................;) +Value1=18|5|vfText|1|0|pmRitOffset +Value2=2|11|vfText|1|0|pmFreq +Flag1 =(.......................0..............)|pmRitOff +Flag2 =(.......................1..............)|pmRitOn +Flag3 =(........................0.............)|pmXitOff +Flag4 =(........................1.............)|pmXitOn +Flag5 =(............................0.........)|pmRx +Flag6 =(............................1.........)|pmTx +Flag7 =(.............................1........)|pmSSB_L +Flag8 =(.............................2........)|pmSSB_U +Flag9 =(.............................3........)|pmCW_U +Flag10=(.............................4........)|pmFM +Flag11=(.............................5........)|pmAM +Flag12=(.............................6........)|pmDIG_L +Flag15=(..............................0.0.....)|pmVfoAA +Flag16=(..............................1.0.....)|pmVfoBB +Flag17=(............................0.0.1.....)|pmVfoAB +Flag18=(............................0.1.1.....)|pmVfoBA +Flag19=(............................1.0.1.....)|pmVfoBA +Flag20=(............................1.1.1.....)|pmVfoAB +Flag21=(................................1.....)|pmSplitOn +Flag22=(................................0.....)|pmSplitOff +;Flag15=(..............................0.......)|pmVfoA +;Flag16=(..............................1.......)|pmVfoB + + +[STATUS2] +Command=(FA;) +ReplyEnd=(;) +Validate=(FA...........;) +Value1=2|11|vfText|1|0|pmFreqA + +[STATUS3] +Command=(FB;) +ReplyEnd=(;) +Validate=(FB...........;) +Value1=2|11|vfText|1|0|pmFreqB diff --git a/CATCheck/Rigs/TS-480.ini b/CATCheck/Rigs/TS-480.ini new file mode 100644 index 0000000..5ef34fa --- /dev/null +++ b/CATCheck/Rigs/TS-480.ini @@ -0,0 +1,202 @@ +;------------------------------------------------------------------------------- +; Kenwood TS-480 command set +; +; File created by Alex Shovkoplyas, VE3NEA ve3nea@dxatlas.com +; Modified by "Denis" +;------------------------------------------------------------------------------- + +;Command= +;ReplyLength= +;ReplyEnd= +;Value=||||[|] +;Flag=[|]| + + + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT] +Command=(AI0;) +ReplyLength=0 + + + + + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreqA] +Command=(FA...........;) +Value=2|11|vfText|1|0 +ReplyLength=0 + +[pmFreqB] +Command=(FB...........;) +Value=2|11|vfText|1|0 +ReplyLength=0 + +[pmFreq] +;not supported + +[pmRitOffset] +;not supported + +[pmRit0] +Command=(RC;) +ReplyLength=0 + +[pmPitch] +;not supported + + + + + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +;not supported + +[pmSplitOff] +;not supported + +[pmVfoA] +;not supported + +[pmVfoB] +;not supported + +[pmVfoEqual] +;not supported + +[pmVfoSwap] +;not supported + +[pmVfoAA] +Command=(FR0;FT0;) +ReplyLength=0 + +[pmVfoAB] +Command=(FR0;FT1;) +ReplyLength=0 + +[pmVfoBA] +Command=(FR1;FT0;) + +[pmVfoBB] +Command=(FR1;FT1;) +ReplyLength=0 + +[pmRitOn] +Command=(RT1;) +ReplyLength=0 + +[pmRitOff] +Command=(RT0;) +ReplyLength=0 + +[pmXitOn] +Command=(XT1;) +ReplyLength=0 + +[pmXitOff] +Command=(XT0;) +ReplyLength=0 + +[pmRx] +Command=(RX;) +ReplyLength=0 + +[pmTx] +Command=(TX1;) +ReplyLength=0 + + + + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +Command=(MD3;) +ReplyLength=0 + +[pmCW_L] +Command=(MD7;) +ReplyLength=0 + +[pmSSB_U] +Command=(MD2;) +ReplyLength=0 + +[pmSSB_L] +Command=(MD1;) +ReplyLength=0 + +[pmDIG_U] +Command=(MD9;) +ReplyLength=0 + +[pmDIG_L] +Command=(MD6;) +ReplyLength=0 + +[pmAM] +Command=(MD5;) +ReplyLength=0 + +[pmFM] +Command=(MD4;) +ReplyLength=0 + + + + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +[STATUS1] +Command=(IF;) +ReplyEnd=(;) +Validate=(IF...................................;) +Value1=17|6|vfText|1|0|pmRitOffset +Value2=2|11|vfText|1|0|pmFreq +Flag1 =(.......................0..............)|pmRitOff +Flag2 =(.......................1..............)|pmRitOn +Flag3 =(........................0.............)|pmXitOff +Flag4 =(........................1.............)|pmXitOn +Flag5 =(............................0.........)|pmRx +Flag6 =(............................1.........)|pmTx +Flag7 =(.............................1........)|pmSSB_L +Flag8 =(.............................2........)|pmSSB_U +Flag9 =(.............................3........)|pmCW_U +Flag10=(.............................4........)|pmFM +Flag11=(.............................5........)|pmAM +Flag12=(.............................6........)|pmDIG_L +Flag13=(.............................7........)|pmCW_L +Flag14=(.............................9........)|pmDIG_U +Flag15=(..............................0.0.....)|pmVfoAA +Flag16=(..............................1.0.....)|pmVfoBB +Flag17=(............................0.0.1.....)|pmVfoAB +Flag18=(............................0.1.1.....)|pmVfoBA +Flag19=(............................1.0.1.....)|pmVfoBA +Flag20=(............................1.1.1.....)|pmVfoAB +Flag21=(................................1.....)|pmSplitOn +Flag22=(................................0.....)|pmSplitOff + + +[STATUS2] +Command=(FA;) +ReplyEnd=(;) +Validate=(FA...........;) +Value1=2|11|vfText|1|0|pmFreqA + +[STATUS3] +Command=(FB;) +ReplyEnd=(;) +Validate=(FB...........;) +Value1=2|11|vfText|1|0|pmFreqB diff --git a/CATCheck/Rigs/TS-590.ini b/CATCheck/Rigs/TS-590.ini new file mode 100644 index 0000000..fbde2e8 --- /dev/null +++ b/CATCheck/Rigs/TS-590.ini @@ -0,0 +1,207 @@ +;------------------------------------------------------------------------------- +; Kenwood TS-590 command set +; +; File created by UA3YPL +;------------------------------------------------------------------------------- + +;Command= +;ReplyLength= +;ReplyEnd= +;Value=||||[|] +;Flag=[|]| + + + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT] +Command=(AI0;) +ReplyLength=0 + + + + + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreqA] +Command=(FA...........;) +Value=2|11|vfText|1|0 +ReplyLength=0 + +[pmFreqB] +Command=(FB...........;) +Value=2|11|vfText|1|0 +ReplyLength=0 + +[pmFreq] +;not supported + +[pmRitOffset] +;not supported + +[pmRit0] +Command=(RC;) +ReplyLength=0 + +[pmPitch] +;not supported + + + + + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +;not supported + +[pmSplitOff] +;not supported + +[pmVfoA] +Command=(FR0;) +ReplyLength=0 + +[pmVfoB] +Command=(FR1;) +ReplyLength=0 + +[pmVfoEqual] +Command=(VV;) +ReplyLength=0 + +[pmVfoSwap] +;not supported + +[pmVfoAA] +Command=(FR0;FT0;) +ReplyLength=0 + +[pmVfoAB] +Command=(FR0;FT1;) +ReplyLength=0 + +[pmVfoBA] +Command=(FR1;FT0;) + +[pmVfoBB] +Command=(FR1;FT1;) +ReplyLength=0 + +[pmRitOn] +Command=(RT1;) +ReplyLength=0 + +[pmRitOff] +Command=(RT0;) +ReplyLength=0 + +[pmXitOn] +Command=(XT1;) +ReplyLength=0 + +[pmXitOff] +Command=(XT0;) +ReplyLength=0 + +[pmRx] +Command=(RX;) +ReplyLength=0 + +[pmTx] +Command=(TX1;) +;Command=(TX0;) +;c TX0; âêëþ÷èòñÿ ìèêðîôîí âî âñåõ ðåæèìàõ. Åñëè ýòî íàäî, çàêîììåíòèðóéòå ñòðîêó ñ TX1; è ðàñêîììåíòèðóéòå ñòðîêó ñ TX0; +ReplyLength=0 + + + + + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +Command=(MD3;) +ReplyLength=0 + +[pmCW_L] +Command=(MD7;) +ReplyLength=0 + +[pmSSB_U] +Command=(MD2;) +ReplyLength=0 + +[pmSSB_L] +Command=(MD1;) +ReplyLength=0 + +[pmDIG_U] +Command=(MD9;) +ReplyLength=0 + +[pmDIG_L] +Command=(MD6;) +ReplyLength=0 + +[pmAM] +Command=(MD5;) +ReplyLength=0 + +[pmFM] +Command=(MD4;) +ReplyLength=0 + + + + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +[STATUS1] +Command=(IF;) +ReplyEnd=(;) +Validate=(IF...................................;) +Value1=18|5|vfText|1|0|pmRitOffset +Value2=2|11|vfText|1|0|pmFreq +Flag1 =(.......................0..............)|pmRitOff +Flag2 =(.......................1..............)|pmRitOn +Flag3 =(........................0.............)|pmXitOff +Flag4 =(........................1.............)|pmXitOn +Flag5 =(............................0.........)|pmRx +Flag6 =(............................1.........)|pmTx +Flag7 =(.............................1........)|pmSSB_L +Flag8 =(.............................2........)|pmSSB_U +Flag9 =(.............................3........)|pmCW_U +Flag10=(.............................4........)|pmFM +Flag11=(.............................5........)|pmAM +Flag12=(.............................6........)|pmDIG_L +Flag13=(.............................7........)|pmCW_L +Flag14=(.............................9........)|pmDIG_U +Flag15=(..............................0.0.....)|pmVfoAA +Flag16=(..............................1.0.....)|pmVfoBB +Flag17=(............................0.0.1.....)|pmVfoAB +Flag18=(............................0.1.1.....)|pmVfoBA +Flag19=(............................1.0.1.....)|pmVfoBA +Flag20=(............................1.1.1.....)|pmVfoAB +Flag21=(................................1.....)|pmSplitOn +Flag22=(................................0.....)|pmSplitOff + + +[STATUS2] +Command=(FA;) +ReplyEnd=(;) +Validate=(FA...........;) +Value1=2|11|vfText|1|0|pmFreqA + +[STATUS3] +Command=(FB;) +ReplyEnd=(;) +Validate=(FB...........;) +Value1=2|11|vfText|1|0|pmFreqB diff --git a/CATCheck/Rigs/TS-690.ini b/CATCheck/Rigs/TS-690.ini new file mode 100644 index 0000000..2d8335f --- /dev/null +++ b/CATCheck/Rigs/TS-690.ini @@ -0,0 +1,193 @@ +;------------------------------------------------------------------------------- +; Kenwood TS-690 command set +; +; File created by Mike Carper, WA9PIE mike@wa9pie.net +;------------------------------------------------------------------------------- + + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT] +Command=(AI0;) +ReplyLength=0 + + + + + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreqA] +Command=(FA...........;) +Value=2|11|vfText|1|0 +ReplyLength=0 + +[pmFreqB] +Command=(FB...........;) +Value=2|11|vfText|1|0 +ReplyLength=0 + +[pmFreq] +;not supported + +[pmRitOffset] +;not supported + +[pmRit0] +Command=(RC;) +ReplyLength=0 + +[pmPitch] +Command=(PT..;) +Value=2|2|vfText|1|0 +ReplyLength=0 + + + + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +Command=(FT1;) + +[pmSplitOff] +Command=(FT0;) + +[pmVfoA] +Command=(FR0;) + +[pmVfoB] +Command=(FR1;) + +[pmVfoEqual] +;not supported + +[pmVfoSwap] +;not supported + +[pmVfoAA] +Command=(FR0;FT0;) + +[pmVfoAB] +Command=(FR0;FT1;) + +[pmVfoBA] +Command=(FR1;FT0;) + +[pmVfoBB] +Command=(FR1;FT1;) + +[pmRitOn] +Command=(RT1;) +ReplyLength=0 + +[pmRitOff] +Command=(RT0;) +ReplyLength=0 + +[pmXitOn] +Command=(XT1;) +ReplyLength=0 + +[pmXitOff] +Command=(XT0;) +ReplyLength=0 + +[pmRx] +Command=(RX;) +ReplyLength=0 + +[pmTx] +Command=(TX;) +ReplyLength=0 + + + + + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +Command=(MD3;) +ReplyLength=0 + +[pmCW_L] +Command=(MD7;) +ReplyLength=0 + +[pmSSB_U] +Command=(MD2;) +ReplyLength=0 + +[pmSSB_L] +Command=(MD1;) +ReplyLength=0 + +[pmDIG_U] +Command=(MD9;) +ReplyLength=0 + +[pmDIG_L] +Command=(MD6;) +ReplyLength=0 + +[pmAM] +Command=(MD5;) +ReplyLength=0 + +[pmFM] +Command=(MD4;) +ReplyLength=0 + + + + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +[STATUS1] +Command=(IF;) +ReplyEnd=(;) +Validate=(IF...................................;) +Value1=18|5|vfText|1|0|pmRitOffset +Value2=2|11|vfText|1|0|pmFreq +Flag1 =(.......................0..............)|pmRitOff +Flag2 =(.......................1..............)|pmRitOn +Flag3 =(........................0.............)|pmXitOff +Flag4 =(........................1.............)|pmXitOn +Flag5 =(............................0.........)|pmRx +Flag6 =(............................1.........)|pmTx +Flag7 =(.............................1........)|pmSSB_L +Flag8 =(.............................2........)|pmSSB_U +Flag9 =(.............................3........)|pmCW_U +Flag10=(.............................4........)|pmFM +Flag11=(.............................5........)|pmAM +Flag12=(.............................6........)|pmDIG_L +Flag15=(..............................0.0.....)|pmVfoAA +Flag16=(..............................1.0.....)|pmVfoBB +Flag17=(............................0.0.1.....)|pmVfoAB +Flag18=(............................0.1.1.....)|pmVfoBA +Flag19=(............................1.0.1.....)|pmVfoBA +Flag20=(............................1.1.1.....)|pmVfoAB +Flag21=(................................1.....)|pmSplitOn +Flag22=(................................0.....)|pmSplitOff +;Flag15=(..............................0.......)|pmVfoA +;Flag16=(..............................1.......)|pmVfoB + + +[STATUS2] +Command=(FA;) +ReplyEnd=(;) +Validate=(FA...........;) +Value1=2|11|vfText|1|0|pmFreqA + +[STATUS3] +Command=(FB;) +ReplyEnd=(;) +Validate=(FB...........;) +Value1=2|11|vfText|1|0|pmFreqB diff --git a/CATCheck/Rigs/TS-870.ini b/CATCheck/Rigs/TS-870.ini new file mode 100644 index 0000000..acccd5a --- /dev/null +++ b/CATCheck/Rigs/TS-870.ini @@ -0,0 +1,204 @@ +;------------------------------------------------------------------------------- +; Kenwood TS-870 command set +; +; File created by Alex Shovkoplyas, VE3NEA ve3nea@dxatlas.com +;------------------------------------------------------------------------------- + + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT] +Command=(AI0;) +ReplyLength=0 + + + + + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreqA] +Command=(FA...........;) +Value=2|11|vfText|1|0 +ReplyLength=0 + +[pmFreqB] +Command=(FB...........;) +Value=2|11|vfText|1|0 +ReplyLength=0 + +[pmFreq] +;not supported + +[pmRitOffset] +;not supported + +[pmRit0] +Command=(RC;) +ReplyLength=0 + +[pmPitch] +Command=(IS ....;) +;Command=(MD3;IS ....;) +Value=3|4|vfText|1|0 +ReplyLength=0 + + + + + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +;not supported + +[pmSplitOff] +;not supported + +[pmVfoA] +;not supported + +[pmVfoB] +;not supported + +[pmVfoEqual] +;not supported + +[pmVfoSwap] +;not supported + +[pmVfoAA] +Command=(FR0;) +ReplyLength=0 + +[pmVfoAB] +Command=(FR0;FT1;) +ReplyLength=0 + +[pmVfoBA] +Command=(FR1;FT0;) + +[pmVfoBB] +Command=(FR1;) +ReplyLength=0 + +[pmRitOn] +Command=(RT1;) +ReplyLength=0 + +[pmRitOff] +Command=(RT0;) +ReplyLength=0 + +[pmXitOn] +Command=(XT1;) +ReplyLength=0 + +[pmXitOff] +Command=(XT0;) +ReplyLength=0 + +[pmRx] +Command=(RX;) +ReplyLength=0 + +[pmTx] +Command=(TX;) +ReplyLength=0 + + + + + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +Command=(MD3;) +ReplyLength=0 + +[pmCW_L] +Command=(MD7;) +ReplyLength=0 + +[pmSSB_U] +Command=(MD2;) +ReplyLength=0 + +[pmSSB_L] +Command=(MD1;) +ReplyLength=0 + +[pmDIG_U] +Command=(MD9;) +ReplyLength=0 + +[pmDIG_L] +Command=(MD6;) +ReplyLength=0 + +[pmAM] +Command=(MD5;) +ReplyLength=0 + +[pmFM] +Command=(MD4;) +ReplyLength=0 + + + + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +[STATUS1] +Command=(IF;) +ReplyEnd=(;) +Validate=(IF...................................;) +Value1=18|5|vfText|1|0|pmRitOffset +Value2=2|11|vfText|1|0|pmFreq +Flag1 =(.......................0..............)|pmRitOff +Flag2 =(.......................1..............)|pmRitOn +Flag3 =(........................0.............)|pmXitOff +Flag4 =(........................1.............)|pmXitOn +Flag5 =(............................0.........)|pmRx +Flag6 =(............................1.........)|pmTx +Flag7 =(.............................1........)|pmSSB_L +Flag8 =(.............................2........)|pmSSB_U +Flag9 =(.............................3........)|pmCW_U +Flag10=(.............................4........)|pmFM +Flag11=(.............................5........)|pmAM +Flag12=(.............................6........)|pmDIG_L +Flag13=(.............................7........)|pmCW_L +Flag14=(.............................9........)|pmDIG_U +Flag15=(..............................0.0.....)|pmVfoAA +Flag16=(..............................1.0.....)|pmVfoBB +Flag17=(............................0.0.1.....)|pmVfoAB +Flag18=(............................0.1.1.....)|pmVfoBA +Flag19=(............................1.0.1.....)|pmVfoBA +Flag20=(............................1.1.1.....)|pmVfoAB +;Flag21=(................................1.....)|pmSplitOn +;Flag21=(................................0.....)|pmSplitOff + + +[STATUS2] +Command=(FA;) +ReplyEnd=(;) +Validate=(FA...........;) +Value1=2|11|vfText|1|0|pmFreqA + +[STATUS3] +Command=(FB;) +ReplyEnd=(;) +Validate=(FB...........;) +Value1=2|11|vfText|1|0|pmFreqB + +[STATUS4] +Command=(IS;) +ReplyEnd=(;) +Validate=(IS.....;) +Value1=3|4|vfText|1|0|pmPitch diff --git a/CATCheck/Rigs/TS-930.ini b/CATCheck/Rigs/TS-930.ini new file mode 100644 index 0000000..da1010f --- /dev/null +++ b/CATCheck/Rigs/TS-930.ini @@ -0,0 +1,204 @@ +;------------------------------------------------------------------------------- +; Kenwood TS-570 command set +; +; File created by Alex Shovkoplyas, VE3NEA ve3nea@dxatlas.com +;------------------------------------------------------------------------------- + +;Command= +;ReplyLength= +;ReplyEnd= +;Value=||||[|] +;Flag=[|]| + + + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT] +Command=(AI0;) +ReplyLength=0 + + + + + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreqA] +Command=(FA...........;) +Value=2|11|vfText|1|0 +ReplyLength=0 + +[pmFreqB] +Command=(FB...........;) +Value=2|11|vfText|1|0 +ReplyLength=0 + +[pmFreq] +;not supported + +[pmRitOffset] +;not supported + +[pmRit0] +Command=(RC;) +ReplyLength=0 + +[pmPitch] +Command=(PT..;) +Value=2|2|vfText|0.02|-8 +ReplyLength=0 + + + + + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +;not supported + +[pmSplitOff] +;not supported + +[pmVfoA] +;not supported + +[pmVfoB] +;not supported + +[pmVfoEqual] +;not supported + +[pmVfoSwap] +;not supported + +[pmVfoAA] +Command=(FR0;) +ReplyLength=0 + +[pmVfoAB] +Command=(FR0;FT1;) +ReplyLength=0 + +[pmVfoBA] +Command=(FR1;FT0;) + +[pmVfoBB] +Command=(FR1;) +ReplyLength=0 + +[pmRitOn] +Command=(RT1;) +ReplyLength=0 + +[pmRitOff] +Command=(RT0;) +ReplyLength=0 + +[pmXitOn] +Command=(XT1;) +ReplyLength=0 + +[pmXitOff] +Command=(XT0;) +ReplyLength=0 + +[pmRx] +Command=(RX;) +ReplyLength=0 + +[pmTx] +Command=(TX;) +ReplyLength=0 + + + + + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +Command=(MD3;) +ReplyLength=0 + +[pmCW_L] +Command=(MD7;) +ReplyLength=0 + +[pmSSB_U] +Command=(MD2;) +ReplyLength=0 + +[pmSSB_L] +Command=(MD1;) +ReplyLength=0 + +[pmDIG_U] +Command=(MD9;) +ReplyLength=0 + +[pmDIG_L] +Command=(MD6;) +ReplyLength=0 + +[pmAM] +Command=(MD5;) +ReplyLength=0 + +[pmFM] +Command=(MD4;) +ReplyLength=0 + + + + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +[STATUS1] +Command=(IF;) +ReplyEnd=(;) +Validate=(IF...................................;) +Value1=18|5|vfText|1|0|pmRitOffset +Value2=2|11|vfText|1|0|pmFreq +Flag1 =(.......................0..............)|pmRitOff +Flag2 =(.......................1..............)|pmRitOn +Flag3 =(........................0.............)|pmXitOff +Flag4 =(........................1.............)|pmXitOn +Flag5 =(............................0.........)|pmRx +Flag6 =(............................1.........)|pmTx +Flag7 =(.............................1........)|pmSSB_L +Flag8 =(.............................2........)|pmSSB_U +Flag9 =(.............................3........)|pmCW_U +Flag10=(.............................4........)|pmFM +Flag11=(.............................5........)|pmAM +Flag12=(.............................6........)|pmDIG_L +Flag13=(.............................7........)|pmCW_L +Flag14=(.............................9........)|pmDIG_U +Flag15=(..............................0.0.....)|pmVfoAA +Flag16=(..............................1.0.....)|pmVfoBB +Flag17=(............................0.0.1.....)|pmVfoAB +Flag18=(............................0.1.1.....)|pmVfoBA +Flag19=(............................1.0.1.....)|pmVfoBA +Flag20=(............................1.1.1.....)|pmVfoAB +Flag21=(................................1.....)|pmSplitOn +Flag22=(................................0.....)|pmSplitOff + + +[STATUS2] +Command=(FA;) +ReplyEnd=(;) +Validate=(FA...........;) +Value1=2|11|vfText|1|0|pmFreqA + +[STATUS3] +Command=(FB;) +ReplyEnd=(;) +Validate=(FB...........;) +Value1=2|11|vfText|1|0|pmFreqB diff --git a/CATCheck/Rigs/TenTec Eagle.ini b/CATCheck/Rigs/TenTec Eagle.ini new file mode 100644 index 0000000..e1a213f --- /dev/null +++ b/CATCheck/Rigs/TenTec Eagle.ini @@ -0,0 +1,180 @@ +;------------------------------------------------------------------------------- +; TenTec Eagle compatible command set +; +; File created by John, KI4JPL jhenry@tentec.com +; Tested by Rick, Rick@dj0ip.de. +;------------------------------------------------------------------------------- + + + + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT] +;none required + + + + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreqA] +Command=2A4146.303030.303030.303030.0D +Value=3|9|vfText|1|0 +ReplyLength=0 + +[pmFreqB] +Command=2A4246.303030.303030.303030.0D +Value=3|9|vfText|1|0 +ReplyLength=0 + +[pmFreq] +;not supported + +[pmRitOffset] +;not supported + +[pmRit0] +;not supported + +[pmPitch] +;not supported + + + + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +;not supported + +[pmSplitOff] +;not supported + +[pmVfoA] +;not supported + +[pmVfoB] +;not supported + +[pmVfoEqual] +;not supported + +[pmVfoSwap] +;not supported + +[pmVfoAA] +Command=2A4B56.414141.0D +ReplyLength=0 + +[pmVfoAB] +Command=2A4B56.414142.0D +ReplyLength=0 + +[pmVfoBA] +;not supported + +[pmVfoBB] +;not supported + +[pmRitOn] +;not supported + +[pmRitOff] +;not supported + +[pmXitOn] +;not supported + +[pmXitOff] +;not supported + +[pmRx] +Command=2A54550D +ReplyLength=0 + +[pmTx] +Command=2A544B0D +ReplyLength=0 + + + + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +;not supported + +[pmCW_L] +Command=2A524D4D330D +ReplyLength=0 + +[pmSSB_U] +Command=2A524D4D300D +ReplyLength=0 + +[pmSSB_L] +Command=2A524D4D310D +ReplyLength=0 + +[pmDIG_U] +Command=2A524D4D300D +ReplyLength=0 + +[pmDIG_L] +Command=2A524D4D310D +ReplyLength=0 + +[pmAM] +Command=2A524D4D340D +ReplyLength=0 + +[pmFM] +Command=2A524D4D350D +ReplyLength=0 + + + + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +[STATUS1] +Command=3F41460D +ReplyEnd=0D +Validate=404146.0000000000000000.0D +Value1=3|8|vfText|1|0|pmFreqA + +[STATUS2] +Command=3F42460D +ReplyEnd=0D +Validate=404246.0000000000000000.0D +Value1=3|8|vfText|1|0|pmFreqB + +[STATUS3] +;mode +Command=3F524D4D0D +ReplyLength=6 +Validate=40524D4D000D +Flag1=00000000FF00|000000003300|pmCW_L +Flag2=00000000FF00|000000003000|pmSSB_U +Flag3=00000000FF00|000000003100|pmSSB_L +Flag4=00000000FF00|000000003000|pmDIG_U +Flag5=00000000FF00|000000003100|pmDIG_L +Flag6=00000000FF00|000000003400|pmAM +Flag7=00000000FF00|000000003500|pmFM + +[STATUS4] +;vfo +Command=3F4B560D +ReplyLength=7 +Validate=404B56.000000.0D +Flag1=000000.FF00FF.00|000000.410041.00|pmVfoAA +Flag2=000000.FF00FF.00|000000.410042.00|pmVfoAB +Flag3=000000.FF00FF.00|000000.410041.00|pmSplitOff +Flag4=000000.FF00FF.00|000000.410042.00|pmSplitOn diff --git a/CATCheck/Rigs/TenTec Jupiter.ini b/CATCheck/Rigs/TenTec Jupiter.ini new file mode 100644 index 0000000..428bd70 --- /dev/null +++ b/CATCheck/Rigs/TenTec Jupiter.ini @@ -0,0 +1,100 @@ +;------------------------------------------------------------------------------- +; TenTec Jupiter command set +; +; File created by Ron McCurdy, KE5QDA@cox.net +; 29.05.12 +;------------------------------------------------------------------------------- + + + + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT] +;none + + + + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreqA] +Command=2A.41.00000000.0D +Value=2|4|vfBinB|1|0 +ReplyLength=0 + +[pmFreqB] +Command=2A.42.00000000.0D +Value=2|4|vfBinB|1|0 +ReplyLength=0 + + + + + + + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +Command=2A.4D.33.33.0D +ReplyLength=0 + +[pmSSB_U] +Command=2A.4D.31.31.0D +ReplyLength=0 + +[pmSSB_L] +Command=2A.4D.32.32.0D +ReplyLength=0 + +[pmDIG_U] +;not used + +[pmAM] +Command=2A.4D.35.35.0D +ReplyLength=0 + +[pmFM] +Command=2A.4D.34.34.0D +ReplyLength=0 + + + + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +[STATUS1] +Command=3F.41.0D +ReplyLength=6 +Validate=41.00000000.0D +Value1=1|4|vfBinB|1|0|pmFreqA + + +[STATUS2] +Command=3F.42.0D +ReplyLength=6 +Validate=42.00000000.0D +Value1=1|4|vfBinB|1|0|pmFreqB + + +[STATUS3] +Command=3F.4D.0D +ReplyLength=4 +Validate=4D.0000.0D +Flag1=00.FF.0000|00.33.0000|pmCW_U +Flag2=00.FF.0000|00.31.0000|pmSSB_U +Flag3=00.FF.0000|00.32.0000|pmSSB_L +Flag4=00.FF.0000|00.38.0000|pmDIG_U +Flag5=00.FF.0000|00.35.0000|pmAM +Flag6=00.FF.0000|00.34.0000|pmFM + + + + + diff --git a/CATCheck/Rigs/TenTec Omni VII.ini b/CATCheck/Rigs/TenTec Omni VII.ini new file mode 100644 index 0000000..43089fc --- /dev/null +++ b/CATCheck/Rigs/TenTec Omni VII.ini @@ -0,0 +1,191 @@ +;------------------------------------------------------------------------------- +; TenTec OMNI VII command set +; +; File created by Ernie, N1SW n1sw@cox.net +; Tested by Ernie, N1SW +;------------------------------------------------------------------------------- + + + + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT] +;none required + + + + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreq] +Command=2A41.00000000.0D +Value=2|4|vfBinB|1|0 +ReplyLength=0 + +[pmFreqA] +Command=2A41.00000000.0D +Value=2|4|vfBinB|1|0 +ReplyLength=0 + +[pmFreqB] +Command=2A42.00000000.0D +Value=2|4|vfBinB|1|0 +ReplyLength=0 + +;[pmFreq] +;not supported + +[pmRitOffset] +;not supported + +[pmRit0] +;not supported + +[pmPitch] +;not supported + + + + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +Command=2A4E010D +ReplyLength=0 + +[pmSplitOff] +Command=2A4E000D +ReplyLength=0 + +[pmVfoA] +; fake with split off +;Command=2A4E000D +;ReplyLength=0 + +[pmVfoB] +;not supported + +[pmVfoEqual] +;not supported + +[pmVfoSwap] +;not supported + +[pmVfoAA] +; fake with split off +Command=2A4E000D +ReplyLength=0 + +[pmVfoAB] +; fake with split on +Command=2A4E010D +ReplyLength=0 + +[pmVfoBA] +;not supported + +[pmVfoBB] +;not supported + +[pmRitOn] +;not supported + +[pmRitOff] +;not supported + +[pmXitOn] +;not supported + +[pmXitOff] +;not supported + +[pmRx] +;not supported + +[pmTx] +;not supported + + + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +Command=2A4D33330D +ReplyLength=0 + +[pmCW_L] +Command=2A4D35350D +ReplyLength=0 + +[pmSSB_U] +Command=2A4D31310D +ReplyLength=0 + +[pmSSB_L] +Command=2A4D32320D +ReplyLength=0 + +[pmDIG_U] +;not supported + +[pmDIG_L] +;not supported + +[pmAM] +Command=2A4D30300D +ReplyLength=0 + +[pmFM] +Command=2A4D34340D +ReplyLength=0 + + + + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +[STATUS] +Command=3F410D +ReplyLength=6 +Validate=41.00000000.0D +Value1=1|4|vfBinB|1|0|pmFreq + +[STATUS1] +Command=3F410D +ReplyLength=6 +Validate=41.00000000.0D +Value1=1|4|vfBinB|1|0|pmFreqA + +[STATUS2] +Command=3F420D +ReplyLength=6 +Validate=42.00000000.0D +Value1=1|4|vfBinB|1|0|pmFreqB + +[STATUS3] +Command=3F4E0D +ReplyLength=3 +Validate=4E.00.0D +Flag1=00FF00|000000|pmSplitOff +Flag2=00FF00|000100|pmSplitOn +Flag3=00FF00|000000|pmVfoAA +Flag4=00FF00|000100|pmVfoAB + +[STATUS4] +Command=3F4D0D +ReplyLength=4 +Validate=4D.0000.0D +Flag1=00FF0000|00300000|pmAM +Flag2=00FF0000|00310000|pmSSB_U +Flag3=00FF0000|00320000|pmSSB_L +Flag4=00FF0000|00330000|pmCW_U +Flag5=00FF0000|00340000|pmFM +Flag6=00FF0000|00350000|pmCW_L + diff --git a/CATCheck/Rigs/TenTec Omni VI_plus.ini b/CATCheck/Rigs/TenTec Omni VI_plus.ini new file mode 100644 index 0000000..459b0a2 --- /dev/null +++ b/CATCheck/Rigs/TenTec Omni VI_plus.ini @@ -0,0 +1,122 @@ +;------------------------------------------------------------------------------- +; TenTec Omni VI+ command set +; +; File created by Alex Shovkoplyas, VE3NEA +;------------------------------------------------------------------------------- + + + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreq] +Command=FEFE04E0.05.0000000000.FD +Value=5|5|vfBcdLU|1|0 +ReplyLength=17 +Validate=FEFE04E0050000000000FD.FEFEE004FBFD + +[pmRitOffset] +;($0D) only in models 563 and 564 + + + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmVfoA] +Command=FEFE04E0.07.00.FD +ReplyLength=13 +Validate=FEFE04E00700FD.FEFEE004FBFD + +[pmVfoB] +Command=FEFE04E0.07.01.FD +ReplyLength=13 +Validate=FEFE04E00701FD.FEFEE004FBFD + +[pmVfoEqual] +Command=FEFE04E0.07A0.FD +ReplyLength=13 +Validate=FEFE04E007A0FD.FEFEE004FBFD + +[pmVfoSwap] +Command=FEFE04E0.07B0.FD +ReplyLength=13 +Validate=FEFE04E007B0FD.FEFEE004FBFD + +[pmSplitOn] +Command=FEFE04E0.0F01.FD +ReplyLength=13 +Validate=FEFE04E00F01FD.FEFEE004FBFD + +[pmSplitOff] +Command=FEFE04E0.0F00.FD +ReplyLength=13 +Validate=FEFE04E00F00FD.FEFEE004FBFD + +[pmRx] +;($16.02) only in models 563 and 564 + +[pmTx] +;($16.01) only in models 563 and 564 + + + + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +Command=FEFE04E0.06.03.FD +ReplyLength=13 +Validate=FEFE04E00603FD.FEFEE004FBFD + +[pmSSB_U] +Command=FEFE04E0.06.01.FD +ReplyLength=13 +Validate=FEFE04E00601FD.FEFEE004FBFD + +[pmSSB_L] +Command=FEFE04E0.06.00.FD +ReplyLength=13 +Validate=FEFE04E00600FD.FEFEE004FBFD + +[pmDIG_L] +Command=FEFE04E0.06.04.FD +ReplyLength=13 +Validate=FEFE04E00604FD.FEFEE004FBFD + +[pmFM] +Command=FEFE04E0.06.05.FD +ReplyLength=13 +Validate=FEFE04E00605FD.FEFEE004FBFD + + + + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +[STATUS1] +Command=FEFE04E0.03.FD +ReplyLength=17 +Validate=FEFE04E003FD.FEFEE004.03.0000000000.FD +Value1=11|5|vfBcdLU|1|0|pmFreq + + + +[STATUS2] +Command=FEFE04E0.04.FD +ReplyLength=14 +Validate=FEFE04E004FD.FEFEE004.04.0000.FD +Flag1=000000000000.0000000000.FF.0000|000000000000.0000000000.03.0000|pmCW_U +Flag3=000000000000.0000000000.FF.0000|000000000000.0000000000.01.0000|pmSSB_U +Flag4=000000000000.0000000000.FF.0000|000000000000.0000000000.00.0000|pmSSB_L +Flag5=000000000000.0000000000.FF.0000|000000000000.0000000000.04.0000|pmDIG_L +Flag8=000000000000.0000000000.FF.0000|000000000000.0000000000.05.0000|pmFM + + +;[STATUS3] - only in models 563 and 564 +;($0C) read pmRitOffset +;($17) read pmSplit, pmVfo, pmTx, pmRitOn, pmXitOn +;($18) read transmit frequency + diff --git a/CATCheck/Rigs/TenTec Orion.ini b/CATCheck/Rigs/TenTec Orion.ini new file mode 100644 index 0000000..d69cbb3 --- /dev/null +++ b/CATCheck/Rigs/TenTec Orion.ini @@ -0,0 +1,193 @@ +;------------------------------------------------------------------------------- +; TenTec Orion command set +; +; File created by Alex, VE3NEA ve3nea@dxatlas.com +; Tested by Tom, N1MM +;------------------------------------------------------------------------------- + + + + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT] +;none required + + + + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreqA] +Command=2A41.00000000.0D +Value=2|4|vfBinB|1|0 +ReplyLength=0 + +[pmFreqB] +Command=2A42.00000000.0D +Value=2|4|vfBinB|1|0 +ReplyLength=0 + +[pmFreq] +;not supported + + +[pmRitOffset] +Command=2A524D52.0000000000.0D +Value=4|5|vfText|1|0 +ReplyLength=0 + +[pmRit0] +Command=2A524D52.30.0D +ReplyLength=0 + +[pmPitch] +;not supported + + + + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +;not supported + +[pmSplitOff] +;not supported + +[pmVfoA] +;not supported + +[pmVfoB] +;not supported + +[pmVfoEqual] +;not supported + +[pmVfoSwap] +;not supported + +[pmVfoAA] +Command=2A4B56.414E41.0D +ReplyLength=0 + +[pmVfoAB] +Command=2A4B56.414E42.0D +ReplyLength=0 + +[pmVfoBA] +Command=2A4B56.424E41.0D +ReplyLength=0 + +[pmVfoBB] +Command=2A4B56.424E42.0D +ReplyLength=0 + +[pmRitOn] +;not supported + +[pmRitOff] +Command=2A524D52.30.0D +ReplyLength=0 + +[pmXitOn] +;not supported + +[pmXitOff] +Command=2A524D58.30.0D +ReplyLength=0 + +[pmRx] +Command=2A54550D +ReplyLength=0 + +[pmTx] +;Does *TK switch to transmit mode, or does it close the CW key? +Command=2A544B0D +ReplyLength=0 + + + + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +Command=2A524D4D320D +ReplyLength=0 + +[pmCW_L] +Command=2A524D4D330D +ReplyLength=0 + +[pmSSB_U] +Command=2A524D4D300D +ReplyLength=0 + +[pmSSB_L] +Command=2A524D4D310D +ReplyLength=0 + +[pmDIG_U] +Command=2A524D4D360D +ReplyLength=0 + +[pmDIG_L] +;not supported + +[pmAM] +Command=2A524D4D340D +ReplyLength=0 + +[pmFM] +Command=2A524D4D350D +ReplyLength=0 + + + + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +[STATUS1] +Command=3F410D +ReplyLength=7 +Validate=4041.00000000.0D +Value1=2|4|vfBinB|1|0|pmFreqA + +[STATUS2] +Command=3F420D +ReplyLength=7 +Validate=4042.00000000.0D +Value1=2|4|vfBinB|1|0|pmFreqB + +[STATUS3] +;mode +Command=3F524D4D0D +ReplyLength=6 +Validate=40524D4D000D +Flag1=00000000FF00|000000003200|pmCW_U +Flag2=00000000FF00|000000003300|pmCW_L +Flag3=00000000FF00|000000003000|pmSSB_U +Flag4=00000000FF00|000000003100|pmSSB_L +Flag5=00000000FF00|000000003600|pmDIG_U +Flag6=00000000FF00|000000003400|pmAM +Flag7=00000000FF00|000000003500|pmFM + +[STATUS4] +;vfo +Command=3F4B560D +ReplyLength=7 +Validate=404B56.000000.0D +Flag1=000000.FF00FF.00|000000.410041.00|pmVfoAA +Flag2=000000.FF00FF.00|000000.410042.00|pmVfoAB +Flag3=000000.FF00FF.00|000000.420041.00|pmVfoBA +Flag4=000000.FF00FF.00|000000.420042.00|pmVfoBB +Flag5=000000.FF00FF.00|000000.410041.00|pmSplitOff +Flag6=000000.FF00FF.00|000000.410042.00|pmSplitOn +Flag7=000000.FF00FF.00|000000.420041.00|pmSplitOn +Flag8=000000.FF00FF.00|000000.420042.00|pmSplitOff diff --git a/CATCheck/Rigs/TenTec Paragon II.ini b/CATCheck/Rigs/TenTec Paragon II.ini new file mode 100644 index 0000000..1cb1305 --- /dev/null +++ b/CATCheck/Rigs/TenTec Paragon II.ini @@ -0,0 +1,200 @@ +;------------------------------------------------------------------------------- +; TenTec Paragon II command set +; +; File created by Alex Shovkoplyas, VE3NEA ve3nea@dxatlas.com +;------------------------------------------------------------------------------- + + + + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT] +;none + + + + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreqA] +;not supported + +[pmFreqB] +;not supported + +[pmFreq] +Command=FEFE2CE0.05.0000000000.FD +Value=5|5|vfBcdLU|1|0 +ReplyLength=17 +Validate=FEFE2CE0050000000000FD.FEFEE02CFBFD + +[pmRitOffset] +;not supported + +[pmRit0] +;not supported + +[pmPitch] +;not supported + + + + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +Command=FEFE2CE0.0F01.FD +ReplyLength=13 +Validate=FEFE2CE00F01FD.FEFEE02CFBFD + +[pmSplitOff] +Command=FEFE2CE0.0F00.FD +ReplyLength=13 +Validate=FEFE2CE00F00FD.FEFEE02CFBFD + +[pmVfoA] +Command=FEFE2CE0.0700.FD +ReplyLength=13 +Validate=FEFE2CE00700FD.FEFEE02CFBFD + +[pmVfoB] +Command=FEFE2CE0.0701.FD +ReplyLength=13 +Validate=FEFE2CE00701FD.FEFEE02CFBFD + +[pmVfoEqual] +Command=FEFE2CE0.07A0.FD +ReplyLength=13 +Validate=FEFE2CE007A0FD.FEFEE02CFBFD + +[pmVfoSwap] +Command=FEFE2CE0.07B0.FD +ReplyLength=13 +Validate=FEFE2CE007B0FD.FEFEE02CFBFD + +[pmVfoAA] +;not supported + +[pmVfoAB] +;not supported + +[pmVfoBA] +;not supported + +[pmVfoBB] +;not supported + +[pmRitOn] +;not supported + +[pmRitOff] +;not supported + +[pmXitOn] +;not supported + +[pmXitOff] +;not supported + +[pmRx] +Command=FEFE2CE0.1602.FD +ReplyLength=13 +Validate=FEFE2CE01602FD.FEFEE02CFBFD + +[pmTx] +Command=FEFE2CE0.1601.FD +ReplyLength=13 +Validate=FEFE2CE01601FD.FEFEE02CFBFD + + + + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +Command=FEFE2CE0.06.03.FD +ReplyLength=13 +Validate=FEFE2CE00603FD.FEFEE02CFBFD + +[pmCW_L] +;not supported + +[pmSSB_U] +Command=FEFE2CE0.06.01.FD +ReplyLength=13 +Validate=FEFE2CE00601FD.FEFEE02CFBFD + +[pmSSB_L] +Command=FEFE2CE0.06.00.FD +ReplyLength=13 +Validate=FEFE2CE00600FD.FEFEE02CFBFD + +[pmDIG_U] +Command=FEFE2CE0.06.04.FD +ReplyLength=13 +Validate=FEFE2CE00604FD.FEFEE02CFBFD + +[pmDIG_L] +;not supported + +[pmAM] +Command=FEFE2CE0.06.02.FD +ReplyLength=13 +Validate=FEFE2CE00602FD.FEFEE02CFBFD + +[pmFM] +Command=FEFE2CE0.06.05.FD +ReplyLength=13 +Validate=FEFE2CE00605FD.FEFEE02CFBFD + + + + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +[STATUS1] +Command=FEFE2CE0.03.FD +ReplyLength=17 +Validate=FEFE2CE003FD.FEFEE02C.03.0000000000.FD +Value1=11|5|vfBcdLU|1|0|pmFreq + +[STATUS2] +Command=FEFE2CE0.04.FD +ReplyLength=14 +Validate=FEFE2CE004FD.FEFEE02C.04.0000.FD +;filter byte is appended to the mode byte +Flag1=000000000000.0000000000.FF.0000|000000000000.0000000000.03.0000|pmCW_U +Flag2=000000000000.0000000000.FF.0000|000000000000.0000000000.07.0000|pmCW_L +Flag3=000000000000.0000000000.FF.0000|000000000000.0000000000.01.0000|pmSSB_U +Flag4=000000000000.0000000000.FF.0000|000000000000.0000000000.00.0000|pmSSB_L +Flag5=000000000000.0000000000.FF.0000|000000000000.0000000000.04.0000|pmDIG_U +Flag6=000000000000.0000000000.FF.0000|000000000000.0000000000.08.0000|pmDIG_L +Flag7=000000000000.0000000000.FF.0000|000000000000.0000000000.02.0000|pmAM +Flag8=000000000000.0000000000.FF.0000|000000000000.0000000000.05.0000|pmFM + +[STATUS3] +Command=FEFE2CE0.17.FD +ReplyLength=13 +Validate=FEFE2CE017FD.FEFEE02C.17.00.FD +Flag1=000000000000.0000000000.01.00|000000000000.0000000000.00.00|pmSplitOff +Flag2=000000000000.0000000000.01.00|000000000000.0000000000.01.00|pmSplitOn +Flag3=000000000000.0000000000.02.00|000000000000.0000000000.00.00|pmVfoA +Flag4=000000000000.0000000000.02.00|000000000000.0000000000.02.00|pmVfoB +Flag5=000000000000.0000000000.04.00|000000000000.0000000000.00.00|pmRx +Flag6=000000000000.0000000000.04.00|000000000000.0000000000.04.00|pmTx +Flag7=000000000000.0000000000.08.00|000000000000.0000000000.00.00|pmRitOff +Flag8=000000000000.0000000000.08.00|000000000000.0000000000.08.00|pmRitOn +Flag9=000000000000.0000000000.10.00|000000000000.0000000000.00.00|pmXitOff +Flag10=000000000000.0000000000.10.00|000000000000.0000000000.10.00|pmXitOn + + + + + diff --git a/CATCheck/Rigs/TenTec RX-350.ini b/CATCheck/Rigs/TenTec RX-350.ini new file mode 100644 index 0000000..b0250f0 --- /dev/null +++ b/CATCheck/Rigs/TenTec RX-350.ini @@ -0,0 +1,113 @@ +;------------------------------------------------------------------------------- +; TenTec RX-350 command set +; +; File created by Eckhard Roth, eckrot@yahoo.de +; 25.12.2010 +;------------------------------------------------------------------------------- + + + + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT] +;none + + + + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreq] +Command=2A.41.00000000.0D +Value=2|4|vfBinB|1|0 +ReplyLength=0 + +[pmFreqA] +Command=2A.41.00000000.0D +Value=2|4|vfBinB|1|0 +ReplyLength=0 + +[pmFreqB] +Command=2A.42.00000000.0D +Value=2|4|vfBinB|1|0 +ReplyLength=0 + + + + + + + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +Command=2A.4D.33.33.0D +ReplyLength=0 + +[pmSSB_U] +Command=2A.4D.31.31.0D +ReplyLength=0 + +[pmSSB_L] +Command=2A.4D.32.32.0D +ReplyLength=0 + +[pmDIG_U] +Command=2A.4D.38.38.0D +ReplyLength=0 + +[pmAM] +Command=2A.4D.35.35.0D +ReplyLength=0 + +[pmFM] +Command=2A.4D.34.34.0D +ReplyLength=0 + + + + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +[STATUS1] +Command=3F.41.0D +ReplyLength=6 +Validate=41.00000000.0D +Value1=1|4|vfBinB|1|0|pmFreq + +[STATUS2] +Command=3F.41.0D +ReplyLength=6 +Validate=41.00000000.0D +Value1=1|4|vfBinB|1|0|pmFreqA + + +[STATUS3] +Command=3F.42.0D +ReplyLength=6 +Validate=42.00000000.0D +Value1=1|4|vfBinB|1|0|pmFreqB + + + +[STATUS4] +Command=3F.4D.0D +ReplyLength=4 +Validate=4D.0000.0D +Flag1=00.FF.0000|00.33.0000|pmCW_U +Flag2=00.FF.0000|00.31.0000|pmSSB_U +Flag3=00.FF.0000|00.32.0000|pmSSB_L +Flag4=00.FF.0000|00.38.0000|pmDIG_U +Flag5=00.FF.0000|00.35.0000|pmAM +Flag6=00.FF.0000|00.34.0000|pmFM + + + + + diff --git a/CATCheck/Rigs/ZS-1.ini b/CATCheck/Rigs/ZS-1.ini new file mode 100644 index 0000000..38dcc9c --- /dev/null +++ b/CATCheck/Rigs/ZS-1.ini @@ -0,0 +1,148 @@ +;------------------------------------------------------------------------------- +; ZS-1 command set +; modified Sept2013 by UB1AGD from +; Kenwood TS-590 command set +; +; File created by Alexandr Gromov, UB1AGD tracer@land.ru +;------------------------------------------------------------------------------- +[INIT] +Command=(AI0;) +ReplyLength=0 + +[pmFreqA] +Command=(FA...........;) +Value=2|11|vfText|1|0 +ReplyLength=0 + +[pmFreqB] +Command=(FB...........;) +Value=2|11|vfText|1|0 +ReplyLength=0 + +[pmRit0] +Command=(RC;) +ReplyLength=0 + +[pmVfoA] +Command=(FR0;) +ReplyLength=0 + +[pmVfoB] +Command=(FR1;) +ReplyLength=0 + +[pmVfoEqual] +Command=(VV;) +ReplyLength=0 + +[pmVfoAA] +Command=(FR0;FT0;) +ReplyLength=0 + +[pmVfoAB] +Command=(FR0;FT1;) +ReplyLength=0 + +[pmVfoBA] +Command=(FR1;FT0;) + +[pmVfoBB] +Command=(FR1;FT1;) +ReplyLength=0 + +[pmRitOn] +Command=(RT1;) +ReplyLength=0 + +[pmRitOff] +Command=(RT0;) +ReplyLength=0 + +[pmXitOn] +Command=(XT1;) +ReplyLength=0 + +[pmXitOff] +Command=(XT0;) +ReplyLength=0 + +[pmRx] +Command=(RX;) +ReplyLength=0 + +[pmTx] +Command=(TX1;) +ReplyLength=0 + +[pmCW_U] +Command=(MD3;) +ReplyLength=0 + +[pmCW_L] +Command=(MD7;) +ReplyLength=0 + +[pmSSB_U] +Command=(MD2;) +ReplyLength=0 + +[pmSSB_L] +Command=(MD1;) +ReplyLength=0 + +[pmDIG_U] +Command=(MD9;) +ReplyLength=0 + +[pmDIG_L] +Command=(MD6;) +ReplyLength=0 + +[pmAM] +Command=(MD5;) +ReplyLength=0 + +[pmFM] +Command=(MD4;) +ReplyLength=0 + +[STATUS1] +Command=(IF;) +ReplyEnd=(;) +Validate=(IF...................................;) +Value1=18|5|vfText|1|0|pmRitOffset +Value2=2|11|vfText|1|0|pmFreq +Flag1 =(.......................0..............)|pmRitOff +Flag2 =(.......................1..............)|pmRitOn +Flag3 =(........................0.............)|pmXitOff +Flag4 =(........................1.............)|pmXitOn +Flag5 =(............................0.........)|pmRx +Flag6 =(............................1.........)|pmTx +Flag7 =(.............................1........)|pmSSB_L +Flag8 =(.............................2........)|pmSSB_U +Flag9 =(.............................3........)|pmCW_U +Flag10=(.............................4........)|pmFM +Flag11=(.............................5........)|pmAM +Flag12=(.............................6........)|pmDIG_L +Flag13=(.............................7........)|pmCW_L +Flag14=(.............................9........)|pmDIG_U +Flag15=(..............................0.0.....)|pmVfoAA +Flag16=(..............................1.0.....)|pmVfoBB +Flag17=(............................0.0.1.....)|pmVfoAB +Flag18=(............................0.1.1.....)|pmVfoBA +Flag19=(............................1.0.1.....)|pmVfoBA +Flag20=(............................1.1.1.....)|pmVfoAB +Flag21=(................................1.....)|pmSplitOn +Flag22=(................................0.....)|pmSplitOff + +[STATUS2] +Command=(FA;) +ReplyEnd=(;) +Validate=(FA...........;) +Value1=2|11|vfText|1|0|pmFreqA + +[STATUS3] +Command=(FB;) +ReplyEnd=(;) +Validate=(FB...........;) +Value1=2|11|vfText|1|0|pmFreqB diff --git a/CATCheck/Rigs/ic-9700-data.ini b/CATCheck/Rigs/ic-9700-data.ini new file mode 100644 index 0000000..976735d --- /dev/null +++ b/CATCheck/Rigs/ic-9700-data.ini @@ -0,0 +1,284 @@ +;------------------------------------------------------------------------------- +; Icom IC-9700-DATA +; +; IC-9700-DATA File created by Bob Wilson, N6TV, n6tv@arrl.net +; +; Tested by: Wolfgang Sidler, HB9RYZ (25.11.2019) +; with IC-9700 and SDR Radio Console v3.0.17 +; CI-V address of your IC-9700 must be: 2Ah +; +; Same as IC-9700, but selects USB-D and LSB-D for DIG modes instead of RTTY and RTTY-R +; and selects FIL1 instead of the default for USB, LSB, USB-D and LSB-D. +; +; Note: Sets DATA MOD input to USB sound card instead of the default (ACC), and +; sets DATA MOD OFF input to MIC,USB instead of the default (MIC,ACC) +; +; Initial Version 2019-05-15 by N6TV. See also IC-9700.ini, IC-9700-SAT.ini +;------------------------------------------------------------------------------- + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT1] +;Turn CI-V USB Echo Back ON +Command=FEFEA2E0.1A050130.01.FD +ReplyLength=16 +Validate=FEFEA2E01A05013001FD.FEFEE0A2FBFD + +[INIT2] +;Turn CI-V transceive OFF +Command=FEFEA2E0.1A050127.00.FD +ReplyLength=16 +Validate=FEFEA2E01A05012700FD.FEFEE0A2FBFD + +[INIT3] +;Set CW normal to lower sideband +Command=FEFEA2E0.1A050067.00.FD +ReplyLength=16 +Validate=FEFEA2E01A05006700FD.FEFEE0A2FBFD + +[INIT4] +;Turn SAT Mode OFF +Command=FEFEA2E0.165A.00.FD +ReplyLength=14 +Validate=FEFEA2E0165A00FD.FEFEE0A2FBFD + +[INIT5] +;set MOD input connector for DATA OFF MOD to MIC,USB sound card +Command=FEFEA2E0.1A050115.04.FD +ReplyLength=16 +Validate=FEFEA2E01A05011504FD.FEFEE0A2FBFD + +[INIT6] +;set MOD input connector for DATA MOD to USB sound card only +Command=FEFEA2E0.1A050116.03.FD +ReplyLength=16 +Validate=FEFEA2E01A05011603FD.FEFEE0A2FBFD + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreqA] +Command=FEFEA2E0.25.00.0000000000.FD +Value=6|5|vfBcdLU|1|0 +ReplyLength=18 +Validate=FEFEA2E025000000000000FD.FEFEE0A2FBFD + +[pmFreqB] +Command=FEFEA2E0.25.01.0000000000.FD +Value=6|5|vfBcdLU|1|0 +ReplyLength=18 +Validate=FEFEA2E025010000000000FD.FEFEE0A2FBFD + +[pmFreq] +;not supported + +[pmRitOffset] +;not supported + +[pmRit0] +Command=FEFEA2E0.21.00000000.FD +ReplyLength=16 +Validate=FEFEA2E02100000000FD.FEFEE0A2FBFD + +[pmPitch] +;The 0.425|-127.5 params. should map 300Hz->0, 900Hz->255 +Command=FEFEA2E0.14.09.0000.FD +Value=6|2|vfBcdBU|0.425|-127.5 +ReplyLength=15 +Validate=FEFEA2E014090000FD.FEFEE0A2FBFD + + + + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +Command=FEFEA2E0.0F01.FD +ReplyLength=13 +Validate=FEFEA2E00F01FD.FEFEE0A2FBFD + +[pmSplitOff] +Command=FEFEA2E0.0F00.FD +ReplyLength=13 +Validate=FEFEA2E00F00FD.FEFEE0A2FBFD + +[pmVfoA] +Command=FEFEA2E0.07D0.FD +ReplyLength=13 +Validate=FEFEA2E007D0FD.FEFEE0A2FBFD + +[pmVfoB] +Command=FEFEA2E0.07D1.FD +ReplyLength=13 +Validate=FEFEA2E007D1FD.FEFEE0A2FBFD + +[pmVfoEqual] +Command=FEFEA2E0.07A0.FD +ReplyLength=13 +Validate=FEFEA2E007A0FD.FEFEE0A2FBFD + +[pmVfoSwap] +Command=FEFEA2E0.07B0.FD +ReplyLength=13 +Validate=FEFEA2E007B0FD.FEFEE0A2FBFD + +[pmVfoAA] +;not supported + +[pmVfoAB] +;not supported + +[pmVfoBA] +;not supported + +[pmVfoBB] +;not supported + +[pmRitOn] +Command=FEFEA2E0.21.0101.FD +ReplyLength=14 +Validate=FEFEA2E0210101FD.FEFEE0A2FBFD + +[pmRitOff] +Command=FEFEA2E0.21.0100.FD +ReplyLength=14 +Validate=FEFEA2E0210100FD.FEFEE0A2FBFD + +[pmXitOn] +;not supported + +[pmXitOff] +;not supported + +[pmRx] +Command=FEFEA2E0.1C00.00.FD +ReplyLength=14 +Validate=FEFEA2E01C0000FD.FEFEE0A2FBFD + +[pmTx] +Command=FEFEA2E0.1C00.01.FD +ReplyLength=14 +Validate=FEFEA2E01C0001FD.FEFEE0A2FBFD + + + + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +; CW-R +Command=FEFEA2E0.2600.07.FD +ReplyLength=14 +Validate=FEFEA2E0260007FD.FEFEE0A2FBFD + +[pmCW_L] +; CW Normal +Command=FEFEA2E0.2600.03.FD +ReplyLength=14 +Validate=FEFEA2E0260003FD.FEFEE0A2FBFD + +[pmSSB_U] +; These lines select USB with FIL1 +Command=FEFEA2E0.2600.01.00.01.FD +ReplyLength=16 +Validate=FEFEA2E02600010001FD.FEFEE0A2FBFD + +[pmSSB_L] +; These lines select LSB with FIL1 +Command=FEFEA2E0.2600.00.00.01.FD +ReplyLength=16 +Validate=FEFEA2E02600000001FD.FEFEE0A2FBFD + +[pmDIG_U] +; These lines select USB-D for USB digital mode, FIL1 +Command=FEFEA2E0.2600.01.01.01.FD +ReplyLength=16 +Validate=FEFEA2E02600010101FD.FEFEE0A2FBFD + +[pmDIG_L] +; These lines select LSB-D for LSB digital mode, FIL1 +Command=FEFEA2E0.2600.00.01.01.FD +ReplyLength=16 +Validate=FEFEA2E02600000101FD.FEFEE0A2FBFD + +[pmAM] +Command=FEFEA2E0.2600.02.FD +ReplyLength=14 +Validate=FEFEA2E0260002FD.FEFEE0A2FBFD + +[pmFM] +Command=FEFEA2E0.2600.05.FD +ReplyLength=14 +Validate=FEFEA2E0260005FD.FEFEE0A2FBFD + + + + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +[STATUS1] +Command=FEFEA2E0.2500.FD +ReplyLength=19 +Validate=FEFEA2E02500FD.FEFEE0A2.2500.0000000000.FD +Value1=13|5|vfBcdLU|1|0|pmFreqA + +[STATUS2] +Command=FEFEA2E0.2501.FD +ReplyLength=19 +Validate=FEFEA2E02501FD.FEFEE0A2.2501.0000000000.FD +Value1=13|5|vfBcdLU|1|0|pmFreqB + +[STATUS3] +Command=FEFEA2E0.2600.FD +ReplyLength=17 +Validate=FEFEA2E02600FD.FEFEE0A2.2600.000000.FD +Flag1=00000000000000.00000000.0000.FF0000.00|00000000000000.00000000.0000.030000.00|pmCW_L +Flag2=00000000000000.00000000.0000.FF0000.00|00000000000000.00000000.0000.070000.00|pmCW_U +Flag3=00000000000000.00000000.0000.FFFF00.00|00000000000000.00000000.0000.010000.00|pmSSB_U +Flag4=00000000000000.00000000.0000.FFFF00.00|00000000000000.00000000.0000.000000.00|pmSSB_L +Flag5=00000000000000.00000000.0000.FF0000.00|00000000000000.00000000.0000.080000.00|pmDIG_U +Flag6=00000000000000.00000000.0000.FF0000.00|00000000000000.00000000.0000.040000.00|pmDIG_L +Flag7=00000000000000.00000000.0000.FFFF00.00|00000000000000.00000000.0000.010100.00|pmDIG_U +Flag8=00000000000000.00000000.0000.FFFF00.00|00000000000000.00000000.0000.000100.00|pmDIG_L +Flag9=00000000000000.00000000.0000.FF0000.00|00000000000000.00000000.0000.020000.00|pmAM +Flag10=00000000000000.00000000.0000.FF0000.00|00000000000000.00000000.0000.050000.00|pmFM + +[STATUS4] +Command=FEFEA2E0.1409.FD +ReplyLength=16 +Validate=FEFEA2E01409FD.FEFEE0A2.1409.0000.FD +; 0=300 Hz, 255=900 Hz +Value1=13|2|vfBcdBU|2.362205|300|pmPitch + +[STATUS5] +Command=FEFEA2E0.1C00.FD +ReplyLength=15 +Validate=FEFEA2E01C00FD.FEFEE0A2.1C00.00.FD +Flag1=00000000000000.00000000.0000.01.00|pmTx +Flag2=00000000000000.00000000.0000.0F.00|00000000000000.00000000.0000.00.00|pmRx + +[STATUS6] +Command=FEFEA2E0.0F.FD +ReplyLength=13 +Validate=FEFEA2E00FFD.FEFEE0A2.0F.00.FD +Flag1=000000000000.00000000.00.01.00|pmSplitOn +Flag2=000000000000.00000000.00.0F.00|000000000000.00000000.00.00.00|pmSplitOff + +[STATUS7] +Command=FEFEA2E0.2101.FD +ReplyLength=15 +Validate=FEFEA2E02101FD.FEFEE0A2.2101.00.FD +Flag1=00000000000000.00000000.0000.01.00|pmRitOn +Flag2=00000000000000.00000000.0000.0F.00|00000000000000.00000000.0000.00.00|pmRitOff + +[STATUS8] +Command=FEFEA2E0.07D2.FD +ReplyLength=15 +Validate=FEFEA2E007D2FD.FEFEE0A2.07D2.00.FD +Flag1=00000000000000.00000000.0000.01.00|pmVfoB +Flag2=00000000000000.00000000.0000.0F.00|00000000000000.00000000.0000.00.00|pmVfoA diff --git a/CATCheck/Rigs/ic-9700-dl2alf.ini b/CATCheck/Rigs/ic-9700-dl2alf.ini new file mode 100644 index 0000000..2971bd5 --- /dev/null +++ b/CATCheck/Rigs/ic-9700-dl2alf.ini @@ -0,0 +1,286 @@ +;------------------------------------------------------------------------------- +; Icom IC-9700-DATA +; +; IC-9700-DATA File created by Bob Wilson, N6TV, n6tv@arrl.net +; +; Tested by: Wolfgang Sidler, HB9RYZ (25.11.2019) +; with IC-9700 and SDR Radio Console v3.0.17 +; CI-V address of your IC-9700 must be: 2Ah +; +; Same as IC-9700, but selects USB-D and LSB-D for DIG modes instead of RTTY and RTTY-R +; and selects FIL1 instead of the default for USB, LSB, USB-D and LSB-D. +; +; Note: Sets DATA MOD input to USB sound card instead of the default (ACC), and +; sets DATA MOD OFF input to MIC,USB instead of the default (MIC,ACC) +; +; Initial Version 2019-05-15 by N6TV. See also IC-9700.ini, IC-9700-SAT.ini +;------------------------------------------------------------------------------- + + +;------------------------------------------------------------------------------- +; initialize +;------------------------------------------------------------------------------- +[INIT1] +;Turn CI-V USB Echo Back ON +Command=FEFEA2E0.1A050130.01.FD +ReplyLength=16 +Validate=FEFEA2E01A05013001FD.FEFEE0A2FBFD + +[INIT2] +;Turn CI-V transceive OFF +Command=FEFEA2E0.1A050127.00.FD +ReplyLength=16 +Validate=FEFEA2E01A05012700FD.FEFEE0A2FBFD + +[INIT3] +;Set CW normal to lower sideband +Command=FEFEA2E0.1A050067.00.FD +ReplyLength=16 +Validate=FEFEA2E01A05006700FD.FEFEE0A2FBFD + +[INIT4] +;Turn SAT Mode OFF +Command=FEFEA2E0.165A.00.FD +ReplyLength=14 +Validate=FEFEA2E0165A00FD.FEFEE0A2FBFD + +[INIT5] +;set MOD input connector for DATA OFF MOD to MIC,USB sound card +Command=FEFEA2E0.1A050115.04.FD +ReplyLength=16 +Validate=FEFEA2E01A05011504FD.FEFEE0A2FBFD + +[INIT6] +;set MOD input connector for DATA MOD to USB sound card only +Command=FEFEA2E0.1A050116.03.FD +ReplyLength=16 +Validate=FEFEA2E01A05011603FD.FEFEE0A2FBFD + +;------------------------------------------------------------------------------- +; set frequency +;------------------------------------------------------------------------------- +[pmFreqA] +Command=FEFEA2E0.25.00.0000000000.FD +Value=6|5|vfBcdLU|1|0 +ReplyLength=18 +Validate=FEFEA2E025000000000000FD.FEFEE0A2FBFD + +[pmFreqB] +Command=FEFEA2E0.25.01.0000000000.FD +Value=6|5|vfBcdLU|1|0 +ReplyLength=18 +Validate=FEFEA2E025010000000000FD.FEFEE0A2FBFD + +[pmFreq] +Command=FEFEA2E0.05.0000000000.FD +Value=5|5|vfBcdLU|1|0 +ReplyLength=17 +Validate=FEFEA2E0050000000000FD.FEFEE0A2FBFD + +[pmRitOffset] +;not supported + +[pmRit0] +Command=FEFEA2E0.21.00000000.FD +ReplyLength=16 +Validate=FEFEA2E02100000000FD.FEFEE0A2FBFD + +[pmPitch] +;The 0.425|-127.5 params. should map 300Hz->0, 900Hz->255 +Command=FEFEA2E0.14.09.0000.FD +Value=6|2|vfBcdBU|0.425|-127.5 +ReplyLength=15 +Validate=FEFEA2E014090000FD.FEFEE0A2FBFD + + + + +;------------------------------------------------------------------------------- +; set rit/xit/split/rx/tx +;------------------------------------------------------------------------------- +[pmSplitOn] +Command=FEFEA2E0.0F01.FD +ReplyLength=13 +Validate=FEFEA2E00F01FD.FEFEE0A2FBFD + +[pmSplitOff] +Command=FEFEA2E0.0F00.FD +ReplyLength=13 +Validate=FEFEA2E00F00FD.FEFEE0A2FBFD + +[pmVfoA] +Command=FEFEA2E0.0700.FD +ReplyLength=13 +Validate=FEFEA2E00700FD.FEFEE0A2FBFD + +[pmVfoB] +Command=FEFEA2E0.0701.FD +ReplyLength=13 +Validate=FEFEA2E00701FD.FEFEE0A2FBFD + +[pmVfoEqual] +Command=FEFEA2E0.07A0.FD +ReplyLength=13 +Validate=FEFEA2E007A0FD.FEFEE0A2FBFD + +[pmVfoSwap] +Command=FEFEA2E0.07B0.FD +ReplyLength=13 +Validate=FEFEA2E007B0FD.FEFEE0A2FBFD + +[pmVfoAA] +;not supported + +[pmVfoAB] +;not supported + +[pmVfoBA] +;not supported + +[pmVfoBB] +;not supported + +[pmRitOn] +Command=FEFEA2E0.21.0101.FD +ReplyLength=14 +Validate=FEFEA2E0210101FD.FEFEE0A2FBFD + +[pmRitOff] +Command=FEFEA2E0.21.0100.FD +ReplyLength=14 +Validate=FEFEA2E0210100FD.FEFEE0A2FBFD + +[pmXitOn] +;not supported + +[pmXitOff] +;not supported + +[pmRx] +Command=FEFEA2E0.1C00.00.FD +ReplyLength=14 +Validate=FEFEA2E01C0000FD.FEFEE0A2FBFD + +[pmTx] +Command=FEFEA2E0.1C00.01.FD +ReplyLength=14 +Validate=FEFEA2E01C0001FD.FEFEE0A2FBFD + + + + +;------------------------------------------------------------------------------- +; set mode +;------------------------------------------------------------------------------- +[pmCW_U] +; CW-R +Command=FEFEA2E0.2600.07.FD +ReplyLength=14 +Validate=FEFEA2E0260007FD.FEFEE0A2FBFD + +[pmCW_L] +; CW Normal +Command=FEFEA2E0.2600.03.FD +ReplyLength=14 +Validate=FEFEA2E0260003FD.FEFEE0A2FBFD + +[pmSSB_U] +; These lines select USB with FIL1 +Command=FEFEA2E0.2600.01.00.01.FD +ReplyLength=16 +Validate=FEFEA2E02600010001FD.FEFEE0A2FBFD + +[pmSSB_L] +; These lines select LSB with FIL1 +Command=FEFEA2E0.2600.00.00.01.FD +ReplyLength=16 +Validate=FEFEA2E02600000001FD.FEFEE0A2FBFD + +[pmDIG_U] +; These lines select USB-D for USB digital mode, FIL1 +Command=FEFEA2E0.2600.01.01.01.FD +ReplyLength=16 +Validate=FEFEA2E02600010101FD.FEFEE0A2FBFD + +[pmDIG_L] +; These lines select LSB-D for LSB digital mode, FIL1 +Command=FEFEA2E0.2600.00.01.01.FD +ReplyLength=16 +Validate=FEFEA2E02600000101FD.FEFEE0A2FBFD + +[pmAM] +Command=FEFEA2E0.2600.02.FD +ReplyLength=14 +Validate=FEFEA2E0260002FD.FEFEE0A2FBFD + +[pmFM] +Command=FEFEA2E0.2600.05.FD +ReplyLength=14 +Validate=FEFEA2E0260005FD.FEFEE0A2FBFD + + + + +;------------------------------------------------------------------------------- +; read status +;------------------------------------------------------------------------------- +[STATUS1] +Command=FEFEA2E0.2500.FD +ReplyLength=19 +Validate=FEFEA2E02500FD.FEFEE0A2.2500.0000000000.FD +Value1=13|5|vfBcdLU|1|0|pmFreqA + +[STATUS2] +Command=FEFEA2E0.2501.FD +ReplyLength=19 +Validate=FEFEA2E02501FD.FEFEE0A2.2501.0000000000.FD +Value1=13|5|vfBcdLU|1|0|pmFreqB + +[STATUS3] +Command=FEFEA2E0.2600.FD +ReplyLength=17 +Validate=FEFEA2E02600FD.FEFEE0A2.2600.000000.FD +Flag1=00000000000000.00000000.0000.FF0000.00|00000000000000.00000000.0000.030000.00|pmCW_L +Flag2=00000000000000.00000000.0000.FF0000.00|00000000000000.00000000.0000.070000.00|pmCW_U +Flag3=00000000000000.00000000.0000.FFFF00.00|00000000000000.00000000.0000.010000.00|pmSSB_U +Flag4=00000000000000.00000000.0000.FFFF00.00|00000000000000.00000000.0000.000000.00|pmSSB_L +Flag5=00000000000000.00000000.0000.FF0000.00|00000000000000.00000000.0000.080000.00|pmDIG_U +Flag6=00000000000000.00000000.0000.FF0000.00|00000000000000.00000000.0000.040000.00|pmDIG_L +Flag7=00000000000000.00000000.0000.FFFF00.00|00000000000000.00000000.0000.010100.00|pmDIG_U +Flag8=00000000000000.00000000.0000.FFFF00.00|00000000000000.00000000.0000.000100.00|pmDIG_L +Flag9=00000000000000.00000000.0000.FF0000.00|00000000000000.00000000.0000.020000.00|pmAM +Flag10=00000000000000.00000000.0000.FF0000.00|00000000000000.00000000.0000.050000.00|pmFM + +[STATUS4] +Command=FEFEA2E0.1409.FD +ReplyLength=16 +Validate=FEFEA2E01409FD.FEFEE0A2.1409.0000.FD +; 0=300 Hz, 255=900 Hz +Value1=13|2|vfBcdBU|2.362205|300|pmPitch + +[STATUS5] +Command=FEFEA2E0.1C00.FD +ReplyLength=15 +Validate=FEFEA2E01C00FD.FEFEE0A2.1C00.00.FD +Flag1=00000000000000.00000000.0000.01.00|pmTx +Flag2=00000000000000.00000000.0000.0F.00|00000000000000.00000000.0000.00.00|pmRx + +[STATUS6] +Command=FEFEA2E0.0F.FD +ReplyLength=13 +Validate=FEFEA2E00FFD.FEFEE0A2.0F.00.FD +Flag1=000000000000.00000000.00.01.00|pmSplitOn +Flag2=000000000000.00000000.00.0F.00|000000000000.00000000.00.00.00|pmSplitOff + +[STATUS7] +Command=FEFEA2E0.2101.FD +ReplyLength=15 +Validate=FEFEA2E02101FD.FEFEE0A2.2101.00.FD +Flag1=00000000000000.00000000.0000.01.00|pmRitOn +Flag2=00000000000000.00000000.0000.0F.00|00000000000000.00000000.0000.00.00|pmRitOff + +[STATUS8] +Command=FEFEA2E0.03.FD +ReplyLength=17 +Validate=FEFEA2E003FD.FEFEE0A2.03.0000000000.FD +Value1=11|5|vfBcdLU|1|0|pmFreq diff --git a/CATCheck/SetFrequencyDlg.Designer.cs b/CATCheck/SetFrequencyDlg.Designer.cs new file mode 100644 index 0000000..6866b5f --- /dev/null +++ b/CATCheck/SetFrequencyDlg.Designer.cs @@ -0,0 +1,88 @@ +namespace CATCheck +{ + partial class SetFrequencyDlg + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.btn_Set = new System.Windows.Forms.Button(); + this.ud_Frequency = new System.Windows.Forms.NumericUpDown(); + ((System.ComponentModel.ISupportInitialize)(this.ud_Frequency)).BeginInit(); + this.SuspendLayout(); + // + // btn_Set + // + this.btn_Set.DialogResult = System.Windows.Forms.DialogResult.OK; + this.btn_Set.Location = new System.Drawing.Point(214, 12); + this.btn_Set.Name = "btn_Set"; + this.btn_Set.Size = new System.Drawing.Size(75, 26); + this.btn_Set.TabIndex = 0; + this.btn_Set.Text = "Set"; + this.btn_Set.UseVisualStyleBackColor = true; + // + // ud_Frequency + // + this.ud_Frequency.BackColor = System.Drawing.Color.Gray; + this.ud_Frequency.Font = new System.Drawing.Font("Courier New", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.ud_Frequency.ForeColor = System.Drawing.Color.Chartreuse; + this.ud_Frequency.Increment = new decimal(new int[] { + 1000, + 0, + 0, + 0}); + this.ud_Frequency.Location = new System.Drawing.Point(12, 12); + this.ud_Frequency.Maximum = new decimal(new int[] { + 1215752192, + 23, + 0, + 0}); + this.ud_Frequency.Name = "ud_Frequency"; + this.ud_Frequency.Size = new System.Drawing.Size(192, 26); + this.ud_Frequency.TabIndex = 1; + this.ud_Frequency.ThousandsSeparator = true; + // + // SetFrequencyDlg + // + this.AcceptButton = this.btn_Set; + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(297, 53); + this.Controls.Add(this.ud_Frequency); + this.Controls.Add(this.btn_Set); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow; + this.Name = "SetFrequencyDlg"; + this.Text = "Set Frequency"; + ((System.ComponentModel.ISupportInitialize)(this.ud_Frequency)).EndInit(); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.Button btn_Set; + public System.Windows.Forms.NumericUpDown ud_Frequency; + } +} \ No newline at end of file diff --git a/CATCheck/SetFrequencyDlg.cs b/CATCheck/SetFrequencyDlg.cs new file mode 100644 index 0000000..9c77a39 --- /dev/null +++ b/CATCheck/SetFrequencyDlg.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; + +namespace CATCheck +{ + public partial class SetFrequencyDlg : Form + { + public SetFrequencyDlg() + { + InitializeComponent(); + } + } +} diff --git a/CATCheck/SetFrequencyDlg.resx b/CATCheck/SetFrequencyDlg.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/CATCheck/SetFrequencyDlg.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/CATCheck/Settings.cs b/CATCheck/Settings.cs new file mode 100644 index 0000000..76a2c2b --- /dev/null +++ b/CATCheck/Settings.cs @@ -0,0 +1,28 @@ +namespace CATCheck.Properties { + + + // Diese Klasse ermöglicht die Behandlung bestimmter Ereignisse der Einstellungsklasse: + // Das SettingChanging-Ereignis wird ausgelöst, bevor der Wert einer Einstellung geändert wird. + // Das PropertyChanged-Ereignis wird ausgelöst, nachdem der Wert einer Einstellung geändert wurde. + // Das SettingsLoaded-Ereignis wird ausgelöst, nachdem die Einstellungswerte geladen wurden. + // Das SettingsSaving-Ereignis wird ausgelöst, bevor die Einstellungswerte gespeichert werden. + internal sealed partial class Settings { + + public Settings() { + // // Heben Sie die Auskommentierung der unten angezeigten Zeilen auf, um Ereignishandler zum Speichern und Ändern von Einstellungen hinzuzufügen: + // + // this.SettingChanging += this.SettingChangingEventHandler; + // + // this.SettingsSaving += this.SettingsSavingEventHandler; + // + } + + private void SettingChangingEventHandler(object sender, System.Configuration.SettingChangingEventArgs e) { + // Fügen Sie hier Code zum Behandeln des SettingChangingEvent-Ereignisses hinzu. + } + + private void SettingsSavingEventHandler(object sender, System.ComponentModel.CancelEventArgs e) { + // Fügen Sie hier Code zum Behandeln des SettingsSaving-Ereignisses hinzu. + } + } +} diff --git a/CATCheck/app.config b/CATCheck/app.config new file mode 100644 index 0000000..6d64ed8 --- /dev/null +++ b/CATCheck/app.config @@ -0,0 +1,18 @@ + + + + +
+ + + + + + + + + llAll + + + + \ No newline at end of file diff --git a/CubicSpline/CubicSpline/CubicSpline.csproj b/CubicSpline/CubicSpline/CubicSpline.csproj index 631a1fa..93cb8d8 100644 --- a/CubicSpline/CubicSpline/CubicSpline.csproj +++ b/CubicSpline/CubicSpline/CubicSpline.csproj @@ -38,8 +38,8 @@ - - ..\..\packages\System.Data.SQLite.Core.1.0.112.0\lib\net40\System.Data.SQLite.dll + + ..\..\packages\Stub.System.Data.SQLite.Core.NetFramework.1.0.113.3\lib\net40\System.Data.SQLite.dll @@ -57,12 +57,12 @@ - + Dieses Projekt verweist auf mindestens ein NuGet-Paket, das auf diesem Computer fehlt. Verwenden Sie die Wiederherstellung von NuGet-Paketen, um die fehlenden Dateien herunterzuladen. Weitere Informationen finden Sie unter "http://go.microsoft.com/fwlink/?LinkID=322105". Die fehlende Datei ist "{0}". - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/ElevationCoverageMapper/Properties/Settings.Designer.cs b/ElevationCoverageMapper/Properties/Settings.Designer.cs new file mode 100644 index 0000000..d8d2ed5 --- /dev/null +++ b/ElevationCoverageMapper/Properties/Settings.Designer.cs @@ -0,0 +1,30 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace ElevationCoverageMapper.Properties +{ + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase + { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default + { + get + { + return defaultInstance; + } + } + } +} diff --git a/ElevationCoverageMapper/Properties/Settings.settings b/ElevationCoverageMapper/Properties/Settings.settings new file mode 100644 index 0000000..3964565 --- /dev/null +++ b/ElevationCoverageMapper/Properties/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + diff --git a/ElevationCoverageMapper/WindowsFormsControlInvoke.cs b/ElevationCoverageMapper/WindowsFormsControlInvoke.cs new file mode 100644 index 0000000..18fdc15 --- /dev/null +++ b/ElevationCoverageMapper/WindowsFormsControlInvoke.cs @@ -0,0 +1,56 @@ +using System; +using System.Collections.Generic; +using System.Globalization; +using System.Linq; +using System.Windows.Forms; + +namespace ElevationCoverageMapper +{ + /// + /// A set of methods that are much easier to use than the usual versions, since they + /// accept the standard delegate types as arguments. + /// + /// + /// Instead of using the version of that allows you to pass parameters to your + /// delegate, just capture them in a closure when using one of these. + /// + public static class WindowsFormsControlInvoke + { + /// + /// Executes the specified delegate on the thread that owns the control's underlying window handle. + /// + /// The control whose window handle the delegate should be invoked on. + /// A delegate that contains a method to be called in the control's thread context. + public static void Invoke(this Control control, Action method) + { + if (control.InvokeRequired) + { + control.Invoke(method); + } + else + { + method(); + } + } + + /// + /// Executes the specified delegate on the thread that owns the control's underlying window handle, returning a + /// value. + /// + /// The control whose window handle the delegate should be invoked on. + /// A delegate that contains a method to be called in the control's thread context and + /// that returns a value. + /// The return value from the delegate being invoked. + public static TResult Invoke(this Control control, Func method) + { + if (control.InvokeRequired) + { + return (TResult)control.Invoke(method); + } + else + { + return method(); + } + } + } +} \ No newline at end of file diff --git a/ElevationCoverageMapper/earth.tif b/ElevationCoverageMapper/earth.tif new file mode 100644 index 0000000..bd86e62 Binary files /dev/null and b/ElevationCoverageMapper/earth.tif differ diff --git a/ElevationTileGenerator/ElevationTileGenerator.csproj b/ElevationTileGenerator/ElevationTileGenerator.csproj index 2773430..e6c5645 100644 --- a/ElevationTileGenerator/ElevationTileGenerator.csproj +++ b/ElevationTileGenerator/ElevationTileGenerator.csproj @@ -15,6 +15,7 @@ + false publish\ true Disk @@ -27,7 +28,6 @@ true 0 1.0.0.%2a - false false true @@ -68,18 +68,21 @@ prompt MinimumRecommendedRules.ruleset + + + + - - False - ..\..\..\ScoutBase\DotNetZip\zip-v1.9\Debug\Ionic.Zip.dll + + ..\GreatMaps\GMap.NET.Core\bin\Debug\GMap.NET.Core.dll ..\packages\Newtonsoft.Json.12.0.3\lib\net40\Newtonsoft.Json.dll - - ..\packages\System.Data.SQLite.Core.1.0.112.0\lib\net40\System.Data.SQLite.dll + + ..\packages\Stub.System.Data.SQLite.Core.NetFramework.1.0.113.3\lib\net40\System.Data.SQLite.dll @@ -91,6 +94,12 @@ + + Form + + + CoverageDlg.cs + Form @@ -99,6 +108,9 @@ + + CoverageDlg.cs + MainDlg.cs @@ -127,6 +139,14 @@ + + {d3b0ad67-44d8-4b3d-bed9-ce1fd6de2c5a} + Zip DLL + + + {E06DEF77-F933-42FB-AFD7-DB2D0D8D6A98} + GMap.NET.WindowsForms + {ee86e933-d883-4b18-80eb-0fba55ec67c6} ScoutBase.Core @@ -152,17 +172,17 @@ - - - - Dieses Projekt verweist auf mindestens ein NuGet-Paket, das auf diesem Computer fehlt. Verwenden Sie die Wiederherstellung von NuGet-Paketen, um die fehlenden Dateien herunterzuladen. Weitere Informationen finden Sie unter "http://go.microsoft.com/fwlink/?LinkID=322105". Die fehlende Datei ist "{0}". - - - + + + + Dieses Projekt verweist auf mindestens ein NuGet-Paket, das auf diesem Computer fehlt. Verwenden Sie die Wiederherstellung von NuGet-Paketen, um die fehlenden Dateien herunterzuladen. Weitere Informationen finden Sie unter "http://go.microsoft.com/fwlink/?LinkID=322105". Die fehlende Datei ist "{0}". + + + + + + \ No newline at end of file diff --git a/HamLibSharp/bin_libs/.keep b/HamLibSharp/bin_libs/.keep new file mode 100644 index 0000000..e69de29 diff --git a/HamLibSharp/bin_libs/libhamlib.so.2.1.1 b/HamLibSharp/bin_libs/libhamlib.so.2.1.1 new file mode 100644 index 0000000..f6f9ebe Binary files /dev/null and b/HamLibSharp/bin_libs/libhamlib.so.2.1.1 differ diff --git a/HamLibSharp/bin_libs/x64/.keep b/HamLibSharp/bin_libs/x64/.keep new file mode 100644 index 0000000..e69de29 diff --git a/HamLibSharp/bin_libs/x64/libgcc_s_sjlj-1.dll b/HamLibSharp/bin_libs/x64/libgcc_s_sjlj-1.dll new file mode 100644 index 0000000..4c3d5e8 Binary files /dev/null and b/HamLibSharp/bin_libs/x64/libgcc_s_sjlj-1.dll differ diff --git a/HamLibSharp/bin_libs/x64/libhamlib-2.dll b/HamLibSharp/bin_libs/x64/libhamlib-2.dll new file mode 100644 index 0000000..af34de2 Binary files /dev/null and b/HamLibSharp/bin_libs/x64/libhamlib-2.dll differ diff --git a/HamLibSharp/bin_libs/x64/libusb-1.0.dll b/HamLibSharp/bin_libs/x64/libusb-1.0.dll new file mode 100644 index 0000000..e9bafe0 Binary files /dev/null and b/HamLibSharp/bin_libs/x64/libusb-1.0.dll differ diff --git a/HamLibSharp/bin_libs/x64/libwinpthread-1.dll b/HamLibSharp/bin_libs/x64/libwinpthread-1.dll new file mode 100644 index 0000000..acd0423 Binary files /dev/null and b/HamLibSharp/bin_libs/x64/libwinpthread-1.dll differ diff --git a/HamLibSharp/bin_libs/x86/.keep b/HamLibSharp/bin_libs/x86/.keep new file mode 100644 index 0000000..e69de29 diff --git a/HamLibSharp/bin_libs/x86/libgcc_s_sjlj-1.dll b/HamLibSharp/bin_libs/x86/libgcc_s_sjlj-1.dll new file mode 100644 index 0000000..4c3d5e8 Binary files /dev/null and b/HamLibSharp/bin_libs/x86/libgcc_s_sjlj-1.dll differ diff --git a/HamLibSharp/bin_libs/x86/libhamlib-2.dll b/HamLibSharp/bin_libs/x86/libhamlib-2.dll new file mode 100644 index 0000000..7ff9eff Binary files /dev/null and b/HamLibSharp/bin_libs/x86/libhamlib-2.dll differ diff --git a/HamLibSharp/bin_libs/x86/libusb-1.0.dll b/HamLibSharp/bin_libs/x86/libusb-1.0.dll new file mode 100644 index 0000000..a45ab47 Binary files /dev/null and b/HamLibSharp/bin_libs/x86/libusb-1.0.dll differ diff --git a/HamLibSharp/bin_libs/x86/libwinpthread-1.dll b/HamLibSharp/bin_libs/x86/libwinpthread-1.dll new file mode 100644 index 0000000..1d7f127 Binary files /dev/null and b/HamLibSharp/bin_libs/x86/libwinpthread-1.dll differ diff --git a/HamLibSharp/bin_libs_ori/.keep b/HamLibSharp/bin_libs_ori/.keep new file mode 100644 index 0000000..e69de29 diff --git a/HamLibSharp/bin_libs_ori/libhamlib.so.2.1.1 b/HamLibSharp/bin_libs_ori/libhamlib.so.2.1.1 new file mode 100644 index 0000000..f6f9ebe Binary files /dev/null and b/HamLibSharp/bin_libs_ori/libhamlib.so.2.1.1 differ diff --git a/HamLibSharp/bin_libs_ori/x64/.keep b/HamLibSharp/bin_libs_ori/x64/.keep new file mode 100644 index 0000000..e69de29 diff --git a/HamLibSharp/bin_libs_ori/x64/libgcc_s_seh-1.dll b/HamLibSharp/bin_libs_ori/x64/libgcc_s_seh-1.dll new file mode 100644 index 0000000..3ee0b6a Binary files /dev/null and b/HamLibSharp/bin_libs_ori/x64/libgcc_s_seh-1.dll differ diff --git a/HamLibSharp/bin_libs_ori/x64/libhamlib-2.dll b/HamLibSharp/bin_libs_ori/x64/libhamlib-2.dll new file mode 100644 index 0000000..14332f6 Binary files /dev/null and b/HamLibSharp/bin_libs_ori/x64/libhamlib-2.dll differ diff --git a/HamLibSharp/bin_libs_ori/x64/libusb-1.0.dll b/HamLibSharp/bin_libs_ori/x64/libusb-1.0.dll new file mode 100644 index 0000000..1330ae4 Binary files /dev/null and b/HamLibSharp/bin_libs_ori/x64/libusb-1.0.dll differ diff --git a/HamLibSharp/bin_libs_ori/x64/libwinpthread-1.dll b/HamLibSharp/bin_libs_ori/x64/libwinpthread-1.dll new file mode 100644 index 0000000..d3f16e6 Binary files /dev/null and b/HamLibSharp/bin_libs_ori/x64/libwinpthread-1.dll differ diff --git a/HamLibSharp/bin_libs_ori/x86/.keep b/HamLibSharp/bin_libs_ori/x86/.keep new file mode 100644 index 0000000..e69de29 diff --git a/HamLibSharp/bin_libs_ori/x86/libgcc_s_sjlj-1.dll b/HamLibSharp/bin_libs_ori/x86/libgcc_s_sjlj-1.dll new file mode 100644 index 0000000..26edd0d Binary files /dev/null and b/HamLibSharp/bin_libs_ori/x86/libgcc_s_sjlj-1.dll differ diff --git a/HamLibSharp/bin_libs_ori/x86/libhamlib-2.dll b/HamLibSharp/bin_libs_ori/x86/libhamlib-2.dll new file mode 100644 index 0000000..199be36 Binary files /dev/null and b/HamLibSharp/bin_libs_ori/x86/libhamlib-2.dll differ diff --git a/HamLibSharp/bin_libs_ori/x86/libusb-1.0.dll b/HamLibSharp/bin_libs_ori/x86/libusb-1.0.dll new file mode 100644 index 0000000..a2e99dd Binary files /dev/null and b/HamLibSharp/bin_libs_ori/x86/libusb-1.0.dll differ diff --git a/HamLibSharp/bin_libs_ori/x86/libusb0.dll b/HamLibSharp/bin_libs_ori/x86/libusb0.dll new file mode 100644 index 0000000..2710e96 Binary files /dev/null and b/HamLibSharp/bin_libs_ori/x86/libusb0.dll differ diff --git a/HamLibSharp/bin_libs_ori/x86/libwinpthread-1.dll b/HamLibSharp/bin_libs_ori/x86/libwinpthread-1.dll new file mode 100644 index 0000000..c87ca83 Binary files /dev/null and b/HamLibSharp/bin_libs_ori/x86/libwinpthread-1.dll differ diff --git a/HamLibSharp/hamlib-4.1.tar.gz b/HamLibSharp/hamlib-4.1.tar.gz new file mode 100644 index 0000000..7cb3819 Binary files /dev/null and b/HamLibSharp/hamlib-4.1.tar.gz differ diff --git a/HamLibSharp/hamlib-w32-4.1.zip b/HamLibSharp/hamlib-w32-4.1.zip new file mode 100644 index 0000000..e7295a6 Binary files /dev/null and b/HamLibSharp/hamlib-w32-4.1.zip differ diff --git a/HamLibSharp/hamlib-w64-4.1.zip b/HamLibSharp/hamlib-w64-4.1.zip new file mode 100644 index 0000000..908e57e Binary files /dev/null and b/HamLibSharp/hamlib-w64-4.1.zip differ diff --git a/HamLibSharp/x64/ChannelCapability64.cs b/HamLibSharp/x64/ChannelCapability64.cs new file mode 100644 index 0000000..f6ad8aa --- /dev/null +++ b/HamLibSharp/x64/ChannelCapability64.cs @@ -0,0 +1,97 @@ +// +// ChannelCapability64.cs +// +// Author: +// Jae Stutzman +// +// Copyright (c) 2016 Jae Stutzman +// +// This library is free software; you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as +// published by the Free Software Foundation; either version 2.1 of the +// License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +using System; +using System.Runtime.InteropServices; + +namespace HamLibSharp.x64 +{ + [StructLayout (LayoutKind.Sequential)] + internal struct ChannelCapability64: IChannelCapability + { + private short raw0; + + // Bank number + public bool BankNumber { get { return ((byte)((raw0 >> 0) & 0x01)) != 0; } } + // VFO + public bool Vfo{ get { return ((byte)((raw0 >> 1) & 0x01)) != 0; } } + // Selected antenna + public bool Antenna{ get { return ((byte)((raw0 >> 2) & 0x01)) != 0; } } + // Receive frequency + public bool RXFrequency{ get { return ((byte)((raw0 >> 3) & 0x01)) != 0; } } + // Receive mode + public bool RXMode{ get { return ((byte)((raw0 >> 4) & 0x01)) != 0; } } + // Receive passband width associated with mode + public bool RXWidth{ get { return ((byte)((raw0 >> 5) & 0x01)) != 0; } } + // Transmit frequency + public bool TXFrequency{ get { return ((byte)((raw0 >> 6) & 0x01)) != 0; } } + // Transmit mode + public bool TXMode{ get { return ((byte)((raw0 >> 7) & 0x01)) != 0; } } + // Transmit passband width associated with mode + + public bool TXWidth{ get { return ((byte)((raw0 >> 8) & 0x01)) != 0; } } + // Split mode + public bool Split{ get { return ((byte)((raw0 >> 9) & 0x01)) != 0; } } + // Split transmit VFO + public bool TXVfo{ get { return ((byte)((raw0 >> 10) & 0x01)) != 0; } } + // Repeater shift + public bool RepeaterShift{ get { return ((byte)((raw0 >> 11) & 0x01)) != 0; } } + // Repeater offset + public bool RepeaterOffset{ get { return ((byte)((raw0 >> 12) & 0x01)) != 0; } } + // Tuning step + public bool TuningStep{ get { return ((byte)((raw0 >> 13) & 0x01)) != 0; } } + // RIT + public bool Rit{ get { return ((byte)((raw0 >> 14) & 0x01)) != 0; } } + // XIT + public bool Xit{ get { return ((byte)((raw0 >> 15) & 0x01)) != 0; } } + + // Function status + ulong funcs; + // Level values + ulong levels; + + public uint Functions { get { return (uint)funcs; } } + + public uint Levels { get { return (uint)levels; } } + + + private short raw2; + + // CTCSS tone + public bool CtcssTone { get { return ((byte)((raw2 >> 0) & 0x01)) != 0; } } + // CTCSS squelch tone + public bool CtcssSquelch{ get { return ((byte)((raw2 >> 1) & 0x01)) != 0; } } + // DCS code + public bool DcsCode{ get { return ((byte)((raw2 >> 2) & 0x01)) != 0; } } + // DCS squelch code + public bool DcsSquelch{ get { return ((byte)((raw2 >> 3) & 0x01)) != 0; } } + // Scan group + public bool ScanGroup{ get { return ((byte)((raw2 >> 4) & 0x01)) != 0; } } + // Channel flags + public bool ChannelFlags{ get { return ((byte)((raw2 >> 5) & 0x01)) != 0; } } + // Name + public bool ChannelName{ get { return ((byte)((raw2 >> 6) & 0x01)) != 0; } } + // Extension level value list + public bool ExtensionLevels{ get { return ((byte)((raw2 >> 7) & 0x01)) != 0; } } + } +} + diff --git a/HamLibSharp/x64/ChannelList64.cs b/HamLibSharp/x64/ChannelList64.cs new file mode 100644 index 0000000..748b904 --- /dev/null +++ b/HamLibSharp/x64/ChannelList64.cs @@ -0,0 +1,50 @@ +// +// ChannelList64.cs +// +// Author: +// Jae Stutzman +// +// Copyright (c) 2016 Jae Stutzman +// +// This library is free software; you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as +// published by the Free Software Foundation; either version 2.1 of the +// License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +using System; +using System.Runtime.InteropServices; + +namespace HamLibSharp.x64 +{ + [StructLayout (LayoutKind.Sequential)] + internal struct ChannelList64 : IChannelList + { + public int Start { get { return start; } } + + public int End { get { return end; } } + + public RigMemoryChannel Type { get { return type; } } + + public IChannelCapability MemCaps { get { return mem_caps; } } + + // Starting memory channel \b number + int start; + // Ending memory channel \b number + int end; + // Memory type. see chan_type_t + RigMemoryChannel type; + // Definition of attributes that can be stored/retrieved + ChannelCapability64 mem_caps; + }; + +} + diff --git a/HamLibSharp/x64/ConfigurationParameter64.cs b/HamLibSharp/x64/ConfigurationParameter64.cs new file mode 100644 index 0000000..d3494f2 --- /dev/null +++ b/HamLibSharp/x64/ConfigurationParameter64.cs @@ -0,0 +1,76 @@ +// +// ConfigurationParameter64.cs +// +// Author: +// Jae Stutzman +// +// Copyright (c) 2016 Jae Stutzman +// +// This library is free software; you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as +// published by the Free Software Foundation; either version 2.1 of the +// License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +using System; +using System.Runtime.InteropServices; + +namespace HamLibSharp.x64 +{ + /// Configuration parameter structure. + [StructLayout (LayoutKind.Sequential, CharSet = CharSet.Ansi)] + internal class ConfigurationParameter64 : IConfigurationParameter + { + public int Token { get { return (int)token; } } + + public string Name { get { return name; } } + + public string Label { get { return label; } } + + public string Tooltip { get { return tooltip; } } + + public string Default { get { return dflt; } } + + public float Min { get { return min; } } + + public float Max { get { return max; } } + + public float Step { get { return step; } } + + /*!< Conf param token ID */ + long token; + /*!< Param name, no spaces allowed */ + [MarshalAs (UnmanagedType.LPStr)] + string name; + /*!< Human readable label */ + [MarshalAs (UnmanagedType.LPStr)] + string label; + /*!< Hint on the parameter */ + [MarshalAs (UnmanagedType.LPStr)] + string tooltip; + /*!< Default value */ + [MarshalAs (UnmanagedType.LPStr)] + string dflt; + /*!< Type of the parameter */ + RigConf type; + /*!< */ + //[MarshalAs (UnmanagedType.Struct)] + //paramU u; + /*!< Minimum value */ + float min; + /*!< Maximum value */ + float max; + /*!< Step */ + float step; + /*!< Numeric type */ + } +} + diff --git a/HamLibSharp/x64/ModeValue64.cs b/HamLibSharp/x64/ModeValue64.cs new file mode 100644 index 0000000..880c4f7 --- /dev/null +++ b/HamLibSharp/x64/ModeValue64.cs @@ -0,0 +1,43 @@ +// +// ModeValue64.cs +// +// Author: +// Jae Stutzman +// +// Copyright (c) 2016 Jae Stutzman +// +// This library is free software; you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as +// published by the Free Software Foundation; either version 2.1 of the +// License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +using System; +using System.Runtime.InteropServices; + +namespace HamLibSharp.x64 +{ + [StructLayout (LayoutKind.Sequential)] + internal struct ModeValue64 : IModeValue + { + public RigMode Modes { get { return modes; } } + + public int Value { get { return (int)val; } } + + public const int Any = 0; + + // Bit field of RIG_MODE's + RigMode modes; + // val + long val; + } +} + diff --git a/HamLibSharp/x64/NativeRig64.cs b/HamLibSharp/x64/NativeRig64.cs new file mode 100644 index 0000000..be82e83 --- /dev/null +++ b/HamLibSharp/x64/NativeRig64.cs @@ -0,0 +1,50 @@ +// +// NativeRig64.cs +// +// Author: +// Jae Stutzman +// +// Copyright (c) 2016 Jae Stutzman +// +// This library is free software; you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as +// published by the Free Software Foundation; either version 2.1 of the +// License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +using System; +using System.Runtime.InteropServices; + +namespace HamLibSharp.x64 +{ + [StructLayout (LayoutKind.Sequential)] + internal class NativeRig64 : INativeRig + { + /// + /// Pointer to rig capabilities (read only) + /// + public IntPtr caps; + /// + /// Rig state + /// + [MarshalAs (UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = 1)] + public RigStateNative64 state; + /// + /// Registered event callbacks + /// + public IntPtr callbacks; + + public IntPtr Caps { get { return caps; } } + public IRigStateNative State { get { return state; } } + public IntPtr Callbacks { get { return callbacks; } } + }; +} + diff --git a/HamLibSharp/x64/NativeRig64v2.cs b/HamLibSharp/x64/NativeRig64v2.cs new file mode 100644 index 0000000..2bb99b1 --- /dev/null +++ b/HamLibSharp/x64/NativeRig64v2.cs @@ -0,0 +1,50 @@ +// +// NativeRig64v2.cs +// +// Author: +// Jae Stutzman +// +// Copyright (c) 2016 Jae Stutzman +// +// This library is free software; you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as +// published by the Free Software Foundation; either version 2.1 of the +// License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +using System; +using System.Runtime.InteropServices; + +namespace HamLibSharp.x64 +{ + [StructLayout (LayoutKind.Sequential)] + internal class NativeRig64v2 : INativeRig + { + /// + /// Pointer to rig capabilities (read only) + /// + public IntPtr caps; + /// + /// Rig state + /// + [MarshalAs (UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = 1)] + public RigStateNative64v2 state; + /// + /// Registered event callbacks + /// + public IntPtr callbacks; + + public IntPtr Caps { get { return caps; } } + public IRigStateNative State { get { return state; } } + public IntPtr Callbacks { get { return callbacks; } } + }; +} + diff --git a/HamLibSharp/x64/RigCapsNative64.cs b/HamLibSharp/x64/RigCapsNative64.cs new file mode 100644 index 0000000..0d4bd98 --- /dev/null +++ b/HamLibSharp/x64/RigCapsNative64.cs @@ -0,0 +1,454 @@ +// +// RigCapsNative64.cs +// +// Author: +// Jae Stutzman +// +// Copyright (c) 2016 Jae Stutzman +// +// This library is free software; you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as +// published by the Free Software Foundation; either version 2.1 of the +// License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +using System; +using System.Collections.Generic; +using System.Runtime.InteropServices; + +namespace HamLibSharp.x64 +{ + /// + /// This class holds the caps values and uses the C type "long" as 64-bit. + /// This is used for 64-bit architectures (except for Windows 64) + /// + [StructLayout (LayoutKind.Sequential, CharSet = CharSet.Ansi)] + internal class RigCapsNative64 : IRigCapsNative + { + // max mode/filter list size, zero ended + // NOTE: This was changed from 42 to 60 in version 3.0.1 + internal const int FLTLSTSIZ = 60; + + // Rig model + internal int rig_model; + //rig_model_t + + // Model name. + [MarshalAs (UnmanagedType.LPStr)] + internal string model_name; + + // Manufacturer. + [MarshalAs (UnmanagedType.LPStr)] + internal string mfg_name; + + // Driver version. + [MarshalAs (UnmanagedType.LPStr)] + internal string version; + + // Copyright info. + [MarshalAs (UnmanagedType.LPStr)] + internal string copyright; + + // Driver status. + internal RigBackendStatus status; + + // Rig type. + internal RigType rig_type; + // Type of the PTT port. + internal PttType ptt_type; + // Type of the DCD port. + internal RigDcd dcd_type; + // Type of communication port. + internal RigPort port_type; + + // Minimum serial speed. + internal int serial_rate_min; + // Maximum serial speed. + internal int serial_rate_max; + // Number of data bits. + internal int serial_data_bits; + // Number of stop bits. + internal int serial_stop_bits; + + // Parity. + internal RigSerialParity serial_parity; + // Handshake. + internal RigSerialHandshake serial_handshake; + + // Delay between each byte sent out, in mS + internal int write_delay; + // Delay between each commands send out, in mS + internal int post_write_delay; + // Timeout, in mS + internal int timeout; + + // Maximum number of retries if command fails, 0 to disable + internal int retry; + + // List of get functions + internal ulong has_get_func; + // List of set functions + internal ulong has_set_func; + // List of get level + internal ulong has_get_level; + // List of set level + internal ulong has_set_level; + // List of get parm + internal ulong has_get_parm; + // List of set parm + internal ulong has_set_parm; + + // level granularity (i.e. steps) + [MarshalAs (UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = Rig.RIG_SETTING_MAX)] + internal Granularity[] level_gran; + + // parm granularity (i.e. steps) + [MarshalAs (UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = Rig.RIG_SETTING_MAX)] + internal Granularity[] parm_gran; + + // Extension parm list, \sa ext.c + + //[MarshalAs (UnmanagedType.Struct)] + internal IntPtr extparms; + // Extension level list, \sa ext.c + //[MarshalAs (UnmanagedType.Struct)] + internal IntPtr extlevels; + + // CTCSS tones list, zero ended + internal IntPtr ctcss_list; + // DCS code list, zero ended + internal IntPtr dcs_list; + + // Preamp list in dB, 0 terminated + [MarshalAs (UnmanagedType.ByValArray, SizeConst = Rig.MAXDBLSTSIZ)] + internal int[] preamp; + + // Preamp list in dB, 0 terminated + [MarshalAs (UnmanagedType.ByValArray, SizeConst = Rig.MAXDBLSTSIZ)] + internal int[] attenuator; + + // max absolute RIT + internal long max_rit; + // max absolute XIT + internal long max_xit; + // max absolute IF-SHIFT + internal long max_ifshift; + + // Announces bit field list + internal RigAnnounce announces; + + // VFO op bit field list + internal RigVfoOperation vfo_ops; + // Scan bit field list + internal RigScanOperation scan_ops; + // Bit field list of direct VFO access commands + internal int targetable_vfo; + // Supported transceive mode + internal RigTransceive transceive; + + // Number of banks + internal int bank_qty; + // Max length of memory channel name + internal int chan_desc_sz; + + // Channel list, zero ended + [MarshalAs (UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = Rig.CHANLSTSIZ)] + internal ChannelList64[] chan_list; + + // Receive frequency range list for ITU region 1 + [MarshalAs (UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = Rig.FRQRANGESIZ)] + internal FrequencyRange[] rx_range_list1; + + // Transmit frequency range list for ITU region 1 + [MarshalAs (UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = Rig.FRQRANGESIZ)] + internal FrequencyRange[] tx_range_list1; + + // Receive frequency range list for ITU region 2 + [MarshalAs (UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = Rig.FRQRANGESIZ)] + internal FrequencyRange[] rx_range_list2; + + // Transmit frequency range list for ITU region 2 + [MarshalAs (UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = Rig.FRQRANGESIZ)] + internal FrequencyRange[] tx_range_list2; + + // Tuning step list + [MarshalAs (UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = Rig.TSLSTSIZ)] + internal ModeValue64[] tuning_steps; + + // mode/filter table, at -6dB + [MarshalAs (UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = FLTLSTSIZ)] + internal ModeValue64[] filters_list; + + // S-meter calibration table + internal CalibrationTable str_cal; + + // Configuration parametres. + internal IntPtr cfgparams; + // Private data. + internal IntPtr priv; + + // function pointers to API functions, if IntPtr.Zero, the function is not available + internal IntPtr rig_init; + internal IntPtr rig_cleanup; + internal IntPtr rig_open; + internal IntPtr rig_close; + + internal IntPtr set_freq; + internal IntPtr get_freq; + + internal IntPtr set_mode; + internal IntPtr get_mode; + + internal IntPtr set_vfo; + internal IntPtr get_vfo; + + internal IntPtr set_ptt; + internal IntPtr get_ptt; + internal IntPtr get_dcd; + + internal IntPtr set_rptr_shift; + internal IntPtr get_rptr_shift; + + internal IntPtr set_rptr_offs; + internal IntPtr get_rptr_offs; + + internal IntPtr set_split_freq; + internal IntPtr get_split_freq; + internal IntPtr set_split_mode; + internal IntPtr get_split_mode; + internal IntPtr set_split_freq_mode; + internal IntPtr get_split_freq_mode; + + internal IntPtr set_split_vfo; + internal IntPtr get_split_vfo; + + internal IntPtr set_rit; + internal IntPtr get_rit; + internal IntPtr set_xit; + internal IntPtr get_xit; + + internal IntPtr set_ts; + internal IntPtr get_ts; + + internal IntPtr set_dcs_code; + internal IntPtr get_dcs_code; + internal IntPtr set_tone; + internal IntPtr get_tone; + internal IntPtr set_ctcss_tone; + internal IntPtr get_ctcss_tone; + + internal IntPtr set_dcs_sql; + internal IntPtr get_dcs_sql; + internal IntPtr set_tone_sql; + internal IntPtr get_tone_sql; + internal IntPtr set_ctcss_sql; + internal IntPtr get_ctcss_sql; + + internal IntPtr power2mW; + internal IntPtr mW2power; + + internal IntPtr set_powerstat; + internal IntPtr get_powerstat; + internal IntPtr reset; + + internal IntPtr set_ant; + internal IntPtr get_ant; + + internal IntPtr set_level; + internal IntPtr get_level; + + internal IntPtr set_func; + internal IntPtr get_func; + + internal IntPtr set_parm; + internal IntPtr get_parm; + + internal IntPtr set_ext_level; + internal IntPtr get_ext_level; + + internal IntPtr set_ext_parm; + internal IntPtr get_ext_parm; + + internal IntPtr set_conf; + internal IntPtr get_conf; + + internal IntPtr send_dtmf; + internal IntPtr recv_dtmf; + internal IntPtr send_morse; + + internal IntPtr set_bank; + internal IntPtr set_mem; + internal IntPtr get_mem; + internal IntPtr vfo_op; + internal IntPtr scan; + + internal IntPtr set_trn; + internal IntPtr get_trn; + + internal IntPtr decode_event; + + internal IntPtr set_channel; + internal IntPtr get_channel; + + internal IntPtr get_info; + + internal IntPtr set_chan_all_cb; + internal IntPtr get_chan_all_cb; + + internal IntPtr set_mem_all_cb; + internal IntPtr get_mem_all_cb; + + //[MarshalAs (UnmanagedType.LPStr)] + internal IntPtr clone_combo_set; + + //[MarshalAs (UnmanagedType.LPStr)] + internal IntPtr clone_combo_get; + + // Getter Properties to implement the interface + public int Rig_model { get { return rig_model; } } + public string Model_name { get { return model_name; } } + public string Mfg_name { get { return mfg_name; } } + public string Version { get { return version; } } + public string Copyright { get { return copyright; } } + public RigBackendStatus Status { get { return status; } } + public RigType Rig_type { get { return rig_type; } } + public PttType Ptt_type { get { return ptt_type; } } + public RigDcd Dcd_type { get { return dcd_type; } } + public RigPort Port_type { get { return port_type; } } + public int Serial_rate_min { get { return serial_rate_min; } } + public int Serial_rate_max { get { return serial_rate_max; } } + public int Serial_data_bits { get { return serial_data_bits; } } + public int Serial_stop_bits { get { return serial_stop_bits; } } + public RigSerialParity Serial_parity { get { return serial_parity; } } + public RigSerialHandshake Serial_handshake { get { return serial_handshake; } } + public int Write_delay { get { return write_delay; } } + public int Post_write_delay { get { return post_write_delay; } } + public int Timeout { get { return timeout; } } + public int Retry { get { return retry; } } + public uint Has_get_func { get { return (uint)has_get_func; } } + public uint Has_set_func { get { return (uint)has_set_func; } } + public uint Has_get_level { get { return (uint)has_get_level; } } + public uint Has_set_level { get { return (uint)has_set_level; } } + public uint Has_get_parm { get { return (uint)has_get_parm; } } + public uint Has_set_parm { get { return (uint)has_set_parm; } } + public Granularity[] Level_gran { get { return level_gran; } } + public Granularity[] Parm_gran { get { return parm_gran; } } + public IntPtr Extparms { get { return extparms; } } + public IntPtr Extlevels { get { return extlevels; } } + public IntPtr Ctcss_list { get { return ctcss_list; } } + public IntPtr Dcs_list { get { return dcs_list; } } + public int[] Preamp { get { return preamp; } } + public int[] Attenuator { get { return attenuator; } } + public int Max_rit { get { return (int)max_rit; } } + public int Max_xit { get { return (int)max_xit; } } + public int Max_ifshift { get { return (int)max_ifshift; } } + public RigAnnounce Announces { get { return announces; } } + public RigVfoOperation Vfo_ops { get { return vfo_ops; } } + public RigScanOperation Scan_ops { get { return scan_ops; } } + public int Targetable_vfo { get { return Targetable_vfo1; } } + public int Targetable_vfo1 { get { return targetable_vfo; } } + public RigTransceive Transceive { get { return transceive; } } + public int Bank_qty { get { return bank_qty; } } + public int Chan_desc_sz { get { return chan_desc_sz; } } + public IList Chan_list { get { return chan_list.CastList(); } } + public FrequencyRange[] Rx_range_list1 { get { return rx_range_list1; } } + public FrequencyRange[] Tx_range_list1 { get { return tx_range_list1; } } + public FrequencyRange[] Rx_range_list2 { get { return rx_range_list2; } } + public FrequencyRange[] Tx_range_list2 { get { return tx_range_list2; } } + public IList Tuning_steps { get { return tuning_steps.CastList(); } } + public IList Filters_list { get { return filters_list.CastList(); } } + public CalibrationTable Str_cal { get { return str_cal; } } + public IntPtr Cfgparams { get { return cfgparams; } } + public IntPtr Priv { get { return priv; } } + public IntPtr Rig_init { get { return rig_init; } } + public IntPtr Rig_cleanup { get { return rig_cleanup; } } + public IntPtr Rig_open { get { return rig_open; } } + public IntPtr Rig_close { get { return rig_close; } } + public IntPtr Set_freq { get { return set_freq; } } + public IntPtr Get_freq { get { return get_freq; } } + public IntPtr Set_mode { get { return set_mode; } } + public IntPtr Get_mode { get { return get_mode; } } + public IntPtr Set_vfo { get { return set_vfo; } } + public IntPtr Get_vfo { get { return get_vfo; } } + public IntPtr Set_ptt { get { return set_ptt; } } + public IntPtr Get_ptt { get { return get_ptt; } } + public IntPtr Get_dcd { get { return get_dcd; } } + public IntPtr Set_rptr_shift { get { return set_rptr_shift; } } + public IntPtr Get_rptr_shift { get { return get_rptr_shift; } } + public IntPtr Set_rptr_offs { get { return set_rptr_offs; } } + public IntPtr Get_rptr_offs { get { return get_rptr_offs; } } + public IntPtr Set_split_freq { get { return set_split_freq; } } + public IntPtr Get_split_freq { get { return get_split_freq; } } + public IntPtr Set_split_mode { get { return set_split_mode; } } + public IntPtr Get_split_mode { get { return get_split_mode; } } + public IntPtr Set_split_freq_mode { get { return set_split_freq_mode; } } + public IntPtr Get_split_freq_mode { get { return get_split_freq_mode; } } + public IntPtr Set_split_vfo { get { return set_split_vfo; } } + public IntPtr Get_split_vfo { get { return get_split_vfo; } } + public IntPtr Set_rit { get { return set_rit; } } + public IntPtr Get_rit { get { return get_rit; } } + public IntPtr Set_xit { get { return set_xit; } } + public IntPtr Get_xit { get { return get_xit; } } + public IntPtr Set_ts { get { return set_ts; } } + public IntPtr Get_ts { get { return get_ts; } } + public IntPtr Set_dcs_code { get { return set_dcs_code; } } + public IntPtr Get_dcs_code { get { return get_dcs_code; } } + public IntPtr Set_tone { get { return set_tone; } } + public IntPtr Get_tone { get { return get_tone; } } + public IntPtr Set_ctcss_tone { get { return set_ctcss_tone; } } + public IntPtr Get_ctcss_tone { get { return get_ctcss_tone; } } + public IntPtr Set_dcs_sql { get { return set_dcs_sql; } } + public IntPtr Get_dcs_sql { get { return get_dcs_sql; } } + public IntPtr Set_tone_sql { get { return set_tone_sql; } } + public IntPtr Get_tone_sql { get { return get_tone_sql; } } + public IntPtr Set_ctcss_sql { get { return set_ctcss_sql; } } + public IntPtr Get_ctcss_sql { get { return get_ctcss_sql; } } + public IntPtr Power2mW { get { return power2mW; } } + public IntPtr MW2power { get { return mW2power; } } + public IntPtr Set_powerstat { get { return set_powerstat; } } + public IntPtr Get_powerstat { get { return get_powerstat; } } + public IntPtr Reset { get { return reset; } } + public IntPtr Set_ant { get { return set_ant; } } + public IntPtr Get_ant { get { return get_ant; } } + public IntPtr Set_level { get { return set_level; } } + public IntPtr Get_level { get { return get_level; } } + public IntPtr Set_func { get { return set_func; } } + public IntPtr Get_func { get { return get_func; } } + public IntPtr Set_parm { get { return set_parm; } } + public IntPtr Get_parm { get { return get_parm; } } + public IntPtr Set_ext_level { get { return set_ext_level; } } + public IntPtr Get_ext_level { get { return get_ext_level; } } + public IntPtr Set_ext_parm { get { return set_ext_parm; } } + public IntPtr Get_ext_parm { get { return get_ext_parm; } } + public IntPtr Set_conf { get { return set_conf; } } + public IntPtr Get_conf { get { return get_conf; } } + public IntPtr Send_dtmf { get { return send_dtmf; } } + public IntPtr Recv_dtmf { get { return recv_dtmf; } } + public IntPtr Send_morse { get { return send_morse; } } + public IntPtr Set_bank { get { return set_bank; } } + public IntPtr Set_mem { get { return set_mem; } } + public IntPtr Get_mem { get { return get_mem; } } + public IntPtr Vfo_op { get { return vfo_op; } } + public IntPtr Scan { get { return scan; } } + public IntPtr Set_trn { get { return set_trn; } } + public IntPtr Get_trn { get { return get_trn; } } + public IntPtr Decode_event { get { return decode_event; } } + public IntPtr Set_channel { get { return set_channel; } } + public IntPtr Get_channel { get { return get_channel; } } + public IntPtr Get_info { get { return get_info; } } + public IntPtr Set_chan_all_cb { get { return set_chan_all_cb; } } + public IntPtr Get_chan_all_cb { get { return get_chan_all_cb; } } + public IntPtr Set_mem_all_cb { get { return set_mem_all_cb; } } + public IntPtr Get_mem_all_cb { get { return get_mem_all_cb; } } + public IntPtr Clone_combo_set { get { return clone_combo_set; } } + public IntPtr Clone_combo_get { get { return clone_combo_get; } } + } +} diff --git a/HamLibSharp/x64/RigCapsNative64v2.cs b/HamLibSharp/x64/RigCapsNative64v2.cs new file mode 100644 index 0000000..32ef0d4 --- /dev/null +++ b/HamLibSharp/x64/RigCapsNative64v2.cs @@ -0,0 +1,456 @@ +// +// RigCapsNative64v2.cs +// +// Author: +// Jae Stutzman +// +// Copyright (c) 2016 Jae Stutzman +// +// This library is free software; you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as +// published by the Free Software Foundation; either version 2.1 of the +// License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +using System; +using System.Collections.Generic; +using System.Runtime.InteropServices; + +namespace HamLibSharp.x64 +{ + /// + /// This class holds the caps values and uses the C type "long" as 64-bit. + /// This is used for 64-bit architectures (except for Windows 64) + /// + [StructLayout (LayoutKind.Sequential, CharSet = CharSet.Ansi)] + internal class RigCapsNative64v2 : IRigCapsNative + { + // max mode/filter list size, zero ended + // NOTE: This was changed from 42 to 60 in version 3.0.1 + internal const int FLTLSTSIZ = 42; + + // Rig model + internal int rig_model; + //rig_model_t + + // Model name. + [MarshalAs (UnmanagedType.LPStr)] + internal string model_name; + + // Manufacturer. + [MarshalAs (UnmanagedType.LPStr)] + internal string mfg_name; + + // Driver version. + [MarshalAs (UnmanagedType.LPStr)] + internal string version; + + // Copyright info. + [MarshalAs (UnmanagedType.LPStr)] + internal string copyright; + + // Driver status. + internal RigBackendStatus status; + + // Rig type. + internal RigType rig_type; + // Type of the PTT port. + internal PttType ptt_type; + // Type of the DCD port. + internal RigDcd dcd_type; + // Type of communication port. + internal RigPort port_type; + + // Minimum serial speed. + internal int serial_rate_min; + // Maximum serial speed. + internal int serial_rate_max; + // Number of data bits. + internal int serial_data_bits; + // Number of stop bits. + internal int serial_stop_bits; + + // Parity. + internal RigSerialParity serial_parity; + // Handshake. + internal RigSerialHandshake serial_handshake; + + // Delay between each byte sent out, in mS + internal int write_delay; + // Delay between each commands send out, in mS + internal int post_write_delay; + // Timeout, in mS + internal int timeout; + + // Maximum number of retries if command fails, 0 to disable + internal int retry; + + // List of get functions + internal ulong has_get_func; + // List of set functions + internal ulong has_set_func; + // List of get level + internal ulong has_get_level; + // List of set level + internal ulong has_set_level; + // List of get parm + internal ulong has_get_parm; + // List of set parm + internal ulong has_set_parm; + + // level granularity (i.e. steps) + [MarshalAs (UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = Rig.RIG_SETTING_MAX)] + internal Granularity[] level_gran; + + // parm granularity (i.e. steps) + [MarshalAs (UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = Rig.RIG_SETTING_MAX)] + internal Granularity[] parm_gran; + + // Extension parm list, \sa ext.c + + //[MarshalAs (UnmanagedType.Struct)] + internal IntPtr extparms; + // Extension level list, \sa ext.c + //[MarshalAs (UnmanagedType.Struct)] + internal IntPtr extlevels; + + // CTCSS tones list, zero ended + internal IntPtr ctcss_list; + // DCS code list, zero ended + internal IntPtr dcs_list; + + // Preamp list in dB, 0 terminated + [MarshalAs (UnmanagedType.ByValArray, SizeConst = Rig.MAXDBLSTSIZ)] + internal int[] preamp; + + // Preamp list in dB, 0 terminated + [MarshalAs (UnmanagedType.ByValArray, SizeConst = Rig.MAXDBLSTSIZ)] + internal int[] attenuator; + + // max absolute RIT + internal long max_rit; + // max absolute XIT + internal long max_xit; + // max absolute IF-SHIFT + internal long max_ifshift; + + // Announces bit field list + internal RigAnnounce announces; + + // VFO op bit field list + internal RigVfoOperation vfo_ops; + // Scan bit field list + internal RigScanOperation scan_ops; + // Bit field list of direct VFO access commands + internal int targetable_vfo; + // Supported transceive mode + internal RigTransceive transceive; + + // Number of banks + internal int bank_qty; + // Max length of memory channel name + internal int chan_desc_sz; + + // Channel list, zero ended + [MarshalAs (UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = Rig.CHANLSTSIZ)] + internal ChannelList64[] chan_list; + + // Receive frequency range list for ITU region 1 + [MarshalAs (UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = Rig.FRQRANGESIZ)] + internal FrequencyRange[] rx_range_list1; + + // Transmit frequency range list for ITU region 1 + [MarshalAs (UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = Rig.FRQRANGESIZ)] + internal FrequencyRange[] tx_range_list1; + + // Receive frequency range list for ITU region 2 + [MarshalAs (UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = Rig.FRQRANGESIZ)] + internal FrequencyRange[] rx_range_list2; + + // Transmit frequency range list for ITU region 2 + [MarshalAs (UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = Rig.FRQRANGESIZ)] + internal FrequencyRange[] tx_range_list2; + + // Tuning step list + [MarshalAs (UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = Rig.TSLSTSIZ)] + internal ModeValue64[] tuning_steps; + + // mode/filter table, at -6dB + [MarshalAs (UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = FLTLSTSIZ)] + internal ModeValue64[] filters_list; + + // S-meter calibration table + internal CalibrationTable str_cal; + + // Configuration parametres. + internal IntPtr cfgparams; + // Private data. + internal IntPtr priv; + + // function pointers to API functions, if IntPtr.Zero, the function is not available + internal IntPtr rig_init; + internal IntPtr rig_cleanup; + internal IntPtr rig_open; + internal IntPtr rig_close; + + internal IntPtr set_freq; + internal IntPtr get_freq; + + internal IntPtr set_mode; + internal IntPtr get_mode; + + internal IntPtr set_vfo; + internal IntPtr get_vfo; + + internal IntPtr set_ptt; + internal IntPtr get_ptt; + internal IntPtr get_dcd; + + internal IntPtr set_rptr_shift; + internal IntPtr get_rptr_shift; + + internal IntPtr set_rptr_offs; + internal IntPtr get_rptr_offs; + + internal IntPtr set_split_freq; + internal IntPtr get_split_freq; + internal IntPtr set_split_mode; + internal IntPtr get_split_mode; + + // This was added in 3.1 + //internal IntPtr set_split_freq_mode; + //internal IntPtr get_split_freq_mode; + + internal IntPtr set_split_vfo; + internal IntPtr get_split_vfo; + + internal IntPtr set_rit; + internal IntPtr get_rit; + internal IntPtr set_xit; + internal IntPtr get_xit; + + internal IntPtr set_ts; + internal IntPtr get_ts; + + internal IntPtr set_dcs_code; + internal IntPtr get_dcs_code; + internal IntPtr set_tone; + internal IntPtr get_tone; + internal IntPtr set_ctcss_tone; + internal IntPtr get_ctcss_tone; + + internal IntPtr set_dcs_sql; + internal IntPtr get_dcs_sql; + internal IntPtr set_tone_sql; + internal IntPtr get_tone_sql; + internal IntPtr set_ctcss_sql; + internal IntPtr get_ctcss_sql; + + internal IntPtr power2mW; + internal IntPtr mW2power; + + internal IntPtr set_powerstat; + internal IntPtr get_powerstat; + internal IntPtr reset; + + internal IntPtr set_ant; + internal IntPtr get_ant; + + internal IntPtr set_level; + internal IntPtr get_level; + + internal IntPtr set_func; + internal IntPtr get_func; + + internal IntPtr set_parm; + internal IntPtr get_parm; + + internal IntPtr set_ext_level; + internal IntPtr get_ext_level; + + internal IntPtr set_ext_parm; + internal IntPtr get_ext_parm; + + internal IntPtr set_conf; + internal IntPtr get_conf; + + internal IntPtr send_dtmf; + internal IntPtr recv_dtmf; + internal IntPtr send_morse; + + internal IntPtr set_bank; + internal IntPtr set_mem; + internal IntPtr get_mem; + internal IntPtr vfo_op; + internal IntPtr scan; + + internal IntPtr set_trn; + internal IntPtr get_trn; + + internal IntPtr decode_event; + + internal IntPtr set_channel; + internal IntPtr get_channel; + + internal IntPtr get_info; + + internal IntPtr set_chan_all_cb; + internal IntPtr get_chan_all_cb; + + internal IntPtr set_mem_all_cb; + internal IntPtr get_mem_all_cb; + + //[MarshalAs (UnmanagedType.LPStr)] + internal IntPtr clone_combo_set; + + //[MarshalAs (UnmanagedType.LPStr)] + internal IntPtr clone_combo_get; + + // Getter Properties to implement the interface + public int Rig_model { get { return rig_model; } } + public string Model_name { get { return model_name; } } + public string Mfg_name { get { return mfg_name; } } + public string Version { get { return version; } } + public string Copyright { get { return copyright; } } + public RigBackendStatus Status { get { return status; } } + public RigType Rig_type { get { return rig_type; } } + public PttType Ptt_type { get { return ptt_type; } } + public RigDcd Dcd_type { get { return dcd_type; } } + public RigPort Port_type { get { return port_type; } } + public int Serial_rate_min { get { return serial_rate_min; } } + public int Serial_rate_max { get { return serial_rate_max; } } + public int Serial_data_bits { get { return serial_data_bits; } } + public int Serial_stop_bits { get { return serial_stop_bits; } } + public RigSerialParity Serial_parity { get { return serial_parity; } } + public RigSerialHandshake Serial_handshake { get { return serial_handshake; } } + public int Write_delay { get { return write_delay; } } + public int Post_write_delay { get { return post_write_delay; } } + public int Timeout { get { return timeout; } } + public int Retry { get { return retry; } } + public uint Has_get_func { get { return (uint)has_get_func; } } + public uint Has_set_func { get { return (uint)has_set_func; } } + public uint Has_get_level { get { return (uint)has_get_level; } } + public uint Has_set_level { get { return (uint)has_set_level; } } + public uint Has_get_parm { get { return (uint)has_get_parm; } } + public uint Has_set_parm { get { return (uint)has_set_parm; } } + public Granularity[] Level_gran { get { return level_gran; } } + public Granularity[] Parm_gran { get { return parm_gran; } } + public IntPtr Extparms { get { return extparms; } } + public IntPtr Extlevels { get { return extlevels; } } + public IntPtr Ctcss_list { get { return ctcss_list; } } + public IntPtr Dcs_list { get { return dcs_list; } } + public int[] Preamp { get { return preamp; } } + public int[] Attenuator { get { return attenuator; } } + public int Max_rit { get { return (int)max_rit; } } + public int Max_xit { get { return (int)max_xit; } } + public int Max_ifshift { get { return (int)max_ifshift; } } + public RigAnnounce Announces { get { return announces; } } + public RigVfoOperation Vfo_ops { get { return vfo_ops; } } + public RigScanOperation Scan_ops { get { return scan_ops; } } + public int Targetable_vfo { get { return Targetable_vfo1; } } + public int Targetable_vfo1 { get { return targetable_vfo; } } + public RigTransceive Transceive { get { return transceive; } } + public int Bank_qty { get { return bank_qty; } } + public int Chan_desc_sz { get { return chan_desc_sz; } } + public IList Chan_list { get { return chan_list.CastList(); } } + public FrequencyRange[] Rx_range_list1 { get { return rx_range_list1; } } + public FrequencyRange[] Tx_range_list1 { get { return tx_range_list1; } } + public FrequencyRange[] Rx_range_list2 { get { return rx_range_list2; } } + public FrequencyRange[] Tx_range_list2 { get { return tx_range_list2; } } + public IList Tuning_steps { get { return tuning_steps.CastList(); } } + public IList Filters_list { get { return filters_list.CastList(); } } + public CalibrationTable Str_cal { get { return str_cal; } } + public IntPtr Cfgparams { get { return cfgparams; } } + public IntPtr Priv { get { return priv; } } + public IntPtr Rig_init { get { return rig_init; } } + public IntPtr Rig_cleanup { get { return rig_cleanup; } } + public IntPtr Rig_open { get { return rig_open; } } + public IntPtr Rig_close { get { return rig_close; } } + public IntPtr Set_freq { get { return set_freq; } } + public IntPtr Get_freq { get { return get_freq; } } + public IntPtr Set_mode { get { return set_mode; } } + public IntPtr Get_mode { get { return get_mode; } } + public IntPtr Set_vfo { get { return set_vfo; } } + public IntPtr Get_vfo { get { return get_vfo; } } + public IntPtr Set_ptt { get { return set_ptt; } } + public IntPtr Get_ptt { get { return get_ptt; } } + public IntPtr Get_dcd { get { return get_dcd; } } + public IntPtr Set_rptr_shift { get { return set_rptr_shift; } } + public IntPtr Get_rptr_shift { get { return get_rptr_shift; } } + public IntPtr Set_rptr_offs { get { return set_rptr_offs; } } + public IntPtr Get_rptr_offs { get { return get_rptr_offs; } } + public IntPtr Set_split_freq { get { return set_split_freq; } } + public IntPtr Get_split_freq { get { return get_split_freq; } } + public IntPtr Set_split_mode { get { return set_split_mode; } } + public IntPtr Get_split_mode { get { return get_split_mode; } } + public IntPtr Set_split_freq_mode { get { return IntPtr.Zero; } } //set_split_freq_mode; } } + public IntPtr Get_split_freq_mode { get { return IntPtr.Zero; } } //get_split_freq_mode; } } + public IntPtr Set_split_vfo { get { return set_split_vfo; } } + public IntPtr Get_split_vfo { get { return get_split_vfo; } } + public IntPtr Set_rit { get { return set_rit; } } + public IntPtr Get_rit { get { return get_rit; } } + public IntPtr Set_xit { get { return set_xit; } } + public IntPtr Get_xit { get { return get_xit; } } + public IntPtr Set_ts { get { return set_ts; } } + public IntPtr Get_ts { get { return get_ts; } } + public IntPtr Set_dcs_code { get { return set_dcs_code; } } + public IntPtr Get_dcs_code { get { return get_dcs_code; } } + public IntPtr Set_tone { get { return set_tone; } } + public IntPtr Get_tone { get { return get_tone; } } + public IntPtr Set_ctcss_tone { get { return set_ctcss_tone; } } + public IntPtr Get_ctcss_tone { get { return get_ctcss_tone; } } + public IntPtr Set_dcs_sql { get { return set_dcs_sql; } } + public IntPtr Get_dcs_sql { get { return get_dcs_sql; } } + public IntPtr Set_tone_sql { get { return set_tone_sql; } } + public IntPtr Get_tone_sql { get { return get_tone_sql; } } + public IntPtr Set_ctcss_sql { get { return set_ctcss_sql; } } + public IntPtr Get_ctcss_sql { get { return get_ctcss_sql; } } + public IntPtr Power2mW { get { return power2mW; } } + public IntPtr MW2power { get { return mW2power; } } + public IntPtr Set_powerstat { get { return set_powerstat; } } + public IntPtr Get_powerstat { get { return get_powerstat; } } + public IntPtr Reset { get { return reset; } } + public IntPtr Set_ant { get { return set_ant; } } + public IntPtr Get_ant { get { return get_ant; } } + public IntPtr Set_level { get { return set_level; } } + public IntPtr Get_level { get { return get_level; } } + public IntPtr Set_func { get { return set_func; } } + public IntPtr Get_func { get { return get_func; } } + public IntPtr Set_parm { get { return set_parm; } } + public IntPtr Get_parm { get { return get_parm; } } + public IntPtr Set_ext_level { get { return set_ext_level; } } + public IntPtr Get_ext_level { get { return get_ext_level; } } + public IntPtr Set_ext_parm { get { return set_ext_parm; } } + public IntPtr Get_ext_parm { get { return get_ext_parm; } } + public IntPtr Set_conf { get { return set_conf; } } + public IntPtr Get_conf { get { return get_conf; } } + public IntPtr Send_dtmf { get { return send_dtmf; } } + public IntPtr Recv_dtmf { get { return recv_dtmf; } } + public IntPtr Send_morse { get { return send_morse; } } + public IntPtr Set_bank { get { return set_bank; } } + public IntPtr Set_mem { get { return set_mem; } } + public IntPtr Get_mem { get { return get_mem; } } + public IntPtr Vfo_op { get { return vfo_op; } } + public IntPtr Scan { get { return scan; } } + public IntPtr Set_trn { get { return set_trn; } } + public IntPtr Get_trn { get { return get_trn; } } + public IntPtr Decode_event { get { return decode_event; } } + public IntPtr Set_channel { get { return set_channel; } } + public IntPtr Get_channel { get { return get_channel; } } + public IntPtr Get_info { get { return get_info; } } + public IntPtr Set_chan_all_cb { get { return set_chan_all_cb; } } + public IntPtr Get_chan_all_cb { get { return get_chan_all_cb; } } + public IntPtr Set_mem_all_cb { get { return set_mem_all_cb; } } + public IntPtr Get_mem_all_cb { get { return get_mem_all_cb; } } + public IntPtr Clone_combo_set { get { return clone_combo_set; } } + public IntPtr Clone_combo_get { get { return clone_combo_get; } } + } +} diff --git a/HamLibSharp/x64/RigCapsNative64v301.cs b/HamLibSharp/x64/RigCapsNative64v301.cs new file mode 100644 index 0000000..8050bf3 --- /dev/null +++ b/HamLibSharp/x64/RigCapsNative64v301.cs @@ -0,0 +1,456 @@ +// +// RigCapsNative64v301.cs +// +// Author: +// Jae Stutzman +// +// Copyright (c) 2016 Jae Stutzman +// +// This library is free software; you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as +// published by the Free Software Foundation; either version 2.1 of the +// License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +using System; +using System.Collections.Generic; +using System.Runtime.InteropServices; + +namespace HamLibSharp.x64 +{ + /// + /// This class holds the caps values and uses the C type "long" as 64-bit. + /// This is used for 64-bit architectures (except for Windows 64) + /// + [StructLayout (LayoutKind.Sequential, CharSet = CharSet.Ansi)] + internal class RigCapsNative64v301 : IRigCapsNative + { + // max mode/filter list size, zero ended + // NOTE: This was changed from 42 to 60 in version 3.0.1 + internal const int FLTLSTSIZ = 60; + + // Rig model + internal int rig_model; + //rig_model_t + + // Model name. + [MarshalAs (UnmanagedType.LPStr)] + internal string model_name; + + // Manufacturer. + [MarshalAs (UnmanagedType.LPStr)] + internal string mfg_name; + + // Driver version. + [MarshalAs (UnmanagedType.LPStr)] + internal string version; + + // Copyright info. + [MarshalAs (UnmanagedType.LPStr)] + internal string copyright; + + // Driver status. + internal RigBackendStatus status; + + // Rig type. + internal RigType rig_type; + // Type of the PTT port. + internal PttType ptt_type; + // Type of the DCD port. + internal RigDcd dcd_type; + // Type of communication port. + internal RigPort port_type; + + // Minimum serial speed. + internal int serial_rate_min; + // Maximum serial speed. + internal int serial_rate_max; + // Number of data bits. + internal int serial_data_bits; + // Number of stop bits. + internal int serial_stop_bits; + + // Parity. + internal RigSerialParity serial_parity; + // Handshake. + internal RigSerialHandshake serial_handshake; + + // Delay between each byte sent out, in mS + internal int write_delay; + // Delay between each commands send out, in mS + internal int post_write_delay; + // Timeout, in mS + internal int timeout; + + // Maximum number of retries if command fails, 0 to disable + internal int retry; + + // List of get functions + internal ulong has_get_func; + // List of set functions + internal ulong has_set_func; + // List of get level + internal ulong has_get_level; + // List of set level + internal ulong has_set_level; + // List of get parm + internal ulong has_get_parm; + // List of set parm + internal ulong has_set_parm; + + // level granularity (i.e. steps) + [MarshalAs (UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = Rig.RIG_SETTING_MAX)] + internal Granularity[] level_gran; + + // parm granularity (i.e. steps) + [MarshalAs (UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = Rig.RIG_SETTING_MAX)] + internal Granularity[] parm_gran; + + // Extension parm list, \sa ext.c + + //[MarshalAs (UnmanagedType.Struct)] + internal IntPtr extparms; + // Extension level list, \sa ext.c + //[MarshalAs (UnmanagedType.Struct)] + internal IntPtr extlevels; + + // CTCSS tones list, zero ended + internal IntPtr ctcss_list; + // DCS code list, zero ended + internal IntPtr dcs_list; + + // Preamp list in dB, 0 terminated + [MarshalAs (UnmanagedType.ByValArray, SizeConst = Rig.MAXDBLSTSIZ)] + internal int[] preamp; + + // Preamp list in dB, 0 terminated + [MarshalAs (UnmanagedType.ByValArray, SizeConst = Rig.MAXDBLSTSIZ)] + internal int[] attenuator; + + // max absolute RIT + internal long max_rit; + // max absolute XIT + internal long max_xit; + // max absolute IF-SHIFT + internal long max_ifshift; + + // Announces bit field list + internal RigAnnounce announces; + + // VFO op bit field list + internal RigVfoOperation vfo_ops; + // Scan bit field list + internal RigScanOperation scan_ops; + // Bit field list of direct VFO access commands + internal int targetable_vfo; + // Supported transceive mode + internal RigTransceive transceive; + + // Number of banks + internal int bank_qty; + // Max length of memory channel name + internal int chan_desc_sz; + + // Channel list, zero ended + [MarshalAs (UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = Rig.CHANLSTSIZ)] + internal ChannelList64[] chan_list; + + // Receive frequency range list for ITU region 1 + [MarshalAs (UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = Rig.FRQRANGESIZ)] + internal FrequencyRange[] rx_range_list1; + + // Transmit frequency range list for ITU region 1 + [MarshalAs (UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = Rig.FRQRANGESIZ)] + internal FrequencyRange[] tx_range_list1; + + // Receive frequency range list for ITU region 2 + [MarshalAs (UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = Rig.FRQRANGESIZ)] + internal FrequencyRange[] rx_range_list2; + + // Transmit frequency range list for ITU region 2 + [MarshalAs (UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = Rig.FRQRANGESIZ)] + internal FrequencyRange[] tx_range_list2; + + // Tuning step list + [MarshalAs (UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = Rig.TSLSTSIZ)] + internal ModeValue64[] tuning_steps; + + // mode/filter table, at -6dB + [MarshalAs (UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = FLTLSTSIZ)] + internal ModeValue64[] filters_list; + + // S-meter calibration table + internal CalibrationTable str_cal; + + // Configuration parametres. + internal IntPtr cfgparams; + // Private data. + internal IntPtr priv; + + // function pointers to API functions, if IntPtr.Zero, the function is not available + internal IntPtr rig_init; + internal IntPtr rig_cleanup; + internal IntPtr rig_open; + internal IntPtr rig_close; + + internal IntPtr set_freq; + internal IntPtr get_freq; + + internal IntPtr set_mode; + internal IntPtr get_mode; + + internal IntPtr set_vfo; + internal IntPtr get_vfo; + + internal IntPtr set_ptt; + internal IntPtr get_ptt; + internal IntPtr get_dcd; + + internal IntPtr set_rptr_shift; + internal IntPtr get_rptr_shift; + + internal IntPtr set_rptr_offs; + internal IntPtr get_rptr_offs; + + internal IntPtr set_split_freq; + internal IntPtr get_split_freq; + internal IntPtr set_split_mode; + internal IntPtr get_split_mode; + + // This was added in 3.1 + //internal IntPtr set_split_freq_mode; + //internal IntPtr get_split_freq_mode; + + internal IntPtr set_split_vfo; + internal IntPtr get_split_vfo; + + internal IntPtr set_rit; + internal IntPtr get_rit; + internal IntPtr set_xit; + internal IntPtr get_xit; + + internal IntPtr set_ts; + internal IntPtr get_ts; + + internal IntPtr set_dcs_code; + internal IntPtr get_dcs_code; + internal IntPtr set_tone; + internal IntPtr get_tone; + internal IntPtr set_ctcss_tone; + internal IntPtr get_ctcss_tone; + + internal IntPtr set_dcs_sql; + internal IntPtr get_dcs_sql; + internal IntPtr set_tone_sql; + internal IntPtr get_tone_sql; + internal IntPtr set_ctcss_sql; + internal IntPtr get_ctcss_sql; + + internal IntPtr power2mW; + internal IntPtr mW2power; + + internal IntPtr set_powerstat; + internal IntPtr get_powerstat; + internal IntPtr reset; + + internal IntPtr set_ant; + internal IntPtr get_ant; + + internal IntPtr set_level; + internal IntPtr get_level; + + internal IntPtr set_func; + internal IntPtr get_func; + + internal IntPtr set_parm; + internal IntPtr get_parm; + + internal IntPtr set_ext_level; + internal IntPtr get_ext_level; + + internal IntPtr set_ext_parm; + internal IntPtr get_ext_parm; + + internal IntPtr set_conf; + internal IntPtr get_conf; + + internal IntPtr send_dtmf; + internal IntPtr recv_dtmf; + internal IntPtr send_morse; + + internal IntPtr set_bank; + internal IntPtr set_mem; + internal IntPtr get_mem; + internal IntPtr vfo_op; + internal IntPtr scan; + + internal IntPtr set_trn; + internal IntPtr get_trn; + + internal IntPtr decode_event; + + internal IntPtr set_channel; + internal IntPtr get_channel; + + internal IntPtr get_info; + + internal IntPtr set_chan_all_cb; + internal IntPtr get_chan_all_cb; + + internal IntPtr set_mem_all_cb; + internal IntPtr get_mem_all_cb; + + //[MarshalAs (UnmanagedType.LPStr)] + internal IntPtr clone_combo_set; + + //[MarshalAs (UnmanagedType.LPStr)] + internal IntPtr clone_combo_get; + + // Getter Properties to implement the interface + public int Rig_model { get { return rig_model; } } + public string Model_name { get { return model_name; } } + public string Mfg_name { get { return mfg_name; } } + public string Version { get { return version; } } + public string Copyright { get { return copyright; } } + public RigBackendStatus Status { get { return status; } } + public RigType Rig_type { get { return rig_type; } } + public PttType Ptt_type { get { return ptt_type; } } + public RigDcd Dcd_type { get { return dcd_type; } } + public RigPort Port_type { get { return port_type; } } + public int Serial_rate_min { get { return serial_rate_min; } } + public int Serial_rate_max { get { return serial_rate_max; } } + public int Serial_data_bits { get { return serial_data_bits; } } + public int Serial_stop_bits { get { return serial_stop_bits; } } + public RigSerialParity Serial_parity { get { return serial_parity; } } + public RigSerialHandshake Serial_handshake { get { return serial_handshake; } } + public int Write_delay { get { return write_delay; } } + public int Post_write_delay { get { return post_write_delay; } } + public int Timeout { get { return timeout; } } + public int Retry { get { return retry; } } + public uint Has_get_func { get { return (uint)has_get_func; } } + public uint Has_set_func { get { return (uint)has_set_func; } } + public uint Has_get_level { get { return (uint)has_get_level; } } + public uint Has_set_level { get { return (uint)has_set_level; } } + public uint Has_get_parm { get { return (uint)has_get_parm; } } + public uint Has_set_parm { get { return (uint)has_set_parm; } } + public Granularity[] Level_gran { get { return level_gran; } } + public Granularity[] Parm_gran { get { return parm_gran; } } + public IntPtr Extparms { get { return extparms; } } + public IntPtr Extlevels { get { return extlevels; } } + public IntPtr Ctcss_list { get { return ctcss_list; } } + public IntPtr Dcs_list { get { return dcs_list; } } + public int[] Preamp { get { return preamp; } } + public int[] Attenuator { get { return attenuator; } } + public int Max_rit { get { return (int)max_rit; } } + public int Max_xit { get { return (int)max_xit; } } + public int Max_ifshift { get { return (int)max_ifshift; } } + public RigAnnounce Announces { get { return announces; } } + public RigVfoOperation Vfo_ops { get { return vfo_ops; } } + public RigScanOperation Scan_ops { get { return scan_ops; } } + public int Targetable_vfo { get { return Targetable_vfo1; } } + public int Targetable_vfo1 { get { return targetable_vfo; } } + public RigTransceive Transceive { get { return transceive; } } + public int Bank_qty { get { return bank_qty; } } + public int Chan_desc_sz { get { return chan_desc_sz; } } + public IList Chan_list { get { return chan_list.CastList(); } } + public FrequencyRange[] Rx_range_list1 { get { return rx_range_list1; } } + public FrequencyRange[] Tx_range_list1 { get { return tx_range_list1; } } + public FrequencyRange[] Rx_range_list2 { get { return rx_range_list2; } } + public FrequencyRange[] Tx_range_list2 { get { return tx_range_list2; } } + public IList Tuning_steps { get { return tuning_steps.CastList(); } } + public IList Filters_list { get { return filters_list.CastList(); } } + public CalibrationTable Str_cal { get { return str_cal; } } + public IntPtr Cfgparams { get { return cfgparams; } } + public IntPtr Priv { get { return priv; } } + public IntPtr Rig_init { get { return rig_init; } } + public IntPtr Rig_cleanup { get { return rig_cleanup; } } + public IntPtr Rig_open { get { return rig_open; } } + public IntPtr Rig_close { get { return rig_close; } } + public IntPtr Set_freq { get { return set_freq; } } + public IntPtr Get_freq { get { return get_freq; } } + public IntPtr Set_mode { get { return set_mode; } } + public IntPtr Get_mode { get { return get_mode; } } + public IntPtr Set_vfo { get { return set_vfo; } } + public IntPtr Get_vfo { get { return get_vfo; } } + public IntPtr Set_ptt { get { return set_ptt; } } + public IntPtr Get_ptt { get { return get_ptt; } } + public IntPtr Get_dcd { get { return get_dcd; } } + public IntPtr Set_rptr_shift { get { return set_rptr_shift; } } + public IntPtr Get_rptr_shift { get { return get_rptr_shift; } } + public IntPtr Set_rptr_offs { get { return set_rptr_offs; } } + public IntPtr Get_rptr_offs { get { return get_rptr_offs; } } + public IntPtr Set_split_freq { get { return set_split_freq; } } + public IntPtr Get_split_freq { get { return get_split_freq; } } + public IntPtr Set_split_mode { get { return set_split_mode; } } + public IntPtr Get_split_mode { get { return get_split_mode; } } + public IntPtr Set_split_freq_mode { get { return IntPtr.Zero; } } //set_split_freq_mode; } } + public IntPtr Get_split_freq_mode { get { return IntPtr.Zero; } } //get_split_freq_mode; } } + public IntPtr Set_split_vfo { get { return set_split_vfo; } } + public IntPtr Get_split_vfo { get { return get_split_vfo; } } + public IntPtr Set_rit { get { return set_rit; } } + public IntPtr Get_rit { get { return get_rit; } } + public IntPtr Set_xit { get { return set_xit; } } + public IntPtr Get_xit { get { return get_xit; } } + public IntPtr Set_ts { get { return set_ts; } } + public IntPtr Get_ts { get { return get_ts; } } + public IntPtr Set_dcs_code { get { return set_dcs_code; } } + public IntPtr Get_dcs_code { get { return get_dcs_code; } } + public IntPtr Set_tone { get { return set_tone; } } + public IntPtr Get_tone { get { return get_tone; } } + public IntPtr Set_ctcss_tone { get { return set_ctcss_tone; } } + public IntPtr Get_ctcss_tone { get { return get_ctcss_tone; } } + public IntPtr Set_dcs_sql { get { return set_dcs_sql; } } + public IntPtr Get_dcs_sql { get { return get_dcs_sql; } } + public IntPtr Set_tone_sql { get { return set_tone_sql; } } + public IntPtr Get_tone_sql { get { return get_tone_sql; } } + public IntPtr Set_ctcss_sql { get { return set_ctcss_sql; } } + public IntPtr Get_ctcss_sql { get { return get_ctcss_sql; } } + public IntPtr Power2mW { get { return power2mW; } } + public IntPtr MW2power { get { return mW2power; } } + public IntPtr Set_powerstat { get { return set_powerstat; } } + public IntPtr Get_powerstat { get { return get_powerstat; } } + public IntPtr Reset { get { return reset; } } + public IntPtr Set_ant { get { return set_ant; } } + public IntPtr Get_ant { get { return get_ant; } } + public IntPtr Set_level { get { return set_level; } } + public IntPtr Get_level { get { return get_level; } } + public IntPtr Set_func { get { return set_func; } } + public IntPtr Get_func { get { return get_func; } } + public IntPtr Set_parm { get { return set_parm; } } + public IntPtr Get_parm { get { return get_parm; } } + public IntPtr Set_ext_level { get { return set_ext_level; } } + public IntPtr Get_ext_level { get { return get_ext_level; } } + public IntPtr Set_ext_parm { get { return set_ext_parm; } } + public IntPtr Get_ext_parm { get { return get_ext_parm; } } + public IntPtr Set_conf { get { return set_conf; } } + public IntPtr Get_conf { get { return get_conf; } } + public IntPtr Send_dtmf { get { return send_dtmf; } } + public IntPtr Recv_dtmf { get { return recv_dtmf; } } + public IntPtr Send_morse { get { return send_morse; } } + public IntPtr Set_bank { get { return set_bank; } } + public IntPtr Set_mem { get { return set_mem; } } + public IntPtr Get_mem { get { return get_mem; } } + public IntPtr Vfo_op { get { return vfo_op; } } + public IntPtr Scan { get { return scan; } } + public IntPtr Set_trn { get { return set_trn; } } + public IntPtr Get_trn { get { return get_trn; } } + public IntPtr Decode_event { get { return decode_event; } } + public IntPtr Set_channel { get { return set_channel; } } + public IntPtr Get_channel { get { return get_channel; } } + public IntPtr Get_info { get { return get_info; } } + public IntPtr Set_chan_all_cb { get { return set_chan_all_cb; } } + public IntPtr Get_chan_all_cb { get { return get_chan_all_cb; } } + public IntPtr Set_mem_all_cb { get { return set_mem_all_cb; } } + public IntPtr Get_mem_all_cb { get { return get_mem_all_cb; } } + public IntPtr Clone_combo_set { get { return clone_combo_set; } } + public IntPtr Clone_combo_get { get { return clone_combo_get; } } + } +} diff --git a/HamLibSharp/x64/RigStateNative64.cs b/HamLibSharp/x64/RigStateNative64.cs new file mode 100644 index 0000000..966aa35 --- /dev/null +++ b/HamLibSharp/x64/RigStateNative64.cs @@ -0,0 +1,179 @@ +// +// RigStateNative64.cs +// +// Author: +// Jae Stutzman +// +// Copyright (c) 2016 Jae Stutzman +// +// This library is free software; you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as +// published by the Free Software Foundation; either version 2.1 of the +// License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +using System; +using System.Collections.Generic; +using System.Runtime.InteropServices; + +namespace HamLibSharp.x64 +{ + + // TODO: Primary interest is to get the vfo_list and mode_list. Everything else untested. + [StructLayout (LayoutKind.Sequential, CharSet = CharSet.Ansi)] + internal struct RigStateNative64 : IRigStateNative + { + // max mode/filter list size, zero ended + // NOTE: This was changed from 42 to 60 in version 3.0.1 + internal const int FLTLSTSIZ = 60; + + // [MarshalAs (UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = 1)] + // HamLibCommPortNative port; /// Rig port (internal use). + + /// Rig port (internal use). + [MarshalAs (UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = 3)] + internal HamLibPortNative[] ptt_dcd_ports; + + /// VFO compensation in PPM, 0.0 to disable + internal double vfo_comp; + + /// ITU region to select among freq_range_t + internal int itu_region; + + /// Receive frequency range list + [MarshalAs (UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = Rig.FRQRANGESIZ)] + internal FrequencyRange[] rx_range_list; + + /// Transmit frequency range list + [MarshalAs (UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = Rig.FRQRANGESIZ)] + internal FrequencyRange[] tx_range_list; + + // Tuning step list + [MarshalAs (UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = Rig.TSLSTSIZ)] + internal ModeValue64[] tuning_steps; + + [MarshalAs (UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = FLTLSTSIZ)] + internal ModeValue64[] filters; + + // S-meter calibration table + internal CalibrationTable str_cal; + + [MarshalAs (UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = Rig.CHANLSTSIZ)] + internal ChannelList64[] chan_list; + + /// max absolute + internal long max_rit; + /// max absolute XIT + internal long max_xit; + /// max absolute IF-SHIFT + internal long max_ifshift; + + /// Announces bit field list + internal RigAnnounce announces; + + // Preamp list in dB, 0 terminated + [MarshalAs (UnmanagedType.ByValArray, SizeConst = Rig.MAXDBLSTSIZ)] + internal int[] preamp; + + // Preamp list in dB, 0 terminated + [MarshalAs (UnmanagedType.ByValArray, SizeConst = Rig.MAXDBLSTSIZ)] + internal int[] attenuator; + + // List of get functions + internal ulong has_get_func; + // List of set functions + internal ulong has_set_func; + // List of get level + internal ulong has_get_level; + // List of set level + internal ulong has_set_level; + // List of get parm + internal ulong has_get_parm; + // List of set parm + internal ulong has_set_parm; + + // level granularity (i.e. steps) + [MarshalAs (UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = Rig.RIG_SETTING_MAX)] + internal Granularity[] level_gran; + + // parm granularity (i.e. steps) + [MarshalAs (UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = Rig.RIG_SETTING_MAX)] + internal Granularity[] parm_gran; + + // non overridable fields, internal use + + /// set to 1 to hold the event decoder (async) otherwise 0 + internal int hold_decode; + /// VFO currently set + internal int current_vfo; + /// Complete list of VFO for this rig + internal int vfo_list; + /// Comm port state, opened/closed. + internal int comm_state; + /// Pointer to private rig state data. + IntPtr priv; + /// Internal use by hamlib++ for event handling. + IntPtr obj; + /// Whether the transceive mode is on + internal int transceive; + /// Event notification polling period in milliseconds + internal int poll_interval; + /// Frequency currently set + internal double current_freq; + /// Mode currently set + RigMode current_mode; + /// Passband width currently set + internal long current_width; + /// Tx VFO currently set + internal int tx_vfo; + /// Complete list of modes for this rig + internal RigMode mode_list; + + // interface properties + + public HamLibPortNative[] Ptt_dcd_ports { get { return ptt_dcd_ports; } } + public double Vfo_comp { get { return vfo_comp; } } + public int Itu_region { get { return itu_region; } } + public FrequencyRange[] Rx_range_list { get { return rx_range_list; } } + public FrequencyRange[] Tx_range_list { get { return tx_range_list; } } + public IList Tuning_steps { get { return tuning_steps.CastList(); } } + public IList Filters { get { return filters.CastList(); } } + public CalibrationTable Str_cal { get { return str_cal; } } + public IList Chan_list { get { return chan_list.CastList(); } } + public int Max_rit { get { return (int)max_rit; } } + public int Max_xit { get { return (int)max_xit; } } + public int Max_ifshift { get { return (int)max_ifshift; } } + public RigAnnounce Announces { get { return announces; } } + public int[] Preamp { get { return preamp; } } + public int[] Attenuator { get { return attenuator; } } + public uint Has_get_func { get { return (uint)has_get_func; } } + public uint Has_set_func { get { return (uint)has_set_func; } } + public uint Has_get_level { get { return (uint)has_get_level; } } + public uint Has_set_level { get { return (uint)has_set_level; } } + public uint Has_get_parm { get { return (uint)has_get_parm; } } + public uint Has_set_parm { get { return (uint)has_set_parm; } } + public Granularity[] Level_gran { get { return level_gran; } } + public Granularity[] Parm_gran { get { return parm_gran; } } + public int Hold_decode { get { return hold_decode; } } + public int Current_vfo { get { return current_vfo; } } + public int Vfo_list { get { return vfo_list; } } + public int Comm_state { get { return comm_state; } } + public IntPtr Priv { get { return priv; } } + public IntPtr Obj { get { return obj; } } + public int Transceive { get { return transceive; } } + public int Poll_interval { get { return poll_interval; } } + public double Current_freq { get { return current_freq; } } + public RigMode Current_mode { get { return current_mode; } } + public int Current_width { get { return (int)current_width; } } + public int Tx_vfo { get { return tx_vfo; } } + public RigMode Mode_list { get { return mode_list; } } + } +} diff --git a/HamLibSharp/x64/RigStateNative64v2.cs b/HamLibSharp/x64/RigStateNative64v2.cs new file mode 100644 index 0000000..55987ca --- /dev/null +++ b/HamLibSharp/x64/RigStateNative64v2.cs @@ -0,0 +1,178 @@ +// +// RigStateNative64v2.cs +// +// Author: +// Jae Stutzman +// +// Copyright (c) 2016 Jae Stutzman +// +// This library is free software; you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as +// published by the Free Software Foundation; either version 2.1 of the +// License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +using System; +using System.Collections.Generic; +using System.Runtime.InteropServices; + +namespace HamLibSharp.x64 +{ + // TODO: Primary interest is to get the vfo_list and mode_list. Everything else untested. + [StructLayout (LayoutKind.Sequential, CharSet = CharSet.Ansi)] + internal struct RigStateNative64v2 : IRigStateNative + { + // max mode/filter list size, zero ended + // NOTE: This was changed from 42 to 60 in version 3.0.1 + internal const int FLTLSTSIZ = 42; + + // [MarshalAs (UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = 1)] + // HamLibCommPortNative port; /// Rig port (internal use). + + /// Rig port (internal use). + [MarshalAs (UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = 3)] + internal HamLibPortNative[] ptt_dcd_ports; + + /// VFO compensation in PPM, 0.0 to disable + internal double vfo_comp; + + /// ITU region to select among freq_range_t + internal int itu_region; + + /// Receive frequency range list + [MarshalAs (UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = Rig.FRQRANGESIZ)] + internal FrequencyRange[] rx_range_list; + + /// Transmit frequency range list + [MarshalAs (UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = Rig.FRQRANGESIZ)] + internal FrequencyRange[] tx_range_list; + + // Tuning step list + [MarshalAs (UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = Rig.TSLSTSIZ)] + internal ModeValue64[] tuning_steps; + + [MarshalAs (UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = FLTLSTSIZ)] + internal ModeValue64[] filters; + + // S-meter calibration table + internal CalibrationTable str_cal; + + [MarshalAs (UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = Rig.CHANLSTSIZ)] + internal ChannelList64[] chan_list; + + /// max absolute + internal long max_rit; + /// max absolute XIT + internal long max_xit; + /// max absolute IF-SHIFT + internal long max_ifshift; + + /// Announces bit field list + internal RigAnnounce announces; + + // Preamp list in dB, 0 terminated + [MarshalAs (UnmanagedType.ByValArray, SizeConst = Rig.MAXDBLSTSIZ)] + internal int[] preamp; + + // Preamp list in dB, 0 terminated + [MarshalAs (UnmanagedType.ByValArray, SizeConst = Rig.MAXDBLSTSIZ)] + internal int[] attenuator; + + // List of get functions + internal ulong has_get_func; + // List of set functions + internal ulong has_set_func; + // List of get level + internal ulong has_get_level; + // List of set level + internal ulong has_set_level; + // List of get parm + internal ulong has_get_parm; + // List of set parm + internal ulong has_set_parm; + + // level granularity (i.e. steps) + [MarshalAs (UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = Rig.RIG_SETTING_MAX)] + internal Granularity[] level_gran; + + // parm granularity (i.e. steps) + [MarshalAs (UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = Rig.RIG_SETTING_MAX)] + internal Granularity[] parm_gran; + + // non overridable fields, internal use + + /// set to 1 to hold the event decoder (async) otherwise 0 + internal int hold_decode; + /// VFO currently set + internal int current_vfo; + /// Complete list of VFO for this rig + internal int vfo_list; + /// Comm port state, opened/closed. + internal int comm_state; + /// Pointer to private rig state data. + IntPtr priv; + /// Internal use by hamlib++ for event handling. + IntPtr obj; + /// Whether the transceive mode is on + internal int transceive; + /// Event notification polling period in milliseconds + internal int poll_interval; + /// Frequency currently set + internal double current_freq; + /// Mode currently set + RigMode current_mode; + /// Passband width currently set + internal long current_width; + /// Tx VFO currently set + internal int tx_vfo; + /// Complete list of modes for this rig + internal RigMode mode_list; + + // interface properties + + public HamLibPortNative[] Ptt_dcd_ports { get { return ptt_dcd_ports; } } + public double Vfo_comp { get { return vfo_comp; } } + public int Itu_region { get { return itu_region; } } + public FrequencyRange[] Rx_range_list { get { return rx_range_list; } } + public FrequencyRange[] Tx_range_list { get { return tx_range_list; } } + public IList Tuning_steps { get { return tuning_steps.CastList(); } } + public IList Filters { get { return filters.CastList(); } } + public CalibrationTable Str_cal { get { return str_cal; } } + public IList Chan_list { get { return chan_list.CastList(); } } + public int Max_rit { get { return (int)max_rit; } } + public int Max_xit { get { return (int)max_xit; } } + public int Max_ifshift { get { return (int)max_ifshift; } } + public RigAnnounce Announces { get { return announces; } } + public int[] Preamp { get { return preamp; } } + public int[] Attenuator { get { return attenuator; } } + public uint Has_get_func { get { return (uint)has_get_func; } } + public uint Has_set_func { get { return (uint)has_set_func; } } + public uint Has_get_level { get { return (uint)has_get_level; } } + public uint Has_set_level { get { return (uint)has_set_level; } } + public uint Has_get_parm { get { return (uint)has_get_parm; } } + public uint Has_set_parm { get { return (uint)has_set_parm; } } + public Granularity[] Level_gran { get { return level_gran; } } + public Granularity[] Parm_gran { get { return parm_gran; } } + public int Hold_decode { get { return hold_decode; } } + public int Current_vfo { get { return current_vfo; } } + public int Vfo_list { get { return vfo_list; } } + public int Comm_state { get { return comm_state; } } + public IntPtr Priv { get { return priv; } } + public IntPtr Obj { get { return obj; } } + public int Transceive { get { return transceive; } } + public int Poll_interval { get { return poll_interval; } } + public double Current_freq { get { return current_freq; } } + public RigMode Current_mode { get { return current_mode; } } + public int Current_width { get { return (int)current_width; } } + public int Tx_vfo { get { return tx_vfo; } } + public RigMode Mode_list { get { return mode_list; } } + } +} diff --git a/HamLibSharp/x86/ChannelCapability32.cs b/HamLibSharp/x86/ChannelCapability32.cs new file mode 100644 index 0000000..e6d0911 --- /dev/null +++ b/HamLibSharp/x86/ChannelCapability32.cs @@ -0,0 +1,96 @@ +// +// ChannelCapability32.cs +// +// Author: +// Jae Stutzman +// +// Copyright (c) 2016 Jae Stutzman +// +// This library is free software; you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as +// published by the Free Software Foundation; either version 2.1 of the +// License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +using System; +using System.Runtime.InteropServices; + +namespace HamLibSharp.x86 +{ + [StructLayout (LayoutKind.Sequential)] + internal struct ChannelCapability32: IChannelCapability + { + private short raw0; + + // Bank number + public bool BankNumber { get { return ((byte)((raw0 >> 0) & 0x01)) != 0; } } + // VFO + public bool Vfo{ get { return ((byte)((raw0 >> 1) & 0x01)) != 0; } } + // Selected antenna + public bool Antenna{ get { return ((byte)((raw0 >> 2) & 0x01)) != 0; } } + // Receive frequency + public bool RXFrequency{ get { return ((byte)((raw0 >> 3) & 0x01)) != 0; } } + // Receive mode + public bool RXMode{ get { return ((byte)((raw0 >> 4) & 0x01)) != 0; } } + // Receive passband width associated with mode + public bool RXWidth{ get { return ((byte)((raw0 >> 5) & 0x01)) != 0; } } + // Transmit frequency + public bool TXFrequency{ get { return ((byte)((raw0 >> 6) & 0x01)) != 0; } } + // Transmit mode + public bool TXMode{ get { return ((byte)((raw0 >> 7) & 0x01)) != 0; } } + // Transmit passband width associated with mode + + public bool TXWidth{ get { return ((byte)((raw0 >> 8) & 0x01)) != 0; } } + // Split mode + public bool Split{ get { return ((byte)((raw0 >> 9) & 0x01)) != 0; } } + // Split transmit VFO + public bool TXVfo{ get { return ((byte)((raw0 >> 10) & 0x01)) != 0; } } + // Repeater shift + public bool RepeaterShift{ get { return ((byte)((raw0 >> 11) & 0x01)) != 0; } } + // Repeater offset + public bool RepeaterOffset{ get { return ((byte)((raw0 >> 12) & 0x01)) != 0; } } + // Tuning step + public bool TuningStep{ get { return ((byte)((raw0 >> 13) & 0x01)) != 0; } } + // RIT + public bool Rit{ get { return ((byte)((raw0 >> 14) & 0x01)) != 0; } } + // XIT + public bool Xit{ get { return ((byte)((raw0 >> 15) & 0x01)) != 0; } } + + // Function status + uint funcs; + // Level values + uint levels; + + public uint Functions { get { return funcs; } } + + public uint Levels { get { return levels; } } + + private short raw2; + + // CTCSS tone + public bool CtcssTone { get { return ((byte)((raw2 >> 0) & 0x01)) != 0; } } + // CTCSS squelch tone + public bool CtcssSquelch{ get { return ((byte)((raw2 >> 1) & 0x01)) != 0; } } + // DCS code + public bool DcsCode{ get { return ((byte)((raw2 >> 2) & 0x01)) != 0; } } + // DCS squelch code + public bool DcsSquelch{ get { return ((byte)((raw2 >> 3) & 0x01)) != 0; } } + // Scan group + public bool ScanGroup{ get { return ((byte)((raw2 >> 4) & 0x01)) != 0; } } + // Channel flags + public bool ChannelFlags{ get { return ((byte)((raw2 >> 5) & 0x01)) != 0; } } + // Name + public bool ChannelName{ get { return ((byte)((raw2 >> 6) & 0x01)) != 0; } } + // Extension level value list + public bool ExtensionLevels{ get { return ((byte)((raw2 >> 7) & 0x01)) != 0; } } + } +} + diff --git a/HamLibSharp/x86/ChannelList32.cs b/HamLibSharp/x86/ChannelList32.cs new file mode 100644 index 0000000..1b09527 --- /dev/null +++ b/HamLibSharp/x86/ChannelList32.cs @@ -0,0 +1,49 @@ +// +// ChannelList32.cs +// +// Author: +// Jae Stutzman +// +// Copyright (c) 2016 Jae Stutzman +// +// This library is free software; you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as +// published by the Free Software Foundation; either version 2.1 of the +// License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +using System; +using System.Runtime.InteropServices; + +namespace HamLibSharp.x86 +{ + [StructLayout (LayoutKind.Sequential)] + internal struct ChannelList32 : IChannelList + { + public int Start { get { return start; } } + + public int End { get { return end; } } + + public RigMemoryChannel Type { get { return type; } } + + public IChannelCapability MemCaps { get { return mem_caps; } } + + // Starting memory channel \b number + int start; + // Ending memory channel \b number + int end; + // Memory type. see chan_type_t + RigMemoryChannel type; + // Definition of attributes that can be stored/retrieved + ChannelCapability32 mem_caps; + }; +} + diff --git a/HamLibSharp/x86/ConfigurationParameter32.cs b/HamLibSharp/x86/ConfigurationParameter32.cs new file mode 100644 index 0000000..269e98f --- /dev/null +++ b/HamLibSharp/x86/ConfigurationParameter32.cs @@ -0,0 +1,76 @@ +// +// ConfigurationParameter32.cs +// +// Author: +// Jae Stutzman +// +// Copyright (c) 2016 Jae Stutzman +// +// This library is free software; you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as +// published by the Free Software Foundation; either version 2.1 of the +// License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +using System; +using System.Runtime.InteropServices; + +namespace HamLibSharp.x86 +{ + /// Configuration parameter structure. + [StructLayout (LayoutKind.Sequential, CharSet = CharSet.Ansi)] + internal class ConfigurationParameter32 : IConfigurationParameter + { + public int Token { get { return token; } } + + public string Name { get { return name; } } + + public string Label { get { return label; } } + + public string Tooltip { get { return tooltip; } } + + public string Default { get { return dflt; } } + + public float Min { get { return min; } } + + public float Max { get { return max; } } + + public float Step { get { return step; } } + + /*!< Conf param token ID */ + int token; + /*!< Param name, no spaces allowed */ + [MarshalAs (UnmanagedType.LPStr)] + string name; + /*!< Human readable label */ + [MarshalAs (UnmanagedType.LPStr)] + string label; + /*!< Hint on the parameter */ + [MarshalAs (UnmanagedType.LPStr)] + string tooltip; + /*!< Default value */ + [MarshalAs (UnmanagedType.LPStr)] + string dflt; + /*!< Type of the parameter */ + RigConf type; + /*!< */ + //[MarshalAs (UnmanagedType.Struct)] + //paramU u; + /*!< Minimum value */ + float min; + /*!< Maximum value */ + float max; + /*!< Step */ + float step; + /*!< Numeric type */ + } +} + diff --git a/HamLibSharp/x86/ModeValue32.cs b/HamLibSharp/x86/ModeValue32.cs new file mode 100644 index 0000000..bcb1d52 --- /dev/null +++ b/HamLibSharp/x86/ModeValue32.cs @@ -0,0 +1,43 @@ +// +// ModeValue32.cs +// +// Author: +// Jae Stutzman +// +// Copyright (c) 2016 Jae Stutzman +// +// This library is free software; you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as +// published by the Free Software Foundation; either version 2.1 of the +// License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +using System; +using System.Runtime.InteropServices; + +namespace HamLibSharp.x86 +{ + [StructLayout (LayoutKind.Sequential)] + internal struct ModeValue32 : IModeValue + { + public RigMode Modes { get { return modes; } } + + public int Value { get { return val; } } + + public const int Any = 0; + + // Bit field of RIG_MODE's + RigMode modes; + // val + int val; + }; +} + diff --git a/HamLibSharp/x86/NativeRig32.cs b/HamLibSharp/x86/NativeRig32.cs new file mode 100644 index 0000000..101fa09 --- /dev/null +++ b/HamLibSharp/x86/NativeRig32.cs @@ -0,0 +1,50 @@ +// +// NativeRig32.cs +// +// Author: +// Jae Stutzman +// +// Copyright (c) 2016 Jae Stutzman +// +// This library is free software; you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as +// published by the Free Software Foundation; either version 2.1 of the +// License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +using System; +using System.Runtime.InteropServices; + +namespace HamLibSharp.x86 +{ + [StructLayout (LayoutKind.Sequential)] + internal class NativeRig32 : INativeRig + { + /// + /// Pointer to rig capabilities (read only) + /// + private IntPtr caps; + /// + /// Rig state + /// + //[MarshalAs (UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = 1)] + private RigStateNative32 state; + /// + /// Registered event callbacks + /// + private IntPtr callbacks; + + public IntPtr Caps { get { return caps; } } + public IRigStateNative State { get { return state; } } + public IntPtr Callbacks { get { return callbacks; } } + }; +} + diff --git a/HamLibSharp/x86/NativeRig32v2.cs b/HamLibSharp/x86/NativeRig32v2.cs new file mode 100644 index 0000000..e8817be --- /dev/null +++ b/HamLibSharp/x86/NativeRig32v2.cs @@ -0,0 +1,50 @@ +// +// NativeRig32v2.cs +// +// Author: +// Jae Stutzman +// +// Copyright (c) 2016 Jae Stutzman +// +// This library is free software; you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as +// published by the Free Software Foundation; either version 2.1 of the +// License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +using System; +using System.Runtime.InteropServices; + +namespace HamLibSharp.x86 +{ + [StructLayout (LayoutKind.Sequential)] + internal class NativeRig32v2 : INativeRig + { + /// + /// Pointer to rig capabilities (read only) + /// + private IntPtr caps; + /// + /// Rig state + /// + //[MarshalAs (UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = 1)] + private RigStateNative32v2 state; + /// + /// Registered event callbacks + /// + private IntPtr callbacks; + + public IntPtr Caps { get { return caps; } } + public IRigStateNative State { get { return state; } } + public IntPtr Callbacks { get { return callbacks; } } + }; +} + diff --git a/HamLibSharp/x86/RigCapsNative32.cs b/HamLibSharp/x86/RigCapsNative32.cs new file mode 100644 index 0000000..6c0a1f0 --- /dev/null +++ b/HamLibSharp/x86/RigCapsNative32.cs @@ -0,0 +1,465 @@ +// +// RigCapsNative32.cs +// +// Author: +// Jae Stutzman +// +// Copyright (c) 2016 Jae Stutzman +// +// This library is free software; you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as +// published by the Free Software Foundation; either version 2.1 of the +// License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +using System; +using System.Collections.Generic; +using System.Runtime.InteropServices; + +namespace HamLibSharp.x86 +{ + /// + /// This class holds the caps values and uses the C type "long" as 32-bit. + /// This is used for 32-bit architectures and all Windows architectures (32 and 64 bit) + /// + [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)] + internal class RigCapsNative32 : IRigCapsNative + { + // max mode/filter list size, zero ended + // NOTE: This was changed from 42 to 60 in version 3.0.1 + internal const int FLTLSTSIZ = 60; + + // Rig model + private int rig_model; + //rig_model_t + + // Model name. + [MarshalAs(UnmanagedType.LPStr)] + private string model_name; + + // Manufacturer. + [MarshalAs(UnmanagedType.LPStr)] + private string mfg_name; + + // Driver version. + [MarshalAs(UnmanagedType.LPStr)] + private string version; + + // Copyright info. + [MarshalAs(UnmanagedType.LPStr)] + private string copyright; + + // Driver status. + private RigBackendStatus status; + + // Rig type. + private RigType rig_type; + // Type of the PTT port. + private PttType ptt_type; + // Type of the DCD port. + private RigDcd dcd_type; + // Type of communication port. + private RigPort port_type; + + // Minimum serial speed. + private int serial_rate_min; + // Maximum serial speed. + private int serial_rate_max; + // Number of data bits. + private int serial_data_bits; + // Number of stop bits. + private int serial_stop_bits; + + // Parity. + private RigSerialParity serial_parity; + // Handshake. + private RigSerialHandshake serial_handshake; + + // Delay between each byte sent out, in mS + private int write_delay; + // Delay between each commands send out, in mS + private int post_write_delay; + // Timeout, in mS + private int timeout; + + // Maximum number of retries if command fails, 0 to disable + private int retry; + + // List of get functions + private uint has_get_func; + // List of set functions + private uint has_set_func; + // List of get level + private uint has_get_level; + // List of set level + private uint has_set_level; + // List of get parm + private uint has_get_parm; + // List of set parm + private uint has_set_parm; + + // level granularity (i.e. steps) + [MarshalAs(UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = Rig.RIG_SETTING_MAX)] + private Granularity[] level_gran; + + // parm granularity (i.e. steps) + [MarshalAs(UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = Rig.RIG_SETTING_MAX)] + private Granularity[] parm_gran; + + // Extension parm list, \sa ext.c + + //[MarshalAs (UnmanagedType.Struct)] + private IntPtr extparms; + // Extension level list, \sa ext.c + //[MarshalAs (UnmanagedType.Struct)] + private IntPtr extlevels; + + // CTCSS tones list, zero ended + private IntPtr ctcss_list; + // DCS code list, zero ended + private IntPtr dcs_list; + + // Preamp list in dB, 0 terminated + [MarshalAs(UnmanagedType.ByValArray, SizeConst = Rig.MAXDBLSTSIZ)] + private int[] preamp; + + // Preamp list in dB, 0 terminated + [MarshalAs(UnmanagedType.ByValArray, SizeConst = Rig.MAXDBLSTSIZ)] + private int[] attenuator; + + // max absolute RIT + private int max_rit; + // max absolute XIT + private int max_xit; + // max absolute IF-SHIFT + private int max_ifshift; + + // Announces bit field list + private RigAnnounce announces; + + // VFO op bit field list + private RigVfoOperation vfo_ops; + // Scan bit field list + private RigScanOperation scan_ops; + // Bit field list of direct VFO access commands + private int targetable_vfo; + // Supported transceive mode + private RigTransceive transceive; + + // Number of banks + private int bank_qty; + // Max length of memory channel name + private int chan_desc_sz; + + // Channel list, zero ended + [MarshalAs(UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = Rig.CHANLSTSIZ)] + private ChannelList32[] chan_list; + + // Receive frequency range list for ITU region 1 + [MarshalAs(UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = Rig.FRQRANGESIZ)] + private FrequencyRange[] rx_range_list1; + + // Transmit frequency range list for ITU region 1 + [MarshalAs(UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = Rig.FRQRANGESIZ)] + private FrequencyRange[] tx_range_list1; + + // Receive frequency range list for ITU region 2 + [MarshalAs(UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = Rig.FRQRANGESIZ)] + private FrequencyRange[] rx_range_list2; + + // Transmit frequency range list for ITU region 2 + [MarshalAs(UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = Rig.FRQRANGESIZ)] + private FrequencyRange[] tx_range_list2; + + // Tuning step list + [MarshalAs(UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = Rig.TSLSTSIZ)] + private ModeValue32[] tuning_steps; + + // mode/filter table, at -6dB + [MarshalAs(UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = FLTLSTSIZ)] + private ModeValue32[] filters_list; + + // S-meter calibration table + private CalibrationTable str_cal; + + // Configuration parametres. + private IntPtr cfgparams; + // Private data. + private IntPtr priv; + + // function pointers to API functions, if IntPtr.Zero, the function is not available + private IntPtr rig_init; + private IntPtr rig_cleanup; + private IntPtr rig_open; + private IntPtr rig_close; + + private IntPtr set_freq; + private IntPtr get_freq; + + private IntPtr set_mode; + private IntPtr get_mode; + + private IntPtr set_vfo; + private IntPtr get_vfo; + + private IntPtr set_ptt; + private IntPtr get_ptt; + private IntPtr get_dcd; + + private IntPtr set_rptr_shift; + private IntPtr get_rptr_shift; + + private IntPtr set_rptr_offs; + private IntPtr get_rptr_offs; + + private IntPtr set_split_freq; + private IntPtr get_split_freq; + private IntPtr set_split_mode; + private IntPtr get_split_mode; + private IntPtr set_split_freq_mode; + private IntPtr get_split_freq_mode; + + private IntPtr set_split_vfo; + private IntPtr get_split_vfo; + + private IntPtr set_rit; + private IntPtr get_rit; + private IntPtr set_xit; + private IntPtr get_xit; + + private IntPtr set_ts; + private IntPtr get_ts; + + private IntPtr set_dcs_code; + private IntPtr get_dcs_code; + private IntPtr set_tone; + private IntPtr get_tone; + private IntPtr set_ctcss_tone; + private IntPtr get_ctcss_tone; + + private IntPtr set_dcs_sql; + private IntPtr get_dcs_sql; + private IntPtr set_tone_sql; + private IntPtr get_tone_sql; + private IntPtr set_ctcss_sql; + private IntPtr get_ctcss_sql; + + private IntPtr power2mW; + private IntPtr mW2power; + + private IntPtr set_powerstat; + private IntPtr get_powerstat; + private IntPtr reset; + + private IntPtr set_ant; + private IntPtr get_ant; + + private IntPtr set_level; + private IntPtr get_level; + + private IntPtr set_func; + private IntPtr get_func; + + private IntPtr set_parm; + private IntPtr get_parm; + + private IntPtr set_ext_level; + private IntPtr get_ext_level; + + private IntPtr set_ext_parm; + private IntPtr get_ext_parm; + + private IntPtr set_conf; + private IntPtr get_conf; + + private IntPtr send_dtmf; + private IntPtr recv_dtmf; + private IntPtr send_morse; + + private IntPtr set_bank; + private IntPtr set_mem; + private IntPtr get_mem; + private IntPtr vfo_op; + private IntPtr scan; + + private IntPtr set_trn; + private IntPtr get_trn; + + private IntPtr decode_event; + + private IntPtr set_channel; + private IntPtr get_channel; + + private IntPtr get_info; + + private IntPtr set_chan_all_cb; + private IntPtr get_chan_all_cb; + + private IntPtr set_mem_all_cb; + private IntPtr get_mem_all_cb; + + //[MarshalAs (UnmanagedType.LPStr)] + private IntPtr clone_combo_set; + + //[MarshalAs (UnmanagedType.LPStr)] + private IntPtr clone_combo_get; + + private int test1; + private int test2; + private int test3; + private int test4; + private int test5; + private int test6; + private int test7; + private int test8; + private int test9; + private int test10; + + // Getter Properties to implement the interface + public int Rig_model { get { return rig_model; } } + public string Model_name { get { return model_name; } } + public string Mfg_name { get { return mfg_name; } } + public string Version { get { return version; } } + public string Copyright { get { return copyright; } } + public RigBackendStatus Status { get { return status; } } + public RigType Rig_type { get { return rig_type; } } + public PttType Ptt_type { get { return ptt_type; } } + public RigDcd Dcd_type { get { return dcd_type; } } + public RigPort Port_type { get { return port_type; } } + public int Serial_rate_min { get { return serial_rate_min; } } + public int Serial_rate_max { get { return serial_rate_max; } } + public int Serial_data_bits { get { return serial_data_bits; } } + public int Serial_stop_bits { get { return serial_stop_bits; } } + public RigSerialParity Serial_parity { get { return serial_parity; } } + public RigSerialHandshake Serial_handshake { get { return serial_handshake; } } + public int Write_delay { get { return write_delay; } } + public int Post_write_delay { get { return post_write_delay; } } + public int Timeout { get { return timeout; } } + public int Retry { get { return retry; } } + public uint Has_get_func { get { return has_get_func; } } + public uint Has_set_func { get { return has_set_func; } } + public uint Has_get_level { get { return has_get_level; } } + public uint Has_set_level { get { return has_set_level; } } + public uint Has_get_parm { get { return has_get_parm; } } + public uint Has_set_parm { get { return has_set_parm; } } + public Granularity[] Level_gran { get { return level_gran; } } + public Granularity[] Parm_gran { get { return parm_gran; } } + public IntPtr Extparms { get { return extparms; } } + public IntPtr Extlevels { get { return extlevels; } } + public IntPtr Ctcss_list { get { return ctcss_list; } } + public IntPtr Dcs_list { get { return dcs_list; } } + public int[] Preamp { get { return preamp; } } + public int[] Attenuator { get { return attenuator; } } + public int Max_rit { get { return max_rit; } } + public int Max_xit { get { return max_xit; } } + public int Max_ifshift { get { return max_ifshift; } } + public RigAnnounce Announces { get { return announces; } } + public RigVfoOperation Vfo_ops { get { return vfo_ops; } } + public RigScanOperation Scan_ops { get { return scan_ops; } } + public int Targetable_vfo { get { return Targetable_vfo1; } } + public int Targetable_vfo1 { get { return targetable_vfo; } } + public RigTransceive Transceive { get { return transceive; } } + public int Bank_qty { get { return bank_qty; } } + public int Chan_desc_sz { get { return chan_desc_sz; } } + public IList Chan_list { get { return chan_list.CastList(); } } + public FrequencyRange[] Rx_range_list1 { get { return rx_range_list1; } } + public FrequencyRange[] Tx_range_list1 { get { return tx_range_list1; } } + public FrequencyRange[] Rx_range_list2 { get { return rx_range_list2; } } + public FrequencyRange[] Tx_range_list2 { get { return tx_range_list2; } } + public IList Tuning_steps { get { return tuning_steps.CastList(); } } + public IList Filters_list { get { return filters_list.CastList(); } } + public CalibrationTable Str_cal { get { return str_cal; } } + public IntPtr Cfgparams { get { return cfgparams; } } + public IntPtr Priv { get { return priv; } } + public IntPtr Rig_init { get { return rig_init; } } + public IntPtr Rig_cleanup { get { return rig_cleanup; } } + public IntPtr Rig_open { get { return rig_open; } } + public IntPtr Rig_close { get { return rig_close; } } + public IntPtr Set_freq { get { return set_freq; } } + public IntPtr Get_freq { get { return get_freq; } } + public IntPtr Set_mode { get { return set_mode; } } + public IntPtr Get_mode { get { return get_mode; } } + public IntPtr Set_vfo { get { return set_vfo; } } + public IntPtr Get_vfo { get { return get_vfo; } } + public IntPtr Set_ptt { get { return set_ptt; } } + public IntPtr Get_ptt { get { return get_ptt; } } + public IntPtr Get_dcd { get { return get_dcd; } } + public IntPtr Set_rptr_shift { get { return set_rptr_shift; } } + public IntPtr Get_rptr_shift { get { return get_rptr_shift; } } + public IntPtr Set_rptr_offs { get { return set_rptr_offs; } } + public IntPtr Get_rptr_offs { get { return get_rptr_offs; } } + public IntPtr Set_split_freq { get { return set_split_freq; } } + public IntPtr Get_split_freq { get { return get_split_freq; } } + public IntPtr Set_split_mode { get { return set_split_mode; } } + public IntPtr Get_split_mode { get { return get_split_mode; } } + public IntPtr Set_split_freq_mode { get { return set_split_freq_mode; } } + public IntPtr Get_split_freq_mode { get { return get_split_freq_mode; } } + public IntPtr Set_split_vfo { get { return set_split_vfo; } } + public IntPtr Get_split_vfo { get { return get_split_vfo; } } + public IntPtr Set_rit { get { return set_rit; } } + public IntPtr Get_rit { get { return get_rit; } } + public IntPtr Set_xit { get { return set_xit; } } + public IntPtr Get_xit { get { return get_xit; } } + public IntPtr Set_ts { get { return set_ts; } } + public IntPtr Get_ts { get { return get_ts; } } + public IntPtr Set_dcs_code { get { return set_dcs_code; } } + public IntPtr Get_dcs_code { get { return get_dcs_code; } } + public IntPtr Set_tone { get { return set_tone; } } + public IntPtr Get_tone { get { return get_tone; } } + public IntPtr Set_ctcss_tone { get { return set_ctcss_tone; } } + public IntPtr Get_ctcss_tone { get { return get_ctcss_tone; } } + public IntPtr Set_dcs_sql { get { return set_dcs_sql; } } + public IntPtr Get_dcs_sql { get { return get_dcs_sql; } } + public IntPtr Set_tone_sql { get { return set_tone_sql; } } + public IntPtr Get_tone_sql { get { return get_tone_sql; } } + public IntPtr Set_ctcss_sql { get { return set_ctcss_sql; } } + public IntPtr Get_ctcss_sql { get { return get_ctcss_sql; } } + public IntPtr Power2mW { get { return power2mW; } } + public IntPtr MW2power { get { return mW2power; } } + public IntPtr Set_powerstat { get { return set_powerstat; } } + public IntPtr Get_powerstat { get { return get_powerstat; } } + public IntPtr Reset { get { return reset; } } + public IntPtr Set_ant { get { return set_ant; } } + public IntPtr Get_ant { get { return get_ant; } } + public IntPtr Set_level { get { return set_level; } } + public IntPtr Get_level { get { return get_level; } } + public IntPtr Set_func { get { return set_func; } } + public IntPtr Get_func { get { return get_func; } } + public IntPtr Set_parm { get { return set_parm; } } + public IntPtr Get_parm { get { return get_parm; } } + public IntPtr Set_ext_level { get { return set_ext_level; } } + public IntPtr Get_ext_level { get { return get_ext_level; } } + public IntPtr Set_ext_parm { get { return set_ext_parm; } } + public IntPtr Get_ext_parm { get { return get_ext_parm; } } + public IntPtr Set_conf { get { return set_conf; } } + public IntPtr Get_conf { get { return get_conf; } } + public IntPtr Send_dtmf { get { return send_dtmf; } } + public IntPtr Recv_dtmf { get { return recv_dtmf; } } + public IntPtr Send_morse { get { return send_morse; } } + public IntPtr Set_bank { get { return set_bank; } } + public IntPtr Set_mem { get { return set_mem; } } + public IntPtr Get_mem { get { return get_mem; } } + public IntPtr Vfo_op { get { return vfo_op; } } + public IntPtr Scan { get { return scan; } } + public IntPtr Set_trn { get { return set_trn; } } + public IntPtr Get_trn { get { return get_trn; } } + public IntPtr Decode_event { get { return decode_event; } } + public IntPtr Set_channel { get { return set_channel; } } + public IntPtr Get_channel { get { return get_channel; } } + public IntPtr Get_info { get { return get_info; } } + public IntPtr Set_chan_all_cb { get { return set_chan_all_cb; } } + public IntPtr Get_chan_all_cb { get { return get_chan_all_cb; } } + public IntPtr Set_mem_all_cb { get { return set_mem_all_cb; } } + public IntPtr Get_mem_all_cb { get { return get_mem_all_cb; } } + public IntPtr Clone_combo_set { get { return clone_combo_set; } } + public IntPtr Clone_combo_get { get { return clone_combo_get; } } + } +} diff --git a/HamLibSharp/x86/RigCapsNative32v2.cs b/HamLibSharp/x86/RigCapsNative32v2.cs new file mode 100644 index 0000000..8b37ae8 --- /dev/null +++ b/HamLibSharp/x86/RigCapsNative32v2.cs @@ -0,0 +1,603 @@ +// +// RigCapsNative32v2.cs +// +// Author: +// Jae Stutzman +// +// Copyright (c) 2016 Jae Stutzman +// +// This library is free software; you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as +// published by the Free Software Foundation; either version 2.1 of the +// License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +using System; +using System.Collections.Generic; +using System.Runtime.InteropServices; + +namespace HamLibSharp.x86 +{ + /// + /// This class holds the caps values and uses the C type "long" as 32-bit. + /// This is used for 32-bit architectures and all Windows architectures (32 and 64 bit) + /// + [StructLayout (LayoutKind.Sequential, CharSet = CharSet.Ansi)] + internal class RigCapsNative32v2 : IRigCapsNative + { + // max mode/filter list size, zero ended + // NOTE: This was changed from 42 to 60 in version 3.0.1 + internal const int FLTLSTSIZ = 42; + + // Rig model + private int rig_model; + //rig_model_t + + // Model name. + [MarshalAs (UnmanagedType.LPStr)] + private string model_name; + + // Manufacturer. + [MarshalAs (UnmanagedType.LPStr)] + private string mfg_name; + + // Driver version. + [MarshalAs (UnmanagedType.LPStr)] + private string version; + + // Copyright info. + [MarshalAs (UnmanagedType.LPStr)] + private string copyright; + + // Driver status. + private RigBackendStatus status; + + // Rig type. + private RigType rig_type; + // Type of the PTT port. + private PttType ptt_type; + // Type of the DCD port. + private RigDcd dcd_type; + // Type of communication port. + private RigPort port_type; + + // Minimum serial speed. + private int serial_rate_min; + // Maximum serial speed. + private int serial_rate_max; + // Number of data bits. + private int serial_data_bits; + // Number of stop bits. + private int serial_stop_bits; + + // Parity. + private RigSerialParity serial_parity; + // Handshake. + private RigSerialHandshake serial_handshake; + + // Delay between each byte sent out, in mS + private int write_delay; + // Delay between each commands send out, in mS + private int post_write_delay; + // Timeout, in mS + private int timeout; + + // Maximum number of retries if command fails, 0 to disable + private int retry; + + // List of get functions + private uint has_get_func; + // List of set functions + private uint has_set_func; + // List of get level + private uint has_get_level; + // List of set level + private uint has_set_level; + // List of get parm + private uint has_get_parm; + // List of set parm + private uint has_set_parm; + + // level granularity (i.e. steps) + [MarshalAs (UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = Rig.RIG_SETTING_MAX)] + private Granularity[] level_gran; + + // parm granularity (i.e. steps) + [MarshalAs (UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = Rig.RIG_SETTING_MAX)] + private Granularity[] parm_gran; + + // Extension parm list, \sa ext.c + + //[MarshalAs (UnmanagedType.Struct)] + private IntPtr extparms; + // Extension level list, \sa ext.c + //[MarshalAs (UnmanagedType.Struct)] + private IntPtr extlevels; + + // CTCSS tones list, zero ended + private IntPtr ctcss_list; + // DCS code list, zero ended + private IntPtr dcs_list; + + // Preamp list in dB, 0 terminated + [MarshalAs (UnmanagedType.ByValArray, SizeConst = Rig.MAXDBLSTSIZ)] + private int[] preamp; + + // Preamp list in dB, 0 terminated + [MarshalAs (UnmanagedType.ByValArray, SizeConst = Rig.MAXDBLSTSIZ)] + private int[] attenuator; + + // max absolute RIT + private int max_rit; + // max absolute XIT + private int max_xit; + // max absolute IF-SHIFT + private int max_ifshift; + + // Announces bit field list + private RigAnnounce announces; + + // VFO op bit field list + private RigVfoOperation vfo_ops; + // Scan bit field list + private RigScanOperation scan_ops; + // Bit field list of direct VFO access commands + private int targetable_vfo; + // Supported transceive mode + private RigTransceive transceive; + + // Number of banks + private int bank_qty; + // Max length of memory channel name + private int chan_desc_sz; + + // Channel list, zero ended + [MarshalAs (UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = Rig.CHANLSTSIZ)] + private ChannelList32[] chan_list; + + // Receive frequency range list for ITU region 1 + [MarshalAs (UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = Rig.FRQRANGESIZ)] + private FrequencyRange[] rx_range_list1; + + // Transmit frequency range list for ITU region 1 + [MarshalAs (UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = Rig.FRQRANGESIZ)] + private FrequencyRange[] tx_range_list1; + + // Receive frequency range list for ITU region 2 + [MarshalAs (UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = Rig.FRQRANGESIZ)] + private FrequencyRange[] rx_range_list2; + + // Transmit frequency range list for ITU region 2 + [MarshalAs (UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = Rig.FRQRANGESIZ)] + private FrequencyRange[] tx_range_list2; + + // Tuning step list + [MarshalAs (UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = Rig.TSLSTSIZ)] + private ModeValue32[] tuning_steps; + + // mode/filter table, at -6dB + [MarshalAs (UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = FLTLSTSIZ)] + private ModeValue32[] filters_list; + + // S-meter calibration table + private CalibrationTable str_cal; + + // Configuration parametres. + private IntPtr cfgparams; + // Private data. + private IntPtr priv; + + // function pointers to API functions, if IntPtr.Zero, the function is not available + private IntPtr rig_init; + private IntPtr rig_cleanup; + private IntPtr rig_open; + private IntPtr rig_close; + + private IntPtr set_freq; + private IntPtr get_freq; + + private IntPtr set_mode; + private IntPtr get_mode; + + private IntPtr set_vfo; + private IntPtr get_vfo; + + private IntPtr set_ptt; + private IntPtr get_ptt; + private IntPtr get_dcd; + + private IntPtr set_rptr_shift; + private IntPtr get_rptr_shift; + + private IntPtr set_rptr_offs; + private IntPtr get_rptr_offs; + + private IntPtr set_split_freq; + private IntPtr get_split_freq; + private IntPtr set_split_mode; + private IntPtr get_split_mode; + + // This was added in 3.1 + // private IntPtr set_split_freq_mode; + // private IntPtr get_split_freq_mode; + + private IntPtr set_split_vfo; + private IntPtr get_split_vfo; + + private IntPtr set_rit; + private IntPtr get_rit; + private IntPtr set_xit; + private IntPtr get_xit; + + private IntPtr set_ts; + private IntPtr get_ts; + + private IntPtr set_dcs_code; + private IntPtr get_dcs_code; + private IntPtr set_tone; + private IntPtr get_tone; + private IntPtr set_ctcss_tone; + private IntPtr get_ctcss_tone; + + private IntPtr set_dcs_sql; + private IntPtr get_dcs_sql; + private IntPtr set_tone_sql; + private IntPtr get_tone_sql; + private IntPtr set_ctcss_sql; + private IntPtr get_ctcss_sql; + + private IntPtr power2mW; + private IntPtr mW2power; + + private IntPtr set_powerstat; + private IntPtr get_powerstat; + private IntPtr reset; + + private IntPtr set_ant; + private IntPtr get_ant; + + private IntPtr set_level; + private IntPtr get_level; + + private IntPtr set_func; + private IntPtr get_func; + + private IntPtr set_parm; + private IntPtr get_parm; + + private IntPtr set_ext_level; + private IntPtr get_ext_level; + + private IntPtr set_ext_parm; + private IntPtr get_ext_parm; + + private IntPtr set_conf; + private IntPtr get_conf; + + private IntPtr send_dtmf; + private IntPtr recv_dtmf; + private IntPtr send_morse; + + private IntPtr set_bank; + private IntPtr set_mem; + private IntPtr get_mem; + private IntPtr vfo_op; + private IntPtr scan; + + private IntPtr set_trn; + private IntPtr get_trn; + + private IntPtr decode_event; + + private IntPtr set_channel; + private IntPtr get_channel; + + private IntPtr get_info; + + private IntPtr set_chan_all_cb; + private IntPtr get_chan_all_cb; + + private IntPtr set_mem_all_cb; + private IntPtr get_mem_all_cb; + + //[MarshalAs (UnmanagedType.LPStr)] + private IntPtr clone_combo_set; + + //[MarshalAs (UnmanagedType.LPStr)] + private IntPtr clone_combo_get; + + private int test1; + private int test2; + private int test3; + private int test4; + private int test5; + private int test6; + private int test7; + private int test8; + private int test9; + private int test10; + + // Getter Properties to implement the interface + public int Rig_model { get { return rig_model; } } + + public string Model_name { get { return model_name; } } + + public string Mfg_name { get { return mfg_name; } } + + public string Version { get { return version; } } + + public string Copyright { get { return copyright; } } + + public RigBackendStatus Status { get { return status; } } + + public RigType Rig_type { get { return rig_type; } } + + public PttType Ptt_type { get { return ptt_type; } } + + public RigDcd Dcd_type { get { return dcd_type; } } + + public RigPort Port_type { get { return port_type; } } + + public int Serial_rate_min { get { return serial_rate_min; } } + + public int Serial_rate_max { get { return serial_rate_max; } } + + public int Serial_data_bits { get { return serial_data_bits; } } + + public int Serial_stop_bits { get { return serial_stop_bits; } } + + public RigSerialParity Serial_parity { get { return serial_parity; } } + + public RigSerialHandshake Serial_handshake { get { return serial_handshake; } } + + public int Write_delay { get { return write_delay; } } + + public int Post_write_delay { get { return post_write_delay; } } + + public int Timeout { get { return timeout; } } + + public int Retry { get { return retry; } } + + public uint Has_get_func { get { return has_get_func; } } + + public uint Has_set_func { get { return has_set_func; } } + + public uint Has_get_level { get { return has_get_level; } } + + public uint Has_set_level { get { return has_set_level; } } + + public uint Has_get_parm { get { return has_get_parm; } } + + public uint Has_set_parm { get { return has_set_parm; } } + + public Granularity[] Level_gran { get { return level_gran; } } + + public Granularity[] Parm_gran { get { return parm_gran; } } + + public IntPtr Extparms { get { return extparms; } } + + public IntPtr Extlevels { get { return extlevels; } } + + public IntPtr Ctcss_list { get { return ctcss_list; } } + + public IntPtr Dcs_list { get { return dcs_list; } } + + public int[] Preamp { get { return preamp; } } + + public int[] Attenuator { get { return attenuator; } } + + public int Max_rit { get { return max_rit; } } + + public int Max_xit { get { return max_xit; } } + + public int Max_ifshift { get { return max_ifshift; } } + + public RigAnnounce Announces { get { return announces; } } + + public RigVfoOperation Vfo_ops { get { return vfo_ops; } } + + public RigScanOperation Scan_ops { get { return scan_ops; } } + + public int Targetable_vfo { get { return Targetable_vfo1; } } + + public int Targetable_vfo1 { get { return targetable_vfo; } } + + public RigTransceive Transceive { get { return transceive; } } + + public int Bank_qty { get { return bank_qty; } } + + public int Chan_desc_sz { get { return chan_desc_sz; } } + + public IList Chan_list { get { return chan_list.CastList (); } } + + public FrequencyRange[] Rx_range_list1 { get { return rx_range_list1; } } + + public FrequencyRange[] Tx_range_list1 { get { return tx_range_list1; } } + + public FrequencyRange[] Rx_range_list2 { get { return rx_range_list2; } } + + public FrequencyRange[] Tx_range_list2 { get { return tx_range_list2; } } + + public IList Tuning_steps { get { return tuning_steps.CastList (); } } + + public IList Filters_list { get { return filters_list.CastList (); } } + + public CalibrationTable Str_cal { get { return str_cal; } } + + public IntPtr Cfgparams { get { return cfgparams; } } + + public IntPtr Priv { get { return priv; } } + + public IntPtr Rig_init { get { return rig_init; } } + + public IntPtr Rig_cleanup { get { return rig_cleanup; } } + + public IntPtr Rig_open { get { return rig_open; } } + + public IntPtr Rig_close { get { return rig_close; } } + + public IntPtr Set_freq { get { return set_freq; } } + + public IntPtr Get_freq { get { return get_freq; } } + + public IntPtr Set_mode { get { return set_mode; } } + + public IntPtr Get_mode { get { return get_mode; } } + + public IntPtr Set_vfo { get { return set_vfo; } } + + public IntPtr Get_vfo { get { return get_vfo; } } + + public IntPtr Set_ptt { get { return set_ptt; } } + + public IntPtr Get_ptt { get { return get_ptt; } } + + public IntPtr Get_dcd { get { return get_dcd; } } + + public IntPtr Set_rptr_shift { get { return set_rptr_shift; } } + + public IntPtr Get_rptr_shift { get { return get_rptr_shift; } } + + public IntPtr Set_rptr_offs { get { return set_rptr_offs; } } + + public IntPtr Get_rptr_offs { get { return get_rptr_offs; } } + + public IntPtr Set_split_freq { get { return set_split_freq; } } + + public IntPtr Get_split_freq { get { return get_split_freq; } } + + public IntPtr Set_split_mode { get { return set_split_mode; } } + + public IntPtr Get_split_mode { get { return get_split_mode; } } + + public IntPtr Set_split_freq_mode { get { return IntPtr.Zero; } } + //set_split_freq_mode; } } + public IntPtr Get_split_freq_mode { get { return IntPtr.Zero; } } + //get_split_freq_mode; } } + public IntPtr Set_split_vfo { get { return set_split_vfo; } } + + public IntPtr Get_split_vfo { get { return get_split_vfo; } } + + public IntPtr Set_rit { get { return set_rit; } } + + public IntPtr Get_rit { get { return get_rit; } } + + public IntPtr Set_xit { get { return set_xit; } } + + public IntPtr Get_xit { get { return get_xit; } } + + public IntPtr Set_ts { get { return set_ts; } } + + public IntPtr Get_ts { get { return get_ts; } } + + public IntPtr Set_dcs_code { get { return set_dcs_code; } } + + public IntPtr Get_dcs_code { get { return get_dcs_code; } } + + public IntPtr Set_tone { get { return set_tone; } } + + public IntPtr Get_tone { get { return get_tone; } } + + public IntPtr Set_ctcss_tone { get { return set_ctcss_tone; } } + + public IntPtr Get_ctcss_tone { get { return get_ctcss_tone; } } + + public IntPtr Set_dcs_sql { get { return set_dcs_sql; } } + + public IntPtr Get_dcs_sql { get { return get_dcs_sql; } } + + public IntPtr Set_tone_sql { get { return set_tone_sql; } } + + public IntPtr Get_tone_sql { get { return get_tone_sql; } } + + public IntPtr Set_ctcss_sql { get { return set_ctcss_sql; } } + + public IntPtr Get_ctcss_sql { get { return get_ctcss_sql; } } + + public IntPtr Power2mW { get { return power2mW; } } + + public IntPtr MW2power { get { return mW2power; } } + + public IntPtr Set_powerstat { get { return set_powerstat; } } + + public IntPtr Get_powerstat { get { return get_powerstat; } } + + public IntPtr Reset { get { return reset; } } + + public IntPtr Set_ant { get { return set_ant; } } + + public IntPtr Get_ant { get { return get_ant; } } + + public IntPtr Set_level { get { return set_level; } } + + public IntPtr Get_level { get { return get_level; } } + + public IntPtr Set_func { get { return set_func; } } + + public IntPtr Get_func { get { return get_func; } } + + public IntPtr Set_parm { get { return set_parm; } } + + public IntPtr Get_parm { get { return get_parm; } } + + public IntPtr Set_ext_level { get { return set_ext_level; } } + + public IntPtr Get_ext_level { get { return get_ext_level; } } + + public IntPtr Set_ext_parm { get { return set_ext_parm; } } + + public IntPtr Get_ext_parm { get { return get_ext_parm; } } + + public IntPtr Set_conf { get { return set_conf; } } + + public IntPtr Get_conf { get { return get_conf; } } + + public IntPtr Send_dtmf { get { return send_dtmf; } } + + public IntPtr Recv_dtmf { get { return recv_dtmf; } } + + public IntPtr Send_morse { get { return send_morse; } } + + public IntPtr Set_bank { get { return set_bank; } } + + public IntPtr Set_mem { get { return set_mem; } } + + public IntPtr Get_mem { get { return get_mem; } } + + public IntPtr Vfo_op { get { return vfo_op; } } + + public IntPtr Scan { get { return scan; } } + + public IntPtr Set_trn { get { return set_trn; } } + + public IntPtr Get_trn { get { return get_trn; } } + + public IntPtr Decode_event { get { return decode_event; } } + + public IntPtr Set_channel { get { return set_channel; } } + + public IntPtr Get_channel { get { return get_channel; } } + + public IntPtr Get_info { get { return get_info; } } + + public IntPtr Set_chan_all_cb { get { return set_chan_all_cb; } } + + public IntPtr Get_chan_all_cb { get { return get_chan_all_cb; } } + + public IntPtr Set_mem_all_cb { get { return set_mem_all_cb; } } + + public IntPtr Get_mem_all_cb { get { return get_mem_all_cb; } } + + public IntPtr Clone_combo_set { get { return clone_combo_set; } } + + public IntPtr Clone_combo_get { get { return clone_combo_get; } } + } +} diff --git a/HamLibSharp/x86/RigCapsNative32v301.cs b/HamLibSharp/x86/RigCapsNative32v301.cs new file mode 100644 index 0000000..9d27911 --- /dev/null +++ b/HamLibSharp/x86/RigCapsNative32v301.cs @@ -0,0 +1,603 @@ +// +// RigCapsNative32v301.cs +// +// Author: +// Jae Stutzman +// +// Copyright (c) 2016 Jae Stutzman +// +// This library is free software; you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as +// published by the Free Software Foundation; either version 2.1 of the +// License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +using System; +using System.Collections.Generic; +using System.Runtime.InteropServices; + +namespace HamLibSharp.x86 +{ + /// + /// This class holds the caps values and uses the C type "long" as 32-bit. + /// This is used for 32-bit architectures and all Windows architectures (32 and 64 bit) + /// + [StructLayout (LayoutKind.Sequential, CharSet = CharSet.Ansi)] + internal class RigCapsNative32v301 : IRigCapsNative + { + // max mode/filter list size, zero ended + // NOTE: This was changed from 42 to 60 in version 3.0.1 + internal const int FLTLSTSIZ = 60; + + // Rig model + private int rig_model; + //rig_model_t + + // Model name. + [MarshalAs (UnmanagedType.LPStr)] + private string model_name; + + // Manufacturer. + [MarshalAs (UnmanagedType.LPStr)] + private string mfg_name; + + // Driver version. + [MarshalAs (UnmanagedType.LPStr)] + private string version; + + // Copyright info. + [MarshalAs (UnmanagedType.LPStr)] + private string copyright; + + // Driver status. + private RigBackendStatus status; + + // Rig type. + private RigType rig_type; + // Type of the PTT port. + private PttType ptt_type; + // Type of the DCD port. + private RigDcd dcd_type; + // Type of communication port. + private RigPort port_type; + + // Minimum serial speed. + private int serial_rate_min; + // Maximum serial speed. + private int serial_rate_max; + // Number of data bits. + private int serial_data_bits; + // Number of stop bits. + private int serial_stop_bits; + + // Parity. + private RigSerialParity serial_parity; + // Handshake. + private RigSerialHandshake serial_handshake; + + // Delay between each byte sent out, in mS + private int write_delay; + // Delay between each commands send out, in mS + private int post_write_delay; + // Timeout, in mS + private int timeout; + + // Maximum number of retries if command fails, 0 to disable + private int retry; + + // List of get functions + private uint has_get_func; + // List of set functions + private uint has_set_func; + // List of get level + private uint has_get_level; + // List of set level + private uint has_set_level; + // List of get parm + private uint has_get_parm; + // List of set parm + private uint has_set_parm; + + // level granularity (i.e. steps) + [MarshalAs (UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = Rig.RIG_SETTING_MAX)] + private Granularity[] level_gran; + + // parm granularity (i.e. steps) + [MarshalAs (UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = Rig.RIG_SETTING_MAX)] + private Granularity[] parm_gran; + + // Extension parm list, \sa ext.c + + //[MarshalAs (UnmanagedType.Struct)] + private IntPtr extparms; + // Extension level list, \sa ext.c + //[MarshalAs (UnmanagedType.Struct)] + private IntPtr extlevels; + + // CTCSS tones list, zero ended + private IntPtr ctcss_list; + // DCS code list, zero ended + private IntPtr dcs_list; + + // Preamp list in dB, 0 terminated + [MarshalAs (UnmanagedType.ByValArray, SizeConst = Rig.MAXDBLSTSIZ)] + private int[] preamp; + + // Preamp list in dB, 0 terminated + [MarshalAs (UnmanagedType.ByValArray, SizeConst = Rig.MAXDBLSTSIZ)] + private int[] attenuator; + + // max absolute RIT + private int max_rit; + // max absolute XIT + private int max_xit; + // max absolute IF-SHIFT + private int max_ifshift; + + // Announces bit field list + private RigAnnounce announces; + + // VFO op bit field list + private RigVfoOperation vfo_ops; + // Scan bit field list + private RigScanOperation scan_ops; + // Bit field list of direct VFO access commands + private int targetable_vfo; + // Supported transceive mode + private RigTransceive transceive; + + // Number of banks + private int bank_qty; + // Max length of memory channel name + private int chan_desc_sz; + + // Channel list, zero ended + [MarshalAs (UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = Rig.CHANLSTSIZ)] + private ChannelList32[] chan_list; + + // Receive frequency range list for ITU region 1 + [MarshalAs (UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = Rig.FRQRANGESIZ)] + private FrequencyRange[] rx_range_list1; + + // Transmit frequency range list for ITU region 1 + [MarshalAs (UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = Rig.FRQRANGESIZ)] + private FrequencyRange[] tx_range_list1; + + // Receive frequency range list for ITU region 2 + [MarshalAs (UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = Rig.FRQRANGESIZ)] + private FrequencyRange[] rx_range_list2; + + // Transmit frequency range list for ITU region 2 + [MarshalAs (UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = Rig.FRQRANGESIZ)] + private FrequencyRange[] tx_range_list2; + + // Tuning step list + [MarshalAs (UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = Rig.TSLSTSIZ)] + private ModeValue32[] tuning_steps; + + // mode/filter table, at -6dB + [MarshalAs (UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = FLTLSTSIZ)] + private ModeValue32[] filters_list; + + // S-meter calibration table + private CalibrationTable str_cal; + + // Configuration parametres. + private IntPtr cfgparams; + // Private data. + private IntPtr priv; + + // function pointers to API functions, if IntPtr.Zero, the function is not available + private IntPtr rig_init; + private IntPtr rig_cleanup; + private IntPtr rig_open; + private IntPtr rig_close; + + private IntPtr set_freq; + private IntPtr get_freq; + + private IntPtr set_mode; + private IntPtr get_mode; + + private IntPtr set_vfo; + private IntPtr get_vfo; + + private IntPtr set_ptt; + private IntPtr get_ptt; + private IntPtr get_dcd; + + private IntPtr set_rptr_shift; + private IntPtr get_rptr_shift; + + private IntPtr set_rptr_offs; + private IntPtr get_rptr_offs; + + private IntPtr set_split_freq; + private IntPtr get_split_freq; + private IntPtr set_split_mode; + private IntPtr get_split_mode; + + // This was added in 3.1 + // private IntPtr set_split_freq_mode; + // private IntPtr get_split_freq_mode; + + private IntPtr set_split_vfo; + private IntPtr get_split_vfo; + + private IntPtr set_rit; + private IntPtr get_rit; + private IntPtr set_xit; + private IntPtr get_xit; + + private IntPtr set_ts; + private IntPtr get_ts; + + private IntPtr set_dcs_code; + private IntPtr get_dcs_code; + private IntPtr set_tone; + private IntPtr get_tone; + private IntPtr set_ctcss_tone; + private IntPtr get_ctcss_tone; + + private IntPtr set_dcs_sql; + private IntPtr get_dcs_sql; + private IntPtr set_tone_sql; + private IntPtr get_tone_sql; + private IntPtr set_ctcss_sql; + private IntPtr get_ctcss_sql; + + private IntPtr power2mW; + private IntPtr mW2power; + + private IntPtr set_powerstat; + private IntPtr get_powerstat; + private IntPtr reset; + + private IntPtr set_ant; + private IntPtr get_ant; + + private IntPtr set_level; + private IntPtr get_level; + + private IntPtr set_func; + private IntPtr get_func; + + private IntPtr set_parm; + private IntPtr get_parm; + + private IntPtr set_ext_level; + private IntPtr get_ext_level; + + private IntPtr set_ext_parm; + private IntPtr get_ext_parm; + + private IntPtr set_conf; + private IntPtr get_conf; + + private IntPtr send_dtmf; + private IntPtr recv_dtmf; + private IntPtr send_morse; + + private IntPtr set_bank; + private IntPtr set_mem; + private IntPtr get_mem; + private IntPtr vfo_op; + private IntPtr scan; + + private IntPtr set_trn; + private IntPtr get_trn; + + private IntPtr decode_event; + + private IntPtr set_channel; + private IntPtr get_channel; + + private IntPtr get_info; + + private IntPtr set_chan_all_cb; + private IntPtr get_chan_all_cb; + + private IntPtr set_mem_all_cb; + private IntPtr get_mem_all_cb; + + //[MarshalAs (UnmanagedType.LPStr)] + private IntPtr clone_combo_set; + + //[MarshalAs (UnmanagedType.LPStr)] + private IntPtr clone_combo_get; + + private int test1; + private int test2; + private int test3; + private int test4; + private int test5; + private int test6; + private int test7; + private int test8; + private int test9; + private int test10; + + // Getter Properties to implement the interface + public int Rig_model { get { return rig_model; } } + + public string Model_name { get { return model_name; } } + + public string Mfg_name { get { return mfg_name; } } + + public string Version { get { return version; } } + + public string Copyright { get { return copyright; } } + + public RigBackendStatus Status { get { return status; } } + + public RigType Rig_type { get { return rig_type; } } + + public PttType Ptt_type { get { return ptt_type; } } + + public RigDcd Dcd_type { get { return dcd_type; } } + + public RigPort Port_type { get { return port_type; } } + + public int Serial_rate_min { get { return serial_rate_min; } } + + public int Serial_rate_max { get { return serial_rate_max; } } + + public int Serial_data_bits { get { return serial_data_bits; } } + + public int Serial_stop_bits { get { return serial_stop_bits; } } + + public RigSerialParity Serial_parity { get { return serial_parity; } } + + public RigSerialHandshake Serial_handshake { get { return serial_handshake; } } + + public int Write_delay { get { return write_delay; } } + + public int Post_write_delay { get { return post_write_delay; } } + + public int Timeout { get { return timeout; } } + + public int Retry { get { return retry; } } + + public uint Has_get_func { get { return has_get_func; } } + + public uint Has_set_func { get { return has_set_func; } } + + public uint Has_get_level { get { return has_get_level; } } + + public uint Has_set_level { get { return has_set_level; } } + + public uint Has_get_parm { get { return has_get_parm; } } + + public uint Has_set_parm { get { return has_set_parm; } } + + public Granularity[] Level_gran { get { return level_gran; } } + + public Granularity[] Parm_gran { get { return parm_gran; } } + + public IntPtr Extparms { get { return extparms; } } + + public IntPtr Extlevels { get { return extlevels; } } + + public IntPtr Ctcss_list { get { return ctcss_list; } } + + public IntPtr Dcs_list { get { return dcs_list; } } + + public int[] Preamp { get { return preamp; } } + + public int[] Attenuator { get { return attenuator; } } + + public int Max_rit { get { return max_rit; } } + + public int Max_xit { get { return max_xit; } } + + public int Max_ifshift { get { return max_ifshift; } } + + public RigAnnounce Announces { get { return announces; } } + + public RigVfoOperation Vfo_ops { get { return vfo_ops; } } + + public RigScanOperation Scan_ops { get { return scan_ops; } } + + public int Targetable_vfo { get { return Targetable_vfo1; } } + + public int Targetable_vfo1 { get { return targetable_vfo; } } + + public RigTransceive Transceive { get { return transceive; } } + + public int Bank_qty { get { return bank_qty; } } + + public int Chan_desc_sz { get { return chan_desc_sz; } } + + public IList Chan_list { get { return chan_list.CastList (); } } + + public FrequencyRange[] Rx_range_list1 { get { return rx_range_list1; } } + + public FrequencyRange[] Tx_range_list1 { get { return tx_range_list1; } } + + public FrequencyRange[] Rx_range_list2 { get { return rx_range_list2; } } + + public FrequencyRange[] Tx_range_list2 { get { return tx_range_list2; } } + + public IList Tuning_steps { get { return tuning_steps.CastList (); } } + + public IList Filters_list { get { return filters_list.CastList (); } } + + public CalibrationTable Str_cal { get { return str_cal; } } + + public IntPtr Cfgparams { get { return cfgparams; } } + + public IntPtr Priv { get { return priv; } } + + public IntPtr Rig_init { get { return rig_init; } } + + public IntPtr Rig_cleanup { get { return rig_cleanup; } } + + public IntPtr Rig_open { get { return rig_open; } } + + public IntPtr Rig_close { get { return rig_close; } } + + public IntPtr Set_freq { get { return set_freq; } } + + public IntPtr Get_freq { get { return get_freq; } } + + public IntPtr Set_mode { get { return set_mode; } } + + public IntPtr Get_mode { get { return get_mode; } } + + public IntPtr Set_vfo { get { return set_vfo; } } + + public IntPtr Get_vfo { get { return get_vfo; } } + + public IntPtr Set_ptt { get { return set_ptt; } } + + public IntPtr Get_ptt { get { return get_ptt; } } + + public IntPtr Get_dcd { get { return get_dcd; } } + + public IntPtr Set_rptr_shift { get { return set_rptr_shift; } } + + public IntPtr Get_rptr_shift { get { return get_rptr_shift; } } + + public IntPtr Set_rptr_offs { get { return set_rptr_offs; } } + + public IntPtr Get_rptr_offs { get { return get_rptr_offs; } } + + public IntPtr Set_split_freq { get { return set_split_freq; } } + + public IntPtr Get_split_freq { get { return get_split_freq; } } + + public IntPtr Set_split_mode { get { return set_split_mode; } } + + public IntPtr Get_split_mode { get { return get_split_mode; } } + + public IntPtr Set_split_freq_mode { get { return IntPtr.Zero; } } + //set_split_freq_mode; } } + public IntPtr Get_split_freq_mode { get { return IntPtr.Zero; } } + //get_split_freq_mode; } } + public IntPtr Set_split_vfo { get { return set_split_vfo; } } + + public IntPtr Get_split_vfo { get { return get_split_vfo; } } + + public IntPtr Set_rit { get { return set_rit; } } + + public IntPtr Get_rit { get { return get_rit; } } + + public IntPtr Set_xit { get { return set_xit; } } + + public IntPtr Get_xit { get { return get_xit; } } + + public IntPtr Set_ts { get { return set_ts; } } + + public IntPtr Get_ts { get { return get_ts; } } + + public IntPtr Set_dcs_code { get { return set_dcs_code; } } + + public IntPtr Get_dcs_code { get { return get_dcs_code; } } + + public IntPtr Set_tone { get { return set_tone; } } + + public IntPtr Get_tone { get { return get_tone; } } + + public IntPtr Set_ctcss_tone { get { return set_ctcss_tone; } } + + public IntPtr Get_ctcss_tone { get { return get_ctcss_tone; } } + + public IntPtr Set_dcs_sql { get { return set_dcs_sql; } } + + public IntPtr Get_dcs_sql { get { return get_dcs_sql; } } + + public IntPtr Set_tone_sql { get { return set_tone_sql; } } + + public IntPtr Get_tone_sql { get { return get_tone_sql; } } + + public IntPtr Set_ctcss_sql { get { return set_ctcss_sql; } } + + public IntPtr Get_ctcss_sql { get { return get_ctcss_sql; } } + + public IntPtr Power2mW { get { return power2mW; } } + + public IntPtr MW2power { get { return mW2power; } } + + public IntPtr Set_powerstat { get { return set_powerstat; } } + + public IntPtr Get_powerstat { get { return get_powerstat; } } + + public IntPtr Reset { get { return reset; } } + + public IntPtr Set_ant { get { return set_ant; } } + + public IntPtr Get_ant { get { return get_ant; } } + + public IntPtr Set_level { get { return set_level; } } + + public IntPtr Get_level { get { return get_level; } } + + public IntPtr Set_func { get { return set_func; } } + + public IntPtr Get_func { get { return get_func; } } + + public IntPtr Set_parm { get { return set_parm; } } + + public IntPtr Get_parm { get { return get_parm; } } + + public IntPtr Set_ext_level { get { return set_ext_level; } } + + public IntPtr Get_ext_level { get { return get_ext_level; } } + + public IntPtr Set_ext_parm { get { return set_ext_parm; } } + + public IntPtr Get_ext_parm { get { return get_ext_parm; } } + + public IntPtr Set_conf { get { return set_conf; } } + + public IntPtr Get_conf { get { return get_conf; } } + + public IntPtr Send_dtmf { get { return send_dtmf; } } + + public IntPtr Recv_dtmf { get { return recv_dtmf; } } + + public IntPtr Send_morse { get { return send_morse; } } + + public IntPtr Set_bank { get { return set_bank; } } + + public IntPtr Set_mem { get { return set_mem; } } + + public IntPtr Get_mem { get { return get_mem; } } + + public IntPtr Vfo_op { get { return vfo_op; } } + + public IntPtr Scan { get { return scan; } } + + public IntPtr Set_trn { get { return set_trn; } } + + public IntPtr Get_trn { get { return get_trn; } } + + public IntPtr Decode_event { get { return decode_event; } } + + public IntPtr Set_channel { get { return set_channel; } } + + public IntPtr Get_channel { get { return get_channel; } } + + public IntPtr Get_info { get { return get_info; } } + + public IntPtr Set_chan_all_cb { get { return set_chan_all_cb; } } + + public IntPtr Get_chan_all_cb { get { return get_chan_all_cb; } } + + public IntPtr Set_mem_all_cb { get { return set_mem_all_cb; } } + + public IntPtr Get_mem_all_cb { get { return get_mem_all_cb; } } + + public IntPtr Clone_combo_set { get { return clone_combo_set; } } + + public IntPtr Clone_combo_get { get { return clone_combo_get; } } + } +} diff --git a/HamLibSharp/x86/RigStateNative32.cs b/HamLibSharp/x86/RigStateNative32.cs new file mode 100644 index 0000000..d2cb9a2 --- /dev/null +++ b/HamLibSharp/x86/RigStateNative32.cs @@ -0,0 +1,178 @@ +// +// RigStateNative32.cs +// +// Author: +// Jae Stutzman +// +// Copyright (c) 2016 Jae Stutzman +// +// This library is free software; you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as +// published by the Free Software Foundation; either version 2.1 of the +// License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +using System; +using System.Collections.Generic; +using System.Runtime.InteropServices; + +namespace HamLibSharp.x86 +{ + // TODO: Primary interest is to get the vfo_list and mode_list. Everything else untested. + [StructLayout (LayoutKind.Sequential, CharSet = CharSet.Ansi)] + internal struct RigStateNative32 : IRigStateNative + { + // max mode/filter list size, zero ended + // NOTE: This was changed from 42 to 60 in version 3.0.1 + internal const int FLTLSTSIZ = 60; + + // [MarshalAs (UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = 1)] + // HamLibCommPortNative port; /// Rig port (internal use). + + /// Rig port (internal use). + [MarshalAs (UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = 3)] + internal HamLibPortNative[] ptt_dcd_ports; + + /// VFO compensation in PPM, 0.0 to disable + internal double vfo_comp; + + /// ITU region to select among freq_range_t + internal int itu_region; + + /// Receive frequency range list + [MarshalAs (UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = Rig.FRQRANGESIZ)] + internal FrequencyRange[] rx_range_list; + + /// Transmit frequency range list + [MarshalAs (UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = Rig.FRQRANGESIZ)] + internal FrequencyRange[] tx_range_list; + + // Tuning step list + [MarshalAs (UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = Rig.TSLSTSIZ)] + internal ModeValue32[] tuning_steps; + + [MarshalAs (UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = FLTLSTSIZ)] + internal ModeValue32[] filters; + + // S-meter calibration table + internal CalibrationTable str_cal; + + [MarshalAs (UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = Rig.CHANLSTSIZ)] + internal ChannelList32[] chan_list; + + /// max absolute + internal int max_rit; + /// max absolute XIT + internal int max_xit; + /// max absolute IF-SHIFT + internal int max_ifshift; + + /// Announces bit field list + internal RigAnnounce announces; + + // Preamp list in dB, 0 terminated + [MarshalAs (UnmanagedType.ByValArray, SizeConst = Rig.MAXDBLSTSIZ)] + internal int[] preamp; + + // Preamp list in dB, 0 terminated + [MarshalAs (UnmanagedType.ByValArray, SizeConst = Rig.MAXDBLSTSIZ)] + internal int[] attenuator; + + // List of get functions + internal uint has_get_func; + // List of set functions + internal uint has_set_func; + // List of get level + internal uint has_get_level; + // List of set level + internal uint has_set_level; + // List of get parm + internal uint has_get_parm; + // List of set parm + internal uint has_set_parm; + + // level granularity (i.e. steps) + [MarshalAs (UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = Rig.RIG_SETTING_MAX)] + internal Granularity[] level_gran; + + // parm granularity (i.e. steps) + [MarshalAs (UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = Rig.RIG_SETTING_MAX)] + internal Granularity[] parm_gran; + + // non overridable fields, internal use + + /// set to 1 to hold the event decoder (async) otherwise 0 + internal int hold_decode; + /// VFO currently set + internal int current_vfo; + /// Complete list of VFO for this rig + internal int vfo_list; + /// Comm port state, opened/closed. + internal int comm_state; + /// Pointer to private rig state data. + IntPtr priv; + /// Internal use by hamlib++ for event handling. + IntPtr obj; + /// Whether the transceive mode is on + internal int transceive; + /// Event notification polling period in milliseconds + internal int poll_interval; + /// Frequency currently set + internal double current_freq; + /// Mode currently set + RigMode current_mode; + /// Passband width currently set + internal int current_width; + /// Tx VFO currently set + internal int tx_vfo; + /// Complete list of modes for this rig + internal RigMode mode_list; + + // interface properties + + public HamLibPortNative[] Ptt_dcd_ports { get { return ptt_dcd_ports; } } + public double Vfo_comp { get { return vfo_comp; } } + public int Itu_region { get { return itu_region; } } + public FrequencyRange[] Rx_range_list { get { return rx_range_list; } } + public FrequencyRange[] Tx_range_list { get { return tx_range_list; } } + public IList Tuning_steps { get { return tuning_steps.CastList(); } } + public IList Filters { get { return filters.CastList(); } } + public CalibrationTable Str_cal { get { return str_cal; } } + public IList Chan_list { get { return chan_list.CastList(); } } + public int Max_rit { get { return max_rit; } } + public int Max_xit { get { return max_xit; } } + public int Max_ifshift { get { return max_ifshift; } } + public RigAnnounce Announces { get { return announces; } } + public int[] Preamp { get { return preamp; } } + public int[] Attenuator { get { return attenuator; } } + public uint Has_get_func { get { return has_get_func; } } + public uint Has_set_func { get { return Has_set_func; } } + public uint Has_get_level { get { return has_get_level; } } + public uint Has_set_level { get { return has_set_level; } } + public uint Has_get_parm { get { return has_get_parm; } } + public uint Has_set_parm { get { return has_set_parm; } } + public Granularity[] Level_gran { get { return level_gran; } } + public Granularity[] Parm_gran { get { return parm_gran; } } + public int Hold_decode { get { return hold_decode; } } + public int Current_vfo { get { return current_vfo; } } + public int Vfo_list { get { return vfo_list; } } + public int Comm_state { get { return comm_state; } } + public IntPtr Priv { get { return priv; } } + public IntPtr Obj { get { return obj; } } + public int Transceive { get { return transceive; } } + public int Poll_interval { get { return poll_interval; } } + public double Current_freq { get { return current_freq; } } + public RigMode Current_mode { get { return current_mode; } } + public int Current_width { get { return current_width; } } + public int Tx_vfo { get { return tx_vfo; } } + public RigMode Mode_list { get { return mode_list; } } + } +} diff --git a/HamLibSharp/x86/RigStateNative32v2.cs b/HamLibSharp/x86/RigStateNative32v2.cs new file mode 100644 index 0000000..a2fe048 --- /dev/null +++ b/HamLibSharp/x86/RigStateNative32v2.cs @@ -0,0 +1,178 @@ +// +// RigStateNative32v2.cs +// +// Author: +// Jae Stutzman +// +// Copyright (c) 2016 Jae Stutzman +// +// This library is free software; you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as +// published by the Free Software Foundation; either version 2.1 of the +// License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +using System; +using System.Collections.Generic; +using System.Runtime.InteropServices; + +namespace HamLibSharp.x86 +{ + // TODO: Primary interest is to get the vfo_list and mode_list. Everything else untested. + [StructLayout (LayoutKind.Sequential, CharSet = CharSet.Ansi)] + internal struct RigStateNative32v2 : IRigStateNative + { + // max mode/filter list size, zero ended + // NOTE: This was changed from 42 to 60 in version 3.0.1 + internal const int FLTLSTSIZ = 42; + + // [MarshalAs (UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = 1)] + // HamLibCommPortNative port; /// Rig port (internal use). + + /// Rig port (internal use). + [MarshalAs (UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = 3)] + internal HamLibPortNative[] ptt_dcd_ports; + + /// VFO compensation in PPM, 0.0 to disable + internal double vfo_comp; + + /// ITU region to select among freq_range_t + internal int itu_region; + + /// Receive frequency range list + [MarshalAs (UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = Rig.FRQRANGESIZ)] + internal FrequencyRange[] rx_range_list; + + /// Transmit frequency range list + [MarshalAs (UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = Rig.FRQRANGESIZ)] + internal FrequencyRange[] tx_range_list; + + // Tuning step list + [MarshalAs (UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = Rig.TSLSTSIZ)] + internal ModeValue32[] tuning_steps; + + [MarshalAs (UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = FLTLSTSIZ)] + internal ModeValue32[] filters; + + // S-meter calibration table + internal CalibrationTable str_cal; + + [MarshalAs (UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = Rig.CHANLSTSIZ)] + internal ChannelList32[] chan_list; + + /// max absolute + internal int max_rit; + /// max absolute XIT + internal int max_xit; + /// max absolute IF-SHIFT + internal int max_ifshift; + + /// Announces bit field list + internal RigAnnounce announces; + + // Preamp list in dB, 0 terminated + [MarshalAs (UnmanagedType.ByValArray, SizeConst = Rig.MAXDBLSTSIZ)] + internal int[] preamp; + + // Preamp list in dB, 0 terminated + [MarshalAs (UnmanagedType.ByValArray, SizeConst = Rig.MAXDBLSTSIZ)] + internal int[] attenuator; + + // List of get functions + internal uint has_get_func; + // List of set functions + internal uint has_set_func; + // List of get level + internal uint has_get_level; + // List of set level + internal uint has_set_level; + // List of get parm + internal uint has_get_parm; + // List of set parm + internal uint has_set_parm; + + // level granularity (i.e. steps) + [MarshalAs (UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = Rig.RIG_SETTING_MAX)] + internal Granularity[] level_gran; + + // parm granularity (i.e. steps) + [MarshalAs (UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = Rig.RIG_SETTING_MAX)] + internal Granularity[] parm_gran; + + // non overridable fields, internal use + + /// set to 1 to hold the event decoder (async) otherwise 0 + internal int hold_decode; + /// VFO currently set + internal int current_vfo; + /// Complete list of VFO for this rig + internal int vfo_list; + /// Comm port state, opened/closed. + internal int comm_state; + /// Pointer to private rig state data. + IntPtr priv; + /// Internal use by hamlib++ for event handling. + IntPtr obj; + /// Whether the transceive mode is on + internal int transceive; + /// Event notification polling period in milliseconds + internal int poll_interval; + /// Frequency currently set + internal double current_freq; + /// Mode currently set + RigMode current_mode; + /// Passband width currently set + internal int current_width; + /// Tx VFO currently set + internal int tx_vfo; + /// Complete list of modes for this rig + internal RigMode mode_list; + + // interface properties + + public HamLibPortNative[] Ptt_dcd_ports { get { return ptt_dcd_ports; } } + public double Vfo_comp { get { return vfo_comp; } } + public int Itu_region { get { return itu_region; } } + public FrequencyRange[] Rx_range_list { get { return rx_range_list; } } + public FrequencyRange[] Tx_range_list { get { return tx_range_list; } } + public IList Tuning_steps { get { return tuning_steps.CastList(); } } + public IList Filters { get { return filters.CastList(); } } + public CalibrationTable Str_cal { get { return str_cal; } } + public IList Chan_list { get { return chan_list.CastList(); } } + public int Max_rit { get { return max_rit; } } + public int Max_xit { get { return max_xit; } } + public int Max_ifshift { get { return max_ifshift; } } + public RigAnnounce Announces { get { return announces; } } + public int[] Preamp { get { return preamp; } } + public int[] Attenuator { get { return attenuator; } } + public uint Has_get_func { get { return has_get_func; } } + public uint Has_set_func { get { return Has_set_func; } } + public uint Has_get_level { get { return has_get_level; } } + public uint Has_set_level { get { return has_set_level; } } + public uint Has_get_parm { get { return has_get_parm; } } + public uint Has_set_parm { get { return has_set_parm; } } + public Granularity[] Level_gran { get { return level_gran; } } + public Granularity[] Parm_gran { get { return parm_gran; } } + public int Hold_decode { get { return hold_decode; } } + public int Current_vfo { get { return current_vfo; } } + public int Vfo_list { get { return vfo_list; } } + public int Comm_state { get { return comm_state; } } + public IntPtr Priv { get { return priv; } } + public IntPtr Obj { get { return obj; } } + public int Transceive { get { return transceive; } } + public int Poll_interval { get { return poll_interval; } } + public double Current_freq { get { return current_freq; } } + public RigMode Current_mode { get { return current_mode; } } + public int Current_width { get { return current_width; } } + public int Tx_vfo { get { return tx_vfo; } } + public RigMode Mode_list { get { return mode_list; } } + } +} diff --git a/HorizonGenerator/HorizonGenerator.csproj b/HorizonGenerator/HorizonGenerator.csproj index 1133abe..be948f9 100644 --- a/HorizonGenerator/HorizonGenerator.csproj +++ b/HorizonGenerator/HorizonGenerator.csproj @@ -57,8 +57,8 @@ - - ..\packages\System.Data.SQLite.Core.1.0.112.0\lib\net40\System.Data.SQLite.dll + + ..\packages\Stub.System.Data.SQLite.Core.NetFramework.1.0.113.3\lib\net40\System.Data.SQLite.dll @@ -145,12 +145,12 @@ - + Dieses Projekt verweist auf mindestens ein NuGet-Paket, das auf diesem Computer fehlt. Verwenden Sie die Wiederherstellung von NuGet-Paketen, um die fehlenden Dateien herunterzuladen. Weitere Informationen finden Sie unter "http://go.microsoft.com/fwlink/?LinkID=322105". Die fehlende Datei ist "{0}". - + try with 1 period earlier + utc = utc - new TimeSpan(0, 15, 0); + GetRadarImage(utc); + } + return bm; + } + } +} diff --git a/Radars/Radars/Radars.csproj b/Radars/Radars/Radars.csproj new file mode 100644 index 0000000..83cfb13 --- /dev/null +++ b/Radars/Radars/Radars.csproj @@ -0,0 +1,78 @@ + + + + Debug + AnyCPU + 8.0.30703 + 2.0 + {C967850B-54DE-43A5-8AFF-CBA10EDE5A77} + Library + Properties + Radars + Radars + v4.0 + 512 + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + true + bin\x86\Debug\ + DEBUG;TRACE + full + x86 + prompt + true + true + false + + + bin\x86\Release\ + TRACE + true + pdbonly + x86 + prompt + true + true + false + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/RainScout.Core/ColorDlg.Designer.cs b/RainScout.Core/ColorDlg.Designer.cs new file mode 100644 index 0000000..3982657 --- /dev/null +++ b/RainScout.Core/ColorDlg.Designer.cs @@ -0,0 +1,71 @@ +namespace RainScout.Core +{ + partial class ColorDlg + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.lbl_Color = new System.Windows.Forms.Label(); + this.lbl_Value = new System.Windows.Forms.Label(); + this.SuspendLayout(); + // + // lbl_Color + // + this.lbl_Color.BackColor = System.Drawing.Color.DarkGray; + this.lbl_Color.Location = new System.Drawing.Point(18, 22); + this.lbl_Color.Name = "lbl_Color"; + this.lbl_Color.Size = new System.Drawing.Size(83, 24); + this.lbl_Color.TabIndex = 0; + // + // lbl_Value + // + this.lbl_Value.BackColor = System.Drawing.Color.AntiqueWhite; + this.lbl_Value.Location = new System.Drawing.Point(135, 22); + this.lbl_Value.Name = "lbl_Value"; + this.lbl_Value.Size = new System.Drawing.Size(87, 24); + this.lbl_Value.TabIndex = 1; + this.lbl_Value.Text = "0"; + this.lbl_Value.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // ColorDlg + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(247, 94); + this.Controls.Add(this.lbl_Value); + this.Controls.Add(this.lbl_Color); + this.Name = "ColorDlg"; + this.Text = "ColorDlg"; + this.ResumeLayout(false); + + } + + #endregion + + public System.Windows.Forms.Label lbl_Color; + public System.Windows.Forms.Label lbl_Value; + } +} \ No newline at end of file diff --git a/RainScout.Core/ColorDlg.cs b/RainScout.Core/ColorDlg.cs new file mode 100644 index 0000000..b36ea7d --- /dev/null +++ b/RainScout.Core/ColorDlg.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; + +namespace RainScout.Core +{ + public partial class ColorDlg : Form + { + public ColorDlg() + { + InitializeComponent(); + } + } +} diff --git a/RainScout.Core/ColorDlg.resx b/RainScout.Core/ColorDlg.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/RainScout.Core/ColorDlg.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/RainScout.Core/Properties/AssemblyInfo.cs b/RainScout.Core/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..37ff628 --- /dev/null +++ b/RainScout.Core/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Allgemeine Informationen über eine Assembly werden über die folgenden +// Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern, +// die einer Assembly zugeordnet sind. +[assembly: AssemblyTitle("RainScout.Core")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("RainScout.Core")] +[assembly: AssemblyCopyright("Copyright © 2021")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Durch Festlegen von ComVisible auf FALSE werden die Typen in dieser Assembly +// für COM-Komponenten unsichtbar. Wenn Sie auf einen Typ in dieser Assembly von +// COM aus zugreifen müssen, sollten Sie das ComVisible-Attribut für diesen Typ auf "True" festlegen. +[assembly: ComVisible(false)] + +// Die folgende GUID bestimmt die ID der Typbibliothek, wenn dieses Projekt für COM verfügbar gemacht wird +[assembly: Guid("2aa51078-c9e9-4ad0-a8cd-2a028a6bc886")] + +// Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten: +// +// Hauptversion +// Nebenversion +// Buildnummer +// Revision +// +// Sie können alle Werte angeben oder Standardwerte für die Build- und Revisionsnummern verwenden, +// indem Sie "*" wie unten gezeigt eingeben: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/RainScout.Core/RainScout.Core.csproj b/RainScout.Core/RainScout.Core.csproj new file mode 100644 index 0000000..2783bd4 --- /dev/null +++ b/RainScout.Core/RainScout.Core.csproj @@ -0,0 +1,70 @@ + + + + + Debug + AnyCPU + {2AA51078-C9E9-4AD0-A8CD-2A028A6BC886} + Library + Properties + RainScout.Core + RainScout.Core + v4.7.2 + 512 + true + + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + false + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + false + + + + ..\packages\DotNetZip.1.15.0\lib\net40\DotNetZip.dll + + + + + + + + + + + + + + Form + + + ColorDlg.cs + + + + + + + + ColorDlg.cs + + + + + + + \ No newline at end of file diff --git a/RainScout.Core/SupportFunctions.cs b/RainScout.Core/SupportFunctions.cs new file mode 100644 index 0000000..f5c9913 --- /dev/null +++ b/RainScout.Core/SupportFunctions.cs @@ -0,0 +1,1191 @@ +// (c) 2016 DL2ALF +using System; +using System.Collections.Generic; +using System.Linq; +using System.Globalization; +using System.Diagnostics; +using System.Net; +using System.IO; +using System.Reflection; +using System.Windows.Forms; +using System.Text.RegularExpressions; +using System.Threading; +using Ionic.Zip; +using Ionic.BZip2; +using System.Runtime.Serialization.Formatters.Binary; +using System.Xml; +using System.Text; +using System.Configuration; +using System.Xml.Serialization; +using System.Security.Cryptography; + +namespace RainScout.Core +{ + + [System.ComponentModel.DesignerCategory("")] + public static class SupportFunctions : Object + { + public static double TodB(double value) + { + // calulate dB from linear value + return 10.0f * Math.Log10(value); + } + + public static double ToLinear(double value) + { + // calculate linear value from dB + return Math.Pow(10, value / 10.0f); + } + + /// + /// Returns true if running under Linux/Mono + /// + public static bool IsMono + { + get + { + int p = (int)Environment.OSVersion.Platform; + return (p == 4) || (p == 6) || (p == 128); + } + } + + /// + /// Returns true if running under a 64bit configuration + /// + public static bool Is64BitConfiguration() + { + return System.IntPtr.Size == 8; + } + + [System.ComponentModel.DesignerCategory("")] + public static class CPUCounter + { + static PerformanceCounter cpucounter; + + static CPUCounter() + { + cpucounter = new PerformanceCounter("Processor", "% Processor Time", "_Total"); + } + + public static double GetLoad() + { + // returns the current overall CPU load + return cpucounter.NextValue(); + } + } + + [System.ComponentModel.DesignerCategory("")] + public static class MemoryCounter + { + static PerformanceCounter available; + + static MemoryCounter() + { + available = new PerformanceCounter("Memory", "Available MBytes"); + } + + /// + /// Get the amount of available memory in MBytes + /// + /// The amount of memory available in MBytes. + public static double GetAvailable() + { + // returns the current overall CPU load + return available.NextValue(); + } + } + + /// + /// Checks whether a given path would be a vaild path to a directory. + /// The path must be fully qualified. + /// + /// The path. + /// True if the path is valid. + public static bool ValidateDirectoryPath(string path) + { + // return false on empty or whitespaced path + if (String.IsNullOrEmpty(path)) + return false; + if (String.IsNullOrWhiteSpace(path)) + return false; + string root = null; ; + string directory = null; + try + { + //throw ArgumentException - The path parameter contains invalid characters, is empty, or contains only white spaces. + root = Path.GetPathRoot(path); + //throw ArgumentException - path contains one or more of the invalid characters defined in GetInvalidPathChars. + // -or- String.Empty was passed to path. + directory = Path.GetDirectoryName(path); + } + catch (ArgumentException) + { + return false; + } + //null if path is null, or an empty string if path does not contain root directory information + if (String.IsNullOrEmpty(root)) + return false; + //null if path denotes a root directory or is null. Returns String.Empty if path does not contain directory information + if (String.IsNullOrEmpty(directory)) + return false; + // path is valid at the end + return true; + } + + /// + /// Checks whether a given path would be a vaild path to a file. + /// The path must be fully qualified. + /// + /// The path. + /// True if the path is valid. + public static bool ValidateFilePath(string path) + { + // return false on empty or whitespaced path + if (String.IsNullOrEmpty(path)) + return false; + if (String.IsNullOrWhiteSpace(path)) + return false; + string root = null; ; + string directory = null; + string filename = null; + try + { + //throw ArgumentException - The path parameter contains invalid characters, is empty, or contains only white spaces. + root = Path.GetPathRoot(path); + //throw ArgumentException - path contains one or more of the invalid characters defined in GetInvalidPathChars. + // -or- String.Empty was passed to path. + directory = Path.GetDirectoryName(path); + //path contains one or more of the invalid characters defined in GetInvalidPathChars + filename = Path.GetFileName(path); + } + catch (ArgumentException) + { + return false; + } + //null if path is null, or an empty string if path does not contain root directory information + if (String.IsNullOrEmpty(root)) + return false; + //null if path denotes a root directory or is null. Returns String.Empty if path does not contain directory information + if (String.IsNullOrEmpty(directory)) + return false; + // path is valid at the end + return true; + } + + /// + /// Retrieves drive information about a specific drive + /// + /// The drive letter, e.g. "C:\" (Windows) or "\" (Linux). + /// The DriveInfo object if drive was found, null if not. + public static DriveInfo GetDriveInfo(string drive) + { + DriveInfo[] drives = DriveInfo.GetDrives(); + foreach (DriveInfo d in drives) + { + if (d.IsReady) + Console.WriteLine("DriveInfo\n=============\nName=\"" + d.Name + "\"\nFormat=\"" + d.DriveFormat + "\"\nFree=" + d.AvailableFreeSpace); + if (d.Name == drive) + { + return d; + } + } + return null; + } + + /// + /// Retrieves file system of a specific drive + /// + /// The drive letter, e.g. "C:\" (Windows) or "\" (Linux). + /// The file system identifier if drive was found, empty string if not. + public static string GetDriveFileSystem(string drive) + { + DriveInfo d = GetDriveInfo(drive); + // drive not found --> return 0 + if (d == null) + return string.Empty; + return d.DriveFormat; + } + + /// + /// Retrieves available free space of a specific drive + /// + /// The drive letter, e.g. "C:\" (Windows) or "\" (Linux). + /// The available frees space [bytes] if drive was found, 0 if not. + public static long GetDriveAvailableFreeSpace(string drive) + { + DriveInfo d = GetDriveInfo(drive); + // drive not found --> return 0 + if (d == null) + return 0; + return d.AvailableFreeSpace; + } + + /// + /// Retrieves maxixum allowed file size on a specific file system + /// + /// The file system identifier. + /// The available maximum file size [bytes] if filesystem is found on the list, 0 if not. + public static long GetFileSystemGetMaxFileSize(string filesystem) + { + filesystem = filesystem.ToUpper().Trim(); + if (filesystem == "FAT16") + return (long)2 * System.Convert.ToInt64(Math.Pow(2, 30)); + if (filesystem == "FAT32") + return (long)4 * System.Convert.ToInt64(Math.Pow(2, 30)) - (long)1; + if (filesystem == "NTFS") + return (long)16 * System.Convert.ToInt64(Math.Pow(2, 40)); + if (filesystem == "EXT2") + return (long)2 * System.Convert.ToInt64(Math.Pow(2, 40)); + if (filesystem == "EXT3") + return (long)2 * System.Convert.ToInt64(Math.Pow(2, 40)); + if (filesystem == "EXT4") + return (long)1 * System.Convert.ToInt64(Math.Pow(2, 60)); + if (filesystem == "BTRFS") + return long.MaxValue; + return 0; + } + + /// + /// Retrieves maxixum allowed file size on a specific file system + /// + /// The drive letter, e.g. "C:\" (Windows) or "\" (Linux). + /// The available maximum file size [bytes] if drive and file system is found, 0 if not. + public static long GetDriveMaxFileSize(string drive) + { + string filesystem = GetDriveFileSystem(drive).ToUpper().Trim(); + if (String.IsNullOrEmpty(filesystem)) + return 0; + if (filesystem == "FAT16") + return (long)2 * System.Convert.ToInt64(Math.Pow(2, 30)); + if (filesystem == "FAT32") + return (long)4 * System.Convert.ToInt64(Math.Pow(2, 30)) - (long)1; + if (filesystem == "NTFS") + return (long)16 * System.Convert.ToInt64(Math.Pow(2, 40)); + if (filesystem == "EXT2") + return (long)2 * System.Convert.ToInt64(Math.Pow(2, 40)); + if (filesystem == "EXT3") + return (long)2 * System.Convert.ToInt64(Math.Pow(2, 40)); + if (filesystem == "EXT4") + return (long)1 * System.Convert.ToInt64(Math.Pow(2, 60)); + if (filesystem == "BTRFS") + return long.MaxValue; + return 0; + } + + /// + /// Checks whether a given filename would be valid. + /// The filename must not contain path information. + /// + /// The filename. + /// True if the filename is valid. + public static bool ValidateFileName(string filename) + { + // return false on empty or whitespaced path + if (String.IsNullOrEmpty(filename)) + return false; + if (String.IsNullOrWhiteSpace(filename)) + return false; + if (filename.IndexOfAny(Path.GetInvalidFileNameChars()) >= 0) + return false; + return true; + } + + /// + /// Deletes files from a given directory which are matching a single filter pattern + /// + /// The directory. + /// The filter pattern. + /// Nothing. + public static void DeleteFilesFromDirectory(string dir, string filter) + { + string[] files = Directory.GetFiles(dir, filter); + foreach (string file in files) + { + try + { + File.Delete(file); + } + catch (Exception ex) + { + Console.WriteLine("DeleteFilesFromDirectory: " + ex.ToString()); + } + } + } + + /// + /// Deletes files from a given directory which are matching multiple filter patterns + /// + /// The directory. + /// The filter patterns. + /// Nothing. + public static void DeleteFilesFromDirectory(string dir, string[] filters) + { + string[] files = filters.SelectMany(f => Directory.GetFiles(dir, f)).ToArray(); + foreach (string file in files) + { + try + { + File.Delete(file); + } + catch (Exception ex) + { + Console.WriteLine("DeleteFilesFromDirectory: " + ex.ToString()); + } + } + } + + /// + /// Writes a string into a file + /// + /// The string. + /// The filename. + /// Nothing. + public static void WriteStringToFile(string str, string filename) + { + using (StreamWriter sw = new StreamWriter(filename)) + { + sw.WriteLine(str); + } + } + + /// + /// Reads a string from a file + /// + /// The filename. + /// The string. + public static string ReadStringFromFile(string filename) + { + string s = String.Empty; + using (StreamReader sr = new StreamReader(File.OpenRead(filename))) + { + s = sr.ReadToEnd(); + } + return s; + } + + /// + /// Converts an object to an array of bytes. + /// + /// The object. + /// Array of bytes representing the object. + public static byte[] ObjectToByteArray(Object obj) + { + BinaryFormatter bf = new BinaryFormatter(); + using (var ms = new MemoryStream()) + { + bf.Serialize(ms, obj); + return ms.ToArray(); + } + } + + /// + /// Converts an array of bytes into an object. + /// + /// The array of bytes representing the object. + /// The object. + public static Object ByteArrayToObject(byte[] arr) + { + using (var memStream = new MemoryStream()) + { + var binForm = new BinaryFormatter(); + memStream.Write(arr, 0, arr.Length); + memStream.Seek(0, SeekOrigin.Begin); + var obj = binForm.Deserialize(memStream); + return obj; + } + } + + /// + /// Converts a DateTime into UNIX Epoch time + /// Handles MinValue and MaxValue correctly + /// + /// The DateTime to be converted. + /// The UNIX Epoch time. Fractional seconds will be lost. + public static int DateTimeToUNIXTime(DateTime dt) + { + if (dt == DateTime.MinValue) + return int.MinValue; + else if (dt == DateTime.MaxValue) + return int.MaxValue; + return (Int32)(dt.Subtract(new DateTime(1970, 1, 1))).TotalSeconds; + } + + /// + /// Converts a UNIX Epoch time into DateTime + /// Handles MinValue and MaxValue correctly + /// + /// The UNIX Epoch time to be converted. + /// The DateTime (in UTC). + public static DateTime UNIXTimeToDateTime(int ut) + { + if (ut == int.MinValue) + return DateTime.MinValue; + else if (ut == int.MaxValue) + return DateTime.MaxValue; + DateTime dt = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc); + return dt.AddSeconds(ut); + } + + } + + + [System.ComponentModel.DesignerCategory("")] + public static class UnitConverter + { + public static double ft_m(double feet) + { + return feet / 3.28084; + } + + public static double m_ft(double m) + { + return m * 3.28084; + } + + public static double kts_kmh(double kts) + { + return kts * 1.852; + } + + public static double kmh_kts(double kmh) + { + return kmh / 1.852; + } + + public static double km_mi(double km) + { + return km * 1.609; + } + + public static double mi_km(double mi) + { + return mi / 1.609; + } + } + + [System.ComponentModel.DesignerCategory("")] + public class VarConverter : Dictionary + { + public readonly char VarSeparator = '%'; + + public void AddVar(string var, object value) + { + // adds a new var<>value pair to dictionary + object o; + if (this.TryGetValue(var, out o)) + { + // item found --> update value + o = value; + } + else + { + // item not found --> add new + this.Add(var, value); + } + } + + public object GetValue(string var) + { + // finds a var in dictionary and returns its value + object o; + if (this.TryGetValue(var, out o)) + { + // item found --> return value + return o; + } + // item not found --> return null + return null; + } + + public string ReplaceAllVars(string s) + { + // check for var separotors first + if (s.Contains(VarSeparator)) + { + // OK, string is containing vars --> crack the string first and replace vars + try + { + string[] a = s.Split(VarSeparator); + // as we are always using a pair of separators the length of a[] must be odd + if (a.Length % 2 == 0) + throw new ArgumentException("Number of separators is not an even number."); + // create new string and replace all vars (on odd indices) + s = ""; + for (int i = 0; i < a.Length; i++) + { + if (i % 2 == 0) + { + // cannot be not a var on that position + s = s + a[i]; + } + else + { + // var identifier: upper the string and try to convert + a[i] = a[i].ToUpper(); + object o; + if (this.TryGetValue(a[i], out o)) + { + // convert floating points with invariant culture info + if (o.GetType() == typeof(double)) + s = s + ((double)o).ToString(CultureInfo.InvariantCulture); + else if (o.GetType() == typeof(float)) + s = s + ((float)o).ToString(CultureInfo.InvariantCulture); + else + s = s + o.ToString(); + } + else + { + throw new ArgumentException("Var identifier not found: " + a[i]); + } + } + } + } + catch (Exception ex) + { + // throw an excecption + throw new ArgumentException("Error while parsing string for variables [" + ex.Message + "]: " + s); + } + } + return s; + } + + + } + + [System.ComponentModel.DesignerCategory("")] + public static class ZIP + { + public static bool UncompressFile(string filename, int timeout, string password = "") + { + // unzips a zip file content to the same directory + string downloaddir = String.Empty; + // get the directory correct under Windows & Linux + // don't use Path.GetDirectory under Linux + if (filename.IndexOf("\\") >= 0) + downloaddir = filename.Substring(0, filename.LastIndexOf("\\")); + else if (filename.IndexOf("/") >= 0) + downloaddir = filename.Substring(0, filename.LastIndexOf("/")); + // set path to calling assembly's path if not otherwise specified + if (String.IsNullOrEmpty(downloaddir)) + downloaddir = Assembly.GetCallingAssembly().Location; + try + { + Console.WriteLine("[UnzipFile: Trying to unzip file: " + filename); + // open the zip file + using (ZipFile zip = ZipFile.Read(filename)) + { + if (!String.IsNullOrEmpty(password)) + zip.Password = password; + // here, we extract every entry, but we could extract conditionally + // based on entry name, size, date, checkbox status, etc. + foreach (ZipEntry ze in zip) + { + ze.Extract(downloaddir, ExtractExistingFileAction.OverwriteSilently); + string fname = Path.Combine(downloaddir, ze.FileName); + // wait for extraction to finish + int i = 0; + while (!File.Exists(fname)) + { + Thread.Sleep(1000); + i++; + if (i > timeout) + throw new TimeoutException("Timeout while waiting for extraction is complete: " + fname); + } + File.SetLastWriteTime(fname, ze.LastModified); + } + } + return true; + } + catch (Exception ex) + { + Console.WriteLine(ex.ToString()); + } + return false; + } + + public static bool CompressFile(string filename, bool storedirectoryinarchive, int timeout, string password = "") + { + // unzips a zip file content to the same directory + string directory = String.Empty; + // get the directory correct under Windows & Linux + // don't use Path.GetDirectory under Linux + if (filename.IndexOf("\\") >= 0) + directory = filename.Substring(0, filename.LastIndexOf("\\")); + else if (filename.IndexOf("/") >= 0) + directory = filename.Substring(0, filename.LastIndexOf("/")); + // set path to calling assembly's path if not otherwise specified + if (String.IsNullOrEmpty(directory)) + directory = Assembly.GetCallingAssembly().Location; + try + { + Console.WriteLine("[ZipFile: Trying to zip file: " + filename); + string zipfilename = Path.GetFileNameWithoutExtension(filename) + ".zip"; + // create the zip file + using (ZipFile zip = new ZipFile()) + { + if (!String.IsNullOrEmpty(password)) + zip.Password = password; + zip.AddFile(filename, storedirectoryinarchive ? directory : ""); + zip.Save(Path.Combine(directory, zipfilename)); + } + // wait for compression to finish + int i = 0; + while (!File.Exists(Path.Combine(directory, zipfilename))) + { + Thread.Sleep(1000); + i++; + if (i > timeout) + throw new TimeoutException("Timeout while waiting for compression is complete: " + zipfilename); + } + return true; + } + catch (Exception ex) + { + Console.WriteLine(ex.ToString()); + } + return false; + } + } + + [System.ComponentModel.DesignerCategory("")] + public static class BZ2 + { + private static void Pump(Stream src, Stream dest) + { + byte[] buffer = new byte[2048]; + int n; + while ((n = src.Read(buffer, 0, buffer.Length)) > 0) + dest.Write(buffer, 0, n); + } + + public static bool UncompressFile(string filename) + { + // unzips a zip file content to the same directory + string downloaddir = String.Empty; + // get the directory correct under Windows & Linux + // don't use Path.GetDirectory under Linux + if (filename.IndexOf("\\") >= 0) + downloaddir = filename.Substring(0, filename.LastIndexOf("\\")); + else if (filename.IndexOf("/") >= 0) + downloaddir = filename.Substring(0, filename.LastIndexOf("/")); + // set path to calling assembly's path if not otherwise specified + if (String.IsNullOrEmpty(downloaddir)) + downloaddir = Assembly.GetCallingAssembly().Location; + try + { + Console.WriteLine("[Unzip BZ2-File: Trying to unzip file: " + filename); + // open the zip file + var outFname = Path.GetFileNameWithoutExtension(filename); + File.Delete(outFname); + + using (Stream fs = File.OpenRead(filename), + output = File.Create(outFname), + decompressor = new Ionic.BZip2.BZip2InputStream(fs)) + Pump(decompressor, output); + + return true; + } + catch (Exception ex) + { + Console.WriteLine(ex.ToString()); + } + return false; + } + + public static bool CompressFile(string filename, bool storedirectoryinarchive, int timeout, string password = "") + { + // unzips a zip file content to the same directory + string directory = String.Empty; + // get the directory correct under Windows & Linux + // don't use Path.GetDirectory under Linux + if (filename.IndexOf("\\") >= 0) + directory = filename.Substring(0, filename.LastIndexOf("\\")); + else if (filename.IndexOf("/") >= 0) + directory = filename.Substring(0, filename.LastIndexOf("/")); + // set path to calling assembly's path if not otherwise specified + if (String.IsNullOrEmpty(directory)) + directory = Assembly.GetCallingAssembly().Location; + try + { + Console.WriteLine("[ZipFile: Trying to zip file: " + filename); + string zipfilename = Path.GetFileNameWithoutExtension(filename) + ".zip"; + // create the zip file + using (ZipFile zip = new ZipFile()) + { + if (!String.IsNullOrEmpty(password)) + zip.Password = password; + zip.AddFile(filename, storedirectoryinarchive ? directory : ""); + zip.Save(Path.Combine(directory, zipfilename)); + } + // wait for compression to finish + int i = 0; + while (!File.Exists(Path.Combine(directory, zipfilename))) + { + Thread.Sleep(1000); + i++; + if (i > timeout) + throw new TimeoutException("Timeout while waiting for compression is complete: " + zipfilename); + } + return true; + } + catch (Exception ex) + { + Console.WriteLine(ex.ToString()); + } + return false; + } + } + + /// + /// Derived WebClient class for automatic compression handling. + /// Can download files from web resources with compressed content delivery. + /// Tries to download various zipped versions from a given , e.g. or + /// + [System.ComponentModel.DesignerCategory("")] + public class AutoDecompressionWebClient : WebClient + { + public AutoDecompressionWebClient() + { + // add website compression request + Headers.Add("Accept-Encoding: gzip, deflate"); + } + + protected override WebRequest GetWebRequest(Uri address) + { + // ovverides GetWebRequest to add automatic decompression + HttpWebRequest request = base.GetWebRequest(address) as HttpWebRequest; + request.AutomaticDecompression = DecompressionMethods.Deflate | DecompressionMethods.GZip; + // allow redirect 2017/12/06 DL2ALF + request.AllowAutoRedirect = true; + return request; + } + + /// + /// Gets the creation time of a file + /// + /// The file name. + /// The creation time in UTC if file found. DateTime.MinValue if not. + public DateTime GetFileCreationTimeUtc(string filename) + { + if (File.Exists(filename)) + return File.GetCreationTimeUtc(filename); + else + return DateTime.MinValue; + } + + /// + /// Gets the creation time of a web resource. + /// + /// The address string of web resource. + /// Allows redirection of requested source. + /// The creation time in UTC if successful. DateTime.MinValue if not. + public DateTime GetWebCreationTimeUtc(string address, bool allowredirect = true) + { + return GetWebCreationTimeUtc(new Uri(address), allowredirect); + } + + /// + /// Gets the creation time of a web resource. + /// + /// The address URI of web/file resource. + /// Allows redirection of requested source. + /// The creation time in UTC if successful. DateTime.MinValue if not. + public DateTime GetWebCreationTimeUtc(Uri address, bool allowredirect = true) + { + // get the last modified time of the website/file + // returns DateTime.MinValue if address not found + try + { + + DateTime webcreationtime = DateTime.MinValue; + if (address.IsFile) + { + if (File.Exists(address.LocalPath)) + { + webcreationtime = File.GetLastWriteTimeUtc(address.LocalPath); + } + } + else + { + HttpWebRequest req = (HttpWebRequest)WebRequest.Create(address); + // allow redirect 2017/12/06 DL2ALF + req.AllowAutoRedirect = allowredirect; + using (HttpWebResponse res = (HttpWebResponse)req.GetResponse()) + { + webcreationtime = res.LastModified.ToUniversalTime(); + } + Console.WriteLine("[GetWebCreationTime] Getting web creation time from address: " + address + " = " + webcreationtime.ToString("yyyy-MM-dd HH:mm:ss")); + } + return webcreationtime; + } + catch (Exception ex) + { +// Console.WriteLine("[GetWebCreationTime] Error while reading address: " + address + "\n" + ex.ToString()); + } + return DateTime.MinValue; + } + + private bool DownloadFileFromWeb(string address, string filename, bool allowredirect, bool autounzip, string password = "") + { + // donwloads file from a web/file resource + try + { + Uri uri = new Uri(address); + if (uri.IsFile) + { + if (File.Exists(uri.LocalPath)) + { + File.Copy(uri.LocalPath, filename, true); + if (autounzip && Path.GetExtension(filename).ToLower() == ".zip") + { + Console.WriteLine("[DownloadFileFromWeb] Trying to unzip downloaded file: " + filename); + return ZIP.UncompressFile(filename, 60, password); + } + Console.WriteLine("[DownloadFileFromWeb] Downloading file from address finished: " + address); + return true; + } + } + else + { + // get web cration time + DateTime webcreationtime = GetWebCreationTimeUtc(address, allowredirect); + // download file and check for errors and uri identical to request + // do not use WebClient.Download for this! + var request = (HttpWebRequest)WebRequest.Create(address); + // allow redirect 2017/12/06 DL2ALF + request.AllowAutoRedirect = allowredirect; + request.Method = "GET"; + using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) + { + HttpStatusCode status = response.StatusCode; + if ((status == HttpStatusCode.OK) && (response.ResponseUri == new Uri(address))) + { + using (var responseStream = response.GetResponseStream()) + { + using (var fileToDownload = new System.IO.FileStream(filename, System.IO.FileMode.Create, System.IO.FileAccess.ReadWrite)) + { + responseStream.CopyTo(fileToDownload); + } + } + } + } + // set creation time + if (File.Exists(filename)) + { + File.SetCreationTime(filename, webcreationtime); + File.SetLastWriteTime(filename, webcreationtime); + // unzip the file content if enabled + if (autounzip && (Path.GetExtension(filename).ToLower() == ".zip")) + { + Console.WriteLine("[DownloadFileFromWeb] Trying to unzip downloaded file: " + filename); + return ZIP.UncompressFile(filename, 60, password); + } + Console.WriteLine("[DownloadFileFromWeb] Downloading file from address finished: " + address); + return true; + } + } + } + catch (Exception ex) + { + if (ex is WebException ) + Console.WriteLine("[DownloadFileFromWeb] WebException while reading address: " + address + "\n" + "URI of orginal request=" + address + "\n" + "URI of responding server=" + "\n" + ex.ToString()); + else + Console.WriteLine("[DownloadFileFromWeb] Error while reading address: " + address + "\n" + ex.ToString()); + } + return false; + } + + private DOWNLOADFILESTATUS DownloadFileFromWebIfNewer(string address, string filename, bool allowredirect, bool autounzip, string password = "") + { + DateTime filecreationtime; + DateTime webcreationtime; + if (File.Exists(filename)) + filecreationtime = File.GetCreationTimeUtc(filename); + else + filecreationtime = DateTime.MinValue; + webcreationtime = GetWebCreationTimeUtc(address, allowredirect); + // nothing found on web + if (webcreationtime == DateTime.MinValue) + return DOWNLOADFILESTATUS.NOTFOUND; + if (webcreationtime > filecreationtime) + { + // web content is newer --> download and do not unzip + if (!DownloadFileFromWeb(address, filename, allowredirect, false, password)) + return DOWNLOADFILESTATUS.ERROR; + } + // unzip the file if enabled and content is a ZIP-file + if (autounzip && (Path.GetExtension(filename).ToLower() == ".zip")) + { + if (!ZIP.UncompressFile(filename, 60, password)) + return DOWNLOADFILESTATUS.ERROR; + } + // unzip the file if enabled and content is a ZIP-file + else if (autounzip && (Path.GetExtension(filename).ToLower() == ".bz2")) + { + if (!BZ2.UncompressFile(filename)) + return DOWNLOADFILESTATUS.ERROR; + } + // set the return value + if (webcreationtime > filecreationtime) + return DOWNLOADFILESTATUS.NEWER; + else + return DOWNLOADFILESTATUS.NOTNEWER; + } + + /// + /// Downloads a file from a web resource. + /// Sets local file time stamps according to original after download. + /// + /// The address of web resource. + /// The filename for local store. + /// Allows redirection of requested source. + /// Try to download a zipped version first. + /// True if download was successful. + public bool DownloadFile(string address, string filename, bool allowredirect, bool autounzip, string password = "") + { + string downloadfilename; + string downloadaddress; + if (autounzip) + { + // try to download first + downloadfilename = filename + ".zip"; + downloadaddress = address + ".zip"; + if (GetWebCreationTimeUtc(downloadaddress, allowredirect) != DateTime.MinValue) + { + // resource found --> download the zip file and extract it + if (DownloadFileFromWeb(downloadaddress, downloadfilename, true,autounzip, password)) + return true; + } + // try to download + downloadfilename = filename.Replace(Path.GetExtension(filename), ".zip"); + downloadaddress = address.Substring(0, address.LastIndexOf(".")) + ".zip"; + if (GetWebCreationTimeUtc(downloadaddress, allowredirect) != DateTime.MinValue) + { + // resource found --> download the zip file and extract it + if (DownloadFileFromWeb(downloadaddress, downloadfilename, true, autounzip, password)) + return true; + } + } + // try to download + downloadfilename = filename; + downloadaddress = address; + if (GetWebCreationTimeUtc(downloadaddress, allowredirect) != DateTime.MinValue) + { + // resource found --> download the file + if (DownloadFileFromWeb(downloadaddress, downloadfilename, allowredirect, true, password)) + return true; + } + // nothing found + return false; + } + + /// + /// Downloads a file from a web resource only if it is newer or not found locally. + /// + /// The address of web resource. + /// The filename for local store. + /// Allows redirection of requested source. + /// Try to download a zipped version first. + /// A DOWNLOADFILESTATUS object containing status information. + public DOWNLOADFILESTATUS DownloadFileIfNewer(string address, string filename, bool allowredirect, bool autounzip, string password = "") + { + string downloadaddress; + string downloadfilename; + DOWNLOADFILESTATUS ds = DOWNLOADFILESTATUS.UNKNOWN; + try + { + // + downloadaddress = address; + downloadfilename = filename; + ds = DownloadFileFromWebIfNewer(downloadaddress, downloadfilename, allowredirect, autounzip, password); + // return here if successful + if ((ds == DOWNLOADFILESTATUS.NEWER) || (ds == DOWNLOADFILESTATUS.NOTNEWER)) + return ds; + // try to download other extensions + if (autounzip) + { + // + downloadaddress = address.Substring(0, address.LastIndexOf(".")) + ".zip"; + downloadfilename = filename.Replace(Path.GetExtension(filename), ".zip"); + ds = DownloadFileFromWebIfNewer(downloadaddress, downloadfilename, allowredirect, autounzip, password); + // return here if successful + if ((ds == DOWNLOADFILESTATUS.NEWER) || (ds == DOWNLOADFILESTATUS.NOTNEWER)) + return ds; + // + downloadaddress = address + ".zip"; + downloadfilename = filename + ".zip"; + ds = DownloadFileFromWebIfNewer(downloadaddress, downloadfilename, allowredirect, autounzip, password); + // return here if successful + if ((ds == DOWNLOADFILESTATUS.NEWER) || (ds == DOWNLOADFILESTATUS.NOTNEWER)) + return ds; + } + return DOWNLOADFILESTATUS.NOTFOUND; + } + catch (Exception ex) + { + if (ex is WebException) + Console.WriteLine("[DownloadFileIfNewer] WebException while reading address: " + address + "\n" + "URI of orginal request=" + address + "\n" + "URI of responding server=" + ((WebException)ex).Response.ResponseUri + "\n" + ex.ToString()); + else + Console.WriteLine("[DownloadFileIfNewer] Error while reading address: " + address + "\n" + ex.ToString()); + + } + return DOWNLOADFILESTATUS.ERROR; + } + } + + public class FTPDirectoryItem + { + public Uri BaseUri; + + public string AbsolutePath + { + get + { + return string.Format("{0}/{1}", BaseUri, Name); + } + } + + public DateTime DateCreated; + public bool IsDirectory; + public string Name; + public List Items; + } + + public class FTPDirectorySearcher + { + public List GetDirectoryInformation(string address, string username, string password) + { + FtpWebRequest request = (FtpWebRequest)FtpWebRequest.Create(address); + request.Method = WebRequestMethods.Ftp.ListDirectoryDetails; + request.Credentials = new NetworkCredential(username, password); + request.UsePassive = true; + request.UseBinary = true; + request.KeepAlive = false; + + List returnValue = new List(); + string[] list = null; + + using (FtpWebResponse response = (FtpWebResponse)request.GetResponse()) + using (StreamReader reader = new StreamReader(response.GetResponseStream())) + { + list = reader.ReadToEnd().Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries); + } + + foreach (string line in list) + { + // Windows FTP Server Response Format + // DateCreated IsDirectory Name + string data = line; + + // Parse date + string date = data.Substring(0, 17); + DateTime dateTime = DateTime.Parse(date); + data = data.Remove(0, 24); + + // Parse + string dir = data.Substring(0, 5); + bool isDirectory = dir.Equals("", StringComparison.InvariantCultureIgnoreCase); + data = data.Remove(0, 5); + data = data.Remove(0, 10); + + // Parse name + string name = data; + + // Create directory info + FTPDirectoryItem item = new FTPDirectoryItem(); + item.BaseUri = new Uri(address); + item.DateCreated = dateTime; + item.IsDirectory = isDirectory; + item.Name = name; + + Debug.WriteLine(item.AbsolutePath); + item.Items = item.IsDirectory ? GetDirectoryInformation(item.AbsolutePath, username, password) : null; + + returnValue.Add(item); + } + + return returnValue; + } + } + + public class HTTPDirectoryItem + { + public Uri BaseUri; + + public string AbsolutePath + { + get + { + return string.Format("{0}/{1}", BaseUri, Name); + } + } + + public string Name; + } + + public class HTTPDirectorySearcher + { + public List GetDirectoryInformation(string address) + { + if (String.IsNullOrEmpty(address)) + return new List(); + try + { + string content; + /* + HttpWebRequest request = (HttpWebRequest)WebRequest.Create(address); + // request.KeepAlive = false; + // request.ProtocolVersion = HttpVersion.Version10; + // request.Timeout = 10000; + using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) + { + using (StreamReader reader = new StreamReader(response.GetResponseStream())) + { + content = reader.ReadToEnd(); + } + } + */ + WebClient client = new WebClient(); + // fake a up-to-date user agent + client.Headers["User-Agent"] = "Mozilla / 5.0(Windows NT 10.0; WOW64; rv: 50.0) Gecko / 20100101 Firefox / 50.0"; + content = client.DownloadString(address); + Regex regex = new Regex("(?.*)"); + List files = new List(); + MatchCollection matches = regex.Matches(content); + if (matches.Count > 0) + { + foreach (Match match in matches) + { + if (match.Success) + { + string[] matchData = match.Groups[0].ToString().Split('\"'); + // sort out all weblinks and comments + HTTPDirectoryItem item = new HTTPDirectoryItem(); + item.Name = matchData[1]; + item.BaseUri = new Uri(address); + files.Add(item); + } + } + } + return files; + } + catch(Exception ex) + { + } + return new List(); + } + + + } + + public enum DOWNLOADFILESTATUS + { + UNKNOWN = 0, + NOTFOUND = 1, + NEWER = 2, + NOTNEWER = 4, + ERROR = 8 + } + + +} diff --git a/RainScout.Core/ValueColorTable.cs b/RainScout.Core/ValueColorTable.cs new file mode 100644 index 0000000..30ed333 --- /dev/null +++ b/RainScout.Core/ValueColorTable.cs @@ -0,0 +1,227 @@ +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.ComponentModel; +using System.Drawing; +using System.Linq; +using System.Text; + +namespace RainScout.Core +{ + public enum NEARESTCOLORSTRATEGY + { + NONE = 0, + STRICT = 1, + HUE = 2, + RGB = 3, + HUESATBRIGHT =4 + + } + + // translates Integer values to Colors and back + // caches new calculated values for faster lookup + public class ValueColorTable + { + // dictionaries for lookup + private Dictionary Values = new Dictionary(); + private Dictionary Colors = new Dictionary(); + + // min/max-values for faster lookup + private int MinValues = 0; + private int MaxValues = 0; + private Color MinColors = Color.Transparent; + private Color MaxColors = Color.Transparent; + + public void Add(int value, Color color) + { + try + { + Values[value] = color; + MinValues = Values.Keys.Min(); + MaxValues = Values.Keys.Max(); + Colors[color] = value; + } + catch (Exception ex) + { + // do nothing if failed + Console.WriteLine("Failed adding value/color pair: " + ex.Message); + } + } + + public Color GetColorFromValue(int value) + { + Color c = Color.Transparent; + try + { + if (!Values.TryGetValue(value, out c)) + { + // value not found --> interpolate linear between to values + + // check for out of bounds + if (value < MinValues) + { + c = Values[MinValues]; + Add(value, c); + return c; + } + + if (value > MaxValues) + { + c = Values[MaxValues]; + Add(value, c); + return c; + } + + // found neighboured entries + int minkey = int.MaxValue; + int maxkey = int.MinValue; + foreach (int key in this.Values.Keys) + { + if (key <= value) + minkey = key; + if (key >= value) + { + maxkey = key; + break; + } + } + + if (minkey != maxkey) + { + Color mincolor = this.Values[minkey]; + Color maxcolor = this.Values[maxkey]; + + double step = (value - minkey) / (maxkey - minkey); + + int a = mincolor.A + (int)((mincolor.A - maxcolor.A) * step); if (a < 0) a = 0; if (a > 255) a = 255; + int r = mincolor.R + (int)((mincolor.R - maxcolor.R) * step); if (r < 0) r = 0; if (r > 255) r = 255; + int g = mincolor.G + (int)((mincolor.G - maxcolor.G) * step); if (g < 0) g = 0; if (g > 255) g = 255; + int b = mincolor.B + (int)((mincolor.B - maxcolor.B) * step); if (b < 0) b = 0; if (b > 255) b = 255; + + // create color + c = Color.FromArgb(a, r, g, b); + + // cache in dictionary + Add(value, c); + } + else + { + // should not happen --> use minkey + c = this.Values[minkey]; + } + } + } + catch (Exception ex) + { + Console.WriteLine("Error while getting color from value (" + value.ToString() + "): " + ex.Message); + } + return c; + } + + // color brightness as perceived: + private float GetBrightness(Color c) + { + return (c.R * 0.299f + c.G * 0.587f + c.B * 0.114f) / 256f; + } + + // weighed only by saturation and brightness(from my trackbars) + float ColorNum(Color c) + { + return c.GetSaturation() * 0.5f + + GetBrightness(c) * 0.5f; + } + // distance between two hues: + private float GetHueDistance(float hue1, float hue2) + { + float d = Math.Abs(hue1 - hue2); return d > 180 ? 360 - d : d; + } + + // distance in RGB space + private int ColorDiff(Color c1, Color c2) + { + int diff = 0; + try + { + diff = (int)Math.Sqrt((c1.R - c2.R) * (c1.R - c2.R) + + (c1.G - c2.G) * (c1.G - c2.G) + + (c1.B - c2.B) * (c1.B - c2.B)); + } + catch (Exception ex) + { + + } + + return diff; + } + + // closed match for hues only: + int ClosestColor1(Color target) + { + var hue1 = target.GetHue(); + var diffs = Colors.Keys.Select(n => GetHueDistance(n.GetHue(), hue1)); + var diffMin = diffs.Min(n => n); + int v = Colors[Colors.Keys.ElementAt(diffs.ToList().FindIndex(n => n == diffMin))]; + return v; + } + + // closed match in RGB space + int ClosestColor2(Color target) + { + var diffs = Colors.Keys.Select(n => ColorDiff(n, target)); + var diffMin = diffs.Min(n => n); + int v = Colors[Colors.Keys.ElementAt(diffs.ToList().FindIndex(n => n == diffMin))]; + return v; + } + + // weighed distance using hue, saturation and brightness + int ClosestColor3(Color target) + { + float hue1 = target.GetHue(); + var num1 = ColorNum(target); + var diffs = Colors.Keys.Select(n => Math.Abs(ColorNum(n) - num1) + + GetHueDistance(n.GetHue(), hue1)); + var diffMin = diffs.Min(x => x); + int v = Colors[Colors.Keys.ElementAt(diffs.ToList().FindIndex(n => n == diffMin))]; + return v; + } + + public int GetValueFromColor(Color c, NEARESTCOLORSTRATEGY strategy = NEARESTCOLORSTRATEGY.RGB) + { + int v = 0; + if (!Colors.TryGetValue(c, out v)) + { + try + { + // value not found --> find nearest value + switch (strategy) + { + case NEARESTCOLORSTRATEGY.HUE: v = ClosestColor1(c); break; + case NEARESTCOLORSTRATEGY.RGB: v = ClosestColor2(c); break; + case NEARESTCOLORSTRATEGY.HUESATBRIGHT: v = ClosestColor3(c); break; + } + + /* + ColorDlg Dlg = new ColorDlg(); + Dlg.lbl_Color.BackColor = c; + Dlg.lbl_Value.Text = v.ToString(); + Dlg.ShowDialog(); + */ + try + { + Add(v, c); + } + catch (Exception ex) + { + + } + } + catch (Exception ex) + { + Console.WriteLine("Error while getting value from color (" + c.ToString() + "): " + ex.Message); + } + } + + return v; + } + } +} diff --git a/RainScout.Core/packages.config b/RainScout.Core/packages.config new file mode 100644 index 0000000..b4b5013 --- /dev/null +++ b/RainScout.Core/packages.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/RainScout.Radars/GenericRadar.cs b/RainScout.Radars/GenericRadar.cs new file mode 100644 index 0000000..f16a1c6 --- /dev/null +++ b/RainScout.Radars/GenericRadar.cs @@ -0,0 +1,40 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; + +namespace RainScout.Radars +{ + [Serializable] + public abstract class GenericRadar + { + public string Name = "None"; + public string Source = "None"; + public DateTime Timestamp = DateTime.MinValue; + + // dimensions in lat/lon + public double Top = 0; + public double Left = 0; + public double Bottom = 0; + public double Right = 0; + + // List of supported Radar layers + public List RadarLayers { get; internal set; } = new List(); + + public abstract Bitmap GetRadarImage(); + public abstract int[,] GetRadarLayer(RADARLAYER layer); + + // contains radar layer? + public bool HasRadarLayer(RADARLAYER layer) + { + if (RadarLayers == null) + return false; + if (RadarLayers.Contains(layer)) + return true; + return false; + } + + } +} diff --git a/RainScout.Radars/Properties/AssemblyInfo.cs b/RainScout.Radars/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..c8bb314 --- /dev/null +++ b/RainScout.Radars/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Allgemeine Informationen über eine Assembly werden über die folgenden +// Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern, +// die einer Assembly zugeordnet sind. +[assembly: AssemblyTitle("RainScout.Radars")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("RainScout.Radars")] +[assembly: AssemblyCopyright("Copyright © 2021")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Durch Festlegen von ComVisible auf FALSE werden die Typen in dieser Assembly +// für COM-Komponenten unsichtbar. Wenn Sie auf einen Typ in dieser Assembly von +// COM aus zugreifen müssen, sollten Sie das ComVisible-Attribut für diesen Typ auf "True" festlegen. +[assembly: ComVisible(false)] + +// Die folgende GUID bestimmt die ID der Typbibliothek, wenn dieses Projekt für COM verfügbar gemacht wird +[assembly: Guid("58a3209f-1bf2-4b59-9a2a-0983ce232cb0")] + +// Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten: +// +// Hauptversion +// Nebenversion +// Buildnummer +// Revision +// +// Sie können alle Werte angeben oder Standardwerte für die Build- und Revisionsnummern verwenden, +// indem Sie "*" wie unten gezeigt eingeben: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/RainScout.Radars/Radar3D_DE.cs b/RainScout.Radars/Radar3D_DE.cs new file mode 100644 index 0000000..5b38a4a --- /dev/null +++ b/RainScout.Radars/Radar3D_DE.cs @@ -0,0 +1,539 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Drawing; +using System.Drawing.Imaging; +using System.Drawing.Drawing2D; +using System.Net; +using System.IO; +using System.Net.Cache; +using System.Threading; +using System.Windows.Forms; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using RainScout.Core; +using GMap.NET; +using Newtonsoft.Json; +using GMap.NET.Projections; + +namespace RainScout.Radars +{ + [Serializable] + public class Radar3D_DE : RainScout.Radars.GenericRadar + { + // Radar images + private Bitmap IntensityImage = null; + private Bitmap CloudTopsImage = null; + private Bitmap LightningImage = null; + + // values + private int[,] LightningValues = null; + + // Radar legend + private ValueColorTable CloudTopsLegend = new ValueColorTable(); + private ValueColorTable IntensityLegend = new ValueColorTable(); + private ValueColorTable LightningLegend = new ValueColorTable(); + + // update cylce in seconds + private int UpdateCycle = 5 * 60; + + public Radar3D_DE() + { + Name = "Radar3D DE"; + Source = "https://kachelmannwetter.com/"; + + // set bounds + Left = 1; + Right = 17; + Top = 55.9; + Bottom = 47; + + RadarLayers.Add(RADARLAYER.INTENSITY); + RadarLayers.Add(RADARLAYER.CLOUDTOPS); + RadarLayers.Add(RADARLAYER.LIGHTNING); + + // intialize intensity dictionary + IntensityLegend.Add(-1, Color.FromArgb(112, 0, 0, 0)); + IntensityLegend.Add(0, Color.FromArgb(0,0,0,0)); + IntensityLegend.Add(0, Color.Transparent); + IntensityLegend.Add(1, ColorTranslator.FromHtml("#828282")); + IntensityLegend.Add(2, ColorTranslator.FromHtml("#8C8C8C")); + IntensityLegend.Add(3, ColorTranslator.FromHtml("#A0A0A0")); + IntensityLegend.Add(4, ColorTranslator.FromHtml("#AFAFAF")); + IntensityLegend.Add(5, ColorTranslator.FromHtml("#BEBEBE")); + IntensityLegend.Add(6, ColorTranslator.FromHtml("#CDCDCD")); + IntensityLegend.Add(7, ColorTranslator.FromHtml("#DCDCDC")); + IntensityLegend.Add(8, ColorTranslator.FromHtml("#8FE7E1")); + IntensityLegend.Add(9, ColorTranslator.FromHtml("#51EFE5")); + IntensityLegend.Add(10, ColorTranslator.FromHtml("#22CFEE")); + IntensityLegend.Add(11, ColorTranslator.FromHtml("#1FBFF0")); + IntensityLegend.Add(12, ColorTranslator.FromHtml("#1CB0F2")); + IntensityLegend.Add(13, ColorTranslator.FromHtml("#19A1F3")); + IntensityLegend.Add(14, ColorTranslator.FromHtml("#127AF2")); + IntensityLegend.Add(15, ColorTranslator.FromHtml("#127AF2")); + IntensityLegend.Add(16, ColorTranslator.FromHtml("#0B53F2")); + IntensityLegend.Add(17, ColorTranslator.FromHtml("#052EF2")); + IntensityLegend.Add(18, ColorTranslator.FromHtml("#052EF1")); + IntensityLegend.Add(19, ColorTranslator.FromHtml("#2BFF2D")); + IntensityLegend.Add(20, ColorTranslator.FromHtml("#29F62B")); + IntensityLegend.Add(21, ColorTranslator.FromHtml("#27ED29")); + IntensityLegend.Add(22, ColorTranslator.FromHtml("#25E427")); + IntensityLegend.Add(23, ColorTranslator.FromHtml("#23DA25")); + IntensityLegend.Add(24, ColorTranslator.FromHtml("#21D123")); + IntensityLegend.Add(25, ColorTranslator.FromHtml("#1FC821")); + IntensityLegend.Add(26, ColorTranslator.FromHtml("#1FC821")); + IntensityLegend.Add(27, ColorTranslator.FromHtml("#1EC01F")); + IntensityLegend.Add(28, ColorTranslator.FromHtml("#1EC01F")); + IntensityLegend.Add(29, ColorTranslator.FromHtml("#1CB81D")); + IntensityLegend.Add(30, ColorTranslator.FromHtml("#1AB01C")); + IntensityLegend.Add(31, ColorTranslator.FromHtml("#19A81A")); + IntensityLegend.Add(32, ColorTranslator.FromHtml("#17A018")); + IntensityLegend.Add(33, ColorTranslator.FromHtml("#159816")); + IntensityLegend.Add(34, ColorTranslator.FromHtml("#139015")); + IntensityLegend.Add(35, ColorTranslator.FromHtml("#FEFD34")); + IntensityLegend.Add(36, ColorTranslator.FromHtml("#F9EE31")); + IntensityLegend.Add(37, ColorTranslator.FromHtml("#F2DF2E")); + IntensityLegend.Add(38, ColorTranslator.FromHtml("#ECCF2B")); + IntensityLegend.Add(39, ColorTranslator.FromHtml("#E6BF28")); + IntensityLegend.Add(40, ColorTranslator.FromHtml("#E6BF28")); + IntensityLegend.Add(41, ColorTranslator.FromHtml("#ECB326")); + IntensityLegend.Add(42, ColorTranslator.FromHtml("#F1A724")); + IntensityLegend.Add(43, ColorTranslator.FromHtml("#F79A23")); + IntensityLegend.Add(44, ColorTranslator.FromHtml("#FD8E22")); + IntensityLegend.Add(45, ColorTranslator.FromHtml("#FD8E22")); + IntensityLegend.Add(46, ColorTranslator.FromHtml("#FD691E")); + IntensityLegend.Add(47, ColorTranslator.FromHtml("#FC431A")); + IntensityLegend.Add(48, ColorTranslator.FromHtml("#FC1918")); + IntensityLegend.Add(49, ColorTranslator.FromHtml("#FC0017")); + IntensityLegend.Add(50, ColorTranslator.FromHtml("#FC0017")); + IntensityLegend.Add(51, ColorTranslator.FromHtml("#F20016")); + IntensityLegend.Add(52, ColorTranslator.FromHtml("#E80015")); + IntensityLegend.Add(53, ColorTranslator.FromHtml("#DD0013")); + IntensityLegend.Add(54, ColorTranslator.FromHtml("#D40012")); + IntensityLegend.Add(55, ColorTranslator.FromHtml("#D40012")); + IntensityLegend.Add(56, ColorTranslator.FromHtml("#C70010")); + IntensityLegend.Add(57, ColorTranslator.FromHtml("#B9000E")); + IntensityLegend.Add(58, ColorTranslator.FromHtml("#AC000C")); + IntensityLegend.Add(59, ColorTranslator.FromHtml("#9E000A")); + IntensityLegend.Add(60, ColorTranslator.FromHtml("#FEC8FE")); + IntensityLegend.Add(61, ColorTranslator.FromHtml("#F3B4F3")); + IntensityLegend.Add(62, ColorTranslator.FromHtml("#E7A0E7")); + IntensityLegend.Add(63, ColorTranslator.FromHtml("#DB8CDB")); + IntensityLegend.Add(64, ColorTranslator.FromHtml("#CF78CF")); + IntensityLegend.Add(65, ColorTranslator.FromHtml("#C464C4")); + IntensityLegend.Add(66, ColorTranslator.FromHtml("#B850B8")); + IntensityLegend.Add(67, ColorTranslator.FromHtml("#AD3CAD")); + IntensityLegend.Add(68, ColorTranslator.FromHtml("#A128A1")); + IntensityLegend.Add(69, ColorTranslator.FromHtml("#961396")); + IntensityLegend.Add(70, ColorTranslator.FromHtml("#8A008A")); + IntensityLegend.Add(100, ColorTranslator.FromHtml("#FFFFFF")); + + + // initialize cloud tops dictionary + CloudTopsLegend.Add(-1, Color.FromArgb(112, 0, 0, 0)); + CloudTopsLegend.Add(0, Color.FromArgb(0, 0, 0, 0)); + CloudTopsLegend.Add(0, Color.Transparent); + CloudTopsLegend.Add(1, Color.FromArgb(255, 170, 170, 170)); + CloudTopsLegend.Add(500, Color.FromArgb(255, 226, 255, 255)); + CloudTopsLegend.Add(1000, Color.FromArgb(255, 180, 240, 250)); + CloudTopsLegend.Add(1500, Color.FromArgb(255, 150, 210, 250)); + CloudTopsLegend.Add(2000, Color.FromArgb(255, 120, 185, 250)); + CloudTopsLegend.Add(2500, Color.FromArgb(255, 80, 165, 245)); + CloudTopsLegend.Add(3000, Color.FromArgb(255, 60, 150, 245)); + CloudTopsLegend.Add(3500, Color.FromArgb(255, 45, 155, 150)); + CloudTopsLegend.Add(4000, Color.FromArgb(255, 30, 180, 30)); + CloudTopsLegend.Add(4500, Color.FromArgb(255, 55, 210, 60)); + CloudTopsLegend.Add(5000, Color.FromArgb(255, 80, 240, 80)); + CloudTopsLegend.Add(5500, Color.FromArgb(255, 150, 245, 140)); + CloudTopsLegend.Add(6000, Color.FromArgb(255, 200, 255, 190)); + CloudTopsLegend.Add(6500, Color.FromArgb(255, 255, 250, 170)); + CloudTopsLegend.Add(7000, Color.FromArgb(255, 255, 232, 120)); + CloudTopsLegend.Add(7500, Color.FromArgb(255, 255, 192, 60)); + CloudTopsLegend.Add(8000, Color.FromArgb(255, 255, 160, 0)); + CloudTopsLegend.Add(8500, Color.FromArgb(255, 255, 96, 0)); + CloudTopsLegend.Add(9000, Color.FromArgb(255, 245, 50, 0)); + CloudTopsLegend.Add(9500, Color.FromArgb(255, 225, 20, 0)); + CloudTopsLegend.Add(10000, Color.FromArgb(255, 192, 0, 0)); + CloudTopsLegend.Add(10500, Color.FromArgb(255, 165, 0, 0)); + CloudTopsLegend.Add(11000, Color.FromArgb(255, 169, 0, 186)); + CloudTopsLegend.Add(11500, Color.FromArgb(255, 236, 59, 255)); + CloudTopsLegend.Add(20000, Color.FromArgb(255, 255, 0, 255)); + + } + + private Bitmap GetRawImage(string url, string search, Color inrange, Color outofrange, int shrinkleft, int shrinktop, int shrinkright, int shrinkbottom, string saveraw) + { + Bitmap image1 = null; + Bitmap image2 = null; + Bitmap image3 = null; + try + { + RequestCachePolicy policy = new RequestCachePolicy(RequestCacheLevel.NoCacheNoStore); + HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url); + request.CachePolicy = policy; + request.CookieContainer = new CookieContainer(); + string imageurl = ""; + // get html page + using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) + { + using (var stream = response.GetResponseStream()) + { + StreamReader reader = new StreamReader(stream, Encoding.UTF8); + string content = reader.ReadToEnd(); + // grab out the url of the latest image + int start = 0; + start = content.IndexOf(search, start) - 12; + // return on no image found + if (start <= 0) + return null; + int stop = content.IndexOf(".png", start) + 4; + if (stop < start) + return null; + + // get the picture + try + { + imageurl = content.Substring(start, stop - start); + Console.WriteLine("Getting picture from web resource: " + imageurl); + HttpWebRequest picrequest = (HttpWebRequest)HttpWebRequest.Create(imageurl); + picrequest.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36"; + picrequest.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9"; + picrequest.CookieContainer = new CookieContainer(); + foreach (Cookie cookie in response.Cookies) + { + picrequest.CookieContainer.Add(cookie); + } + + using (var picresponse = picrequest.GetResponse()) + { + using (var picstream = picresponse.GetResponseStream()) + { + image1 = new Bitmap(picstream); + } + } + } + catch (Exception ex) + { + Console.WriteLine("Error while getting picture: " + ex.Message); + } + + // no picture loaded + if (image1 == null) + return null; + + // save raw image if filename is not empty + if (!String.IsNullOrEmpty(saveraw)) + { + try + { + image1.Save(saveraw, ImageFormat.Png); + } + catch (Exception ex) + { + // do nothing + } + } + + // process image + try + { + // crop image + Rectangle crop = new Rectangle(); + crop.X = shrinkleft; + crop.Y = shrinktop; + crop.Width = image1.Width - shrinkleft - shrinkright; + crop.Height = image1.Height - shrinktop - shrinkbottom; + image2 = new Bitmap(crop.Width, crop.Height); + using (Graphics g = Graphics.FromImage(image2)) + { + g.DrawImage(image1, -crop.X, -crop.Y); + } + + // Test + Color c; + c = image2.GetPixel(10, 10); + c = image2.GetPixel(600, 350); + + // be aware that there are two representations of transparent background: + // image.MakeTransparent uses ARGB(0,0,0,0) + // Color.Transparent uses ARGB(0,255,255,255) + + // make out of range background transparent + image2.MakeTransparent(outofrange); + + // convert out of range color into semi-transparent grey + ColorMap[] colormap = new ColorMap[1]; + colormap[0] = new ColorMap(); + colormap[0].OldColor = Color.FromArgb(0, 0, 0, 0); + colormap[0].NewColor = Color.FromArgb(112, 0, 0, 0); + ImageAttributes attr = new ImageAttributes(); + attr.SetRemapTable(colormap); + // Draw using the color map + using (Graphics g = Graphics.FromImage(image2)) + { + Rectangle rect = new Rectangle(0, 0, image2.Width, image2.Height); + g.DrawImage(image2, rect, 0, 0, rect.Width, rect.Height, GraphicsUnit.Pixel, attr); + } + + // make in range background transparent + image2.MakeTransparent(inrange); + // convert in range color into Color.Transparent + colormap = new ColorMap[1]; + colormap[0] = new ColorMap(); + colormap[0].OldColor = Color.FromArgb(0, 0, 0, 0); + colormap[0].NewColor = Color.Transparent; + attr = new ImageAttributes(); + attr.SetRemapTable(colormap); + // Draw using the color map & stretch + using (Graphics g = Graphics.FromImage(image2)) + { + Rectangle rect = new Rectangle(0, 0, image2.Width, image2.Height); + g.DrawImage(image2, rect, 0, 0, rect.Width, rect.Height, GraphicsUnit.Pixel, attr); + } + } + catch (Exception ex) + { + Console.WriteLine("Error while processing picture: " + ex.Message); + } + } + } + + // return if processing fails + if (image2 == null) + return null; + + + // extract timestamp from url + DateTime utc = DateTime.UtcNow; + try + { + utc = new DateTime( + System.Convert.ToInt32(imageurl.Substring(68, 4)), + System.Convert.ToInt32(imageurl.Substring(73, 2)), + System.Convert.ToInt32(imageurl.Substring(76, 2)), + System.Convert.ToInt32(imageurl.Substring(79, 2)), + System.Convert.ToInt32(imageurl.Substring(82, 2)), + 0, + DateTimeKind.Utc); + } + catch (Exception ex) + { + Console.WriteLine(ex.Message); + } + this.Timestamp = utc; + + return image2; + } + catch (Exception ex) + { + // do nothing + } + + return null; + } + + private void GetLightningFromJSON() + { + if (IntensityImage == null) + return; + + + int zoom = 5; + + GPoint dsttl = MercatorProjection.Instance.FromLatLngToPixel(new PointLatLng(this.Top, this.Left), zoom); + GPoint dstbr = MercatorProjection.Instance.FromLatLngToPixel(new PointLatLng(this.Bottom, this.Right), zoom); + int dstwidth = (int)dstbr.X - (int)dsttl.X; + int dstheight = (int)dstbr.Y - (int)dsttl.Y; + + LightningValues = new int[dstwidth, dstheight]; + + string baseurl = "https://map.blitzortung.org/GEOjson/getjson.php?f=s&n="; + for (int i = 0; i <= 23; i++) + { + try + { + HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(baseurl + i.ToString("00")); + RequestCachePolicy policy = new RequestCachePolicy(RequestCacheLevel.NoCacheNoStore); + request.CachePolicy = policy; + request.CookieContainer = new CookieContainer(); + request.Referer = "https://map.blitzortung.org/"; + // get html page + using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) + { + using (var stream = response.GetResponseStream()) + { + StreamReader reader = new StreamReader(stream, Encoding.UTF8); + string json = reader.ReadToEnd(); + dynamic root = JsonConvert.DeserializeObject(json); + foreach (dynamic entry in root) + { + double lon = entry[0]; + double lat = entry[1]; + DateTime time = entry[2]; + int age = (int)(DateTime.UtcNow - time).TotalMinutes; + GPoint p = MercatorProjection.Instance.FromLatLngToPixel(new PointLatLng(lat, lon), zoom); + int x = (int)p.X - (int)dsttl.X; + int y = (int)p.Y - (int)dsttl.Y; + + if ((x > 1) && (x < dstwidth - 1) && (y >= 1) && (y < dstheight - 1)) + { + LightningValues[x, y] = age; + LightningValues[x, y + 1] = age; + LightningValues[x + 1, y] = age; + LightningValues[x + 1, y + 1] = age; + } + } + + } + } + } + catch (Exception ex) + { + + } + } + + } + + private void GetRadarImages() + { + IntensityImage = GetRawImage( + "https://kachelmannwetter.com/de/radar-standard", + ".kachelmannwetter.com/images/data/cache/radar/radar", + Color.FromArgb(255, 110, 110, 110), + Color.FromArgb(255, 143, 143, 143), + 0, 0, 0, 3, + "RawIntensityImage.png"); + CloudTopsImage = GetRawImage( + "https://kachelmannwetter.com/de/3d-radar-analyse/deutschland/echo-tops-18dbz.html", + ".kachelmannwetter.com/images/data/cache/radar3d/radar3d", + Color.FromArgb(255, 170, 170, 170), + Color.FromArgb(255, 255, 255, 255), + // 2,2,0,140, + 2, 3, 0, 140, + "RawCloudTopsImage.png"); + + GetLightningFromJSON(); + + } + + public override Bitmap GetRadarImage() + { + // check for last update and get new images if necessary + if (Timestamp.AddSeconds(UpdateCycle) < DateTime.UtcNow) + { + GetRadarImages(); + } + + return IntensityImage; + } + + public override int[,] GetRadarLayer(RADARLAYER layer) + { + // check for last update and get new images if necessary + if (Timestamp.AddSeconds(UpdateCycle) < DateTime.UtcNow) + { + GetRadarImages(); + } + + switch (layer) + { + case RADARLAYER.INTENSITY: return GetValuesFromImage(IntensityImage, IntensityLegend, NEARESTCOLORSTRATEGY.RGB); + case RADARLAYER.CLOUDTOPS: return GetValuesFromImage(CloudTopsImage, CloudTopsLegend, NEARESTCOLORSTRATEGY.RGB); + case RADARLAYER.LIGHTNING: return LightningValues; + } + + return null; + } + + private void SaveIntensityColorsAsCSV() + { + if (IntensityImage == null) + return; + + Bitmap test = new Bitmap(IntensityImage.Width, IntensityImage.Height); + + using (StreamWriter sw = new StreamWriter(File.OpenWrite("IntensityColors.csv"))) + { + for (int x = 0; x < IntensityImage.Width; x++) + { + sw.Write(x.ToString() + ";"); + } + sw.WriteLine(); + + for (int x = 0; x < IntensityImage.Height; x++) + { + for (int y = 0; y < IntensityImage.Width; y++) + { + Color c = IntensityImage.GetPixel(y, x); + sw.Write(ColorTranslator.ToHtml(c).Replace("#FF", "#") + ";") ; + test.SetPixel(y, x, c); + } + sw.WriteLine(); + } + } + test.Save("Intensity2.png", ImageFormat.Png); + } + + private void SaveIntensityValuesAsCSV() + { + if (IntensityImage == null) + return; + + using (StreamWriter sw = new StreamWriter(File.OpenWrite("IntensityValues.csv"))) + { + for (int x = 0; x < IntensityImage.Width; x++) + { + sw.Write(x.ToString() + ";"); + } + sw.WriteLine(); + + for (int x = 0; x < IntensityImage.Height; x++) + { + for (int y = 0; y < IntensityImage.Width; y++) + { + Color c = IntensityImage.GetPixel(y, x); + sw.Write(IntensityLegend.GetValueFromColor(c, NEARESTCOLORSTRATEGY.RGB).ToString() + ";"); + } + sw.WriteLine(); + } + } + } + + private int[,] GetValuesFromImage(Bitmap image, ValueColorTable legend, NEARESTCOLORSTRATEGY strategy) + { + if (image == null) + return null; + + + int[,] values = new int[image.Width, image.Height]; + for (int x = 0; x < image.Width; x++) + { + for (int y = 0; y < image.Height; y++) + { + Color c = image.GetPixel(x, y); + try + { + if (c.A == 0) + values[x, y] = 0; + else if ((c.A > 0) && (c.A < 255)) + values[x, y] = -1; + else + { + values[x, y] = legend.GetValueFromColor(c, strategy); + } + } + catch (Exception ex) + { + Console.WriteLine("Error getting color at (" + x.ToString() + "," + y.ToString() + ") - " + c.ToString() + ": " + ex.Message); + } + } + } + + return values; + } + + } + +} diff --git a/RainScout.Radars/RadarEU_CZ.cs b/RainScout.Radars/RadarEU_CZ.cs new file mode 100644 index 0000000..32788b7 --- /dev/null +++ b/RainScout.Radars/RadarEU_CZ.cs @@ -0,0 +1,302 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Drawing; +using System.Drawing.Imaging; +using System.Drawing.Drawing2D; +using System.Net; +using RainScout.Core; +using System.Security.Cryptography.X509Certificates; +using System.ComponentModel; +using System.Net.Cache; +using System.IO; +using System.IO.IsolatedStorage; +using GMap.NET; +using GMap.NET.Projections; +using Newtonsoft.Json; + +namespace RainScout.Radars +{ + [Serializable] + public class RadarEU_CZ : RainScout.Radars.GenericRadar + { + string BaseURL = "http://www.radareu.cz/data/radar/"; + + // Radar images + private Bitmap IntensityImage = null; + private Bitmap CloudTopsImage = null; + private Bitmap LightningImage = null; + + // values + private int[,] LightningValues = null; + + // Radar legend + private ValueColorTable CloudTopsLegend = new ValueColorTable(); + private ValueColorTable IntensityLegend = new ValueColorTable(); + private ValueColorTable LightningLegend = new ValueColorTable(); + + // update cylce in seconds + private int UpdateCycle = 5 * 60; + + // map zoom level + private readonly int MapZoom = 20; + + public RadarEU_CZ() + { + Name = "Radar EU"; + Source = "http://www.radareu.cz"; + + Left = -14.5; + Right = 45.25; + Top = 72.5; + Bottom = 31.0; + + RadarLayers.Add(RADARLAYER.INTENSITY); + RadarLayers.Add(RADARLAYER.LIGHTNING); + + // initialize intensity dictionary + IntensityLegend.Add(-1,Color.FromArgb(112, 0, 0, 0)); + IntensityLegend.Add(0,Color.Transparent); + IntensityLegend.Add(1, Color.FromArgb(255, 1, 1, 1)); + IntensityLegend.Add(4,Color.FromArgb(255, 55, 1, 117)); + IntensityLegend.Add(8,Color.FromArgb(255, 7, 0, 246)); + IntensityLegend.Add(16,Color.FromArgb(255, 0, 114, 198)); + IntensityLegend.Add(20,Color.FromArgb(255, 1, 162, 1)); + IntensityLegend.Add(24,Color.FromArgb(255, 0, 195, 5)); + IntensityLegend.Add(28,Color.FromArgb(255, 50, 214, 2)); + IntensityLegend.Add(32,Color.FromArgb(255, 155, 229, 7)); + IntensityLegend.Add(36,Color.FromArgb(255, 221, 218, 0)); + IntensityLegend.Add(40,Color.FromArgb(255, 247, 181, 1)); + IntensityLegend.Add(44,Color.FromArgb(255, 254, 129, 3)); + IntensityLegend.Add(48,Color.FromArgb(255, 251, 86, 0)); + IntensityLegend.Add(52,Color.FromArgb(255, 252, 2, 6)); + IntensityLegend.Add(56,Color.FromArgb(255, 150, 6, 10)); + IntensityLegend.Add(60,Color.FromArgb(255, 255, 255, 255)); + + } + + private Bitmap GetRadarImage(DateTime utc) + { + // gets actual radar image from url + string imagename = "radar.anim." + utc.ToString("yyyyMMdd") + "." + utc.ToString("HHmm") + ".0.png"; + Bitmap image1 = null; + Bitmap image2 = null; + string url = BaseURL + imagename; + try + { + var request = WebRequest.Create(url); + + using (var response = request.GetResponse()) + { + using (var stream = response.GetResponseStream()) + { + image1 = new Bitmap(stream); + } + } + + // crop image + Rectangle crop = new Rectangle(); + crop.X = 2; + crop.Y = 2; + crop.Width = image1.Width - crop.X; + crop.Height = image1.Height - crop.Y; + image2 = new Bitmap(crop.Width, crop.Height); + using (Graphics g = Graphics.FromImage(image2)) + { + g.DrawImage(image1, -crop.X, -crop.Y); + } + + + image2.Save("RadarEU_CZ.png"); + this.Timestamp = utc; + } + catch (Exception ex) + { + // do nothing + return null; + } + + return image2; + } + + public void GetRadarImages() + { + // get current date and time string + DateTime utc = DateTime.UtcNow; + // round it to 15min interval + if (utc.Minute < 15) + utc = new DateTime(utc.Year, utc.Month, utc.Day, utc.Hour, 0, 0, DateTimeKind.Utc); + else if (utc.Minute < 30) + utc = new DateTime(utc.Year, utc.Month, utc.Day, utc.Hour, 15, 0, DateTimeKind.Utc); + else if (utc.Minute < 45) + utc = new DateTime(utc.Year, utc.Month, utc.Day, utc.Hour, 30, 0, DateTimeKind.Utc); + else if (utc.Minute < 60) + utc = new DateTime(utc.Year, utc.Month, utc.Day, utc.Hour, 45, 0, DateTimeKind.Utc); + Bitmap bm = GetRadarImage(utc); + if (bm == null) + { + // call failed --> try with 1 period earlier + utc = utc - new TimeSpan(0, 15, 0); + GetRadarImage(utc); + } + + IntensityImage = bm; + + GetLightningFromJSON(); + +// SaveLightningValuesAsCSV(); + } + + private void GetLightningFromJSON() + { + if (IntensityImage == null) + return; + + + int zoom = 5; + + GPoint dsttl = MercatorProjection.Instance.FromLatLngToPixel(new PointLatLng(this.Top, this.Left), zoom); + GPoint dstbr = MercatorProjection.Instance.FromLatLngToPixel(new PointLatLng(this.Bottom, this.Right), zoom); + int dstwidth = (int)dstbr.X - (int)dsttl.X; + int dstheight = (int)dstbr.Y - (int)dsttl.Y; + + LightningValues = new int[dstwidth, dstheight]; + + string baseurl = "https://map.blitzortung.org/GEOjson/getjson.php?f=s&n="; + for (int i = 0; i <=23; i++) + { + try + { + HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(baseurl + i.ToString("00")); + RequestCachePolicy policy = new RequestCachePolicy(RequestCacheLevel.NoCacheNoStore); + request.CachePolicy = policy; + request.CookieContainer = new CookieContainer(); + request.Referer = "https://map.blitzortung.org/"; + // get html page + using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) + { + using (var stream = response.GetResponseStream()) + { + StreamReader reader = new StreamReader(stream, Encoding.UTF8); + string json = reader.ReadToEnd(); + dynamic root = JsonConvert.DeserializeObject(json); + foreach (dynamic entry in root) + { + double lon = entry[0]; + double lat = entry[1]; + DateTime time = entry[2]; + int age = (int)(DateTime.UtcNow - time).TotalMinutes; + GPoint p = MercatorProjection.Instance.FromLatLngToPixel(new PointLatLng(lat,lon), zoom); + int x = (int)p.X - (int)dsttl.X; + int y = (int)p.Y - (int)dsttl.Y; + + if ((x > 1) && (x < dstwidth - 1) && (y >= 1) && (y < dstheight - 1)) + { + LightningValues[x, y] = age; + LightningValues[x, y + 1] = age; + LightningValues[x + 1, y] = age; + LightningValues[x + 1, y + 1] = age; + } + } + + } + } + } + catch (Exception ex) + { + + } + } + + } + + public override Bitmap GetRadarImage() + { + // check for last update and get new images if necessary + if (Timestamp.AddSeconds(UpdateCycle) < DateTime.UtcNow) + { + GetRadarImages(); + } + + return IntensityImage; + } + + public override int[,] GetRadarLayer(RADARLAYER layer) + { + // check for last update and get new images if necessary + if (Timestamp.AddSeconds(UpdateCycle) < DateTime.UtcNow) + { + GetRadarImages(); + } + + switch (layer) + { + case RADARLAYER.INTENSITY: return GetValuesFromImage(IntensityImage, IntensityLegend, NEARESTCOLORSTRATEGY.RGB); + case RADARLAYER.LIGHTNING: return LightningValues; + } + + return null; + } + + private int[,] GetValuesFromImage(Bitmap image, ValueColorTable legend, NEARESTCOLORSTRATEGY strategy) + { + if (image == null) + return null; + + + int[,] values = new int[image.Width, image.Height]; + for (int x = 0; x < image.Width; x++) + { + for (int y = 0; y < image.Height; y++) + { + Color c = image.GetPixel(x, y); + try + { + if (c.A == 0) + values[x, y] = 0; + else if ((c.A > 0) && (c.A < 255)) + values[x, y] = -1; + else + { + int v = legend.GetValueFromColor(c, strategy); + values[x, y] = v; + } + } + catch (Exception ex) + { + Console.WriteLine("Error getting color at (" + x.ToString() + "," + y.ToString() + ") - " + c.ToString() + ": " + ex.Message); + } + } + } + + return values; + } + + private void SaveLightningValuesAsCSV() + { + if (LightningImage == null) + return; + + using (StreamWriter sw = new StreamWriter(File.OpenWrite("LightningValues.csv"))) + { + for (int x = 0; x < LightningImage.Width; x++) + { + sw.Write(x.ToString() + ";"); + } + sw.WriteLine(); + + for (int x = 0; x < LightningImage.Height; x++) + { + for (int y = 0; y < LightningImage.Width; y++) + { + Color c = LightningImage.GetPixel(y, x); + sw.Write(LightningLegend.GetValueFromColor(c, NEARESTCOLORSTRATEGY.RGB).ToString() + ";"); + } + sw.WriteLine(); + } + } + } + + } +} diff --git a/RainScout.Radars/RadarHD_EU.cs b/RainScout.Radars/RadarHD_EU.cs new file mode 100644 index 0000000..0707b58 --- /dev/null +++ b/RainScout.Radars/RadarHD_EU.cs @@ -0,0 +1,812 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Drawing; +using System.Drawing.Imaging; +using System.Drawing.Drawing2D; +using System.Net; +using RainScout.Core; +using System.Security.Cryptography.X509Certificates; +using System.ComponentModel; +using System.Net.Cache; +using System.IO; +using System.IO.IsolatedStorage; +using GMap.NET; +using GMap.NET.Projections; +using Newtonsoft.Json; +using NGrib; +using NGrib.Grib2; +using System.Threading; +using System.Runtime.CompilerServices; +using System.Windows.Forms; + +namespace RainScout.Radars +{ + [Serializable] + public class RadarHD_EU : RainScout.Radars.GenericRadar + { + string BaseURL = "https://www.rainviewer.com/weather-radar-map-live.html"; + + // Radar images + private Bitmap IntensityImage = null; + private Bitmap CloudTopsImage = null; + private Bitmap LightningImage = null; + + // values + private int[,] LightningValues = null; + + // Radar legend + private ValueColorTable CloudTopsLegend = new ValueColorTable(); + private ValueColorTable IntensityLegend = new ValueColorTable(); + private ValueColorTable LightningLegend = new ValueColorTable(); + + // update cylce in seconds + private int UpdateCycle = 5 * 60; + + // map zoom level + private readonly int MapZoom = 20; + + // Numeric weather prediction + private Dictionary> NWP = new Dictionary>(); + + public RadarHD_EU() + { + Name = "RadarHD EU"; + Source = "https://www.rainviewer.com/"; + + Left = -14.5; + Right = 45.25; + Top = 72.5; + Bottom = 31.0; + + RadarLayers.Add(RADARLAYER.INTENSITY); + RadarLayers.Add(RADARLAYER.CLOUDTOPS); + RadarLayers.Add(RADARLAYER.LIGHTNING); + + // initialize intensity dictionary + IntensityLegend.Add(-1,Color.FromArgb(0, 0, 0, 0)); + IntensityLegend.Add(0, Color.Transparent); + IntensityLegend.Add(1, ColorTranslator.FromHtml("#626262")); + IntensityLegend.Add(5, ColorTranslator.FromHtml("#28EDEB")); + IntensityLegend.Add(10, ColorTranslator.FromHtml("#19A1F0")); + IntensityLegend.Add(15, ColorTranslator.FromHtml("#0412EF")); + IntensityLegend.Add(20, ColorTranslator.FromHtml("#2BFE2D")); + IntensityLegend.Add(25, ColorTranslator.FromHtml("#1FC721")); + IntensityLegend.Add(30, ColorTranslator.FromHtml("#149015")); + IntensityLegend.Add(35, ColorTranslator.FromHtml("#FDFD35")); + IntensityLegend.Add(40, ColorTranslator.FromHtml("#E3BF27")); + IntensityLegend.Add(45, ColorTranslator.FromHtml("#FC8E22")); + IntensityLegend.Add(50, ColorTranslator.FromHtml("#F90017")); + IntensityLegend.Add(55, ColorTranslator.FromHtml("#D10011")); + IntensityLegend.Add(60, ColorTranslator.FromHtml("#BE000F")); + IntensityLegend.Add(65, ColorTranslator.FromHtml("#FA00F9")); + IntensityLegend.Add(70, ColorTranslator.FromHtml("#9856C6")); + IntensityLegend.Add(75, ColorTranslator.FromHtml("#EBEBEB")); + + // initialize cloud tops dictionary + CloudTopsLegend.Add(-1, Color.FromArgb(0, 0, 0, 0)); + CloudTopsLegend.Add(0, Color.Transparent); + CloudTopsLegend.Add(-92, ColorTranslator.FromHtml("#000000")); + CloudTopsLegend.Add(-90, ColorTranslator.FromHtml("#181818")); + CloudTopsLegend.Add(-88, ColorTranslator.FromHtml("#2C1C1C")); + CloudTopsLegend.Add(-86, ColorTranslator.FromHtml("#411416")); + CloudTopsLegend.Add(-84, ColorTranslator.FromHtml("#550C10")); + CloudTopsLegend.Add(-82 , ColorTranslator.FromHtml("#67040C")); + CloudTopsLegend.Add(-80, ColorTranslator.FromHtml("#7D0007")); + CloudTopsLegend.Add(-78, ColorTranslator.FromHtml("#900008")); + CloudTopsLegend.Add(-76, ColorTranslator.FromHtml("#A6000B")); + CloudTopsLegend.Add(-74, ColorTranslator.FromHtml("#B8000E")); + CloudTopsLegend.Add(-72, ColorTranslator.FromHtml("#C60010")); + CloudTopsLegend.Add(-70, ColorTranslator.FromHtml("#DD0013")); + CloudTopsLegend.Add(-69, ColorTranslator.FromHtml("#F10016")); + CloudTopsLegend.Add(-68, ColorTranslator.FromHtml("#FC0018")); + CloudTopsLegend.Add(-67, ColorTranslator.FromHtml("#FC2518")); + CloudTopsLegend.Add(-66, ColorTranslator.FromHtml("#FC3E1A")); + CloudTopsLegend.Add(-65, ColorTranslator.FromHtml("#FC5C1C")); + CloudTopsLegend.Add(-64, ColorTranslator.FromHtml("#FD7B20")); + CloudTopsLegend.Add(-63, ColorTranslator.FromHtml("#FD9924")); + CloudTopsLegend.Add(-62, ColorTranslator.FromHtml("#FDB628")); + CloudTopsLegend.Add(-61, ColorTranslator.FromHtml("#FEC82B")); + CloudTopsLegend.Add(-60, ColorTranslator.FromHtml("#FEE430")); + CloudTopsLegend.Add(-59, ColorTranslator.FromHtml("#FDFE35")); + CloudTopsLegend.Add(-58, ColorTranslator.FromHtml("#DFFF3D")); + CloudTopsLegend.Add(-57, ColorTranslator.FromHtml("#C2FF4F")); + CloudTopsLegend.Add(-56, ColorTranslator.FromHtml("#AEFF5F")); + CloudTopsLegend.Add(-55, ColorTranslator.FromHtml("#97FF74")); + CloudTopsLegend.Add(-54, ColorTranslator.FromHtml("#80FF8A")); + CloudTopsLegend.Add(-53, ColorTranslator.FromHtml("#68FFA2")); + CloudTopsLegend.Add(-52, ColorTranslator.FromHtml("#53FFBA")); + CloudTopsLegend.Add(-51, ColorTranslator.FromHtml("#53FFBA")); + CloudTopsLegend.Add(-50, ColorTranslator.FromHtml("#32FFEB")); + CloudTopsLegend.Add(-49, ColorTranslator.FromHtml("#2BFAFE")); + CloudTopsLegend.Add(-48, ColorTranslator.FromHtml("#26E2FD")); + CloudTopsLegend.Add(-47, ColorTranslator.FromHtml("#21C8FD")); + CloudTopsLegend.Add(-46, ColorTranslator.FromHtml("#1CB2FC")); + CloudTopsLegend.Add(-45, ColorTranslator.FromHtml("#1799FC")); + CloudTopsLegend.Add(-44, ColorTranslator.FromHtml("#1385FC")); + CloudTopsLegend.Add(-43, ColorTranslator.FromHtml("#0D64FB")); + CloudTopsLegend.Add(-42, ColorTranslator.FromHtml("#0A52FB")); + CloudTopsLegend.Add(-41, ColorTranslator.FromHtml("#0740FB")); + CloudTopsLegend.Add(-40, ColorTranslator.FromHtml("#0520FB")); + CloudTopsLegend.Add(-38, ColorTranslator.FromHtml("#0311E6")); + CloudTopsLegend.Add(-36, ColorTranslator.FromHtml("#00035E")); + CloudTopsLegend.Add(-34, ColorTranslator.FromHtml("#010794")); + CloudTopsLegend.Add(-32, ColorTranslator.FromHtml("#EFEFEF")); + CloudTopsLegend.Add(-30, ColorTranslator.FromHtml("#E1E1E1")); + CloudTopsLegend.Add(-26, ColorTranslator.FromHtml("#D5D5D5")); + CloudTopsLegend.Add(-22, ColorTranslator.FromHtml("#C9C9C9")); + CloudTopsLegend.Add(-18, ColorTranslator.FromHtml("#BDBDBD")); + CloudTopsLegend.Add(-14, ColorTranslator.FromHtml("#B3B3B3")); + CloudTopsLegend.Add(-10, ColorTranslator.FromHtml("#ADADAD")); + CloudTopsLegend.Add(-8, ColorTranslator.FromHtml("#A7A7A7")); + CloudTopsLegend.Add(-6, ColorTranslator.FromHtml("#A1A1A1")); + CloudTopsLegend.Add(-4, ColorTranslator.FromHtml("#9B9B9B")); + CloudTopsLegend.Add(-2, ColorTranslator.FromHtml("#8F8F8F")); + } + + private Bitmap GetIntensityTile(DateTime utc, int x, int y, int z, int colorscheme) + { + // gets tile from url + Bitmap image1 = null; // 1622129403 + Bitmap image2 = null; // 1622128200 + utc = utc.AddMinutes(-1); + DateTime imagetime = new DateTime(utc.Year, utc.Month, utc.Day, utc.Hour, (int)(utc.Minute / 10) * 10, 0, DateTimeKind.Utc); + int time = (int)(imagetime - new DateTime(1970, 1, 1)).TotalSeconds; + string url = "https://tilecache.rainviewer.com/v2/radar/" + time.ToString() + "/256/" + z.ToString() + "/" + x.ToString() + "/" + y.ToString() + "/" + colorscheme.ToString() + "/1_1.png"; + try + { + var request = WebRequest.Create(url); + + using (var response = request.GetResponse()) + { + using (var stream = response.GetResponseStream()) + { + image1 = new Bitmap(stream); + } + } + + this.Timestamp = utc; + } + catch (Exception ex) + { + // do nothing + return null; + } + + return image1; + } + + private Bitmap GetCoverageTile(int x, int y, int z) + { + // gets tile from url + Bitmap image1 = null; // 1622129403 + Bitmap image2 = null; // 1622128200 + // https://tilecache.rainviewer.com/v2/coverage/0/256/5/17/7.png + string url = "https://tilecache.rainviewer.com/v2/coverage/0/256/" + z.ToString() + "/" + "/" + x.ToString() + "/" + y.ToString() + ".png"; + try + { + var request = WebRequest.Create(url); + + using (var response = request.GetResponse()) + { + using (var stream = response.GetResponseStream()) + { + image1 = new Bitmap(stream); + } + } + + } + catch (Exception ex) + { + // do nothing + return null; + } + + return image1; + } + + public Bitmap GetIntensityImage(string saveraw) + { + // get current date and time string + DateTime utc = DateTime.UtcNow; + + int left = 14; + int top = 6; + int right = 20; + int bottom = 13; + + Bitmap radar; + Bitmap coverage; + Bitmap image1 = new Bitmap((right - left) * 256, (bottom - top) * 256); + Bitmap image2 = null; + for (int x = left; x <= right; x++) + { + for (int y = top; y <= bottom; y++) + { + radar = GetIntensityTile(utc, x, y, 5, 6); + coverage = GetCoverageTile(x, y, 5); + + using (Graphics g = Graphics.FromImage(image1)) + { + try + { + if (radar != null) + { + Rectangle rect = new Rectangle((x - left) * 256, (y - top) * 256, 256, 256); + g.DrawImage(radar, rect); + g.DrawImage(coverage, rect); + } + } + catch (Exception ex) + { + + } + + } + } + } + + if (image1 == null) + return null; + + int shrinkleft = 250; + int shrinktop = 170; + int shrinkright = 115; + int shrinkbottom = 30; + + Color outofrange = Color.Transparent; + Color inrange = Color.Transparent; + + // crop image + Rectangle crop = new Rectangle(); + crop.X = shrinkleft; + crop.Y = shrinktop; + crop.Width = image1.Width - shrinkleft - shrinkright; + crop.Height = image1.Height - shrinktop - shrinkbottom; + image2 = new Bitmap(crop.Width, crop.Height); + using (Graphics g = Graphics.FromImage(image2)) + { + g.DrawImage(image1, -crop.X, -crop.Y); + } + + // save raw image if filename is not empty + if (!String.IsNullOrEmpty(saveraw)) + { + try + { + image1.Save(saveraw, ImageFormat.Png); + } + catch (Exception ex) + { + // do nothing + } + } + + + image1.Save("RadarHD_EU.png", ImageFormat.Png); + + return image2; + } + + private Bitmap GetCloudTopsImage(string saveraw) + { + Bitmap image1 = null; + Bitmap image2 = null; + Bitmap image3 = null; + int start = 0; + int stop = 0; + string search = "weather.us/images/data/cache/sat/sat_"; + try + { + string url = "https://weather.us/satellite/europe/top-alert-5min.html"; + RequestCachePolicy policy = new RequestCachePolicy(RequestCacheLevel.NoCacheNoStore); + HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url); + request.CachePolicy = policy; + request.CookieContainer = new CookieContainer(); + string imageurl = ""; + // get html page + using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) + { + using (var stream = response.GetResponseStream()) + { + StreamReader reader = new StreamReader(stream, Encoding.UTF8); + string content = reader.ReadToEnd(); + // grab out the url of the latest image + start = content.IndexOf(search, start) - 13; + // return on no image found + if (start <= 0) + return null; + stop = content.IndexOf(".jpg", start) + 4; + if (stop < start) + return null; + + // get the picture + try + { + imageurl = content.Substring(start, stop - start); + Console.WriteLine("Getting picture from web resource: " + imageurl); + HttpWebRequest picrequest = (HttpWebRequest)HttpWebRequest.Create(imageurl); + picrequest.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36"; + picrequest.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9"; + picrequest.CookieContainer = new CookieContainer(); + foreach (Cookie cookie in response.Cookies) + { + picrequest.CookieContainer.Add(cookie); + } + + using (var picresponse = picrequest.GetResponse()) + { + using (var picstream = picresponse.GetResponseStream()) + { + image1 = new Bitmap(picstream); + } + } + } + catch (Exception ex) + { + Console.WriteLine("Error while getting picture: " + ex.Message); + } + + // no picture loaded + if (image1 == null) + return null; + + // save raw image if filename is not empty + if (!String.IsNullOrEmpty(saveraw)) + { + try + { + image1.Save(saveraw, ImageFormat.Png); + } + catch (Exception ex) + { + // do nothing + } + } + + // process image + try + { + // save raw image if filename is not empty + if (!String.IsNullOrEmpty(saveraw)) + { + try + { + image1.Save(saveraw, ImageFormat.Png); + } + catch (Exception ex) + { + // do nothing + } + } + + int zoom = 3; + + GPoint srctl = PlateCarreeProjection.Instance.FromLatLngToPixel(new PointLatLng(this.Top, this.Left), zoom); + GPoint srcbr = PlateCarreeProjection.Instance.FromLatLngToPixel(new PointLatLng(this.Bottom, this.Right), zoom); + int srcwidth = (int)srcbr.X - (int)srctl.X; + int srcheight = (int)srcbr.Y - (int)srctl.Y; + + GPoint dsttl = MercatorProjection.Instance.FromLatLngToPixel(new PointLatLng(this.Top, this.Left), zoom + 2); + GPoint dstbr = MercatorProjection.Instance.FromLatLngToPixel(new PointLatLng(this.Bottom, this.Right), zoom + 2); + int dstwidth = (int)dstbr.X - (int)dsttl.X; + int dstheight = (int)dstbr.Y - (int)dsttl.Y; + image2 = new Bitmap(dstwidth, dstheight); + for (int x = 0; x < dstwidth; x++) + { + for (int y = 0; y < dstheight; y++) + { + PointLatLng p = MercatorProjection.Instance.FromPixelToLatLng(dsttl.X + x, dsttl.Y + y, zoom + 2); + GPoint g = PlateCarreeProjection.Instance.FromLatLngToPixel(p, zoom); + int srcx = (int)((g.X - srctl.X) * (double)image1.Width / (double)srcwidth); + int srcy = (int)((g.Y - srctl.Y) * (double)image1.Height / (double)srcheight); + Color c = Color.Green; + if ((srcx >= 0) && (srcx < image1.Width) && (srcy >= 0) && (srcy < image1.Height)) + { + c = image1.GetPixel(srcx, srcy); + } + image2.SetPixel(x, y, c); + } + } + + // save raw image if filename is not empty + if (!String.IsNullOrEmpty(saveraw)) + { + try + { + image2.Save(saveraw, ImageFormat.Png); + } + catch (Exception ex) + { + // do nothing + } + } + + int shrinkleft = 280; + int shrinktop = 0; + int shrinkright = 0; + int shrinkbottom = 0; + + Color outofrange = Color.Transparent; + Color inrange = Color.Transparent; + + // crop image + Rectangle crop = new Rectangle(); + crop.X = shrinkleft; + crop.Y = shrinktop; + crop.Width = image2.Width - shrinkleft - shrinkright; + crop.Height = image2.Height - shrinktop - shrinkbottom; + image3 = new Bitmap(crop.Width, crop.Height); + using (Graphics g = Graphics.FromImage(image3)) + { + g.DrawImage(image2, -crop.X, -crop.Y); + } + + // be aware that there are two representations of transparent background: + // image.MakeTransparent uses ARGB(0,0,0,0) + // Color.Transparent uses ARGB(0,255,255,255) + + // make out of range background transparent + image3.MakeTransparent(outofrange); + + // convert out of range color into semi-transparent grey + ColorMap[] colormap = new ColorMap[1]; + colormap[0] = new ColorMap(); + colormap[0].OldColor = Color.FromArgb(0, 0, 0, 0); + colormap[0].NewColor = Color.FromArgb(112, 0, 0, 0); + ImageAttributes attr = new ImageAttributes(); + attr.SetRemapTable(colormap); + // Draw using the color map + using (Graphics g = Graphics.FromImage(image3)) + { + Rectangle rect = new Rectangle(0, 0, image3.Width, image3.Height); + g.DrawImage(image3, rect, 0, 0, rect.Width, rect.Height, GraphicsUnit.Pixel, attr); + } + + // make in range background transparent + image3.MakeTransparent(inrange); + // convert in range color into Color.Transparent + colormap = new ColorMap[1]; + colormap[0] = new ColorMap(); + colormap[0].OldColor = Color.FromArgb(0, 0, 0, 0); + colormap[0].NewColor = Color.Transparent; + attr = new ImageAttributes(); + attr.SetRemapTable(colormap); + // Draw using the color map & stretch + using (Graphics g = Graphics.FromImage(image3)) + { + Rectangle rect = new Rectangle(0, 0, image3.Width, image3.Height); + g.DrawImage(image3, rect, 0, 0, rect.Width, rect.Height, GraphicsUnit.Pixel, attr); + } + } + catch (Exception ex) + { + Console.WriteLine("Error while processing picture: " + ex.Message); + } + } + } + + // return if processing fails + if (image3 == null) + return null; + + + // extract timestamp from url + DateTime utc = DateTime.UtcNow; + try + { + start = imageurl.IndexOf(search) + search.Length; + utc = new DateTime( + System.Convert.ToInt32(imageurl.Substring(start, 4)), + System.Convert.ToInt32(imageurl.Substring(start + 5, 2)), + System.Convert.ToInt32(imageurl.Substring(start + 8, 2)), + System.Convert.ToInt32(imageurl.Substring(start + 11, 2)), + System.Convert.ToInt32(imageurl.Substring(start + 14, 2)), + 0, + DateTimeKind.Utc); + } + catch (Exception ex) + { + Console.WriteLine(ex.Message); + } + this.Timestamp = utc; + + return image3; + } + catch (Exception ex) + { + // do nothing + } + + return null; + } + + private void GetLightningFromJSON() + { + if (IntensityImage == null) + return; + + + int zoom = 5; + + GPoint dsttl = MercatorProjection.Instance.FromLatLngToPixel(new PointLatLng(this.Top, this.Left), zoom); + GPoint dstbr = MercatorProjection.Instance.FromLatLngToPixel(new PointLatLng(this.Bottom, this.Right), zoom); + int dstwidth = (int)dstbr.X - (int)dsttl.X; + int dstheight = (int)dstbr.Y - (int)dsttl.Y; + + LightningValues = new int[dstwidth, dstheight]; + + string baseurl = "https://map.blitzortung.org/GEOjson/getjson.php?f=s&n="; + for (int i = 0; i <=23; i++) + { + try + { + HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(baseurl + i.ToString("00")); + RequestCachePolicy policy = new RequestCachePolicy(RequestCacheLevel.NoCacheNoStore); + request.CachePolicy = policy; + request.CookieContainer = new CookieContainer(); + request.Referer = "https://map.blitzortung.org/"; + // get html page + using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) + { + using (var stream = response.GetResponseStream()) + { + StreamReader reader = new StreamReader(stream, Encoding.UTF8); + string json = reader.ReadToEnd(); + dynamic root = JsonConvert.DeserializeObject(json); + foreach (dynamic entry in root) + { + double lon = entry[0]; + double lat = entry[1]; + DateTime time = entry[2]; + int age = (int)(DateTime.UtcNow - time).TotalMinutes; + GPoint p = MercatorProjection.Instance.FromLatLngToPixel(new PointLatLng(lat,lon), zoom); + int x = (int)p.X - (int)dsttl.X; + int y = (int)p.Y - (int)dsttl.Y; + + if ((x > 1) && (x < dstwidth - 1) && (y >= 1) && (y < dstheight - 1)) + { + LightningValues[x, y] = age; + LightningValues[x, y + 1] = age; + LightningValues[x + 1, y] = age; + LightningValues[x + 1, y + 1] = age; + } + } + + } + } + } + catch (Exception ex) + { + + } + } + + } + + private void GetTemperaturesFromGRIB(DateTime utc) + { + try + { + string baseurl = "https://opendata.dwd.de/weather/nwp/icon-eu/grib/12/t/"; + // calculate filename for download + HTTPDirectorySearcher dir = new HTTPDirectorySearcher(); + List files = dir.GetDirectoryInformation(baseurl); + // get time of latest forecast run + HTTPDirectoryItem item = files.Last(file => file.Name.Contains("icon-eu_europe_regular-lat-lon_model-level_")); + if (item == null) + return; + string fct = item.Name.Substring(item.Name.IndexOf("icon-eu_europe_regular-lat-lon_model-level_") + 43, 10); + DateTime fctime = DateTime.MinValue; + if (!DateTime.TryParse(fct.Substring(0, 4) + "-" + fct.Substring(4, 2) + "-" + fct.Substring(6, 2) + "T" + fct.Substring(8, 2) + ":00:00.000Z", + System.Globalization.DateTimeFormatInfo.InvariantInfo, + System.Globalization.DateTimeStyles.AssumeUniversal, + out fctime)) + return; + fctime = fctime.ToUniversalTime(); + // calculate forecast offset + int fchour = (int)(utc - fctime).TotalHours; + string basefilename = "icon-eu_europe_regular-lat-lon_model-level_" + fct + "_" + fchour.ToString("000"); + // find files in directory + item = files.First(file => file.Name.Contains(basefilename)); + // return on no files found + if (item == null) + return; + List> levels = new List>(); + levels.Add(new KeyValuePair(51, 1000)); + levels.Add(new KeyValuePair(47, 2000)); + levels.Add(new KeyValuePair(43, 3000)); + levels.Add(new KeyValuePair(40, 4000)); + levels.Add(new KeyValuePair(37, 5000)); + levels.Add(new KeyValuePair(34, 6000)); + levels.Add(new KeyValuePair(32, 7000)); + levels.Add(new KeyValuePair(29, 8000)); + levels.Add(new KeyValuePair(27, 9000)); + levels.Add(new KeyValuePair(25, 10000)); + levels.Add(new KeyValuePair(22, 11000)); + levels.Add(new KeyValuePair(20, 12000)); + levels.Add(new KeyValuePair(17, 13000)); + levels.Add(new KeyValuePair(14, 14000)); + levels.Add(new KeyValuePair(12, 15000)); + levels.Add(new KeyValuePair(10, 16000)); + levels.Add(new KeyValuePair(8, 17000)); + levels.Add(new KeyValuePair(7, 18000)); + levels.Add(new KeyValuePair(5, 19000)); + levels.Add(new KeyValuePair(4, 20000)); + foreach (KeyValuePair level in levels) + { + NWP[level.Value] = new Dictionary(); + string filename = basefilename + "_" + level.Key.ToString() + "_T.grib2.bz2"; + string url = baseurl + filename; + AutoDecompressionWebClient client = new AutoDecompressionWebClient(); + DOWNLOADFILESTATUS status = client.DownloadFileIfNewer(url, filename, true, true); + if ((status == DOWNLOADFILESTATUS.NEWER) || (status == DOWNLOADFILESTATUS.NOTNEWER)) + { + Grib2Reader gr = new Grib2Reader("Z:\\Downloads\\DWD\\icon-eu_europe_regular-lat-lon_model-level_2021052812_000_10_T.grib2"); + IEnumerable messages = gr.ReadMessages(); + NGrib.Grib2.DataSet dataset = messages.ElementAt(0).DataSets.ElementAt(0); + IEnumerable> values = gr.ReadDataSetValues(dataset); + foreach (KeyValuePair value in values) + { + if ((value.Key.Longitude >= this.Left) && (value.Key.Longitude <= this.Right) && (value.Key.Latitude >= this.Bottom) && (value.Key.Latitude <= this.Top)) + { + NWP[level.Value][value.Key] = value.Value; + } + } + int i = values.Count(); + } + } + } + catch (Exception ex) + { + + } + + } + + public override Bitmap GetRadarImage() + { + // check for last update and get new images if necessary +// if (Timestamp.AddSeconds(UpdateCycle) < DateTime.UtcNow) + { + /* + Left = -11; + Right = 45; + Top = 74; + Bottom = 32; + */ + + Left = -11; + Right = 40; + Top = 71.5; + Bottom = 33; + + IntensityImage = GetIntensityImage("Intensity_EU.png"); + // GetTemperaturesFromGRIB(utc); + CloudTopsImage = GetCloudTopsImage("CloudTops_EU.png"); + + GetLightningFromJSON(); + + } + + + return IntensityImage; + } + + public override int[,] GetRadarLayer(RADARLAYER layer) + { + // check for last update and get new images if necessary + // if (Timestamp.AddSeconds(UpdateCycle) < DateTime.UtcNow) + { + GetRadarImage(); + } + + switch (layer) + { + case RADARLAYER.INTENSITY: return GetValuesFromImage(IntensityImage, IntensityLegend, NEARESTCOLORSTRATEGY.RGB); + case RADARLAYER.CLOUDTOPS: return GetCloudTopValuesFromImage(CloudTopsImage, CloudTopsLegend, NEARESTCOLORSTRATEGY.RGB); + case RADARLAYER.LIGHTNING: return LightningValues; + } + + return null; + } + + private int[,] GetValuesFromImage(Bitmap image, ValueColorTable legend, NEARESTCOLORSTRATEGY strategy) + { + if (image == null) + return null; + + + int[,] values = new int[image.Width, image.Height]; + for (int x = 0; x < image.Width; x++) + { + for (int y = 0; y < image.Height; y++) + { + Color c = image.GetPixel(x, y); + try + { + if (c.A == 0) + values[x, y] = 0; + else if ((c.A > 0) && (c.A < 255)) + values[x, y] = -1; + else + { + int v = legend.GetValueFromColor(c, strategy); + values[x, y] = v; + } + } + catch (Exception ex) + { + Console.WriteLine("Error getting color at (" + x.ToString() + "," + y.ToString() + ") - " + c.ToString() + ": " + ex.Message); + } + } + } + + return values; + } + + private int[,] GetCloudTopValuesFromImage(Bitmap image, ValueColorTable legend, NEARESTCOLORSTRATEGY strategy) + { + if (image == null) + return null; + + + int[,] values = new int[image.Width, image.Height]; + for (int x = 0; x < image.Width; x++) + { + for (int y = 0; y < image.Height; y++) + { + Color c = image.GetPixel(x, y); + try + { + if (c.A == 0) + values[x, y] = 0; + else if ((c.A > 0) && (c.A < 255)) + values[x, y] = -1; + else + { + int v = legend.GetValueFromColor(c, strategy); + // convert °F into K + // v = (int)((v + 459.67) * 5.0 / 9.0); + v = (int)(((v - 32) * 5.0 / 9.0 - 15.0) / -56.5 * 11000 - 10000); + values[x, y] = v; + } + } + catch (Exception ex) + { + Console.WriteLine("Error getting color at (" + x.ToString() + "," + y.ToString() + ") - " + c.ToString() + ": " + ex.Message); + } + } + } + + return values; + } + + private void SaveLightningValuesAsCSV() + { + if (LightningImage == null) + return; + + using (StreamWriter sw = new StreamWriter(File.OpenWrite("LightningValues.csv"))) + { + for (int x = 0; x < LightningImage.Width; x++) + { + sw.Write(x.ToString() + ";"); + } + sw.WriteLine(); + + for (int x = 0; x < LightningImage.Height; x++) + { + for (int y = 0; y < LightningImage.Width; y++) + { + Color c = LightningImage.GetPixel(y, x); + sw.Write(LightningLegend.GetValueFromColor(c, NEARESTCOLORSTRATEGY.RGB).ToString() + ";"); + } + sw.WriteLine(); + } + } + } + + } +} diff --git a/RainScout.Radars/RadarLayer.cs b/RainScout.Radars/RadarLayer.cs new file mode 100644 index 0000000..4080931 --- /dev/null +++ b/RainScout.Radars/RadarLayer.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace RainScout.Radars +{ + public enum RADARLAYER + { + NONE = 0, + INTENSITY = 1, + CLOUDTOPS = 2, + LIGHTNING = 4 + } +} diff --git a/RainScout.Radars/RadarNone.cs b/RainScout.Radars/RadarNone.cs new file mode 100644 index 0000000..810c449 --- /dev/null +++ b/RainScout.Radars/RadarNone.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Drawing; +using System.Drawing.Imaging; +using System.Drawing.Drawing2D; +using System.Net; + +namespace RainScout.Radars +{ + public class RadarNone : RainScout.Radars.GenericRadar + { + public RadarNone() + { + } + + public override Bitmap GetRadarImage() + { + return null; + } + + public override int[,] GetRadarLayer(RADARLAYER layer) + { + return null; + } + } + +} diff --git a/RainScout.Radars/RainScout.Radars.csproj b/RainScout.Radars/RainScout.Radars.csproj new file mode 100644 index 0000000..ee939a5 --- /dev/null +++ b/RainScout.Radars/RainScout.Radars.csproj @@ -0,0 +1,111 @@ + + + + + Debug + AnyCPU + {58A3209F-1BF2-4B59-9A2A-0983CE232CB0} + Library + Properties + RainScout.Radars + RainScout.Radars + v4.7.2 + 512 + true + + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + false + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + false + + + + ..\packages\CSJ2K.NetCore.3.0.0\lib\netstandard2.0\CSJ2K.dll + + + ..\packages\DotNetZip.1.15.0\lib\net40\DotNetZip.dll + + + ..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll + + + ..\packages\NGrib.0.6.0\lib\netstandard2.0\NGrib.dll + + + + ..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll + + + ..\packages\System.Collections.Immutable.1.7.1\lib\net461\System.Collections.Immutable.dll + + + + + ..\packages\System.Drawing.Common.4.5.1\lib\net461\System.Drawing.Common.dll + + + ..\packages\System.IO.FileSystem.4.3.0\lib\net46\System.IO.FileSystem.dll + True + True + + + ..\packages\System.IO.FileSystem.Primitives.4.3.0\lib\net46\System.IO.FileSystem.Primitives.dll + True + True + + + ..\packages\System.Memory.4.5.4\lib\net461\System.Memory.dll + + + + ..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll + + + ..\packages\System.Runtime.CompilerServices.Unsafe.4.5.3\lib\net461\System.Runtime.CompilerServices.Unsafe.dll + + + + + + + + + + + + + + + + + + + + {d0c39d9d-bed0-418b-9a5e-713176caf40c} + GMap.NET.Core + + + {2aa51078-c9e9-4ad0-a8cd-2a028a6bc886} + RainScout.Core + + + + + + + \ No newline at end of file diff --git a/RainScout.Radars/packages.config b/RainScout.Radars/packages.config new file mode 100644 index 0000000..3b5f5f5 --- /dev/null +++ b/RainScout.Radars/packages.config @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/RainScout/BandSettings.cs b/RainScout/BandSettings.cs new file mode 100644 index 0000000..1281bba --- /dev/null +++ b/RainScout/BandSettings.cs @@ -0,0 +1,153 @@ +using ScoutBase.Core; +using System; +using System.Collections.Generic; +using System.Data; +using System.Globalization; +using System.IO; +using System.Linq; +using System.Text; + +namespace RainScout +{ + public class BandSetting + { + public double K_Factor; + public double F1_Clearance; + public double GroundClearance; + public double MaxDistance; + public double MaxSquint; + public double MaxElevation; + + public BandSetting() + { + K_Factor = 1.33; + F1_Clearance = 0.6; + GroundClearance = 0; + MaxDistance = 10; + MaxSquint = double.MaxValue; + MaxElevation = double.MaxValue; + } + } + + [Serializable] + public class BandSettings : DataTable + { + + public BandSettings() : base("BANDSETTINGS") + { + this.Columns.Add("BAND"); + this.Columns.Add("K-FACTOR", typeof(double)); + this.Columns.Add("F1-CLEARANCE", typeof(double)); + this.Columns.Add("GROUNDCLEARANCE", typeof(double)); + this.Columns.Add("MAXDISTANCE", typeof(double)); + this.Columns.Add("MAXSQUINT", typeof(double)); + this.Columns.Add("MAXELEVATION", typeof(double)); + DataColumn[] keys = new DataColumn[1]; + keys[0] = this.Columns["BAND"]; + this.PrimaryKey = keys; + } + + public BandSettings(bool generatedefault) : base("BANDSETTINGS") + { + this.Columns.Add("BAND"); + this.Columns.Add("K-FACTOR", typeof(double)); + this.Columns.Add("F1-CLEARANCE", typeof(double)); + this.Columns.Add("GROUNDCLEARANCE", typeof(double)); + this.Columns.Add("MAXDISTANCE", typeof(double)); + this.Columns.Add("MAXSQUINT", typeof(double)); + this.Columns.Add("MAXELEVATION", typeof(double)); + DataColumn[] keys = new DataColumn[1]; + keys[0] = this.Columns["BAND"]; + this.PrimaryKey = keys; + if (generatedefault) + GenerateDefault(); + } + + private void GenerateDefault() + { + if (this.Rows.Count > 0) + return; + // generate default rows + BAND[] bands = Bands.GetValuesExceptNoneAndAll(); + foreach (BAND band in bands) + { + if (band != BAND.BNONE) + { + DataRow row; + row = this.NewRow(); + row["BAND"] = Bands.GetStringValue(band); + row["GROUNDCLEARANCE"] = Properties.Settings.Default.Path_Default_Ground_Clearance; + row["MAXDISTANCE"] = Properties.Settings.Default.Path_Default_Max_Distance; + row["MAXSQUINT"] = Properties.Settings.Default.Path_Default_Max_Squint; + row["MAXELEVATION"] = Properties.Settings.Default.Path_Default_Max_Elevation; + // adjust values starting with V1.3.0.4 + switch (band) + { + case BAND.B50M: + { + row["K-FACTOR"] = 1.6; + row["F1-CLEARANCE"] = 0.1; + break; + } + case BAND.B70M: + { + row["K-FACTOR"] = 1.6; + row["F1-CLEARANCE"] = 0.1; + break; + } + case BAND.B144M: + { + row["K-FACTOR"] = 1.5; + row["F1-CLEARANCE"] = 0.2; + break; + } + case BAND.B432M: + { + row["K-FACTOR"] = 1.4; + row["F1-CLEARANCE"] = 0.4; + break; + } + default: + { + row["K-FACTOR"] = Properties.Settings.Default.Path_Default_K_Factor; + row["F1-CLEARANCE"] = Properties.Settings.Default.Path_Default_F1_Clearance; + break; + } + } + this.Rows.Add(row); + } + } + } + + public BandSetting this[BAND band] + { + get + { + DataRow row = this.Rows.Find(Bands.GetStringValue(band)); + if (row != null) + { + BandSetting setting = new BandSetting(); + try + { + // fill in the values from the bandsettings table + setting.K_Factor = (double)row["K-FACTOR"]; + setting.F1_Clearance = (double)row["F1-CLEARANCE"]; + setting.GroundClearance = (double)row["GROUNDCLEARANCE"]; + setting.MaxDistance = (double)row["MAXDISTANCE"]; + setting.MaxSquint = (double)row["MAXSQUINT"]; + setting.MaxElevation = (double)row["MAXELEVATION"]; + } + catch + { + } + return setting; + } + else + { + BandSetting setting = new BandSetting(); + return setting; + } + } + } + } +} diff --git a/RainScout/DatabaseStatus.cs b/RainScout/DatabaseStatus.cs new file mode 100644 index 0000000..8fa3caf --- /dev/null +++ b/RainScout/DatabaseStatus.cs @@ -0,0 +1,66 @@ +using System; +using System.Data.SQLite; +using System.Drawing; + +namespace RainScout +{ + + public class DatabaseStatus + { + public static Color GetDatabaseStatusColor(DATABASESTATUS status) + { + Color color = Color.Plum; + if ((status & DATABASESTATUS.ERROR) > 0) + color = Color.Red; + else if ((status & DATABASESTATUS.UPTODATE) > 0) + color = Color.Green; + else if ((status & DATABASESTATUS.COMPLETE) > 0) + color = Color.Blue; + else if ((status & DATABASESTATUS.UPDATING) > 0) + color = Color.Gold; + else if ((status & DATABASESTATUS.EMPTY) > 0) + color = Color.Black; + return color; + } + + public static string GetDatabaseStatusText(DATABASESTATUS status) + { + string s = ""; + if ((status & DATABASESTATUS.UNDEFINED) > 0) + s = "Database status is unknown."; + if ((status & DATABASESTATUS.ERROR) > 0) + { + if (s.Length > 0) + s = s + "\n"; + s = s + "Database has errors."; + } + if ((status & DATABASESTATUS.UPTODATE) > 0) + { + if (s.Length > 0) + s = s + "\n"; + s = s + "Database is up to date."; + } + if ((status & DATABASESTATUS.COMPLETE) > 0) + { + if (s.Length > 0) + s = s + "\n"; + s = s + "Database is complete."; + } + if ((status & DATABASESTATUS.UPDATING) > 0) + { + if (s.Length > 0) + s = s + "\n"; + s = s + "Database is updating."; + } + if ((status & DATABASESTATUS.EMPTY) > 0) + { + if (s.Length > 0) + s = s + "\n"; + s = s + "Database is empty."; + } + return s; + } + + } + +} \ No newline at end of file diff --git a/RainScout/GMapImage.cs b/RainScout/GMapImage.cs new file mode 100644 index 0000000..fd3028c --- /dev/null +++ b/RainScout/GMapImage.cs @@ -0,0 +1,48 @@ + +using System.Drawing; +using System.Drawing.Imaging; +using System.Drawing.Drawing2D; +using GMap.NET.WindowsForms; +using System.Linq; + +namespace RainScout +{ + public class GMapImage : GMapMarker + { + private Image image; + public Image Image + { + get + { + return image; + } + set + { + image = value; + if(image != null) + { + this.Size = new Size(image.Width, image.Height); + } + } + } + + public GMapImage(GMap.NET.PointLatLng p) + : base(p) + { + DisableRegionCheck = true; + IsHitTestVisible = false; + } + + public override void OnRender(Graphics g) + { + if(image == null) + return; + g.SmoothingMode = SmoothingMode.HighQuality; + g.InterpolationMode = InterpolationMode.HighQualityBilinear; + g.PixelOffsetMode = PixelOffsetMode.HighQuality; + Rectangle rect = new Rectangle(LocalPosition.X, LocalPosition.Y, Size.Width, Size.Height); + g.DrawImage(image, rect); + } + + } +} \ No newline at end of file diff --git a/RainScout/LatLon.cs b/RainScout/LatLon.cs new file mode 100644 index 0000000..eef3f07 --- /dev/null +++ b/RainScout/LatLon.cs @@ -0,0 +1,258 @@ +// Formulas courtesy of http://www.movable-type.co.uk/scripts/latlong.html + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace SphericalEarth +{ + public class LatLon + { + + public class Earth + { + public static double Radius = 6371; + } + + public class GPoint : Object + { + public double Lat; + public double Lon; + + public GPoint() + { + Lat = Double.NaN; + Lon = Double.NaN; + } + + public GPoint(double lat, double lon) + { + Lat = lat; + Lon = lon; + } + } + + public class GPath : Object + { + public double Lat1; + public double Lon1; + public double Lat2; + public double Lon2; + + public GPath() + { + Lat1 = Double.NaN; + Lon1 = Double.NaN; + Lat2 = Double.NaN; + Lon2 = Double.NaN; + } + + public GPath(double lat1, double lon1, double lat2, double lon2) + { + Lat1 = lat1; + Lon1 = lon1; + Lat2 = lat2; + Lon2 = lon2; + } + } + + public static double Distance(string myloc, string loc) + { + return Distance(Lat(myloc), Lon(myloc), Lat(loc), Lon(loc)); + } + + public static double Distance(double mylat, double mylon, double lat, double lon) + { + double R = Earth.Radius; + double dLat = (mylat - lat); + double dLon = (mylon - lon); + double a = Math.Sin(dLat / 180 * Math.PI / 2) * Math.Sin(dLat / 180 * Math.PI / 2) + + Math.Sin(dLon / 180 * Math.PI / 2) * Math.Sin(dLon / 180 * Math.PI / 2) * Math.Cos(mylat / 180 * Math.PI) * Math.Cos(lat / 180 * Math.PI); + return R * 2 * Math.Atan2(Math.Sqrt(a), Math.Sqrt(1 - a)); + } + + public static double Bearing(string myloc, string loc) + { + return Bearing(Lat(myloc), Lon(myloc), Lat(loc), Lon(loc)); + } + + public static double Bearing(double mylat, double mylon, double lat, double lon) + { + double dLat = (lat - mylat); + double dLon = (lon - mylon); + double y = Math.Sin(dLon / 180 * Math.PI) * Math.Cos(lat / 180 * Math.PI); + double x = Math.Cos(mylat / 180 * Math.PI) * Math.Sin(lat / 180 * Math.PI) - Math.Sin(mylat / 180 * Math.PI) * Math.Cos(lat / 180 * Math.PI) * Math.Cos(dLon / 180 * Math.PI); + return (Math.Atan2(y, x) / Math.PI * 180 + 360) % 360; + } + + public static GPoint MidPoint(double mylat, double mylon, double lat, double lon) + { + // more accurate spherical midpoint + double aslatdiff = (mylat - lat); + double aslondiff = (mylon - lon); + double bx = Math.Cos(lat / 180 * Math.PI) * Math.Cos(-aslondiff / 180 * Math.PI); + double by = Math.Cos(lat / 180 * Math.PI) * Math.Sin(-aslondiff / 180 * Math.PI); + double latm = Math.Atan2(Math.Sin(mylat / 180 * Math.PI) + Math.Sin(lat / 180 * Math.PI), Math.Sqrt((Math.Cos(mylat / 180 * Math.PI) + bx) * (Math.Cos(mylat / 180 * Math.PI) + bx) + by * by)) / Math.PI * 180; + double lonm = mylon + Math.Atan2(by, Math.Cos(mylat / 180 * Math.PI) + bx) / Math.PI * 180; + return new GPoint(latm, lonm); + } + + public static GPoint DestinationPoint(double mylat, double mylon, double bearing, double distance) + { + double R = Earth.Radius; + double lat = Math.Asin(Math.Sin(mylat / 180 * Math.PI) * Math.Cos(distance / R) + Math.Cos(mylat / 180 * Math.PI) * Math.Sin(distance / R) * Math.Cos(bearing / 180 * Math.PI)); + double lon = mylon / 180 * Math.PI + Math.Atan2(Math.Sin(bearing / 180 * Math.PI) * Math.Sin(distance / R) * Math.Cos(mylat / 180 * Math.PI), Math.Cos(distance / R) - Math.Sin(mylat / 180 * Math.PI) * Math.Sin(lat)); + return new GPoint(lat / Math.PI * 180, lon / Math.PI * 180); + } + + public static GPoint IntersectionPoint(double mylat, double mylon, double mybearing, double lat, double lon, double bearing) + { + double dLat = (lat - mylat); + double dLon = (lon - mylon); + double brng13 = mybearing / 180 * Math.PI; + double brng23 = bearing / 180 * Math.PI; + double brng12 = 0; + double brng21 = 0; + double dist12 = 2 * Math.Asin(Math.Sqrt(Math.Sin(dLat / 2 / 180 * Math.PI) * Math.Sin(dLat / 2 / 180 * Math.PI) + Math.Cos(mylat / 180 * Math.PI) * Math.Cos(lat / 180 * Math.PI) * Math.Sin(dLon / 2 / 180 * Math.PI) * Math.Sin(dLon / 2 / 180 * Math.PI))); + if (dist12 == 0) return null; + + // initial/final bearings between points + double brngA = Math.Acos((Math.Sin(lat / 180 * Math.PI) - Math.Sin(mylat / 180 * Math.PI) * Math.Cos(dist12)) / (Math.Sin(dist12) * Math.Cos(mylat / 180 * Math.PI))); + // protect against rounding + if (Double.IsNaN(brngA)) + brngA = 0; + double brngB = Math.Acos((Math.Sin(mylat / 180 * Math.PI) - Math.Sin(lat / 180 * Math.PI) * Math.Cos(dist12)) / (Math.Sin(dist12) * Math.Cos(lat / 180 * Math.PI))); + if (Math.Sin(lon / 180 * Math.PI - mylon / 180 * Math.PI) > 0) + { + brng12 = brngA; + brng21 = 2 * Math.PI - brngB; + } + else + { + brng12 = 2 * Math.PI - brngA; + brng21 = brngB; + } + double alpha1 = (brng13 - brng12 + Math.PI) % (2 * Math.PI) - Math.PI; // angle 2-1-3 + double alpha2 = (brng21 - brng23 + Math.PI) % (2 * Math.PI) - Math.PI; // angle 1-2-3 + + if ((Math.Sin(alpha1) == 0) && (Math.Sin(alpha2) == 0)) + return null; // infinite intersections + if (Math.Sin(alpha1) * Math.Sin(alpha2) < 0) + return null; // ambiguous intersection + + //alpha1 = Math.abs(alpha1); + //alpha2 = Math.abs(alpha2); + // ... Ed Williams takes abs of alpha1/alpha2, but seems to break calculation? + + double alpha3 = Math.Acos(-Math.Cos(alpha1) * Math.Cos(alpha2) + Math.Sin(alpha1) * Math.Sin(alpha2) * Math.Cos(dist12)); + double dist13 = Math.Atan2(Math.Sin(dist12) * Math.Sin(alpha1) * Math.Sin(alpha2), Math.Cos(alpha2) + Math.Cos(alpha1) * Math.Cos(alpha3)); + double lat3 = Math.Asin(Math.Sin(mylat / 180 * Math.PI) * Math.Cos(dist13) + Math.Cos(mylat / 180 * Math.PI) * Math.Sin(dist13) * Math.Cos(brng13)); + double dLon13 = Math.Atan2(Math.Sin(brng13) * Math.Sin(dist13) * Math.Cos(mylat / 180 * Math.PI), Math.Cos(dist13) - Math.Sin(mylat / 180 * Math.PI) * Math.Sin(lat3)); + double lon3 = mylon / 180 * Math.PI + dLon13; + lon3 = (lon3 + 3 * Math.PI) % (2 * Math.PI) - Math.PI; // normalise to -180..+180º + + return new GPoint(lat3 / Math.PI * 180, lon3 / Math.PI * 180); + } + + public static double Lat(string loc) + { + double StepB1 = 10; + double StepB2 = StepB1 / 10; + double StepB3 = StepB2 / 24; + double StartB1 = -90; + double StartB2 = 0; + double StartB3 = StepB3 / 2; + try + { + loc = loc.ToUpper(); + if ((loc[1] < 'A') || (loc[1] > 'Z') || + (loc[3] < '0') || (loc[3] > '9') || + (loc[5] < 'A') || (loc[5] > 'X')) + { + return -360; + } + return StartB1 + StepB1 * (System.Convert.ToInt16(loc[1]) - 0x41) + + StartB2 + StepB2 * (System.Convert.ToInt16(loc[3]) - 0x30) + + StartB3 + StepB3 * (System.Convert.ToInt16(loc[5]) - 0x41); + } + catch + { + // Fehler bei der Breitenberechnung + return -360; + } + } + + public static double Lon(string loc) + { + try + { + double StepL1 = 20; + double StepL2 = StepL1 / 10; + double StepL3 = StepL2 / 24; + double StartL1 = -180; + double StartL2 = 0; + double StartL3 = StepL3 / 2; + loc = loc.ToUpper(); + if ((loc[0] < 'A') || (loc[0] > 'Z') || + (loc[2] < '0') || (loc[2] > '9') || + (loc[4] < 'A') || (loc[4] > 'X')) + { + return -360; + } + return StartL1 + StepL1 * (System.Convert.ToInt16(loc[0]) - 0x41) + + StartL2 + StepL2 * (System.Convert.ToInt16(loc[2]) - 0x30) + + StartL3 + StepL3 * (System.Convert.ToInt16(loc[4]) - 0x41); + } + catch + { + // Fehler bei der Längenberechnung + return -360; + } + } + + public static string Loc(double lat, double lon) + { + try + { + double StepB1 = 10; + double StepB2 = StepB1 / 10; + double StepB3 = StepB2 / 24; + double StartB1 = -90; + double StartB2 = 0; + double StartB3 = StepB3 / 2; + double StepL1 = 20; + double StepL2 = StepL1 / 10; + double StepL3 = StepL2 / 24; + double StartL1 = -180; + double StartL2 = 0; + double StartL3 = StepL3 / 2; + int i0, i1, i2, i3, i4, i5; + char S0, S1, S2, S3, S4, S5; + i0 = System.Convert.ToInt32(Math.Floor((lon - StartL1) / StepL1)); + S0 = System.Convert.ToChar(i0 + 0x41); + lon = lon - i0 * StepL1 - StartL1; + i2 = System.Convert.ToInt32(Math.Floor((lon - StartL2) / StepL2)); + S2 = System.Convert.ToChar(i2 + 0x30); + lon = lon - i2 * StepL2 - StartL2; + i4 = System.Convert.ToInt32((lon - StartL3) / StepL3); + S4 = System.Convert.ToChar(i4 + 0x41); + i1 = System.Convert.ToInt32(Math.Floor((lat - StartB1) / StepB1)); + S1 = System.Convert.ToChar(i1 + 0x41); + lat = lat - i1 * StepB1 - StartB1; + i3 = System.Convert.ToInt32(Math.Floor((lat - StartB2) / StepB2)); + S3 = System.Convert.ToChar(i3 + 0x30); + lat = lat - i3 * StepB2 - StartB2; + i5 = System.Convert.ToInt32((lat - StartB3) / StepB3); + S5 = System.Convert.ToChar(i5 + 0x41); + string S = System.String.Concat(S0, S1, S2, S3, S4, S5); + return S; + } + catch + { + // Fehler bei der Locatorberechnung + return ""; + } + } + } +} diff --git a/RainScout/LocationEntry.cs b/RainScout/LocationEntry.cs new file mode 100644 index 0000000..56501d7 --- /dev/null +++ b/RainScout/LocationEntry.cs @@ -0,0 +1,17 @@ +using ScoutBase.Propagation; +using ScoutBase.Stations; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace RainScout +{ + [Serializable] + public class LocationEntry + { + public LocationDesignator Location { get; set; } = new LocationDesignator(); + public QRVDesignator QRV { get; set; } = new QRVDesignator(); + public PropagationHorizonDesignator Horizon { get; set; } = new PropagationHorizonDesignator(); + } +} diff --git a/RainScout/MainDlg.Designer.cs b/RainScout/MainDlg.Designer.cs new file mode 100644 index 0000000..5eb3157 --- /dev/null +++ b/RainScout/MainDlg.Designer.cs @@ -0,0 +1,1591 @@ +namespace RainScout +{ + partial class MainDlg + { + /// + /// Erforderliche Designervariable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Verwendete Ressourcen bereinigen. + /// + /// True, wenn verwaltete Ressourcen gelöscht werden sollen; andernfalls False. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Vom Windows Form-Designer generierter Code + + /// + /// Erforderliche Methode für die Designerunterstützung. + /// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainDlg)); + this.ss_Main = new System.Windows.Forms.StatusStrip(); + this.tsl_Main = new System.Windows.Forms.ToolStripStatusLabel(); + this.tsl_Dummy = new System.Windows.Forms.ToolStripStatusLabel(); + this.tsl_Locations = new System.Windows.Forms.ToolStripStatusLabel(); + this.tsl_Radar = new System.Windows.Forms.ToolStripStatusLabel(); + this.tsl_Database = new System.Windows.Forms.ToolStripStatusLabel(); + this.spl_Main = new System.Windows.Forms.SplitContainer(); + this.spl_Map = new System.Windows.Forms.SplitContainer(); + this.gm_Main = new GMap.NET.WindowsForms.GMapControl(); + this.gb_Filter = new System.Windows.Forms.GroupBox(); + this.label3 = new System.Windows.Forms.Label(); + this.ud_Filter_MaxDistance = new System.Windows.Forms.NumericUpDown(); + this.label222 = new System.Windows.Forms.Label(); + this.ud_Filter_MinDistance = new System.Windows.Forms.NumericUpDown(); + this.cb_Filter_VisibleScpOnly = new System.Windows.Forms.CheckBox(); + this.gb_Map = new System.Windows.Forms.GroupBox(); + this.label26 = new System.Windows.Forms.Label(); + this.label4 = new System.Windows.Forms.Label(); + this.cb_Map_Distances = new System.Windows.Forms.CheckBox(); + this.cb_Map_Horizons = new System.Windows.Forms.CheckBox(); + this.cb_Map_Bounds = new System.Windows.Forms.CheckBox(); + this.cb_Map_Lightning = new System.Windows.Forms.CheckBox(); + this.cb_Map_CloudTops = new System.Windows.Forms.CheckBox(); + this.cb_Map_Intensity = new System.Windows.Forms.CheckBox(); + this.label15 = new System.Windows.Forms.Label(); + this.btn_Map_ZoomIn = new System.Windows.Forms.Button(); + this.btn_Map_ZoomOut = new System.Windows.Forms.Button(); + this.tb_Map_Zoom = new System.Windows.Forms.TextBox(); + this.pa_CommonInfo = new System.Windows.Forms.Panel(); + this.lbl_Radar_Timestamp = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.cb_Radar = new System.Windows.Forms.ComboBox(); + this.label32 = new System.Windows.Forms.Label(); + this.cb_ElevationModel = new System.Windows.Forms.ComboBox(); + this.label27 = new System.Windows.Forms.Label(); + this.tb_UTC = new System.Windows.Forms.TextBox(); + this.label28 = new System.Windows.Forms.Label(); + this.cb_Band = new System.Windows.Forms.ComboBox(); + this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.tb_Mouse_Lightning = new System.Windows.Forms.TextBox(); + this.label33 = new System.Windows.Forms.Label(); + this.tb_Mouse_Intensity = new System.Windows.Forms.TextBox(); + this.label1 = new System.Windows.Forms.Label(); + this.tb_Mouse_CloudTop = new System.Windows.Forms.TextBox(); + this.label30 = new System.Windows.Forms.Label(); + this.tb_Mouse_Distance = new System.Windows.Forms.TextBox(); + this.label5 = new System.Windows.Forms.Label(); + this.tb_Mouse_Bearing = new System.Windows.Forms.TextBox(); + this.label6 = new System.Windows.Forms.Label(); + this.tb_Mouse_Loc = new System.Windows.Forms.TextBox(); + this.label7 = new System.Windows.Forms.Label(); + this.tb_Mouse_Lon = new System.Windows.Forms.TextBox(); + this.label8 = new System.Windows.Forms.Label(); + this.tb_Mouse_Lat = new System.Windows.Forms.TextBox(); + this.label9 = new System.Windows.Forms.Label(); + this.btn_Options = new System.Windows.Forms.Button(); + this.btn_Refresh = new System.Windows.Forms.Button(); + this.gb_DXData = new System.Windows.Forms.GroupBox(); + this.tb_DXData_Elevation = new System.Windows.Forms.TextBox(); + this.label25 = new System.Windows.Forms.Label(); + this.tb_DXData_Distance = new System.Windows.Forms.TextBox(); + this.label20 = new System.Windows.Forms.Label(); + this.tb_DXData_Bearing = new System.Windows.Forms.TextBox(); + this.label21 = new System.Windows.Forms.Label(); + this.tb_DXData_Loc = new System.Windows.Forms.TextBox(); + this.label22 = new System.Windows.Forms.Label(); + this.tb_DXData_Lon = new System.Windows.Forms.TextBox(); + this.label23 = new System.Windows.Forms.Label(); + this.tb_DXData_Lat = new System.Windows.Forms.TextBox(); + this.label24 = new System.Windows.Forms.Label(); + this.gb_Scp = new System.Windows.Forms.GroupBox(); + this.tb_Scp_Lightning = new System.Windows.Forms.TextBox(); + this.label31 = new System.Windows.Forms.Label(); + this.tb_Scp_Intensity = new System.Windows.Forms.TextBox(); + this.label34 = new System.Windows.Forms.Label(); + this.tb_Scp_CloudTop = new System.Windows.Forms.TextBox(); + this.label35 = new System.Windows.Forms.Label(); + this.btn_scp_Clear = new System.Windows.Forms.Button(); + this.tb_Scp_Loc = new System.Windows.Forms.TextBox(); + this.label17 = new System.Windows.Forms.Label(); + this.tb_Scp_Lon = new System.Windows.Forms.TextBox(); + this.label18 = new System.Windows.Forms.Label(); + this.tb_Scp_Lat = new System.Windows.Forms.TextBox(); + this.label19 = new System.Windows.Forms.Label(); + this.gb_MyData = new System.Windows.Forms.GroupBox(); + this.tb_MyData_Height = new System.Windows.Forms.TextBox(); + this.label29 = new System.Windows.Forms.Label(); + this.tb_MyData_Elevation = new System.Windows.Forms.TextBox(); + this.label16 = new System.Windows.Forms.Label(); + this.tb_MyData_Distance = new System.Windows.Forms.TextBox(); + this.label14 = new System.Windows.Forms.Label(); + this.tb_MyData_Bearing = new System.Windows.Forms.TextBox(); + this.label13 = new System.Windows.Forms.Label(); + this.tb_MyData_Loc = new System.Windows.Forms.TextBox(); + this.label12 = new System.Windows.Forms.Label(); + this.tb_MyDataLon = new System.Windows.Forms.TextBox(); + this.label11 = new System.Windows.Forms.Label(); + this.tb_MyData_Lat = new System.Windows.Forms.TextBox(); + this.label10 = new System.Windows.Forms.Label(); + this.bw_Horizons = new System.ComponentModel.BackgroundWorker(); + this.ti_Main = new System.Windows.Forms.Timer(this.components); + this.bw_Stations = new System.ComponentModel.BackgroundWorker(); + this.bw_Locations = new System.ComponentModel.BackgroundWorker(); + this.bw_Radar = new System.ComponentModel.BackgroundWorker(); + this.tsl_Database_LED_Stations = new System.Windows.Forms.ToolStripStatusLabel(); + this.tsl_Database_LED_GLOBE = new System.Windows.Forms.ToolStripStatusLabel(); + this.tsl_Database_LED_SRTM3 = new System.Windows.Forms.ToolStripStatusLabel(); + this.tsl_Database_LED_SRTM1 = new System.Windows.Forms.ToolStripStatusLabel(); + this.ss_Main.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.spl_Main)).BeginInit(); + this.spl_Main.Panel1.SuspendLayout(); + this.spl_Main.Panel2.SuspendLayout(); + this.spl_Main.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.spl_Map)).BeginInit(); + this.spl_Map.Panel1.SuspendLayout(); + this.spl_Map.Panel2.SuspendLayout(); + this.spl_Map.SuspendLayout(); + this.gb_Filter.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.ud_Filter_MaxDistance)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.ud_Filter_MinDistance)).BeginInit(); + this.gb_Map.SuspendLayout(); + this.pa_CommonInfo.SuspendLayout(); + this.groupBox1.SuspendLayout(); + this.gb_DXData.SuspendLayout(); + this.gb_Scp.SuspendLayout(); + this.gb_MyData.SuspendLayout(); + this.SuspendLayout(); + // + // ss_Main + // + this.ss_Main.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.tsl_Main, + this.tsl_Dummy, + this.tsl_Locations, + this.tsl_Radar, + this.tsl_Database, + this.tsl_Database_LED_Stations, + this.tsl_Database_LED_GLOBE, + this.tsl_Database_LED_SRTM3, + this.tsl_Database_LED_SRTM1}); + this.ss_Main.Location = new System.Drawing.Point(0, 707); + this.ss_Main.Name = "ss_Main"; + this.ss_Main.Size = new System.Drawing.Size(1008, 22); + this.ss_Main.TabIndex = 3; + this.ss_Main.Text = "statusStrip1"; + // + // tsl_Main + // + this.tsl_Main.BackColor = System.Drawing.SystemColors.Control; + this.tsl_Main.BorderStyle = System.Windows.Forms.Border3DStyle.Sunken; + this.tsl_Main.Name = "tsl_Main"; + this.tsl_Main.Size = new System.Drawing.Size(39, 17); + this.tsl_Main.Text = "Status"; + // + // tsl_Dummy + // + this.tsl_Dummy.BackColor = System.Drawing.SystemColors.Control; + this.tsl_Dummy.Name = "tsl_Dummy"; + this.tsl_Dummy.Size = new System.Drawing.Size(717, 17); + this.tsl_Dummy.Spring = true; + // + // tsl_Locations + // + this.tsl_Locations.BackColor = System.Drawing.SystemColors.Control; + this.tsl_Locations.Name = "tsl_Locations"; + this.tsl_Locations.Size = new System.Drawing.Size(58, 17); + this.tsl_Locations.Text = "Locations"; + // + // tsl_Radar + // + this.tsl_Radar.BackColor = System.Drawing.SystemColors.Control; + this.tsl_Radar.Name = "tsl_Radar"; + this.tsl_Radar.Size = new System.Drawing.Size(37, 17); + this.tsl_Radar.Text = "Radar"; + // + // tsl_Database + // + this.tsl_Database.BackColor = System.Drawing.SystemColors.Control; + this.tsl_Database.BorderStyle = System.Windows.Forms.Border3DStyle.Sunken; + this.tsl_Database.Name = "tsl_Database"; + this.tsl_Database.Size = new System.Drawing.Size(55, 17); + this.tsl_Database.Text = "Database"; + // + // spl_Main + // + this.spl_Main.Dock = System.Windows.Forms.DockStyle.Fill; + this.spl_Main.Location = new System.Drawing.Point(0, 0); + this.spl_Main.Name = "spl_Main"; + this.spl_Main.Orientation = System.Windows.Forms.Orientation.Horizontal; + // + // spl_Main.Panel1 + // + this.spl_Main.Panel1.Controls.Add(this.spl_Map); + // + // spl_Main.Panel2 + // + this.spl_Main.Panel2.BackColor = System.Drawing.SystemColors.Control; + this.spl_Main.Panel2.Controls.Add(this.groupBox1); + this.spl_Main.Panel2.Controls.Add(this.btn_Options); + this.spl_Main.Panel2.Controls.Add(this.btn_Refresh); + this.spl_Main.Panel2.Controls.Add(this.gb_DXData); + this.spl_Main.Panel2.Controls.Add(this.gb_Scp); + this.spl_Main.Panel2.Controls.Add(this.gb_MyData); + this.spl_Main.Size = new System.Drawing.Size(1008, 707); + this.spl_Main.SplitterDistance = 478; + this.spl_Main.TabIndex = 4; + // + // spl_Map + // + this.spl_Map.Dock = System.Windows.Forms.DockStyle.Fill; + this.spl_Map.Location = new System.Drawing.Point(0, 0); + this.spl_Map.Name = "spl_Map"; + // + // spl_Map.Panel1 + // + this.spl_Map.Panel1.Controls.Add(this.gm_Main); + // + // spl_Map.Panel2 + // + this.spl_Map.Panel2.BackColor = System.Drawing.SystemColors.Control; + this.spl_Map.Panel2.Controls.Add(this.gb_Filter); + this.spl_Map.Panel2.Controls.Add(this.gb_Map); + this.spl_Map.Panel2.Controls.Add(this.pa_CommonInfo); + this.spl_Map.Panel2.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.spl_Map.Size = new System.Drawing.Size(1008, 478); + this.spl_Map.SplitterDistance = 854; + this.spl_Map.TabIndex = 0; + // + // gm_Main + // + this.gm_Main.Bearing = 0F; + this.gm_Main.CanDragMap = true; + this.gm_Main.Dock = System.Windows.Forms.DockStyle.Fill; + this.gm_Main.EmptyTileColor = System.Drawing.Color.Navy; + this.gm_Main.GrayScaleMode = false; + this.gm_Main.HelperLineOption = GMap.NET.WindowsForms.HelperLineOptions.DontShow; + this.gm_Main.LevelsKeepInMemmory = 5; + this.gm_Main.Location = new System.Drawing.Point(0, 0); + this.gm_Main.MarkersEnabled = true; + this.gm_Main.MaxZoom = 2; + this.gm_Main.MinZoom = 2; + this.gm_Main.MouseWheelZoomType = GMap.NET.MouseWheelZoomType.MousePositionAndCenter; + this.gm_Main.Name = "gm_Main"; + this.gm_Main.NegativeMode = false; + this.gm_Main.Opacity = 1D; + this.gm_Main.PolygonsEnabled = true; + this.gm_Main.RetryLoadTile = 0; + this.gm_Main.RoutesEnabled = true; + this.gm_Main.SelectedAreaFillColor = System.Drawing.Color.FromArgb(((int)(((byte)(33)))), ((int)(((byte)(65)))), ((int)(((byte)(105)))), ((int)(((byte)(225))))); + this.gm_Main.ShowTileGridLines = false; + this.gm_Main.Size = new System.Drawing.Size(854, 478); + this.gm_Main.TabIndex = 1; + this.gm_Main.Zoom = 0D; + this.gm_Main.OnMarkerClick += new GMap.NET.WindowsForms.MarkerClick(this.gm_Main_OnMarkerClick); + this.gm_Main.OnMarkerEnter += new GMap.NET.WindowsForms.MarkerEnter(this.gm_Main_OnMarkerEnter); + this.gm_Main.OnMarkerLeave += new GMap.NET.WindowsForms.MarkerLeave(this.gm_Main_OnMarkerLeave); + this.gm_Main.OnMapDrag += new GMap.NET.MapDrag(this.gm_Main_OnMapDrag); + this.gm_Main.OnMapZoomChanged += new GMap.NET.MapZoomChanged(this.gm_Main_OnMapZoomChanged); + this.gm_Main.MouseClick += new System.Windows.Forms.MouseEventHandler(this.gm_Main_MouseClick); + this.gm_Main.MouseDown += new System.Windows.Forms.MouseEventHandler(this.gm_Main_MouseDown); + this.gm_Main.MouseEnter += new System.EventHandler(this.gm_Main_MouseEnter); + this.gm_Main.MouseMove += new System.Windows.Forms.MouseEventHandler(this.gm_Main_MouseMove); + this.gm_Main.MouseUp += new System.Windows.Forms.MouseEventHandler(this.gm_Main_MouseUp); + // + // gb_Filter + // + this.gb_Filter.Controls.Add(this.label3); + this.gb_Filter.Controls.Add(this.ud_Filter_MaxDistance); + this.gb_Filter.Controls.Add(this.label222); + this.gb_Filter.Controls.Add(this.ud_Filter_MinDistance); + this.gb_Filter.Controls.Add(this.cb_Filter_VisibleScpOnly); + this.gb_Filter.Dock = System.Windows.Forms.DockStyle.Top; + this.gb_Filter.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic))), System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.gb_Filter.Location = new System.Drawing.Point(0, 344); + this.gb_Filter.Name = "gb_Filter"; + this.gb_Filter.Size = new System.Drawing.Size(150, 127); + this.gb_Filter.TabIndex = 65; + this.gb_Filter.TabStop = false; + this.gb_Filter.Text = "Filter"; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Italic, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label3.Location = new System.Drawing.Point(9, 83); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(75, 13); + this.label3.TabIndex = 13; + this.label3.Text = "Max. Distance"; + // + // ud_Filter_MaxDistance + // + this.ud_Filter_MaxDistance.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::RainScout.Properties.Settings.Default, "Filter_MaxDistance", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.ud_Filter_MaxDistance.Font = new System.Drawing.Font("Courier New", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.ud_Filter_MaxDistance.Location = new System.Drawing.Point(12, 99); + this.ud_Filter_MaxDistance.Maximum = new decimal(new int[] { + 1000, + 0, + 0, + 0}); + this.ud_Filter_MaxDistance.Name = "ud_Filter_MaxDistance"; + this.ud_Filter_MaxDistance.Size = new System.Drawing.Size(120, 21); + this.ud_Filter_MaxDistance.TabIndex = 12; + this.ud_Filter_MaxDistance.Value = global::RainScout.Properties.Settings.Default.Filter_MaxDistance; + // + // label222 + // + this.label222.AutoSize = true; + this.label222.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Italic, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label222.Location = new System.Drawing.Point(10, 39); + this.label222.Name = "label222"; + this.label222.Size = new System.Drawing.Size(72, 13); + this.label222.TabIndex = 11; + this.label222.Text = "Min. Distance"; + // + // ud_Filter_MinDistance + // + this.ud_Filter_MinDistance.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::RainScout.Properties.Settings.Default, "Filter_MinDistance", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.ud_Filter_MinDistance.Font = new System.Drawing.Font("Courier New", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.ud_Filter_MinDistance.Location = new System.Drawing.Point(13, 55); + this.ud_Filter_MinDistance.Maximum = new decimal(new int[] { + 1000, + 0, + 0, + 0}); + this.ud_Filter_MinDistance.Name = "ud_Filter_MinDistance"; + this.ud_Filter_MinDistance.Size = new System.Drawing.Size(120, 21); + this.ud_Filter_MinDistance.TabIndex = 1; + this.ud_Filter_MinDistance.Value = global::RainScout.Properties.Settings.Default.Filter_MinDistance; + // + // cb_Filter_VisibleScpOnly + // + this.cb_Filter_VisibleScpOnly.AutoSize = true; + this.cb_Filter_VisibleScpOnly.CheckAlign = System.Drawing.ContentAlignment.MiddleRight; + this.cb_Filter_VisibleScpOnly.Checked = global::RainScout.Properties.Settings.Default.Filter_VisibleScpOnly; + this.cb_Filter_VisibleScpOnly.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::RainScout.Properties.Settings.Default, "Filter_VisibleScpOnly", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.cb_Filter_VisibleScpOnly.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Filter_VisibleScpOnly.Location = new System.Drawing.Point(8, 19); + this.cb_Filter_VisibleScpOnly.Name = "cb_Filter_VisibleScpOnly"; + this.cb_Filter_VisibleScpOnly.Size = new System.Drawing.Size(126, 17); + this.cb_Filter_VisibleScpOnly.TabIndex = 0; + this.cb_Filter_VisibleScpOnly.Text = "Visible Scp Stns Only"; + this.cb_Filter_VisibleScpOnly.UseVisualStyleBackColor = true; + // + // gb_Map + // + this.gb_Map.Controls.Add(this.label26); + this.gb_Map.Controls.Add(this.label4); + this.gb_Map.Controls.Add(this.cb_Map_Distances); + this.gb_Map.Controls.Add(this.cb_Map_Horizons); + this.gb_Map.Controls.Add(this.cb_Map_Bounds); + this.gb_Map.Controls.Add(this.cb_Map_Lightning); + this.gb_Map.Controls.Add(this.cb_Map_CloudTops); + this.gb_Map.Controls.Add(this.cb_Map_Intensity); + this.gb_Map.Controls.Add(this.label15); + this.gb_Map.Controls.Add(this.btn_Map_ZoomIn); + this.gb_Map.Controls.Add(this.btn_Map_ZoomOut); + this.gb_Map.Controls.Add(this.tb_Map_Zoom); + this.gb_Map.Dock = System.Windows.Forms.DockStyle.Top; + this.gb_Map.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic))), System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.gb_Map.Location = new System.Drawing.Point(0, 187); + this.gb_Map.Name = "gb_Map"; + this.gb_Map.Size = new System.Drawing.Size(150, 157); + this.gb_Map.TabIndex = 64; + this.gb_Map.TabStop = false; + this.gb_Map.Text = "Map"; + // + // label26 + // + this.label26.AutoSize = true; + this.label26.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label26.Location = new System.Drawing.Point(113, 106); + this.label26.Name = "label26"; + this.label26.Size = new System.Drawing.Size(16, 16); + this.label26.TabIndex = 18; + this.label26.Text = "↓"; + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label4.Location = new System.Drawing.Point(113, 59); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(16, 16); + this.label4.TabIndex = 17; + this.label4.Text = "↑"; + // + // cb_Map_Distances + // + this.cb_Map_Distances.AutoSize = true; + this.cb_Map_Distances.Checked = global::RainScout.Properties.Settings.Default.Map_Distances; + this.cb_Map_Distances.CheckState = System.Windows.Forms.CheckState.Checked; + this.cb_Map_Distances.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::RainScout.Properties.Settings.Default, "Map_Distances", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.cb_Map_Distances.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Map_Distances.Location = new System.Drawing.Point(12, 41); + this.cb_Map_Distances.Name = "cb_Map_Distances"; + this.cb_Map_Distances.Size = new System.Drawing.Size(73, 17); + this.cb_Map_Distances.TabIndex = 16; + this.cb_Map_Distances.Text = "Distances"; + this.cb_Map_Distances.UseVisualStyleBackColor = true; + this.cb_Map_Distances.CheckedChanged += new System.EventHandler(this.cb_Map_Distances_CheckedChanged); + // + // cb_Map_Horizons + // + this.cb_Map_Horizons.AutoSize = true; + this.cb_Map_Horizons.Checked = global::RainScout.Properties.Settings.Default.Map_Horizons; + this.cb_Map_Horizons.CheckState = System.Windows.Forms.CheckState.Checked; + this.cb_Map_Horizons.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::RainScout.Properties.Settings.Default, "Map_Horizons", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.cb_Map_Horizons.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Map_Horizons.Location = new System.Drawing.Point(12, 64); + this.cb_Map_Horizons.Name = "cb_Map_Horizons"; + this.cb_Map_Horizons.Size = new System.Drawing.Size(67, 17); + this.cb_Map_Horizons.TabIndex = 15; + this.cb_Map_Horizons.Text = "Horizons"; + this.cb_Map_Horizons.UseVisualStyleBackColor = true; + this.cb_Map_Horizons.CheckedChanged += new System.EventHandler(this.cb_Map_Horizons_CheckedChanged); + // + // cb_Map_Bounds + // + this.cb_Map_Bounds.AutoSize = true; + this.cb_Map_Bounds.Checked = global::RainScout.Properties.Settings.Default.Map_Bounds; + this.cb_Map_Bounds.CheckState = System.Windows.Forms.CheckState.Checked; + this.cb_Map_Bounds.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::RainScout.Properties.Settings.Default, "Map_Bounds", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.cb_Map_Bounds.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Map_Bounds.Location = new System.Drawing.Point(12, 18); + this.cb_Map_Bounds.Name = "cb_Map_Bounds"; + this.cb_Map_Bounds.Size = new System.Drawing.Size(62, 17); + this.cb_Map_Bounds.TabIndex = 14; + this.cb_Map_Bounds.Text = "Bounds"; + this.cb_Map_Bounds.UseVisualStyleBackColor = true; + this.cb_Map_Bounds.CheckedChanged += new System.EventHandler(this.cb_Map_Bounds_CheckedChanged); + // + // cb_Map_Lightning + // + this.cb_Map_Lightning.AutoSize = true; + this.cb_Map_Lightning.Checked = global::RainScout.Properties.Settings.Default.Map_Lightning; + this.cb_Map_Lightning.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::RainScout.Properties.Settings.Default, "Map_Lightning", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.cb_Map_Lightning.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Map_Lightning.Location = new System.Drawing.Point(12, 134); + this.cb_Map_Lightning.Name = "cb_Map_Lightning"; + this.cb_Map_Lightning.Size = new System.Drawing.Size(69, 17); + this.cb_Map_Lightning.TabIndex = 13; + this.cb_Map_Lightning.Text = "Lightning"; + this.cb_Map_Lightning.UseVisualStyleBackColor = true; + this.cb_Map_Lightning.CheckedChanged += new System.EventHandler(this.cb_Map_Lightning_CheckedChanged); + // + // cb_Map_CloudTops + // + this.cb_Map_CloudTops.AutoSize = true; + this.cb_Map_CloudTops.Checked = global::RainScout.Properties.Settings.Default.Map_CloudTops; + this.cb_Map_CloudTops.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::RainScout.Properties.Settings.Default, "Map_CloudTops", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.cb_Map_CloudTops.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Map_CloudTops.Location = new System.Drawing.Point(13, 111); + this.cb_Map_CloudTops.Name = "cb_Map_CloudTops"; + this.cb_Map_CloudTops.Size = new System.Drawing.Size(77, 17); + this.cb_Map_CloudTops.TabIndex = 12; + this.cb_Map_CloudTops.Text = "CloudTops"; + this.cb_Map_CloudTops.UseVisualStyleBackColor = true; + this.cb_Map_CloudTops.CheckedChanged += new System.EventHandler(this.cb_Map_CloudTops_CheckedChanged); + // + // cb_Map_Intensity + // + this.cb_Map_Intensity.AutoSize = true; + this.cb_Map_Intensity.Checked = global::RainScout.Properties.Settings.Default.Map_Intensity; + this.cb_Map_Intensity.CheckState = System.Windows.Forms.CheckState.Checked; + this.cb_Map_Intensity.DataBindings.Add(new System.Windows.Forms.Binding("Checked", global::RainScout.Properties.Settings.Default, "Map_Intensity", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.cb_Map_Intensity.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Map_Intensity.Location = new System.Drawing.Point(12, 88); + this.cb_Map_Intensity.Name = "cb_Map_Intensity"; + this.cb_Map_Intensity.Size = new System.Drawing.Size(65, 17); + this.cb_Map_Intensity.TabIndex = 11; + this.cb_Map_Intensity.Text = "Intensity"; + this.cb_Map_Intensity.UseVisualStyleBackColor = true; + this.cb_Map_Intensity.CheckedChanged += new System.EventHandler(this.cb_Map_Intensity_CheckedChanged); + // + // label15 + // + this.label15.AutoSize = true; + this.label15.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Italic, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label15.Location = new System.Drawing.Point(101, 11); + this.label15.Name = "label15"; + this.label15.Size = new System.Drawing.Size(34, 13); + this.label15.TabIndex = 10; + this.label15.Text = "Zoom"; + // + // btn_Map_ZoomIn + // + this.btn_Map_ZoomIn.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btn_Map_ZoomIn.Location = new System.Drawing.Point(109, 32); + this.btn_Map_ZoomIn.Name = "btn_Map_ZoomIn"; + this.btn_Map_ZoomIn.Size = new System.Drawing.Size(23, 23); + this.btn_Map_ZoomIn.TabIndex = 9; + this.btn_Map_ZoomIn.Text = "+"; + this.btn_Map_ZoomIn.UseVisualStyleBackColor = true; + this.btn_Map_ZoomIn.Click += new System.EventHandler(this.btn_Map_ZoomIn_Click); + // + // btn_Map_ZoomOut + // + this.btn_Map_ZoomOut.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btn_Map_ZoomOut.Location = new System.Drawing.Point(109, 128); + this.btn_Map_ZoomOut.Name = "btn_Map_ZoomOut"; + this.btn_Map_ZoomOut.Size = new System.Drawing.Size(23, 23); + this.btn_Map_ZoomOut.TabIndex = 8; + this.btn_Map_ZoomOut.Text = "-"; + this.btn_Map_ZoomOut.UseVisualStyleBackColor = true; + this.btn_Map_ZoomOut.Click += new System.EventHandler(this.btn_Map_ZoomOut_Click); + // + // tb_Map_Zoom + // + this.tb_Map_Zoom.BackColor = System.Drawing.Color.White; + this.tb_Map_Zoom.Font = new System.Drawing.Font("Courier New", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_Map_Zoom.Location = new System.Drawing.Point(109, 82); + this.tb_Map_Zoom.Name = "tb_Map_Zoom"; + this.tb_Map_Zoom.ReadOnly = true; + this.tb_Map_Zoom.Size = new System.Drawing.Size(23, 20); + this.tb_Map_Zoom.TabIndex = 7; + this.tb_Map_Zoom.Text = "0"; + this.tb_Map_Zoom.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // + // pa_CommonInfo + // + this.pa_CommonInfo.Controls.Add(this.lbl_Radar_Timestamp); + this.pa_CommonInfo.Controls.Add(this.label2); + this.pa_CommonInfo.Controls.Add(this.cb_Radar); + this.pa_CommonInfo.Controls.Add(this.label32); + this.pa_CommonInfo.Controls.Add(this.cb_ElevationModel); + this.pa_CommonInfo.Controls.Add(this.label27); + this.pa_CommonInfo.Controls.Add(this.tb_UTC); + this.pa_CommonInfo.Controls.Add(this.label28); + this.pa_CommonInfo.Controls.Add(this.cb_Band); + this.pa_CommonInfo.Dock = System.Windows.Forms.DockStyle.Top; + this.pa_CommonInfo.Location = new System.Drawing.Point(0, 0); + this.pa_CommonInfo.MinimumSize = new System.Drawing.Size(150, 142); + this.pa_CommonInfo.Name = "pa_CommonInfo"; + this.pa_CommonInfo.Size = new System.Drawing.Size(150, 187); + this.pa_CommonInfo.TabIndex = 60; + // + // lbl_Radar_Timestamp + // + this.lbl_Radar_Timestamp.AutoSize = true; + this.lbl_Radar_Timestamp.Font = new System.Drawing.Font("Courier New", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lbl_Radar_Timestamp.Location = new System.Drawing.Point(15, 167); + this.lbl_Radar_Timestamp.Name = "lbl_Radar_Timestamp"; + this.lbl_Radar_Timestamp.Size = new System.Drawing.Size(119, 14); + this.lbl_Radar_Timestamp.TabIndex = 22; + this.lbl_Radar_Timestamp.Text = "0000-00-00 00:00"; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Italic, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label2.Location = new System.Drawing.Point(6, 127); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(36, 13); + this.label2.TabIndex = 21; + this.label2.Text = "Radar"; + // + // cb_Radar + // + this.cb_Radar.AllowDrop = true; + this.cb_Radar.BackColor = System.Drawing.Color.FloralWhite; + this.cb_Radar.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cb_Radar.Font = new System.Drawing.Font("Courier New", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Radar.FormattingEnabled = true; + this.cb_Radar.Location = new System.Drawing.Point(8, 142); + this.cb_Radar.Name = "cb_Radar"; + this.cb_Radar.Size = new System.Drawing.Size(130, 22); + this.cb_Radar.TabIndex = 20; + this.cb_Radar.SelectedIndexChanged += new System.EventHandler(this.cb_Radar_SelectedIndexChanged); + // + // label32 + // + this.label32.AutoSize = true; + this.label32.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Italic, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label32.Location = new System.Drawing.Point(6, 86); + this.label32.Name = "label32"; + this.label32.Size = new System.Drawing.Size(83, 13); + this.label32.TabIndex = 19; + this.label32.Text = "Elevation Model"; + // + // cb_ElevationModel + // + this.cb_ElevationModel.AllowDrop = true; + this.cb_ElevationModel.BackColor = System.Drawing.Color.FloralWhite; + this.cb_ElevationModel.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cb_ElevationModel.Font = new System.Drawing.Font("Courier New", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_ElevationModel.FormattingEnabled = true; + this.cb_ElevationModel.Location = new System.Drawing.Point(8, 102); + this.cb_ElevationModel.Name = "cb_ElevationModel"; + this.cb_ElevationModel.Size = new System.Drawing.Size(130, 22); + this.cb_ElevationModel.TabIndex = 18; + this.cb_ElevationModel.SelectedIndexChanged += new System.EventHandler(this.cb_ElevationModel_SelectedIndexChanged); + // + // label27 + // + this.label27.AutoSize = true; + this.label27.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Italic, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label27.Location = new System.Drawing.Point(4, 3); + this.label27.Name = "label27"; + this.label27.Size = new System.Drawing.Size(29, 13); + this.label27.TabIndex = 17; + this.label27.Text = "UTC"; + // + // tb_UTC + // + this.tb_UTC.BackColor = System.Drawing.Color.LightSalmon; + this.tb_UTC.Font = new System.Drawing.Font("Arial", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_UTC.ForeColor = System.Drawing.Color.White; + this.tb_UTC.Location = new System.Drawing.Point(4, 18); + this.tb_UTC.Name = "tb_UTC"; + this.tb_UTC.ReadOnly = true; + this.tb_UTC.Size = new System.Drawing.Size(133, 22); + this.tb_UTC.TabIndex = 13; + // + // label28 + // + this.label28.AutoSize = true; + this.label28.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Italic, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label28.Location = new System.Drawing.Point(4, 43); + this.label28.Name = "label28"; + this.label28.Size = new System.Drawing.Size(32, 13); + this.label28.TabIndex = 14; + this.label28.Text = "Band"; + // + // cb_Band + // + this.cb_Band.AllowDrop = true; + this.cb_Band.BackColor = System.Drawing.Color.FloralWhite; + this.cb_Band.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cb_Band.Font = new System.Drawing.Font("Courier New", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Band.FormattingEnabled = true; + this.cb_Band.Location = new System.Drawing.Point(8, 59); + this.cb_Band.Name = "cb_Band"; + this.cb_Band.Size = new System.Drawing.Size(130, 22); + this.cb_Band.TabIndex = 16; + this.cb_Band.SelectedIndexChanged += new System.EventHandler(this.cb_Band_SelectedIndexChanged); + // + // groupBox1 + // + this.groupBox1.Controls.Add(this.tb_Mouse_Lightning); + this.groupBox1.Controls.Add(this.label33); + this.groupBox1.Controls.Add(this.tb_Mouse_Intensity); + this.groupBox1.Controls.Add(this.label1); + this.groupBox1.Controls.Add(this.tb_Mouse_CloudTop); + this.groupBox1.Controls.Add(this.label30); + this.groupBox1.Controls.Add(this.tb_Mouse_Distance); + this.groupBox1.Controls.Add(this.label5); + this.groupBox1.Controls.Add(this.tb_Mouse_Bearing); + this.groupBox1.Controls.Add(this.label6); + this.groupBox1.Controls.Add(this.tb_Mouse_Loc); + this.groupBox1.Controls.Add(this.label7); + this.groupBox1.Controls.Add(this.tb_Mouse_Lon); + this.groupBox1.Controls.Add(this.label8); + this.groupBox1.Controls.Add(this.tb_Mouse_Lat); + this.groupBox1.Controls.Add(this.label9); + this.groupBox1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic))), System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.groupBox1.Location = new System.Drawing.Point(648, 7); + this.groupBox1.Name = "groupBox1"; + this.groupBox1.Size = new System.Drawing.Size(206, 208); + this.groupBox1.TabIndex = 5; + this.groupBox1.TabStop = false; + this.groupBox1.Text = "Mouse Position"; + // + // tb_Mouse_Lightning + // + this.tb_Mouse_Lightning.BackColor = System.Drawing.SystemColors.Control; + this.tb_Mouse_Lightning.Font = new System.Drawing.Font("Courier New", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_Mouse_Lightning.Location = new System.Drawing.Point(92, 169); + this.tb_Mouse_Lightning.Name = "tb_Mouse_Lightning"; + this.tb_Mouse_Lightning.ReadOnly = true; + this.tb_Mouse_Lightning.Size = new System.Drawing.Size(97, 20); + this.tb_Mouse_Lightning.TabIndex = 29; + // + // label33 + // + this.label33.AutoSize = true; + this.label33.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label33.Location = new System.Drawing.Point(6, 172); + this.label33.Name = "label33"; + this.label33.Size = new System.Drawing.Size(78, 13); + this.label33.TabIndex = 28; + this.label33.Text = "Lightning [min]:"; + // + // tb_Mouse_Intensity + // + this.tb_Mouse_Intensity.BackColor = System.Drawing.SystemColors.Control; + this.tb_Mouse_Intensity.Font = new System.Drawing.Font("Courier New", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_Mouse_Intensity.Location = new System.Drawing.Point(92, 127); + this.tb_Mouse_Intensity.Name = "tb_Mouse_Intensity"; + this.tb_Mouse_Intensity.ReadOnly = true; + this.tb_Mouse_Intensity.Size = new System.Drawing.Size(97, 20); + this.tb_Mouse_Intensity.TabIndex = 27; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label1.Location = new System.Drawing.Point(6, 130); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(77, 13); + this.label1.TabIndex = 26; + this.label1.Text = "Intensity [dbZ]:"; + // + // tb_Mouse_CloudTop + // + this.tb_Mouse_CloudTop.BackColor = System.Drawing.SystemColors.Control; + this.tb_Mouse_CloudTop.Font = new System.Drawing.Font("Courier New", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_Mouse_CloudTop.Location = new System.Drawing.Point(92, 148); + this.tb_Mouse_CloudTop.Name = "tb_Mouse_CloudTop"; + this.tb_Mouse_CloudTop.ReadOnly = true; + this.tb_Mouse_CloudTop.Size = new System.Drawing.Size(97, 20); + this.tb_Mouse_CloudTop.TabIndex = 25; + // + // label30 + // + this.label30.AutoSize = true; + this.label30.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label30.Location = new System.Drawing.Point(6, 151); + this.label30.Name = "label30"; + this.label30.Size = new System.Drawing.Size(76, 13); + this.label30.TabIndex = 24; + this.label30.Text = "Cloud Top [m]:"; + // + // tb_Mouse_Distance + // + this.tb_Mouse_Distance.BackColor = System.Drawing.Color.White; + this.tb_Mouse_Distance.Font = new System.Drawing.Font("Courier New", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_Mouse_Distance.Location = new System.Drawing.Point(92, 106); + this.tb_Mouse_Distance.Name = "tb_Mouse_Distance"; + this.tb_Mouse_Distance.ReadOnly = true; + this.tb_Mouse_Distance.Size = new System.Drawing.Size(97, 20); + this.tb_Mouse_Distance.TabIndex = 19; + // + // label5 + // + this.label5.AutoSize = true; + this.label5.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label5.Location = new System.Drawing.Point(6, 109); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(72, 13); + this.label5.TabIndex = 18; + this.label5.Text = "Distance[km]:"; + // + // tb_Mouse_Bearing + // + this.tb_Mouse_Bearing.BackColor = System.Drawing.Color.White; + this.tb_Mouse_Bearing.Font = new System.Drawing.Font("Courier New", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_Mouse_Bearing.Location = new System.Drawing.Point(92, 85); + this.tb_Mouse_Bearing.Name = "tb_Mouse_Bearing"; + this.tb_Mouse_Bearing.ReadOnly = true; + this.tb_Mouse_Bearing.Size = new System.Drawing.Size(97, 20); + this.tb_Mouse_Bearing.TabIndex = 17; + // + // label6 + // + this.label6.AutoSize = true; + this.label6.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label6.Location = new System.Drawing.Point(6, 87); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(70, 13); + this.label6.TabIndex = 16; + this.label6.Text = "Bearing[deg]:"; + // + // tb_Mouse_Loc + // + this.tb_Mouse_Loc.BackColor = System.Drawing.Color.White; + this.tb_Mouse_Loc.Font = new System.Drawing.Font("Courier New", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_Mouse_Loc.Location = new System.Drawing.Point(92, 64); + this.tb_Mouse_Loc.Name = "tb_Mouse_Loc"; + this.tb_Mouse_Loc.ReadOnly = true; + this.tb_Mouse_Loc.Size = new System.Drawing.Size(97, 20); + this.tb_Mouse_Loc.TabIndex = 15; + // + // label7 + // + this.label7.AutoSize = true; + this.label7.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label7.Location = new System.Drawing.Point(6, 67); + this.label7.Name = "label7"; + this.label7.Size = new System.Drawing.Size(46, 13); + this.label7.TabIndex = 14; + this.label7.Text = "Locator:"; + // + // tb_Mouse_Lon + // + this.tb_Mouse_Lon.BackColor = System.Drawing.Color.White; + this.tb_Mouse_Lon.Font = new System.Drawing.Font("Courier New", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_Mouse_Lon.Location = new System.Drawing.Point(92, 43); + this.tb_Mouse_Lon.Name = "tb_Mouse_Lon"; + this.tb_Mouse_Lon.ReadOnly = true; + this.tb_Mouse_Lon.Size = new System.Drawing.Size(97, 20); + this.tb_Mouse_Lon.TabIndex = 13; + // + // label8 + // + this.label8.AutoSize = true; + this.label8.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label8.Location = new System.Drawing.Point(6, 51); + this.label8.Name = "label8"; + this.label8.Size = new System.Drawing.Size(57, 13); + this.label8.TabIndex = 12; + this.label8.Text = "Longitude:"; + // + // tb_Mouse_Lat + // + this.tb_Mouse_Lat.BackColor = System.Drawing.Color.White; + this.tb_Mouse_Lat.Font = new System.Drawing.Font("Courier New", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_Mouse_Lat.Location = new System.Drawing.Point(92, 22); + this.tb_Mouse_Lat.Name = "tb_Mouse_Lat"; + this.tb_Mouse_Lat.ReadOnly = true; + this.tb_Mouse_Lat.Size = new System.Drawing.Size(97, 20); + this.tb_Mouse_Lat.TabIndex = 11; + // + // label9 + // + this.label9.AutoSize = true; + this.label9.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label9.Location = new System.Drawing.Point(6, 25); + this.label9.Name = "label9"; + this.label9.Size = new System.Drawing.Size(48, 13); + this.label9.TabIndex = 0; + this.label9.Text = "Latitude:"; + // + // btn_Options + // + this.btn_Options.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.btn_Options.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btn_Options.Location = new System.Drawing.Point(871, 126); + this.btn_Options.Name = "btn_Options"; + this.btn_Options.Size = new System.Drawing.Size(123, 38); + this.btn_Options.TabIndex = 4; + this.btn_Options.Text = "Options"; + this.btn_Options.UseVisualStyleBackColor = true; + this.btn_Options.Click += new System.EventHandler(this.btn_Options_Click); + // + // btn_Refresh + // + this.btn_Refresh.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.btn_Refresh.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btn_Refresh.Location = new System.Drawing.Point(871, 177); + this.btn_Refresh.Name = "btn_Refresh"; + this.btn_Refresh.Size = new System.Drawing.Size(123, 38); + this.btn_Refresh.TabIndex = 3; + this.btn_Refresh.Text = "Refresh"; + this.btn_Refresh.UseVisualStyleBackColor = true; + this.btn_Refresh.Click += new System.EventHandler(this.btn_Refresh_Click); + // + // gb_DXData + // + this.gb_DXData.Controls.Add(this.tb_DXData_Elevation); + this.gb_DXData.Controls.Add(this.label25); + this.gb_DXData.Controls.Add(this.tb_DXData_Distance); + this.gb_DXData.Controls.Add(this.label20); + this.gb_DXData.Controls.Add(this.tb_DXData_Bearing); + this.gb_DXData.Controls.Add(this.label21); + this.gb_DXData.Controls.Add(this.tb_DXData_Loc); + this.gb_DXData.Controls.Add(this.label22); + this.gb_DXData.Controls.Add(this.tb_DXData_Lon); + this.gb_DXData.Controls.Add(this.label23); + this.gb_DXData.Controls.Add(this.tb_DXData_Lat); + this.gb_DXData.Controls.Add(this.label24); + this.gb_DXData.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic))), System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.gb_DXData.Location = new System.Drawing.Point(436, 7); + this.gb_DXData.Name = "gb_DXData"; + this.gb_DXData.Size = new System.Drawing.Size(206, 208); + this.gb_DXData.TabIndex = 2; + this.gb_DXData.TabStop = false; + this.gb_DXData.Text = "DX Data"; + // + // tb_DXData_Elevation + // + this.tb_DXData_Elevation.BackColor = System.Drawing.SystemColors.Control; + this.tb_DXData_Elevation.Font = new System.Drawing.Font("Courier New", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_DXData_Elevation.Location = new System.Drawing.Point(92, 127); + this.tb_DXData_Elevation.Name = "tb_DXData_Elevation"; + this.tb_DXData_Elevation.ReadOnly = true; + this.tb_DXData_Elevation.Size = new System.Drawing.Size(97, 20); + this.tb_DXData_Elevation.TabIndex = 23; + // + // label25 + // + this.label25.AutoSize = true; + this.label25.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label25.Location = new System.Drawing.Point(6, 130); + this.label25.Name = "label25"; + this.label25.Size = new System.Drawing.Size(68, 13); + this.label25.TabIndex = 22; + this.label25.Text = "Elevation[m]:"; + // + // tb_DXData_Distance + // + this.tb_DXData_Distance.BackColor = System.Drawing.Color.White; + this.tb_DXData_Distance.Font = new System.Drawing.Font("Courier New", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_DXData_Distance.Location = new System.Drawing.Point(92, 106); + this.tb_DXData_Distance.Name = "tb_DXData_Distance"; + this.tb_DXData_Distance.ReadOnly = true; + this.tb_DXData_Distance.Size = new System.Drawing.Size(97, 20); + this.tb_DXData_Distance.TabIndex = 19; + // + // label20 + // + this.label20.AutoSize = true; + this.label20.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label20.Location = new System.Drawing.Point(6, 109); + this.label20.Name = "label20"; + this.label20.Size = new System.Drawing.Size(72, 13); + this.label20.TabIndex = 18; + this.label20.Text = "Distance[km]:"; + // + // tb_DXData_Bearing + // + this.tb_DXData_Bearing.BackColor = System.Drawing.Color.White; + this.tb_DXData_Bearing.Font = new System.Drawing.Font("Courier New", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_DXData_Bearing.Location = new System.Drawing.Point(92, 85); + this.tb_DXData_Bearing.Name = "tb_DXData_Bearing"; + this.tb_DXData_Bearing.ReadOnly = true; + this.tb_DXData_Bearing.Size = new System.Drawing.Size(97, 20); + this.tb_DXData_Bearing.TabIndex = 17; + // + // label21 + // + this.label21.AutoSize = true; + this.label21.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label21.Location = new System.Drawing.Point(6, 87); + this.label21.Name = "label21"; + this.label21.Size = new System.Drawing.Size(70, 13); + this.label21.TabIndex = 16; + this.label21.Text = "Bearing[deg]:"; + // + // tb_DXData_Loc + // + this.tb_DXData_Loc.BackColor = System.Drawing.Color.White; + this.tb_DXData_Loc.Font = new System.Drawing.Font("Courier New", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_DXData_Loc.Location = new System.Drawing.Point(92, 64); + this.tb_DXData_Loc.Name = "tb_DXData_Loc"; + this.tb_DXData_Loc.ReadOnly = true; + this.tb_DXData_Loc.Size = new System.Drawing.Size(97, 20); + this.tb_DXData_Loc.TabIndex = 15; + // + // label22 + // + this.label22.AutoSize = true; + this.label22.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label22.Location = new System.Drawing.Point(6, 67); + this.label22.Name = "label22"; + this.label22.Size = new System.Drawing.Size(46, 13); + this.label22.TabIndex = 14; + this.label22.Text = "Locator:"; + // + // tb_DXData_Lon + // + this.tb_DXData_Lon.BackColor = System.Drawing.Color.White; + this.tb_DXData_Lon.Font = new System.Drawing.Font("Courier New", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_DXData_Lon.Location = new System.Drawing.Point(92, 43); + this.tb_DXData_Lon.Name = "tb_DXData_Lon"; + this.tb_DXData_Lon.ReadOnly = true; + this.tb_DXData_Lon.Size = new System.Drawing.Size(97, 20); + this.tb_DXData_Lon.TabIndex = 13; + // + // label23 + // + this.label23.AutoSize = true; + this.label23.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label23.Location = new System.Drawing.Point(6, 46); + this.label23.Name = "label23"; + this.label23.Size = new System.Drawing.Size(57, 13); + this.label23.TabIndex = 12; + this.label23.Text = "Longitude:"; + // + // tb_DXData_Lat + // + this.tb_DXData_Lat.BackColor = System.Drawing.Color.White; + this.tb_DXData_Lat.Font = new System.Drawing.Font("Courier New", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_DXData_Lat.Location = new System.Drawing.Point(92, 22); + this.tb_DXData_Lat.Name = "tb_DXData_Lat"; + this.tb_DXData_Lat.ReadOnly = true; + this.tb_DXData_Lat.Size = new System.Drawing.Size(97, 20); + this.tb_DXData_Lat.TabIndex = 11; + // + // label24 + // + this.label24.AutoSize = true; + this.label24.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label24.Location = new System.Drawing.Point(6, 25); + this.label24.Name = "label24"; + this.label24.Size = new System.Drawing.Size(48, 13); + this.label24.TabIndex = 0; + this.label24.Text = "Latitude:"; + // + // gb_Scp + // + this.gb_Scp.Controls.Add(this.tb_Scp_Lightning); + this.gb_Scp.Controls.Add(this.label31); + this.gb_Scp.Controls.Add(this.tb_Scp_Intensity); + this.gb_Scp.Controls.Add(this.label34); + this.gb_Scp.Controls.Add(this.tb_Scp_CloudTop); + this.gb_Scp.Controls.Add(this.label35); + this.gb_Scp.Controls.Add(this.btn_scp_Clear); + this.gb_Scp.Controls.Add(this.tb_Scp_Loc); + this.gb_Scp.Controls.Add(this.label17); + this.gb_Scp.Controls.Add(this.tb_Scp_Lon); + this.gb_Scp.Controls.Add(this.label18); + this.gb_Scp.Controls.Add(this.tb_Scp_Lat); + this.gb_Scp.Controls.Add(this.label19); + this.gb_Scp.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic))), System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.gb_Scp.Location = new System.Drawing.Point(224, 7); + this.gb_Scp.Name = "gb_Scp"; + this.gb_Scp.Size = new System.Drawing.Size(206, 208); + this.gb_Scp.TabIndex = 1; + this.gb_Scp.TabStop = false; + this.gb_Scp.Text = "Scatterpoint"; + // + // tb_Scp_Lightning + // + this.tb_Scp_Lightning.BackColor = System.Drawing.SystemColors.Control; + this.tb_Scp_Lightning.Font = new System.Drawing.Font("Courier New", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_Scp_Lightning.Location = new System.Drawing.Point(92, 127); + this.tb_Scp_Lightning.Name = "tb_Scp_Lightning"; + this.tb_Scp_Lightning.ReadOnly = true; + this.tb_Scp_Lightning.Size = new System.Drawing.Size(97, 20); + this.tb_Scp_Lightning.TabIndex = 35; + // + // label31 + // + this.label31.AutoSize = true; + this.label31.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label31.Location = new System.Drawing.Point(6, 130); + this.label31.Name = "label31"; + this.label31.Size = new System.Drawing.Size(78, 13); + this.label31.TabIndex = 34; + this.label31.Text = "Lightning [min]:"; + // + // tb_Scp_Intensity + // + this.tb_Scp_Intensity.BackColor = System.Drawing.SystemColors.Control; + this.tb_Scp_Intensity.Font = new System.Drawing.Font("Courier New", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_Scp_Intensity.Location = new System.Drawing.Point(92, 85); + this.tb_Scp_Intensity.Name = "tb_Scp_Intensity"; + this.tb_Scp_Intensity.ReadOnly = true; + this.tb_Scp_Intensity.Size = new System.Drawing.Size(97, 20); + this.tb_Scp_Intensity.TabIndex = 33; + // + // label34 + // + this.label34.AutoSize = true; + this.label34.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label34.Location = new System.Drawing.Point(6, 88); + this.label34.Name = "label34"; + this.label34.Size = new System.Drawing.Size(77, 13); + this.label34.TabIndex = 32; + this.label34.Text = "Intensity [dbZ]:"; + // + // tb_Scp_CloudTop + // + this.tb_Scp_CloudTop.BackColor = System.Drawing.SystemColors.Control; + this.tb_Scp_CloudTop.Font = new System.Drawing.Font("Courier New", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_Scp_CloudTop.Location = new System.Drawing.Point(92, 106); + this.tb_Scp_CloudTop.Name = "tb_Scp_CloudTop"; + this.tb_Scp_CloudTop.ReadOnly = true; + this.tb_Scp_CloudTop.Size = new System.Drawing.Size(97, 20); + this.tb_Scp_CloudTop.TabIndex = 31; + // + // label35 + // + this.label35.AutoSize = true; + this.label35.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label35.Location = new System.Drawing.Point(6, 109); + this.label35.Name = "label35"; + this.label35.Size = new System.Drawing.Size(76, 13); + this.label35.TabIndex = 30; + this.label35.Text = "Cloud Top [m]:"; + // + // btn_scp_Clear + // + this.btn_scp_Clear.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.btn_scp_Clear.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btn_scp_Clear.Location = new System.Drawing.Point(92, 178); + this.btn_scp_Clear.Name = "btn_scp_Clear"; + this.btn_scp_Clear.Size = new System.Drawing.Size(97, 20); + this.btn_scp_Clear.TabIndex = 28; + this.btn_scp_Clear.Text = "Clear"; + this.btn_scp_Clear.UseVisualStyleBackColor = true; + this.btn_scp_Clear.Click += new System.EventHandler(this.btn_scp_Clear_Click); + // + // tb_Scp_Loc + // + this.tb_Scp_Loc.BackColor = System.Drawing.Color.White; + this.tb_Scp_Loc.Font = new System.Drawing.Font("Courier New", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_Scp_Loc.ForeColor = System.Drawing.Color.Magenta; + this.tb_Scp_Loc.Location = new System.Drawing.Point(92, 64); + this.tb_Scp_Loc.Name = "tb_Scp_Loc"; + this.tb_Scp_Loc.ReadOnly = true; + this.tb_Scp_Loc.Size = new System.Drawing.Size(97, 20); + this.tb_Scp_Loc.TabIndex = 15; + // + // label17 + // + this.label17.AutoSize = true; + this.label17.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label17.Location = new System.Drawing.Point(6, 67); + this.label17.Name = "label17"; + this.label17.Size = new System.Drawing.Size(46, 13); + this.label17.TabIndex = 14; + this.label17.Text = "Locator:"; + // + // tb_Scp_Lon + // + this.tb_Scp_Lon.BackColor = System.Drawing.Color.White; + this.tb_Scp_Lon.Font = new System.Drawing.Font("Courier New", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_Scp_Lon.ForeColor = System.Drawing.Color.Magenta; + this.tb_Scp_Lon.Location = new System.Drawing.Point(92, 43); + this.tb_Scp_Lon.Name = "tb_Scp_Lon"; + this.tb_Scp_Lon.ReadOnly = true; + this.tb_Scp_Lon.Size = new System.Drawing.Size(97, 20); + this.tb_Scp_Lon.TabIndex = 13; + // + // label18 + // + this.label18.AutoSize = true; + this.label18.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label18.Location = new System.Drawing.Point(6, 46); + this.label18.Name = "label18"; + this.label18.Size = new System.Drawing.Size(57, 13); + this.label18.TabIndex = 12; + this.label18.Text = "Longitude:"; + // + // tb_Scp_Lat + // + this.tb_Scp_Lat.BackColor = System.Drawing.Color.White; + this.tb_Scp_Lat.Font = new System.Drawing.Font("Courier New", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_Scp_Lat.ForeColor = System.Drawing.Color.Magenta; + this.tb_Scp_Lat.Location = new System.Drawing.Point(92, 22); + this.tb_Scp_Lat.Name = "tb_Scp_Lat"; + this.tb_Scp_Lat.ReadOnly = true; + this.tb_Scp_Lat.Size = new System.Drawing.Size(97, 20); + this.tb_Scp_Lat.TabIndex = 11; + // + // label19 + // + this.label19.AutoSize = true; + this.label19.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label19.Location = new System.Drawing.Point(6, 25); + this.label19.Name = "label19"; + this.label19.Size = new System.Drawing.Size(48, 13); + this.label19.TabIndex = 0; + this.label19.Text = "Latitude:"; + // + // gb_MyData + // + this.gb_MyData.Controls.Add(this.tb_MyData_Height); + this.gb_MyData.Controls.Add(this.label29); + this.gb_MyData.Controls.Add(this.tb_MyData_Elevation); + this.gb_MyData.Controls.Add(this.label16); + this.gb_MyData.Controls.Add(this.tb_MyData_Distance); + this.gb_MyData.Controls.Add(this.label14); + this.gb_MyData.Controls.Add(this.tb_MyData_Bearing); + this.gb_MyData.Controls.Add(this.label13); + this.gb_MyData.Controls.Add(this.tb_MyData_Loc); + this.gb_MyData.Controls.Add(this.label12); + this.gb_MyData.Controls.Add(this.tb_MyDataLon); + this.gb_MyData.Controls.Add(this.label11); + this.gb_MyData.Controls.Add(this.tb_MyData_Lat); + this.gb_MyData.Controls.Add(this.label10); + this.gb_MyData.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic))), System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.gb_MyData.Location = new System.Drawing.Point(12, 7); + this.gb_MyData.Name = "gb_MyData"; + this.gb_MyData.Size = new System.Drawing.Size(206, 208); + this.gb_MyData.TabIndex = 0; + this.gb_MyData.TabStop = false; + this.gb_MyData.Text = "My Data"; + // + // tb_MyData_Height + // + this.tb_MyData_Height.BackColor = System.Drawing.SystemColors.Control; + this.tb_MyData_Height.Font = new System.Drawing.Font("Courier New", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_MyData_Height.Location = new System.Drawing.Point(92, 148); + this.tb_MyData_Height.Name = "tb_MyData_Height"; + this.tb_MyData_Height.ReadOnly = true; + this.tb_MyData_Height.Size = new System.Drawing.Size(97, 20); + this.tb_MyData_Height.TabIndex = 23; + // + // label29 + // + this.label29.AutoSize = true; + this.label29.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label29.Location = new System.Drawing.Point(6, 151); + this.label29.Name = "label29"; + this.label29.Size = new System.Drawing.Size(80, 13); + this.label29.TabIndex = 22; + this.label29.Text = "Ant. Height [m]:"; + // + // tb_MyData_Elevation + // + this.tb_MyData_Elevation.BackColor = System.Drawing.SystemColors.Control; + this.tb_MyData_Elevation.Font = new System.Drawing.Font("Courier New", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_MyData_Elevation.Location = new System.Drawing.Point(92, 127); + this.tb_MyData_Elevation.Name = "tb_MyData_Elevation"; + this.tb_MyData_Elevation.ReadOnly = true; + this.tb_MyData_Elevation.Size = new System.Drawing.Size(97, 20); + this.tb_MyData_Elevation.TabIndex = 21; + // + // label16 + // + this.label16.AutoSize = true; + this.label16.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label16.Location = new System.Drawing.Point(6, 130); + this.label16.Name = "label16"; + this.label16.Size = new System.Drawing.Size(68, 13); + this.label16.TabIndex = 20; + this.label16.Text = "Elevation[m]:"; + // + // tb_MyData_Distance + // + this.tb_MyData_Distance.BackColor = System.Drawing.Color.White; + this.tb_MyData_Distance.Font = new System.Drawing.Font("Courier New", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_MyData_Distance.Location = new System.Drawing.Point(92, 106); + this.tb_MyData_Distance.Name = "tb_MyData_Distance"; + this.tb_MyData_Distance.ReadOnly = true; + this.tb_MyData_Distance.Size = new System.Drawing.Size(97, 20); + this.tb_MyData_Distance.TabIndex = 19; + // + // label14 + // + this.label14.AutoSize = true; + this.label14.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label14.Location = new System.Drawing.Point(6, 109); + this.label14.Name = "label14"; + this.label14.Size = new System.Drawing.Size(72, 13); + this.label14.TabIndex = 18; + this.label14.Text = "Distance[km]:"; + // + // tb_MyData_Bearing + // + this.tb_MyData_Bearing.BackColor = System.Drawing.Color.White; + this.tb_MyData_Bearing.Font = new System.Drawing.Font("Courier New", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_MyData_Bearing.Location = new System.Drawing.Point(92, 85); + this.tb_MyData_Bearing.Name = "tb_MyData_Bearing"; + this.tb_MyData_Bearing.ReadOnly = true; + this.tb_MyData_Bearing.Size = new System.Drawing.Size(97, 20); + this.tb_MyData_Bearing.TabIndex = 17; + // + // label13 + // + this.label13.AutoSize = true; + this.label13.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label13.Location = new System.Drawing.Point(6, 88); + this.label13.Name = "label13"; + this.label13.Size = new System.Drawing.Size(70, 13); + this.label13.TabIndex = 16; + this.label13.Text = "Bearing[deg]:"; + // + // tb_MyData_Loc + // + this.tb_MyData_Loc.BackColor = System.Drawing.Color.White; + this.tb_MyData_Loc.Font = new System.Drawing.Font("Courier New", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_MyData_Loc.Location = new System.Drawing.Point(92, 64); + this.tb_MyData_Loc.Name = "tb_MyData_Loc"; + this.tb_MyData_Loc.ReadOnly = true; + this.tb_MyData_Loc.Size = new System.Drawing.Size(97, 20); + this.tb_MyData_Loc.TabIndex = 15; + // + // label12 + // + this.label12.AutoSize = true; + this.label12.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label12.Location = new System.Drawing.Point(6, 67); + this.label12.Name = "label12"; + this.label12.Size = new System.Drawing.Size(46, 13); + this.label12.TabIndex = 14; + this.label12.Text = "Locator:"; + // + // tb_MyDataLon + // + this.tb_MyDataLon.BackColor = System.Drawing.Color.White; + this.tb_MyDataLon.Font = new System.Drawing.Font("Courier New", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_MyDataLon.Location = new System.Drawing.Point(92, 43); + this.tb_MyDataLon.Name = "tb_MyDataLon"; + this.tb_MyDataLon.ReadOnly = true; + this.tb_MyDataLon.Size = new System.Drawing.Size(97, 20); + this.tb_MyDataLon.TabIndex = 13; + // + // label11 + // + this.label11.AutoSize = true; + this.label11.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label11.Location = new System.Drawing.Point(6, 46); + this.label11.Name = "label11"; + this.label11.Size = new System.Drawing.Size(57, 13); + this.label11.TabIndex = 12; + this.label11.Text = "Longitude:"; + // + // tb_MyData_Lat + // + this.tb_MyData_Lat.BackColor = System.Drawing.Color.White; + this.tb_MyData_Lat.Font = new System.Drawing.Font("Courier New", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_MyData_Lat.Location = new System.Drawing.Point(92, 22); + this.tb_MyData_Lat.Name = "tb_MyData_Lat"; + this.tb_MyData_Lat.ReadOnly = true; + this.tb_MyData_Lat.Size = new System.Drawing.Size(97, 20); + this.tb_MyData_Lat.TabIndex = 11; + // + // label10 + // + this.label10.AutoSize = true; + this.label10.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label10.Location = new System.Drawing.Point(6, 25); + this.label10.Name = "label10"; + this.label10.Size = new System.Drawing.Size(48, 13); + this.label10.TabIndex = 0; + this.label10.Text = "Latitude:"; + // + // bw_Horizons + // + this.bw_Horizons.WorkerReportsProgress = true; + this.bw_Horizons.WorkerSupportsCancellation = true; + this.bw_Horizons.DoWork += new System.ComponentModel.DoWorkEventHandler(this.bw_Horizons_DoWork); + this.bw_Horizons.ProgressChanged += new System.ComponentModel.ProgressChangedEventHandler(this.bw_Horizons_ProgressChanged); + this.bw_Horizons.RunWorkerCompleted += new System.ComponentModel.RunWorkerCompletedEventHandler(this.bw_Horizons_RunWorkerCompleted); + // + // ti_Main + // + this.ti_Main.Enabled = true; + this.ti_Main.Interval = 1000; + this.ti_Main.Tick += new System.EventHandler(this.ti_Main_Tick); + // + // bw_Stations + // + this.bw_Stations.WorkerReportsProgress = true; + this.bw_Stations.WorkerSupportsCancellation = true; + this.bw_Stations.DoWork += new System.ComponentModel.DoWorkEventHandler(this.bw_Stations_DoWork); + this.bw_Stations.ProgressChanged += new System.ComponentModel.ProgressChangedEventHandler(this.bw_Stations_ProgressChanged); + this.bw_Stations.RunWorkerCompleted += new System.ComponentModel.RunWorkerCompletedEventHandler(this.bw_Stations_RunWorkerCompleted); + // + // bw_Locations + // + this.bw_Locations.WorkerReportsProgress = true; + this.bw_Locations.WorkerSupportsCancellation = true; + this.bw_Locations.DoWork += new System.ComponentModel.DoWorkEventHandler(this.bw_Locations_DoWork); + this.bw_Locations.ProgressChanged += new System.ComponentModel.ProgressChangedEventHandler(this.bw_Locations_ProgressChanged); + this.bw_Locations.RunWorkerCompleted += new System.ComponentModel.RunWorkerCompletedEventHandler(this.bw_Locations_RunWorkerCompleted); + // + // bw_Radar + // + this.bw_Radar.WorkerReportsProgress = true; + this.bw_Radar.WorkerSupportsCancellation = true; + this.bw_Radar.DoWork += new System.ComponentModel.DoWorkEventHandler(this.bw_Radar_DoWork); + this.bw_Radar.ProgressChanged += new System.ComponentModel.ProgressChangedEventHandler(this.bw_Radar_ProgressChanged); + this.bw_Radar.RunWorkerCompleted += new System.ComponentModel.RunWorkerCompletedEventHandler(this.bw_Radar_RunWorkerCompleted); + // + // tsl_Database_LED_Stations + // + this.tsl_Database_LED_Stations.AutoSize = false; + this.tsl_Database_LED_Stations.BackColor = System.Drawing.Color.Plum; + this.tsl_Database_LED_Stations.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.None; + this.tsl_Database_LED_Stations.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tsl_Database_LED_Stations.Image = ((System.Drawing.Image)(resources.GetObject("tsl_Database_LED_Stations.Image"))); + this.tsl_Database_LED_Stations.Margin = new System.Windows.Forms.Padding(1, 5, 1, 5); + this.tsl_Database_LED_Stations.Name = "tsl_Database_LED_Stations"; + this.tsl_Database_LED_Stations.Size = new System.Drawing.Size(12, 12); + this.tsl_Database_LED_Stations.Text = " Station database status LED"; + this.tsl_Database_LED_Stations.ToolTipText = "Station database status LED"; + // + // tsl_Database_LED_GLOBE + // + this.tsl_Database_LED_GLOBE.AutoSize = false; + this.tsl_Database_LED_GLOBE.BackColor = System.Drawing.Color.Plum; + this.tsl_Database_LED_GLOBE.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.None; + this.tsl_Database_LED_GLOBE.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tsl_Database_LED_GLOBE.Image = ((System.Drawing.Image)(resources.GetObject("tsl_Database_LED_GLOBE.Image"))); + this.tsl_Database_LED_GLOBE.Margin = new System.Windows.Forms.Padding(1, 5, 1, 5); + this.tsl_Database_LED_GLOBE.Name = "tsl_Database_LED_GLOBE"; + this.tsl_Database_LED_GLOBE.Size = new System.Drawing.Size(12, 12); + this.tsl_Database_LED_GLOBE.Text = " GLOBE database status LED"; + this.tsl_Database_LED_GLOBE.ToolTipText = "GLOBE database status LED"; + // + // tsl_Database_LED_SRTM3 + // + this.tsl_Database_LED_SRTM3.AutoSize = false; + this.tsl_Database_LED_SRTM3.BackColor = System.Drawing.Color.Plum; + this.tsl_Database_LED_SRTM3.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.None; + this.tsl_Database_LED_SRTM3.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tsl_Database_LED_SRTM3.Image = ((System.Drawing.Image)(resources.GetObject("tsl_Database_LED_SRTM3.Image"))); + this.tsl_Database_LED_SRTM3.Margin = new System.Windows.Forms.Padding(1, 5, 1, 5); + this.tsl_Database_LED_SRTM3.Name = "tsl_Database_LED_SRTM3"; + this.tsl_Database_LED_SRTM3.Size = new System.Drawing.Size(12, 12); + this.tsl_Database_LED_SRTM3.Text = " SRTM3 database status LED"; + this.tsl_Database_LED_SRTM3.ToolTipText = "SRTM3 database status LED"; + // + // tsl_Database_LED_SRTM1 + // + this.tsl_Database_LED_SRTM1.AutoSize = false; + this.tsl_Database_LED_SRTM1.BackColor = System.Drawing.Color.Plum; + this.tsl_Database_LED_SRTM1.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.None; + this.tsl_Database_LED_SRTM1.Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tsl_Database_LED_SRTM1.Image = ((System.Drawing.Image)(resources.GetObject("tsl_Database_LED_SRTM1.Image"))); + this.tsl_Database_LED_SRTM1.Margin = new System.Windows.Forms.Padding(1, 5, 1, 5); + this.tsl_Database_LED_SRTM1.Name = "tsl_Database_LED_SRTM1"; + this.tsl_Database_LED_SRTM1.Size = new System.Drawing.Size(12, 12); + this.tsl_Database_LED_SRTM1.Text = " SRTM3 database status LED"; + this.tsl_Database_LED_SRTM1.ToolTipText = "SRTM1 database status LED"; + // + // MainDlg + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.BackColor = System.Drawing.SystemColors.AppWorkspace; + this.ClientSize = new System.Drawing.Size(1008, 729); + this.Controls.Add(this.spl_Main); + this.Controls.Add(this.ss_Main); + this.Name = "MainDlg"; + this.Text = "RainScout"; + this.WindowState = System.Windows.Forms.FormWindowState.Maximized; + this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.MainDlg_FormClosing); + this.Shown += new System.EventHandler(this.MainDlg_Shown); + this.SizeChanged += new System.EventHandler(this.MainDlg_SizeChanged); + this.ss_Main.ResumeLayout(false); + this.ss_Main.PerformLayout(); + this.spl_Main.Panel1.ResumeLayout(false); + this.spl_Main.Panel2.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.spl_Main)).EndInit(); + this.spl_Main.ResumeLayout(false); + this.spl_Map.Panel1.ResumeLayout(false); + this.spl_Map.Panel2.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.spl_Map)).EndInit(); + this.spl_Map.ResumeLayout(false); + this.gb_Filter.ResumeLayout(false); + this.gb_Filter.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.ud_Filter_MaxDistance)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.ud_Filter_MinDistance)).EndInit(); + this.gb_Map.ResumeLayout(false); + this.gb_Map.PerformLayout(); + this.pa_CommonInfo.ResumeLayout(false); + this.pa_CommonInfo.PerformLayout(); + this.groupBox1.ResumeLayout(false); + this.groupBox1.PerformLayout(); + this.gb_DXData.ResumeLayout(false); + this.gb_DXData.PerformLayout(); + this.gb_Scp.ResumeLayout(false); + this.gb_Scp.PerformLayout(); + this.gb_MyData.ResumeLayout(false); + this.gb_MyData.PerformLayout(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.StatusStrip ss_Main; + private System.Windows.Forms.SplitContainer spl_Main; + private System.Windows.Forms.SplitContainer spl_Map; + private GMap.NET.WindowsForms.GMapControl gm_Main; + private System.Windows.Forms.GroupBox gb_MyData; + private System.Windows.Forms.GroupBox gb_DXData; + private System.Windows.Forms.TextBox tb_DXData_Distance; + private System.Windows.Forms.Label label20; + private System.Windows.Forms.TextBox tb_DXData_Bearing; + private System.Windows.Forms.Label label21; + private System.Windows.Forms.TextBox tb_DXData_Loc; + private System.Windows.Forms.Label label22; + private System.Windows.Forms.TextBox tb_DXData_Lon; + private System.Windows.Forms.Label label23; + private System.Windows.Forms.TextBox tb_DXData_Lat; + private System.Windows.Forms.Label label24; + private System.Windows.Forms.GroupBox gb_Scp; + private System.Windows.Forms.TextBox tb_Scp_Loc; + private System.Windows.Forms.Label label17; + private System.Windows.Forms.TextBox tb_Scp_Lon; + private System.Windows.Forms.Label label18; + private System.Windows.Forms.TextBox tb_Scp_Lat; + private System.Windows.Forms.Label label19; + private System.Windows.Forms.TextBox tb_MyData_Distance; + private System.Windows.Forms.Label label14; + private System.Windows.Forms.TextBox tb_MyData_Bearing; + private System.Windows.Forms.Label label13; + private System.Windows.Forms.TextBox tb_MyData_Loc; + private System.Windows.Forms.Label label12; + private System.Windows.Forms.TextBox tb_MyDataLon; + private System.Windows.Forms.Label label11; + private System.Windows.Forms.TextBox tb_MyData_Lat; + private System.Windows.Forms.Label label10; + private System.Windows.Forms.Button btn_Refresh; + private System.ComponentModel.BackgroundWorker bw_Horizons; + private System.Windows.Forms.ToolStripStatusLabel tsl_Main; + private System.Windows.Forms.Button btn_Options; + private System.Windows.Forms.GroupBox groupBox1; + private System.Windows.Forms.TextBox tb_Mouse_Distance; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.TextBox tb_Mouse_Bearing; + private System.Windows.Forms.Label label6; + private System.Windows.Forms.TextBox tb_Mouse_Loc; + private System.Windows.Forms.Label label7; + private System.Windows.Forms.TextBox tb_Mouse_Lon; + private System.Windows.Forms.Label label8; + private System.Windows.Forms.TextBox tb_Mouse_Lat; + private System.Windows.Forms.Label label9; + private System.Windows.Forms.TextBox tb_DXData_Elevation; + private System.Windows.Forms.Label label25; + private System.Windows.Forms.TextBox tb_MyData_Elevation; + private System.Windows.Forms.Label label16; + private System.Windows.Forms.Panel pa_CommonInfo; + private System.Windows.Forms.Label label27; + private System.Windows.Forms.TextBox tb_UTC; + private System.Windows.Forms.Label label28; + private System.Windows.Forms.ComboBox cb_Band; + private System.Windows.Forms.GroupBox gb_Map; + private System.Windows.Forms.Label label15; + private System.Windows.Forms.Button btn_Map_ZoomIn; + private System.Windows.Forms.Button btn_Map_ZoomOut; + private System.Windows.Forms.TextBox tb_Map_Zoom; + private System.Windows.Forms.Timer ti_Main; + private System.Windows.Forms.ToolStripStatusLabel tsl_Dummy; + private System.Windows.Forms.ToolStripStatusLabel tsl_Database; + private System.Windows.Forms.TextBox tb_MyData_Height; + private System.Windows.Forms.Label label29; + private System.ComponentModel.BackgroundWorker bw_Stations; + private System.Windows.Forms.TextBox tb_Mouse_CloudTop; + private System.Windows.Forms.Label label30; + private System.Windows.Forms.Button btn_scp_Clear; + private System.Windows.Forms.Label label32; + private System.Windows.Forms.ComboBox cb_ElevationModel; + private System.Windows.Forms.GroupBox gb_Filter; + private System.Windows.Forms.CheckBox cb_Filter_VisibleScpOnly; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.NumericUpDown ud_Filter_MaxDistance; + private System.Windows.Forms.Label label222; + private System.Windows.Forms.NumericUpDown ud_Filter_MinDistance; + private System.Windows.Forms.CheckBox cb_Map_Intensity; + private System.Windows.Forms.CheckBox cb_Map_Lightning; + private System.Windows.Forms.CheckBox cb_Map_CloudTops; + private System.Windows.Forms.TextBox tb_Mouse_Intensity; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.ComboBox cb_Radar; + private System.Windows.Forms.Label lbl_Radar_Timestamp; + private System.Windows.Forms.CheckBox cb_Map_Bounds; + private System.Windows.Forms.CheckBox cb_Map_Horizons; + private System.Windows.Forms.CheckBox cb_Map_Distances; + private System.Windows.Forms.Label label26; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.TextBox tb_Mouse_Lightning; + private System.Windows.Forms.Label label33; + private System.Windows.Forms.TextBox tb_Scp_Lightning; + private System.Windows.Forms.Label label31; + private System.Windows.Forms.TextBox tb_Scp_Intensity; + private System.Windows.Forms.Label label34; + private System.Windows.Forms.TextBox tb_Scp_CloudTop; + private System.Windows.Forms.Label label35; + private System.ComponentModel.BackgroundWorker bw_Locations; + private System.Windows.Forms.ToolStripStatusLabel tsl_Locations; + private System.Windows.Forms.ToolStripStatusLabel tsl_Radar; + private System.ComponentModel.BackgroundWorker bw_Radar; + private System.Windows.Forms.ToolStripStatusLabel tsl_Database_LED_Stations; + private System.Windows.Forms.ToolStripStatusLabel tsl_Database_LED_GLOBE; + private System.Windows.Forms.ToolStripStatusLabel tsl_Database_LED_SRTM3; + private System.Windows.Forms.ToolStripStatusLabel tsl_Database_LED_SRTM1; + } +} + diff --git a/RainScout/MainDlg.cs b/RainScout/MainDlg.cs new file mode 100644 index 0000000..51635f1 --- /dev/null +++ b/RainScout/MainDlg.cs @@ -0,0 +1,2110 @@ +using DeviceId; +using GMap.NET; +using GMap.NET.MapProviders; +using GMap.NET.WindowsForms; +using GMap.NET.WindowsForms.Markers; +using RainScout.Radars; +using ScoutBase.Core; +using ScoutBase.Elevation; +using ScoutBase.Propagation; +using ScoutBase.Stations; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data.SQLite; +using System.Drawing; +using System.Linq; +using System.Net; +using System.Threading; +using System.Windows.Forms; + +namespace RainScout +{ + public partial class MainDlg : Form + { + private readonly double HorDistance = 500; + + // Background workers + public ElevationDatabaseUpdater bw_GLOBEUpdater = new ElevationDatabaseUpdater(); + public ElevationDatabaseUpdater bw_SRTM3Updater = new ElevationDatabaseUpdater(); + public ElevationDatabaseUpdater bw_SRTM1Updater = new ElevationDatabaseUpdater(); + + public StationDatabaseUpdater bw_StationDatabaseUpdater = new StationDatabaseUpdater(); + + // Session key + public string SessionKey = ""; + + // Map layer + GMapOverlay gm_mystations = new GMapOverlay("mystations"); + GMapOverlay gm_dxstations = new GMapOverlay("dxstations"); + GMapOverlay gm_scatters = new GMapOverlay("scatters"); + GMapOverlay gm_horizons = new GMapOverlay("horizons"); + GMapOverlay gm_distances = new GMapOverlay("distances"); + GMapOverlay gm_bounds = new GMapOverlay("bounds"); + GMapOverlay gm_intensity = new GMapOverlay("intensity"); + GMapOverlay gm_cloudtops = new GMapOverlay("cloudtops"); + GMapOverlay gm_lightning = new GMapOverlay("lightning"); + GMapOverlay gm_myroutes = new GMapOverlay("myroutes"); + GMapOverlay gm_dxroutes = new GMapOverlay("dxroutes"); + + Size RadarSize = new Size(0, 0); + Size RadarMapSize = new Size(0, 0); + + RadarMap RadarMap = null; + + private bool Loaded = false; + private bool MapDragging = false; + private GMapMarker CurrentMarker; + private bool IsDraggingMarker; + + Dictionary Radars = new Dictionary(); + public Dictionary> Locations = null; + + public RAINSCOUTSTATUS Status = RAINSCOUTSTATUS.NONE; + + public MainDlg() + { + InitializeComponent(); + + InitializeSettings(); + InitializeRadars(); + + // set elevation database update event handler + bw_GLOBEUpdater.ProgressChanged += new ProgressChangedEventHandler(bw_ElevationDatabaseUpdater_ProgressChanged); + bw_SRTM3Updater.ProgressChanged += new ProgressChangedEventHandler(bw_ElevationDatabaseUpdater_ProgressChanged); + bw_SRTM1Updater.ProgressChanged += new ProgressChangedEventHandler(bw_ElevationDatabaseUpdater_ProgressChanged); + + // set station database updater event handler + bw_StationDatabaseUpdater.ProgressChanged += new ProgressChangedEventHandler(bw_StationDatabaseUpdater_ProgressChanged); + bw_StationDatabaseUpdater.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bw_StationDatabaseUpdater_RunWorkerCompleted); + + // set initial settings for main map + gm_Main.MapProvider = GMapProviders.OpenStreetMap; + gm_Main.IgnoreMarkerOnMouseWheel = true; + gm_Main.MinZoom = 0; + gm_Main.MaxZoom = 20; + gm_Main.Zoom = 2; + gm_Main.DragButton = System.Windows.Forms.MouseButtons.Left; + gm_Main.CanDragMap = true; + gm_Main.ScalePen = new Pen(Color.Black, 3); + gm_Main.MapScaleInfoEnabled = true; + gm_Main.Overlays.Add(gm_bounds); + gm_Main.Overlays.Add(gm_distances); + gm_Main.Overlays.Add(gm_intensity); + gm_Main.Overlays.Add(gm_cloudtops); + gm_Main.Overlays.Add(gm_lightning); + gm_Main.Overlays.Add(gm_mystations); + gm_Main.Overlays.Add(gm_horizons); + gm_Main.Overlays.Add(gm_myroutes); + gm_Main.Overlays.Add(gm_dxstations); + gm_Main.Overlays.Add(gm_dxroutes); + gm_Main.Overlays.Add(gm_scatters); + + + } + + private void MainDlg_Shown(object sender, EventArgs e) + { + InitializeLocations(); + UpdateMyLocation(); + + try + { + EnumHelpers.BindToEnum(cb_Band); + cb_Band.SelectedValue = (int)Properties.Settings.Default.CurrentBand; + } + catch (Exception ex) + { + Console.WriteLine(ex.ToString()); + } + try + { + EnumHelpers.BindToEnum(cb_ElevationModel); + cb_ElevationModel.SelectedValue = (int)Properties.Settings.Default.CurrentElevationModel; + } + catch (Exception ex) + { + Console.WriteLine(ex.ToString()); + } + try + { + cb_Radar.Items.Clear(); + foreach (GenericRadar radar in Radars.Values) + { + cb_Radar.Items.Add(radar.Name); + } + cb_Radar.SelectedItem = RainScout.Properties.Settings.Default.CurrentRadar; + } + catch (Exception ex) + { + Console.WriteLine(ex.ToString()); + } + + gm_Main.SetZoomToFitRect(RectLatLng.FromLTRB( + (double)Properties.Settings.Default.MinLon, + (double)Properties.Settings.Default.MaxLat, + (double)Properties.Settings.Default.MaxLon, + (double)Properties.Settings.Default.MinLat)); + + ClearScp(); + + Loaded = true; + + StartAllBackgroundWorkers(); + Say("Ready."); + } + + private void MainDlg_FormClosing(object sender, FormClosingEventArgs e) + { + Properties.Settings.Default.Save(); + + } + + private void Say(string msg) + { + if (!String.IsNullOrEmpty(msg) && (tsl_Main.Text != msg)) + { + tsl_Main.Text = msg; + ss_Main.Refresh(); + } + } + + private void SayDatabase(string msg) + { + if (!String.IsNullOrEmpty(msg) && (tsl_Database.Text != msg)) + { + tsl_Database.Text = msg; + ss_Main.Refresh(); + } + } + + private void SayLocations(string msg) + { + if (!String.IsNullOrEmpty(msg) && (tsl_Locations.Text != msg)) + { + tsl_Locations.Text = msg; + ss_Main.Refresh(); + } + } + + private void SayRadar(string msg) + { + if (!String.IsNullOrEmpty(msg) && (tsl_Radar.Text != msg)) + { + tsl_Radar.Text = msg; + ss_Main.Refresh(); + } + } + + + private void InitializeSettings() + { + if (Properties.Settings.Default.Band_Settings == null) + { + try + { + Properties.Settings.Default.Band_Settings = new BandSettings(true); + Properties.Settings.Default.Save(); + } + catch + { + // do nothing + } + } + + if (String.IsNullOrEmpty(Properties.Settings.Default.CurrentRadar)) + { + try + { + Properties.Settings.Default.CurrentRadar = new RadarEU_CZ().Name; + Properties.Settings.Default.Save(); + } + catch + { + // do nothing + } + } + } + + private void InitializeRadars() + { + GenericRadar radar; + radar = new RadarNone(); + Radars.Add(radar.Name, radar); + radar = new Radar3D_DE(); + Radars.Add(radar.Name, radar); + radar = new RadarEU_CZ(); + Radars.Add(radar.Name, radar); + radar = new RadarHD_EU(); + Radars.Add(radar.Name, radar); + } + + private void InitializeLocations() + { + // clear or create new dictionary + if (Locations != null) + Locations.Clear(); + else + Locations = new Dictionary>(); + + // create one dictionary per band + foreach (BAND band in Bands.GetValues()) + { + Locations[band] = new Dictionary(); + } + + // get locations from database + bw_Locations.RunWorkerAsync(); + + } + + public void InitializeSession() + { + // register this AirScout instance + try + { + WebClient client; + string result; + // check AirScout instance id and generate new if not set + if (String.IsNullOrEmpty(Properties.Settings.Default.RainScout_Instance_ID)) + { + Properties.Settings.Default.RainScout_Instance_ID = Guid.NewGuid().ToString(); + } + // create an unique device id + DeviceIdBuilder devid = new DeviceIdBuilder(); + // store in settings if not set so far + if (String.IsNullOrEmpty(Properties.Settings.Default.RainScout_Device_ID) || (devid.ToString() != Properties.Settings.Default.RainScout_Device_ID)) + { + // not set or not the same, assuming AirScout is running on a new machine --> create a new instance id + Properties.Settings.Default.RainScout_Instance_ID = Guid.NewGuid().ToString(); + } + // store device id in settings + Properties.Settings.Default.RainScout_Device_ID = devid.ToString(); + // get new session key + client = new WebClient(); + string id = Properties.Settings.Default.RainScout_Instance_ID; + result = client.DownloadString(Properties.Settings.Default.AirScout_Register_URL + + "?id=" + Properties.Settings.Default.RainScout_Instance_ID + + "&mycall=" + Properties.Settings.Default.MyCall + + "&mylat=" + Properties.Settings.Default.MyLat.ToString() + + "&mylon=" + Properties.Settings.Default.MyLon.ToString() + + "&myversion=" + Application.ProductVersion); + if (!result.ToLower().Contains("error")) + { + SessionKey = Encryption.OpenSSLDecrypt(result, Properties.Settings.Default.RainScout_Instance_ID); + } + else + { + MessageBox.Show(result + "\n\nSome functionality might be limited.", "Error while registering RainScout"); + } + } + catch (Exception ex) + { + MessageBox.Show(ex.Message + "\n\nSome functionality might be limited.", "Error while registering AirScout"); + } + } + + private void UpdateStatus() + { + tb_UTC.Text = DateTime.UtcNow.ToString("yyyy-MM-dd HH:mm:ss"); + } + + private void StopAllBackgroundWorkers() + { + Say("Stopping background workers..."); + while (bw_Stations.IsBusy) + { + bw_Stations.CancelAsync(); + Application.DoEvents(); + } + while (bw_Horizons.IsBusy) + { + bw_Horizons.CancelAsync(); + Application.DoEvents(); + } + while (bw_Radar.IsBusy) + { + bw_Radar.CancelAsync(); + Application.DoEvents(); + } + Say("Stopping background workers finished."); + } + + private void StartAllBackgroundWorkers() + { + if (Properties.Settings.Default.Background_Update_OnStartup) + { + if ((bw_StationDatabaseUpdater != null) && !bw_StationDatabaseUpdater.IsBusy) + { + StationDatabaseUpdaterStartOptions startoptions = new StationDatabaseUpdaterStartOptions(); + startoptions.Name = "Stations"; + startoptions.RestrictToAreaOfInterest = Properties.Settings.Default.Location_RestrictToAreaOfInterest; + startoptions.MinLat = (double)Properties.Settings.Default.MinLat; + startoptions.MinLon = (double)Properties.Settings.Default.MinLon; + startoptions.MaxLat = (double)Properties.Settings.Default.MaxLat; + startoptions.MaxLon = (double)Properties.Settings.Default.MaxLon; + startoptions.InstanceID = Properties.Settings.Default.RainScout_Instance_ID; + startoptions.SessionKey = SessionKey; + startoptions.GetKeyURL = Properties.Settings.Default.AirScout_GetKey_URL; + startoptions.Options = BACKGROUNDUPDATERSTARTOPTIONS.RUNONCE; + bw_StationDatabaseUpdater.RunWorkerAsync(startoptions); + } + if (Properties.Settings.Default.Elevation_GLOBE_Enabled && (bw_GLOBEUpdater != null) && !bw_GLOBEUpdater.IsBusy) + { + ElevationDatabaseUpdaterStartOptions startoptions = new ElevationDatabaseUpdaterStartOptions(); + startoptions.Name = "GLOBE"; + startoptions.Options = BACKGROUNDUPDATERSTARTOPTIONS.RUNONCE; + startoptions.Model = ELEVATIONMODEL.GLOBE; + startoptions.MinLat = (double)Properties.Settings.Default.MinLat; + startoptions.MinLon = (double)Properties.Settings.Default.MinLon; + startoptions.MaxLat = (double)Properties.Settings.Default.MaxLat; + startoptions.MaxLon = (double)Properties.Settings.Default.MaxLon; + startoptions.FileCacheEnabled = Properties.Settings.Default.Elevation_GLOBE_EnableCache; + bw_GLOBEUpdater.RunWorkerAsync(startoptions); + } + if (Properties.Settings.Default.Elevation_SRTM3_Enabled && (bw_SRTM3Updater != null) && !bw_SRTM3Updater.IsBusy) + { + ElevationDatabaseUpdaterStartOptions startoptions = new ElevationDatabaseUpdaterStartOptions(); + startoptions.Name = "SRTM3"; + startoptions.Options = BACKGROUNDUPDATERSTARTOPTIONS.RUNONCE; + startoptions.Model = ELEVATIONMODEL.SRTM3; + startoptions.MinLat = (double)Properties.Settings.Default.MinLat; + startoptions.MinLon = (double)Properties.Settings.Default.MinLon; + startoptions.MaxLat = (double)Properties.Settings.Default.MaxLat; + startoptions.MaxLon = (double)Properties.Settings.Default.MaxLon; + startoptions.FileCacheEnabled = Properties.Settings.Default.Elevation_SRTM3_EnableCache; + bw_SRTM3Updater.RunWorkerAsync(startoptions); + } + if (Properties.Settings.Default.Elevation_SRTM1_Enabled && (bw_SRTM1Updater != null) && !bw_SRTM1Updater.IsBusy) + { + ElevationDatabaseUpdaterStartOptions startoptions = new ElevationDatabaseUpdaterStartOptions(); + startoptions.Name = "SRTM1"; + startoptions.Options = BACKGROUNDUPDATERSTARTOPTIONS.RUNONCE; + startoptions.Model = ELEVATIONMODEL.SRTM1; + startoptions.MinLat = (double)Properties.Settings.Default.MinLat; + startoptions.MinLon = (double)Properties.Settings.Default.MinLon; + startoptions.MaxLat = (double)Properties.Settings.Default.MaxLat; + startoptions.MaxLon = (double)Properties.Settings.Default.MaxLon; + startoptions.FileCacheEnabled = Properties.Settings.Default.Elevation_SRTM1_EnableCache; + bw_SRTM1Updater.RunWorkerAsync(startoptions); + } + } + // bw_Stations is not started here + Say("Starting background workers..."); + if (!bw_Horizons.IsBusy) + bw_Horizons.RunWorkerAsync(); + if (!bw_Radar.IsBusy) + bw_Radar.RunWorkerAsync(); + Say("Starting background workers finished."); + } + + private void BandChanged() + { + StopAllBackgroundWorkers(); + StartAllBackgroundWorkers(); + Say("Ready."); + } + + private void ElevationModelChanged() + { + StopAllBackgroundWorkers(); + StartAllBackgroundWorkers(); + Say("Ready."); + } + + private void RadarChanged() + { + StopAllBackgroundWorkers(); + + // clear layers + gm_intensity.Clear(); + gm_cloudtops.Clear(); + gm_lightning.Clear(); + RadarMap = null; + + StartAllBackgroundWorkers(); + + // zoom map to fit rect + gm_Main.SetZoomToFitRect(RectLatLng.FromLTRB( + (double)Properties.Settings.Default.MinLon, + (double)Properties.Settings.Default.MaxLat, + (double)Properties.Settings.Default.MaxLon, + (double)Properties.Settings.Default.MinLat)); + + // update my location + UpdateMyLocation(); + + Say("Ready."); + } + + private new void Refresh() + { + + } + + private void UpdateRadarImage() + { + if (RadarMap == null) + return; + + // adjust radar image size & position + var tl = gm_Main.FromLatLngToLocal(new PointLatLng(Properties.Settings.Default.MaxLat, Properties.Settings.Default.MinLon)); + var br = gm_Main.FromLatLngToLocal(new PointLatLng(Properties.Settings.Default.MinLat, Properties.Settings.Default.MaxLon)); + + // store sizes for other calcluations + RadarSize = new System.Drawing.Size((int)(br.X - tl.X), (int)(br.Y - tl.Y)); + RadarMapSize = RadarMap.Size; + + GMapImage radar; + // add radar image to map layer + gm_intensity.Markers.Clear(); + if (RadarMap.Intensity != null) + { + radar = new GMapImage(new PointLatLng(Properties.Settings.Default.MaxLat, Properties.Settings.Default.MinLon)); + radar.Image = RadarMap.Intensity; + radar.Position = new PointLatLng(Properties.Settings.Default.MaxLat, Properties.Settings.Default.MinLon); + radar.Size = RadarSize; + gm_intensity.Markers.Add(radar); + } + gm_intensity.IsVisibile = Properties.Settings.Default.Map_Intensity; + + gm_cloudtops.Markers.Clear(); + if (RadarMap.CloudTops != null) + { + radar = new GMapImage(new PointLatLng(Properties.Settings.Default.MaxLat, Properties.Settings.Default.MinLon)); + radar.Image = RadarMap.CloudTops; + radar.Position = new PointLatLng(Properties.Settings.Default.MaxLat, Properties.Settings.Default.MinLon); + radar.Size = RadarSize; + gm_cloudtops.Markers.Add(radar); + } + gm_cloudtops.IsVisibile = Properties.Settings.Default.Map_CloudTops; + + gm_lightning.Markers.Clear(); + if (RadarMap.Lightning != null) + { + + radar = new GMapImage(new PointLatLng(Properties.Settings.Default.MaxLat, Properties.Settings.Default.MinLon)); + radar.Image = RadarMap.Lightning; + radar.Position = new PointLatLng(Properties.Settings.Default.MaxLat, Properties.Settings.Default.MinLon); + radar.Size = RadarSize; + gm_lightning.Markers.Add(radar); + } + gm_lightning.IsVisibile = Properties.Settings.Default.Map_Lightning; + + gm_bounds.Clear(); + // add tile to map polygons + List l = new List(); + l.Add(new PointLatLng(Properties.Settings.Default.MinLat, Properties.Settings.Default.MinLon)); + l.Add(new PointLatLng(Properties.Settings.Default.MinLat, Properties.Settings.Default.MaxLon)); + l.Add(new PointLatLng(Properties.Settings.Default.MaxLat, Properties.Settings.Default.MaxLon)); + l.Add(new PointLatLng(Properties.Settings.Default.MaxLat, Properties.Settings.Default.MinLon)); + GMapPolygon p = new GMapPolygon(l, "Coverage"); + p.Stroke = new Pen(Color.FromArgb(255, Color.Magenta), 3); + p.Fill = new SolidBrush(Color.FromArgb(0, Color.Magenta)); + gm_bounds.Polygons.Add(p); + gm_bounds.IsVisibile = Properties.Settings.Default.Map_Bounds; + + lbl_Radar_Timestamp.Text = RadarMap.Timestamp.ToString("yyyy-MM-dd HH:mm"); + + } + + private void UpdateMyLocation() + { + // check coordinates first + if (!GeographicalPoint.CheckLatitude(Properties.Settings.Default.MyLat)) + return; + if (!GeographicalPoint.CheckLongitude(Properties.Settings.Default.MyLon)) + return; + + // set window title + this.Text = "RainScout V" + Application.ProductVersion + " - " + Properties.Settings.Default.MyCall + " / " + Properties.Settings.Default.MyLoc; + + + // create an LocationEntry in any case + LocationEntry le = new LocationEntry(); + le.Location = StationData.Database.LocationFind(Properties.Settings.Default.MyCall, Properties.Settings.Default.MyLoc); + if (le.Location == null) + { + le.Location = new LocationDesignator(); + le.Location.Call = Properties.Settings.Default.MyCall; + le.Location.Lat = Properties.Settings.Default.MyLat; + le.Location.Lon = Properties.Settings.Default.MyLon; + le.Location.Source = GEOSOURCE.UNKONWN; + } + le.QRV = StationData.Database.QRVFind(Properties.Settings.Default.MyCall, Properties.Settings.Default.MyLoc, Properties.Settings.Default.CurrentBand); + if (le.QRV == null) + { + le.QRV = new QRVDesignator(); + le.QRV.Band = Properties.Settings.Default.CurrentBand; + le.QRV.Call = Properties.Settings.Default.MyCall; + le.QRV.Loc = Properties.Settings.Default.MyLoc; + } + Locations[Properties.Settings.Default.CurrentBand][Properties.Settings.Default.MyCall] = le; + + double myelv = ScoutBase.Elevation.ElevationData.Database[Properties.Settings.Default.MyLat, Properties.Settings.Default.MyLon, Properties.Settings.Default.CurrentElevationModel]; + double myheight = le.QRV.AntennaHeight; + if (myheight == 0) + { + myheight = 10; + } + + string lat = Properties.Settings.Default.MyLat.ToString("F8"); + string lon = Properties.Settings.Default.MyLon.ToString("F8"); + string loc = Properties.Settings.Default.MyLoc; + string elv = myelv.ToString("F0"); + string height = le.QRV.AntennaHeight.ToString("F0"); + tb_MyData_Lat.Text = lat; + tb_MyDataLon.Text = lon; + tb_MyData_Loc.Text = loc; + tb_MyData_Elevation.Text = elv; + tb_MyData_Height.Text = height; + + // set marker on map + gm_mystations.Markers.Clear(); + SCPPOTENTIAL potential = GetScpPotential(le); + GMarkerGoogleType type = GetDotMarkerFromScpPotential(potential); + GMarkerGoogle m = new GMarkerGoogle(new PointLatLng(Properties.Settings.Default.MyLat, Properties.Settings.Default.MyLon), type); + m.Tag = Properties.Settings.Default.MyCall; + m.ToolTipMode = MarkerTooltipMode.OnMouseOver; + m.ToolTipText = Properties.Settings.Default.MyCall + "\n\nLat: " + lat + "\nLon: " + lon + "\nLoc: " + loc; + gm_mystations.Markers.Add(m); + + // calculate horizon and distance circles + gm_distances.Clear(); + gm_horizons.Clear(); + + try + { + SphericalEarth.LatLon.GPoint g; + + // add distance rings + GMapRoute horz100km = new GMapRoute("myhorizon100km"); + GMapRoute horz200km = new GMapRoute("myhorizon200km"); + GMapRoute horz300km = new GMapRoute("myhorizon300km"); + GMapRoute horz400km = new GMapRoute("myhorizon400km"); + GMapRoute horz500km = new GMapRoute("myhorizon500km"); + GMapRoute horz600km = new GMapRoute("myhorizon600km"); + + for (int i = 0; i < 360; i++) + { + // show distance rings + g = SphericalEarth.LatLon.DestinationPoint(Properties.Settings.Default.MyLat, Properties.Settings.Default.MyLon, i, 100); + horz100km.Points.Add(new PointLatLng(g.Lat, g.Lon)); + g = SphericalEarth.LatLon.DestinationPoint(Properties.Settings.Default.MyLat, Properties.Settings.Default.MyLon, i, 200); + horz200km.Points.Add(new PointLatLng(g.Lat, g.Lon)); + g = SphericalEarth.LatLon.DestinationPoint(Properties.Settings.Default.MyLat, Properties.Settings.Default.MyLon, i, 300); + horz300km.Points.Add(new PointLatLng(g.Lat, g.Lon)); + g = SphericalEarth.LatLon.DestinationPoint(Properties.Settings.Default.MyLat, Properties.Settings.Default.MyLon, i, 400); + horz400km.Points.Add(new PointLatLng(g.Lat, g.Lon)); + g = SphericalEarth.LatLon.DestinationPoint(Properties.Settings.Default.MyLat, Properties.Settings.Default.MyLon, i, 500); + horz500km.Points.Add(new PointLatLng(g.Lat, g.Lon)); + g = SphericalEarth.LatLon.DestinationPoint(Properties.Settings.Default.MyLat, Properties.Settings.Default.MyLon, i, 600); + horz600km.Points.Add(new PointLatLng(g.Lat, g.Lon)); + } + + // add the first point again to close the ring + horz100km.Points.Add(horz100km.Points[0]); + horz200km.Points.Add(horz200km.Points[0]); + horz300km.Points.Add(horz300km.Points[0]); + horz400km.Points.Add(horz400km.Points[0]); + horz500km.Points.Add(horz500km.Points[0]); + horz600km.Points.Add(horz600km.Points[0]); + + // draw distances + horz100km.Stroke = new Pen(Color.Black, 1); + horz200km.Stroke = new Pen(Color.Black, 1); + horz300km.Stroke = new Pen(Color.Black, 1); + horz400km.Stroke = new Pen(Color.Black, 1); + horz500km.Stroke = new Pen(Color.Black, 1); + horz600km.Stroke = new Pen(Color.Black, 1); + + gm_distances.Routes.Add(horz100km); + gm_distances.Routes.Add(horz200km); + gm_distances.Routes.Add(horz300km); + gm_distances.Routes.Add(horz400km); + gm_distances.Routes.Add(horz500km); + gm_distances.Routes.Add(horz600km); + gm_distances.IsVisibile = Properties.Settings.Default.Map_Distances; + + // add both horizons + GMapRoute horzlow = new GMapRoute("myhorizonlow"); + GMapRoute horzhigh = new GMapRoute("myhorizonhigh"); + + PropagationHorizonDesignator hor = PropagationData.Database.PropagationHorizonFind( + Properties.Settings.Default.MyLat, + Properties.Settings.Default.MyLon, + myelv + myheight, + HorDistance, + Bands.ToGHz(Properties.Settings.Default.CurrentBand), + SphericalEarth.LatLon.Earth.Radius * Properties.Settings.Default.Band_Settings[Properties.Settings.Default.CurrentBand].K_Factor, + Properties.Settings.Default.Band_Settings[Properties.Settings.Default.CurrentBand].F1_Clearance, + ScoutBase.Elevation.ElevationData.Database.GetDefaultStepWidth(Properties.Settings.Default.CurrentElevationModel), + Properties.Settings.Default.CurrentElevationModel, + null); + + if (hor == null) + return; + if (hor.Valid) + { + // add both horizons + for (int i = 0; i < 360; i++) + { + g = SphericalEarth.LatLon.DestinationPoint( + Properties.Settings.Default.MyLat, + Properties.Settings.Default.MyLon, + i, + Propagation.DistanceFromEpsilon( + myelv + myheight, + Properties.Settings.Default.Scatter_MinHeight, + hor.Horizon[i].Epsmin, + SphericalEarth.LatLon.Earth.Radius * Properties.Settings.Default.Band_Settings[Properties.Settings.Default.CurrentBand].K_Factor + )); + horzlow.Points.Add(new PointLatLng(g.Lat, g.Lon)); + g = SphericalEarth.LatLon.DestinationPoint( + Properties.Settings.Default.MyLat, + Properties.Settings.Default.MyLon, + i, + Propagation.DistanceFromEpsilon( + myelv + myheight, + Properties.Settings.Default.Scatter_MaxHeight, + hor.Horizon[i].Epsmin, + SphericalEarth.LatLon.Earth.Radius * Properties.Settings.Default.Band_Settings[Properties.Settings.Default.CurrentBand].K_Factor + )); + horzhigh.Points.Add(new PointLatLng(g.Lat, g.Lon)); + } + // add first point again to close the ring + horzlow.Points.Add(horzlow.Points[0]); + horzhigh.Points.Add(horzhigh.Points[0]); + } + + // draw horizons + horzlow.Stroke = new Pen(Color.Red, 3); + gm_horizons.Routes.Add(horzlow); + horzhigh.Stroke = new Pen(Color.Yellow, 3); + gm_horizons.Routes.Add(horzhigh); + gm_horizons.IsVisibile = Properties.Settings.Default.Map_Horizons; + } + catch (Exception ex) + { + Console.WriteLine(ex.ToString()); + } + } + + private void ClearScp() + { + Properties.Settings.Default.ScpLat = 0; + Properties.Settings.Default.ScpLon = 0; + Properties.Settings.Default.ScpCloudTop = 0; + + gm_myroutes.Routes.Clear(); + gm_scatters.Markers.Clear(); + gm_dxstations.Markers.Clear(); + + while (bw_Stations.IsBusy) + { + bw_Stations.CancelAsync(); + Application.DoEvents(); + } + + tb_Scp_Lat.Text = ""; + tb_Scp_Lon.Text = ""; + tb_Scp_Loc.Text = ""; + tb_Scp_Intensity.Text = ""; + tb_Scp_Intensity.ForeColor = Color.Black; + tb_Scp_Intensity.BackColor = SystemColors.Control; + tb_Scp_CloudTop.Text = ""; + tb_Scp_CloudTop.ForeColor = Color.Black; + tb_Scp_CloudTop.BackColor = SystemColors.Control; + tb_Scp_Lightning.Text = ""; + tb_Scp_Lightning.ForeColor = Color.Black; + tb_Scp_Lightning.BackColor = SystemColors.Control; + } + + private void UpdateScp() + { + + double myqtf = SphericalEarth.LatLon.Bearing(Properties.Settings.Default.MyLat, Properties.Settings.Default.MyLon, Properties.Settings.Default.ScpLat, Properties.Settings.Default.ScpLon); + double myqrb = SphericalEarth.LatLon.Distance(Properties.Settings.Default.MyLat, Properties.Settings.Default.MyLon, Properties.Settings.Default.ScpLat, Properties.Settings.Default.ScpLon); + Properties.Settings.Default.ScpCloudTop = GetCloudTopValue(Properties.Settings.Default.ScpLat, Properties.Settings.Default.ScpLon); + string lat = Properties.Settings.Default.ScpLat.ToString("F8"); + string lon = Properties.Settings.Default.ScpLon.ToString("F8"); + string loc = Properties.Settings.Default.ScpLoc; + string mybearing = SphericalEarth.LatLon.Bearing(Properties.Settings.Default.MyLat, Properties.Settings.Default.MyLon, Properties.Settings.Default.ScpLat, Properties.Settings.Default.ScpLon).ToString("F0"); + string mydistance = SphericalEarth.LatLon.Distance(Properties.Settings.Default.MyLat, Properties.Settings.Default.MyLon, Properties.Settings.Default.ScpLat, Properties.Settings.Default.ScpLon).ToString("F0"); + + // change MyLocation according to scp potential + gm_mystations.Markers.Clear(); + LocationEntry le = Locations[Properties.Settings.Default.CurrentBand][Properties.Settings.Default.MyCall]; + SCPPOTENTIAL potential = GetScpPotential(le); + GMarkerGoogleType type = GetDotMarkerFromScpPotential(potential); + GMarkerGoogle mm = new GMarkerGoogle(new PointLatLng(Properties.Settings.Default.MyLat, Properties.Settings.Default.MyLon), type); + gm_mystations.Markers.Add(mm); + + // add scatter + gm_scatters.Markers.Clear(); + GMarkerGoogle m = new GMarkerGoogle(new PointLatLng(Properties.Settings.Default.ScpLat, Properties.Settings.Default.ScpLon), GMarkerGoogleType.orange_dot); + m.Tag = "SCP"; + m.ToolTipMode = MarkerTooltipMode.OnMouseOver; + m.ToolTipText = "SCP" + "\n\nLat: " + lat + "\nLon: " + lon + "\nLoc: " + loc; + gm_scatters.Markers.Add(m); + tb_Scp_Lat.Text = lat; + tb_Scp_Lon.Text = lon; + tb_Scp_Loc.Text = loc; + tb_MyData_Bearing.Text = mybearing; + tb_MyData_Distance.Text = mydistance; + // Update radar values an colors + int v = GetIntensityValue(Properties.Settings.Default.ScpLat, Properties.Settings.Default.ScpLon); + Color c = GetIntensityColor(Properties.Settings.Default.ScpLat, Properties.Settings.Default.ScpLon); + if (v > 0) + { + tb_Scp_Intensity.Text = v.ToString(); + if (c.A == 255) + { + tb_Scp_Intensity.BackColor = c; + if (v <= 20) + tb_Scp_Intensity.ForeColor = Color.White; + else + tb_Scp_Intensity.ForeColor = Color.Black; + } + else + tb_Scp_Intensity.BackColor = SystemColors.Control; + } + else + { + tb_Scp_Intensity.Text = ""; + tb_Scp_Intensity.BackColor = SystemColors.Control; + } + v = GetCloudTopValue(Properties.Settings.Default.ScpLat, Properties.Settings.Default.ScpLon); + c = GetCloudTopColor(Properties.Settings.Default.ScpLat, Properties.Settings.Default.ScpLon); + if (v > 0) + { + tb_Scp_CloudTop.Text = v.ToString(); + if (c.A == 255) + tb_Scp_CloudTop.BackColor = c; + else + tb_Scp_CloudTop.BackColor = SystemColors.Control; + + } + else + { + tb_Scp_CloudTop.Text = ""; + tb_Scp_CloudTop.BackColor = SystemColors.Control; + } + v = GetLightningValue(Properties.Settings.Default.ScpLat, Properties.Settings.Default.ScpLon); + c = GetLightningColor(Properties.Settings.Default.ScpLat, Properties.Settings.Default.ScpLon); + if (v > 0) + { + tb_Scp_Lightning.Text = v.ToString(); + if (c.A == 255) + tb_Scp_Lightning.BackColor = c; + else + tb_Scp_Lightning.BackColor = SystemColors.Control; + } + else + { + tb_Scp_Lightning.Text = ""; + tb_Scp_Lightning.BackColor = SystemColors.Control; + } + + // show routes + gm_myroutes.Routes.Clear(); + GMapRoute myroute = new GMapRoute("myroute"); + for (int i = 0; i <= myqrb; i++) + { + SphericalEarth.LatLon.GPoint g = SphericalEarth.LatLon.DestinationPoint(Properties.Settings.Default.MyLat, Properties.Settings.Default.MyLon, myqtf, i); + myroute.Points.Add(new PointLatLng(g.Lat, g.Lon)); + } + Pen p = new Pen(Color.Black, 3); + p.DashStyle = System.Drawing.Drawing2D.DashStyle.Solid; + myroute.Stroke = p; + gm_myroutes.Routes.Add(myroute); + GMapRoute myroutestraight = new GMapRoute("myroutestraight"); + for (int i = (int)myqrb; i <= myqrb + Properties.Settings.Default.Scatter_MaxRadius; i++) + { + SphericalEarth.LatLon.GPoint g = SphericalEarth.LatLon.DestinationPoint(Properties.Settings.Default.MyLat, Properties.Settings.Default.MyLon, myqtf, i); + myroutestraight.Points.Add(new PointLatLng(g.Lat, g.Lon)); + } + + + // start bw_Stations background worker to show all stations in range + while (bw_Stations.IsBusy) + { + bw_Stations.CancelAsync(); + Application.DoEvents(); + } + gm_dxstations.Markers.Clear(); + bw_Stations.RunWorkerAsync(); + } + + private void UpdateDXLocation() + { + /* + // get call info from database + LocationDesignator ld = StationData.Database.LocationFind(Properties.Settings.Default.DXCall); + Properties.Settings.Default.DXLat = ld.Lat; + Properties.Settings.Default.DXLon = ld.Lon; + Properties.Settings.Default.DXLoc = ld.Loc; + double dxqtf = SphericalEarth.LatLon.Bearing(ld.Lat, ld.Lon, Properties.Settings.Default.ScpLat, Properties.Settings.Default.ScpLon); + double dxqrb = SphericalEarth.LatLon.Distance(ld.Lat, ld.Lon, Properties.Settings.Default.ScpLat, Properties.Settings.Default.ScpLon); + string lat = ld.Lat.ToString("F8"); + string lon = ld.Lon.ToString("F8"); + string loc = ld.Loc; + string qtf = dxqtf.ToString("F8"); + string qrb = dxqrb.ToString("F8"); + tb_DXData_Lat.Text = lat; + tb_DXData_Lon.Text = lon; + tb_DXData_Loc.Text = loc; + tb_DXData_Bearing.Text = qtf; + tb_DXData_Distance.Text = qrb; + tb_DXData_Elevation.Text = ElevationData[ld.Lat, ld.Lon].ToString("F0"); + // set marker on map + gm_dxstations.Routes.Clear(); + // calculate distance circles + GMapRoute horz100km = new GMapRoute("dxhorizon100km"); + GMapRoute horz200km = new GMapRoute("dxhorizon200km"); + GMapRoute horz300km = new GMapRoute("dxhorizon300km"); + GMapRoute horz400km = new GMapRoute("dxhorizon400km"); + GMapRoute horz500km = new GMapRoute("dxhorizon500km"); + GMapRoute horz600km = new GMapRoute("dxhorizon600km"); + // calculate horizon + // clear horizon first + try + { + GMapRoute horzlow = new GMapRoute("dxhorizonlow"); + GMapRoute horzhigh = new GMapRoute("dxhorizonhigh"); + CallsignEntry entry = Locations.FindEntry(Properties.Settings.Default.DXCall); + if (entry == null) + return; + SphericalEarth.LatLon.GPoint g; + if (entry.Horizon.IsValid) + { + // add both horizons + for (int i = 0; i < 360; i++) + { + double eps = entry.Horizon[i] / 180.0 * Math.PI; + g = SphericalEarth.LatLon.DestinationPoint(Properties.Settings.Default.DXLat, Properties.Settings.Default.DXLon, i, GetVisibleDist(SphericalEarth.LatLon.Earth.Radius, 10, Properties.Settings.Default.Scatter_MinHeight, eps)); + horzlow.Points.Add(new PointLatLng(g.Lat, g.Lon)); + g = SphericalEarth.LatLon.DestinationPoint(Properties.Settings.Default.DXLat, Properties.Settings.Default.DXLon, i, GetVisibleDist(SphericalEarth.LatLon.Earth.Radius, 10, Properties.Settings.Default.Scatter_MaxHeight, eps)); + horzhigh.Points.Add(new PointLatLng(g.Lat, g.Lon)); + // show distance rings + g = SphericalEarth.LatLon.DestinationPoint(Properties.Settings.Default.DXLat, Properties.Settings.Default.DXLon, i, 100); + horz100km.Points.Add(new PointLatLng(g.Lat, g.Lon)); + g = SphericalEarth.LatLon.DestinationPoint(Properties.Settings.Default.DXLat, Properties.Settings.Default.DXLon, i, 200); + horz200km.Points.Add(new PointLatLng(g.Lat, g.Lon)); + g = SphericalEarth.LatLon.DestinationPoint(Properties.Settings.Default.DXLat, Properties.Settings.Default.DXLon, i, 300); + horz300km.Points.Add(new PointLatLng(g.Lat, g.Lon)); + g = SphericalEarth.LatLon.DestinationPoint(Properties.Settings.Default.DXLat, Properties.Settings.Default.DXLon, i, 400); + horz400km.Points.Add(new PointLatLng(g.Lat, g.Lon)); + g = SphericalEarth.LatLon.DestinationPoint(Properties.Settings.Default.DXLat, Properties.Settings.Default.DXLon, i, 500); + horz500km.Points.Add(new PointLatLng(g.Lat, g.Lon)); + g = SphericalEarth.LatLon.DestinationPoint(Properties.Settings.Default.DXLat, Properties.Settings.Default.DXLon, i, 600); + horz600km.Points.Add(new PointLatLng(g.Lat, g.Lon)); + } + // add first point again to close the ring + horzlow.Points.Add(horzlow.Points[0]); + horzhigh.Points.Add(horzhigh.Points[0]); + } + horz100km.Stroke = new Pen(Color.Black, 1); + horz200km.Stroke = new Pen(Color.Black, 1); + horz300km.Stroke = new Pen(Color.Black, 1); + horz400km.Stroke = new Pen(Color.Black, 1); + horz500km.Stroke = new Pen(Color.Black, 1); + horz600km.Stroke = new Pen(Color.Black, 1); + gm_dxstations.Routes.Add(horz100km); + gm_dxstations.Routes.Add(horz200km); + gm_dxstations.Routes.Add(horz300km); + gm_dxstations.Routes.Add(horz400km); + gm_dxstations.Routes.Add(horz500km); + gm_dxstations.Routes.Add(horz600km); + horzlow.Stroke = new Pen(Color.Red, 3); + gm_dxstations.Routes.Add(horzlow); + horzhigh.Stroke = new Pen(Color.Yellow, 3); + gm_dxstations.Routes.Add(horzhigh); + } + catch + { + } + */ + } + + private Point RadarMapLatLonToLocal(double lat, double lon) + { + GPoint g = gm_Main.FromLatLngToLocal(new PointLatLng(lat, lon)); + GPoint ul = gm_Main.FromLatLngToLocal(new PointLatLng(Properties.Settings.Default.MaxLat, Properties.Settings.Default.MinLon)); + double scalex = (double)RadarMapSize.Width / (double)RadarSize.Width; + double scaley = (double)RadarMapSize.Height / (double)RadarSize.Height; + Point p = new Point(); + p.X = (int)((g.X * scalex - ul.X * scalex)); + p.Y = (int)((g.Y * scaley - ul.Y * scaley)); + + return p; + } + + private int GetIntensityValue(double lat, double lon) + { + if (RadarMap == null) + return -1; + + int v = -1; + try + { + Point p = RadarMapLatLonToLocal(lat, lon); + v = RadarMap.GetIntensityValue(p.X, p.Y); + } + catch (Exception ex) + { + + } + + return v; + } + + private Color GetIntensityColor(double lat, double lon) + { + if (RadarMap == null) + return Color.Transparent; + + Color c = Color.Transparent; + try + { + Point p = RadarMapLatLonToLocal(lat, lon); + c = RadarMap.GetIntensityColor(p.X, p.Y); + } + catch (Exception ex) + { + + } + + return c; + } + + private int GetCloudTopValue(double lat, double lon) + { + if (RadarMap == null) + return -1; + + int v = -1; + try + { + Point p = RadarMapLatLonToLocal(lat, lon); + v = RadarMap.GetCloudTopValue(p.X, p.Y); + } + catch (Exception ex) + { + + } + + return v; + } + + private Color GetCloudTopColor(double lat, double lon) + { + if (RadarMap == null) + return Color.Transparent; + + Color c = Color.Transparent; + try + { + Point p = RadarMapLatLonToLocal(lat, lon); + c = RadarMap.GetCloudTopColor(p.X, p.Y); + } + catch (Exception ex) + { + + } + + return c; + } + + private int GetLightningValue(double lat, double lon) + { + if (RadarMap == null) + return -1; + + int v = -1; + try + { + Point p = RadarMapLatLonToLocal(lat, lon); + v = RadarMap.GetLightningValue(p.X, p.Y); + } + catch (Exception ex) + { + + } + + return v; + } + + private Color GetLightningColor(double lat, double lon) + { + if (RadarMap == null) + return Color.Transparent; + + Color c = Color.Transparent; + try + { + Point p = RadarMapLatLonToLocal(lat, lon); + c = RadarMap.GetLightningColor(p.X, p.Y); + } + catch (Exception ex) + { + + } + + return c; + } + + private SCPPOTENTIAL GetScpPotential (LocationEntry le) + { + SCPPOTENTIAL potential = SCPPOTENTIAL.NONELOC; + + try + { + lock (le) + { + // calculate all values + double dxqrb = SphericalEarth.LatLon.Distance(Properties.Settings.Default.ScpLat, Properties.Settings.Default.ScpLon, le.Location.Lat, le.Location.Lon); + double scpdxqtf = SphericalEarth.LatLon.Bearing(Properties.Settings.Default.ScpLat, Properties.Settings.Default.ScpLon, le.Location.Lat, le.Location.Lon); + double dxscpqtf = SphericalEarth.LatLon.Bearing(le.Location.Lat, le.Location.Lon, Properties.Settings.Default.ScpLat, Properties.Settings.Default.ScpLon); + double dxelv = ElevationData.Database[le.Location.Lat, le.Location.Lon, Properties.Settings.Default.CurrentElevationModel]; + + + // set status according to location quality + if (le.Location.Source == GEOSOURCE.FROMUSER) + { + potential = SCPPOTENTIAL.NONEUSER; + } + + // check for valid horizon + if ((le.Horizon != null) && le.Horizon.Valid) + { + // use cloudtop, if set + if (Properties.Settings.Default.ScpCloudTop > 0) + { + double dx = Propagation.DistanceFromEpsilon( + dxelv + le.QRV.AntennaHeight, + Properties.Settings.Default.ScpCloudTop, + le.Horizon.Horizon[(int)dxscpqtf].Epsmin, + LatLon.Earth.Radius * Properties.Settings.Default.Band_Settings[Properties.Settings.Default.CurrentBand].K_Factor + ); + if (dx >= dxqrb) + { + potential = SCPPOTENTIAL.CLOUDTOP; + } + } + else + { + double dxmin = Propagation.DistanceFromEpsilon( + dxelv + le.QRV.AntennaHeight, + Properties.Settings.Default.Scatter_MinHeight, + le.Horizon.Horizon[(int)dxscpqtf].Epsmin, + LatLon.Earth.Radius * Properties.Settings.Default.Band_Settings[Properties.Settings.Default.CurrentBand].K_Factor + ); + if (dxmin >= dxqrb) + { + potential = SCPPOTENTIAL.MINCLOUD; + } + else + { + double dxmax = Propagation.DistanceFromEpsilon( + dxelv + le.QRV.AntennaHeight, + Properties.Settings.Default.Scatter_MaxHeight, + le.Horizon.Horizon[(int)dxscpqtf].Epsmin, + LatLon.Earth.Radius * Properties.Settings.Default.Band_Settings[Properties.Settings.Default.CurrentBand].K_Factor + ); + if (dxmax >= dxqrb) + { + potential = SCPPOTENTIAL.MAXCLOUD; + } + } + } + + return potential; + } + + // no horizon available --> calculate a single propagation path instead to be reactive + // use cloudtop, if set + if (Properties.Settings.Default.ScpCloudTop > 0) + { + PropagationPathDesignator path = PropagationData.Database.PropagationPathFindOrCreateFromBearing( + bw_Stations, + le.Location.Lat, + le.Location.Lon, + dxelv + le.QRV.AntennaHeight, + dxscpqtf, + HorDistance, + Properties.Settings.Default.ScpCloudTop, + Bands.ToGHz(Properties.Settings.Default.CurrentBand), + LatLon.Earth.Radius * Properties.Settings.Default.Band_Settings[Properties.Settings.Default.CurrentBand].K_Factor, + Properties.Settings.Default.Band_Settings[Properties.Settings.Default.CurrentBand].F1_Clearance, + ElevationData.Database.GetDefaultStepWidth(Properties.Settings.Default.CurrentElevationModel), + Properties.Settings.Default.CurrentElevationModel, + 0 + ); + if ((path != null) && path.Valid) + { + double dx = Propagation.DistanceFromEpsilon( + dxelv + le.QRV.AntennaHeight, + Properties.Settings.Default.ScpCloudTop, + le.Horizon.Horizon[(int)dxscpqtf].Epsmin, + LatLon.Earth.Radius * Properties.Settings.Default.Band_Settings[Properties.Settings.Default.CurrentBand].K_Factor + ); + if (dx >= dxqrb) + { + potential = SCPPOTENTIAL.CLOUDTOP; + } + } + } + else + { + PropagationPathDesignator pathmin = PropagationData.Database.PropagationPathFindOrCreateFromBearing( + bw_Stations, + le.Location.Lat, + le.Location.Lon, + dxelv + le.QRV.AntennaHeight, + dxscpqtf, + HorDistance, + Properties.Settings.Default.Scatter_MinHeight, + Bands.ToGHz(Properties.Settings.Default.CurrentBand), + LatLon.Earth.Radius * Properties.Settings.Default.Band_Settings[Properties.Settings.Default.CurrentBand].K_Factor, + Properties.Settings.Default.Band_Settings[Properties.Settings.Default.CurrentBand].F1_Clearance, + ElevationData.Database.GetDefaultStepWidth(Properties.Settings.Default.CurrentElevationModel), + Properties.Settings.Default.CurrentElevationModel, + 0 + ); + if ((pathmin != null) && pathmin.Valid) + { + double dxmin = Propagation.DistanceFromEpsilon( + dxelv + le.QRV.AntennaHeight, + Properties.Settings.Default.Scatter_MinHeight, + pathmin.Eps1_Min, + LatLon.Earth.Radius * Properties.Settings.Default.Band_Settings[Properties.Settings.Default.CurrentBand].K_Factor + ); + if (dxmin >= dxqrb) + { + potential = SCPPOTENTIAL.MINCLOUD; + } + else + { + PropagationPathDesignator pathmax = PropagationData.Database.PropagationPathFindOrCreateFromBearing( + bw_Stations, + le.Location.Lat, + le.Location.Lon, + dxelv + le.QRV.AntennaHeight, + dxscpqtf, + HorDistance, + Properties.Settings.Default.Scatter_MinHeight, + Bands.ToGHz(Properties.Settings.Default.CurrentBand), + LatLon.Earth.Radius * Properties.Settings.Default.Band_Settings[Properties.Settings.Default.CurrentBand].K_Factor, + Properties.Settings.Default.Band_Settings[Properties.Settings.Default.CurrentBand].F1_Clearance, + ElevationData.Database.GetDefaultStepWidth(Properties.Settings.Default.CurrentElevationModel), + Properties.Settings.Default.CurrentElevationModel, + 0 + ); + if ((pathmax != null) && pathmax.Valid) + { + double dxmax = Propagation.DistanceFromEpsilon( + dxelv + le.QRV.AntennaHeight, + Properties.Settings.Default.Scatter_MaxHeight, + pathmax.Eps1_Min, + LatLon.Earth.Radius * Properties.Settings.Default.Band_Settings[Properties.Settings.Default.CurrentBand].K_Factor + ); + if (dxmax >= dxqrb) + { + potential = SCPPOTENTIAL.MAXCLOUD; + } + } + } + } + + return potential; + } + } + } + catch (Exception ex) + { + Console.WriteLine(ex.Message); + } + + return potential; + } + + private GMarkerGoogleType GetSmallMarkerFromScpPotential(SCPPOTENTIAL potential) + { + GMarkerGoogleType color = GMarkerGoogleType.gray_small; + + switch (potential) + { + case SCPPOTENTIAL.NONELOC: color = GMarkerGoogleType.white_small; break; + case SCPPOTENTIAL.NONEUSER: color = GMarkerGoogleType.green_small; break; + case SCPPOTENTIAL.MAXCLOUD: color = GMarkerGoogleType.yellow_small; break; + case SCPPOTENTIAL.MINCLOUD: color = GMarkerGoogleType.red_small; break; + case SCPPOTENTIAL.CLOUDTOP: color = GMarkerGoogleType.purple_small; break; + } + + return color; + } + + private GMarkerGoogleType GetDotMarkerFromScpPotential(SCPPOTENTIAL potential) + { + GMarkerGoogleType color = GMarkerGoogleType.gray_small; + + switch (potential) + { + case SCPPOTENTIAL.NONELOC: color = GMarkerGoogleType.white_dot; break; + case SCPPOTENTIAL.NONEUSER: color = GMarkerGoogleType.green_dot; break; + case SCPPOTENTIAL.MAXCLOUD: color = GMarkerGoogleType.yellow_dot; break; + case SCPPOTENTIAL.MINCLOUD: color = GMarkerGoogleType.red_dot; break; + case SCPPOTENTIAL.CLOUDTOP: color = GMarkerGoogleType.pink_dot; break; + } + + return color; + } + + private void gm_Main_OnMapZoomChanged() + { + UpdateRadarImage(); + tb_Map_Zoom.Text = gm_Main.Zoom.ToString(); + } + + private void gm_Main_Click(object sender, EventArgs e) + { + + } + + private void btn_Refresh_Click(object sender, EventArgs e) + { + } + + private void MainDlg_SizeChanged(object sender, EventArgs e) + { + // maintain splitter on size changed + int main = this.Height - gb_MyData.Height - ss_Main.Height - 60; + if (main > 0) + spl_Main.SplitterDistance = main; + int map = this.Width - pa_CommonInfo.MinimumSize.Width - 20; + if (map > 0) + spl_Map.SplitterDistance = map; + } + + private void gm_Main_MouseClick(object sender, MouseEventArgs e) + { + } + + private void gm_Main_OnMarkerClick(GMapMarker item, MouseEventArgs e) + { + + } + + private void gm_Main_MouseDown(object sender, MouseEventArgs e) + { + if (e.Button == MouseButtons.Left && CurrentMarker != null && CurrentMarker.IsMouseOver) + IsDraggingMarker = true; + } + + private void gm_Main_MouseUp(object sender, MouseEventArgs e) + { + if ((e.Button == System.Windows.Forms.MouseButtons.Left) && !MapDragging) + { + // check if Mouse is not over Marker + if ((CurrentMarker != null) && CurrentMarker.IsMouseOver) + { + Properties.Settings.Default.DXCall = (string)CurrentMarker.Tag; + foreach (GMapMarker gm in gm_dxstations.Markers) + { + gm.ToolTipMode = MarkerTooltipMode.OnMouseOver; + } + CurrentMarker.ToolTipMode = MarkerTooltipMode.Always; + UpdateDXLocation(); + } + else + { + // handle left click on map + // set new scatterpoint + gm_scatters.Markers.Clear(); + PointLatLng p = gm_Main.FromLocalToLatLng(e.X, e.Y); + Properties.Settings.Default.ScpLat = p.Lat; + Properties.Settings.Default.ScpLon = p.Lng; + Properties.Settings.Default.ScpLoc = SphericalEarth.LatLon.Loc(p.Lat, p.Lng); + UpdateScp(); + } + if (IsDraggingMarker) + { + IsDraggingMarker = false; + } + } + // stop MapDragging if active + if (MapDragging) + MapDragging = false; + } + + private void gm_Main_MouseMove(object sender, MouseEventArgs e) + { + // maintain mouse position data + PointLatLng p = gm_Main.FromLocalToLatLng(e.X, e.Y); + double lat = p.Lat; + double lon = p.Lng; + string loc = SphericalEarth.LatLon.Loc(p.Lat, p.Lng); + double bearing = SphericalEarth.LatLon.Bearing(Properties.Settings.Default.MyLat, Properties.Settings.Default.MyLon, p.Lat, p.Lng); + double distance = SphericalEarth.LatLon.Distance(Properties.Settings.Default.MyLat, Properties.Settings.Default.MyLon, p.Lat, p.Lng); + double elevation = ElevationData.Database[p.Lat, p.Lng, Properties.Settings.Default.CurrentElevationModel]; + tb_Mouse_Lat.Text = lat.ToString("F8"); + tb_Mouse_Lon.Text = lon.ToString("F8"); + tb_Mouse_Loc.Text = loc; + tb_Mouse_Bearing.Text = bearing.ToString("F8"); + tb_Mouse_Distance.Text = distance.ToString("F0"); + if (IsDraggingMarker && CurrentMarker != null) + { + /* + LocationDesignator entry = StationData.Database.LocationFind(CurrentMarker.Tag.ToString()); + if (entry != null) + { + entry.Lat = lat; + entry.Lon = lon; + entry.Loc = loc; + entry.Elevation = + CurrentMarker.Position = p; + CurrentMarker.ToolTipText = entry.Call + "\n\nLat: " + entry.Lat.ToString("F8") + "\nLon: " + entry.Lon.ToString("F8") + "\nLoc: " + entry.Loc; + } + */ + } + + // Update radar values and colors + int v = GetIntensityValue(lat, lon); + Color c = GetIntensityColor(lat, lon); + if (v > 0) + { + tb_Mouse_Intensity.Text = v.ToString(); + if (c.A == 255) + { + tb_Mouse_Intensity.BackColor = c; + if (v <= 20) + tb_Mouse_Intensity.ForeColor = Color.White; + else + tb_Mouse_Intensity.ForeColor = Color.Black; + } + else + tb_Mouse_Intensity.BackColor = SystemColors.Control; + } + else + { + tb_Mouse_Intensity.Text = ""; + tb_Mouse_Intensity.BackColor = SystemColors.Control; + } + v = GetCloudTopValue(lat, lon); + c = GetCloudTopColor(lat, lon); + if (v > 0) + { + tb_Mouse_CloudTop.Text = v.ToString(); + if (c.A == 255) + tb_Mouse_CloudTop.BackColor = c; + else + tb_Mouse_CloudTop.BackColor = SystemColors.Control; + + } + else + { + tb_Mouse_CloudTop.Text = ""; + tb_Mouse_CloudTop.BackColor = SystemColors.Control; + } + v = GetLightningValue(lat, lon); + c = GetLightningColor(lat, lon); + if (v > 0) + { + tb_Mouse_Lightning.Text = v.ToString(); + if (c.A == 255) + tb_Mouse_Lightning.BackColor = c; + else + tb_Mouse_Lightning.BackColor = SystemColors.Control; + } + else + { + tb_Mouse_Lightning.Text = ""; + tb_Mouse_Lightning.BackColor = SystemColors.Control; + } + } + + private void gm_Main_OnMapDrag() + { + // set the MapDragging flag + MapDragging = true; + } + + private void gm_Main_MouseEnter(object sender, EventArgs e) + { + + } + + private void gm_Main_OnMarkerEnter(GMapMarker item) + { + if (!IsDraggingMarker) + CurrentMarker = item; + } + + private void gm_Main_OnMarkerLeave(GMapMarker item) + { + CurrentMarker = null; + } + + private void bw_Horizons_DoWork(object sender, DoWorkEventArgs e) + { + bw_Horizons.ReportProgress(-2, "Wait for locations complete..."); + + while (!bw_Horizons.CancellationPending) + { + // wait for location update is complete + if ((Status & RAINSCOUTSTATUS.LOCATIONSCOMPLETE) == 0) + { + Thread.Sleep(1000); + continue; + } + + try + { + PropagationHorizonDesignator hor = null; + LocationEntry le = null; + + // calculate my horizon first + bw_Horizons.ReportProgress(-2, "Calculating horizon of " + Properties.Settings.Default.MyCall); + hor = PropagationData.Database.PropagationHorizonFindOrCreate( + bw_Horizons, + Properties.Settings.Default.MyLat, + Properties.Settings.Default.MyLon, + ScoutBase.Elevation.ElevationData.Database[Properties.Settings.Default.MyLat, Properties.Settings.Default.MyLon, Properties.Settings.Default.CurrentElevationModel] + + Properties.Settings.Default.MyHeight, + HorDistance, + Bands.ToGHz(Properties.Settings.Default.CurrentBand), + SphericalEarth.LatLon.Earth.Radius * Properties.Settings.Default.Band_Settings[Properties.Settings.Default.CurrentBand].K_Factor, + Properties.Settings.Default.Band_Settings[Properties.Settings.Default.CurrentBand].F1_Clearance, + ScoutBase.Elevation.ElevationData.Database.GetDefaultStepWidth(Properties.Settings.Default.CurrentElevationModel), + Properties.Settings.Default.CurrentElevationModel, + null); + + if (hor != null) + { + bw_Horizons.ReportProgress(360, le); + } + + // cancel calculation + if (bw_Horizons.CancellationPending) + break; + + + bw_Horizons.ReportProgress(-2, "Getting stations..."); + // calculate horizons of all stations in database + for (int i = 0; i < Locations[Properties.Settings.Default.CurrentBand].Count; i++) + { + lock (Locations) + { + // clone a location entry + try + { + le = Cloning.Clone(Locations[Properties.Settings.Default.CurrentBand].Values.ElementAt(i)); + } + catch (Exception ex) + { + Console.WriteLine(ex.ToString()); + } + + } + + // cancel calculation + if (bw_Horizons.CancellationPending) + break; + + if (le != null) + { + hor = PropagationData.Database.PropagationHorizonFind( + le.Location.Lat, + le.Location.Lon, + ScoutBase.Elevation.ElevationData.Database[le.Location.Lat, le.Location.Lon, Properties.Settings.Default.CurrentElevationModel] + le.QRV.AntennaHeight, + HorDistance, + Bands.ToGHz(le.QRV.Band), + SphericalEarth.LatLon.Earth.Radius * Properties.Settings.Default.Band_Settings[Properties.Settings.Default.CurrentBand].K_Factor, + Properties.Settings.Default.Band_Settings[Properties.Settings.Default.CurrentBand].F1_Clearance, + ScoutBase.Elevation.ElevationData.Database.GetDefaultStepWidth(Properties.Settings.Default.CurrentElevationModel), + Properties.Settings.Default.CurrentElevationModel, + null); + + // cancel calculation + if (bw_Horizons.CancellationPending) + break; + + if (hor == null) + { + bw_Horizons.ReportProgress(-2, "Calculating horizon of " + le.Location.Call); + hor = PropagationData.Database.PropagationHorizonFindOrCreate( + bw_Horizons, + le.Location.Lat, + le.Location.Lon, + ScoutBase.Elevation.ElevationData.Database[le.Location.Lat, le.Location.Lon, Properties.Settings.Default.CurrentElevationModel] + le.QRV.AntennaHeight, + HorDistance, + Bands.ToGHz(le.QRV.Band), + SphericalEarth.LatLon.Earth.Radius * Properties.Settings.Default.Band_Settings[Properties.Settings.Default.CurrentBand].K_Factor, + Properties.Settings.Default.Band_Settings[Properties.Settings.Default.CurrentBand].F1_Clearance, + ScoutBase.Elevation.ElevationData.Database.GetDefaultStepWidth(Properties.Settings.Default.CurrentElevationModel), + Properties.Settings.Default.CurrentElevationModel, + null); + + if (!bw_Horizons.CancellationPending && (hor != null)) + { + bw_Horizons.ReportProgress(360, le); + } + } + } + + // cancel calculation + if (bw_Horizons.CancellationPending) + break; + + Thread.Sleep(100); + } + } + catch (Exception ex) + { + Console.WriteLine(ex.ToString()); + } + } + } + + private void bw_Horizons_ProgressChanged(object sender, ProgressChangedEventArgs e) + { + // use -2 for status messages as -1..359 are occupied with calculation messages + // show status message + if (e.ProgressPercentage <= -2) + { + SayDatabase((string)e.UserState); + } + if (e.ProgressPercentage == -1) + { +// SayDatabase((string)e.UserState); + } + else if ((e.ProgressPercentage >= 0) && (e.ProgressPercentage <= 359)) + { + HorizonPoint hp = (HorizonPoint)e.UserState; + // do nothing with the horizon point so far + } + else if (e.ProgressPercentage == 360) + { + // horizon of one station finished + LocationEntry le = (LocationEntry)e.UserState; + } + + } + + private void bw_Horizons_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) + { + + } + + private void btn_Options_Click(object sender, EventArgs e) + { + OptionsDlg Dlg = new OptionsDlg(this); + if (Dlg.ShowDialog() == System.Windows.Forms.DialogResult.OK) + { + Properties.Settings.Default.Save(); + } + else + { + Properties.Settings.Default.Reload(); + } + } + + private void btn_Map_ZoomOut_Click(object sender, EventArgs e) + { + if (gm_Main.Zoom > gm_Main.MinZoom) + gm_Main.Zoom--; + } + + private void btn_Map_ZoomIn_Click(object sender, EventArgs e) + { + if (gm_Main.Zoom < gm_Main.MaxZoom) + gm_Main.Zoom++; + } + + private void ti_Main_Tick(object sender, EventArgs e) + { + ti_Main.Stop(); + UpdateStatus(); + ti_Main.Start(); + } + + #region bw_Locations + + private void bw_Locations_DoWork(object sender, DoWorkEventArgs e) + { + // get all available locations in the area of interest + bw_Locations.ReportProgress(0, "Initializing location database..."); + + ElevationData.Database.SetDBStatusBit(ELEVATIONMODEL.SRTM3, System.Data.SQLite.DATABASESTATUS.COMPLETE); + + // abort on empty Locations directory + if (Locations == null) + return; + + int count = 0; + List lds = StationData.Database.LocationGetAll( + (double)Properties.Settings.Default.MinLat, + (double)Properties.Settings.Default.MinLon, + (double)Properties.Settings.Default.MaxLat, + (double)Properties.Settings.Default.MaxLon); + foreach (LocationDesignator ld in lds) + { + if (bw_Locations.CancellationPending) + return; + + List qrvs = StationData.Database.QRVFind(ld.Call, ld.Loc); + if (qrvs == null) + continue; + foreach (QRVDesignator qrv in qrvs) + { + if (bw_Locations.CancellationPending) + return; + + if (qrv.Band >= BAND.B2_3G) + { + LocationEntry le = new LocationEntry(); + le.Location = ld; + le.QRV = qrv; + if ((le.Location.Call == "OK2KYK") && (qrv.Band == BAND.B10G)) + { + int k = 0; + } + double dxelv = ScoutBase.Elevation.ElevationData.Database[le.Location.Lat, le.Location.Lon, Properties.Settings.Default.CurrentElevationModel] + qrv.AntennaHeight; + double dxfreq = Bands.ToGHz(qrv.Band); + double re = SphericalEarth.LatLon.Earth.Radius * Properties.Settings.Default.Band_Settings[qrv.Band].K_Factor; + double dxf1clr = Properties.Settings.Default.Band_Settings[qrv.Band].F1_Clearance; + double dxstpw = ScoutBase.Elevation.ElevationData.Database.GetDefaultStepWidth(Properties.Settings.Default.CurrentElevationModel); + ELEVATIONMODEL dxmodel = Properties.Settings.Default.CurrentElevationModel; + // add horizon if already in database + PropagationHorizonDesignator hor = PropagationData.Database.PropagationHorizonFind( + le.Location.Lat, + le.Location.Lon, + dxelv, + HorDistance, + dxfreq, + re, + dxf1clr, + dxstpw, + dxmodel, + null); + if (hor != null) + le.Horizon = hor; + + // report location + bw_Locations.ReportProgress(1, le); + + count++; + + Thread.Sleep(10); + + } + } + } + bw_Locations.ReportProgress(-1, "Initializing location database finished: " + count.ToString() + " locations found."); + bw_Locations.ReportProgress(0, "Finished."); + bw_Locations.ReportProgress(100); + + } + + private void bw_Locations_ProgressChanged(object sender, ProgressChangedEventArgs e) + { + if (e.ProgressPercentage < 0) + { + Say((string)e.UserState); + } + else if (e.ProgressPercentage == 0) + { + SayLocations((string)e.UserState); + } + else if (e.ProgressPercentage == 1) + { + // add location + LocationEntry le = (LocationEntry)e.UserState; + lock (Locations) + { + Locations[le.QRV.Band][le.Location.Call] = le; + } + } + else if (e.ProgressPercentage == 100) + { + // locations complete + Status = Status | RAINSCOUTSTATUS.LOCATIONSCOMPLETE; + } + } + + private void bw_Locations_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) + { + + } + + #endregion + + #region Radar + + private void bw_Radar_DoWork(object sender, DoWorkEventArgs e) + { + int mapsize = 2048; + int update = 60; + + while (!bw_Radar.CancellationPending) + { + bw_Radar.ReportProgress(0, "Getting radar images..."); + // create a new radar map + RadarMap radarmap = new RadarMap(gm_Main, + (double)Properties.Settings.Default.MinLon, + (double)Properties.Settings.Default.MaxLat, + (double)Properties.Settings.Default.MaxLon, + (double)Properties.Settings.Default.MinLat, + mapsize, mapsize); + + // get new radar images + GenericRadar radar = null; + try + { + radar = Radars[Properties.Settings.Default.CurrentRadar]; + } + catch (Exception ex) + { + // radar not found --> do nothing + } + + // return on empty radar + if (radar == null) + return; + + if (radar.HasRadarLayer(RADARLAYER.INTENSITY)) + { + int[,] intensity = radar.GetRadarLayer(RADARLAYER.INTENSITY); + radarmap.ImportIntensity(intensity, radar.Left, radar.Top, radar.Right, radar.Bottom); + } + if (radar.HasRadarLayer(RADARLAYER.CLOUDTOPS)) + { + int[,] cloudtops = radar.GetRadarLayer(RADARLAYER.CLOUDTOPS); + radarmap.ImportCloudTops(cloudtops, radar.Left, radar.Top, radar.Right, radar.Bottom); + } + if (radar.HasRadarLayer(RADARLAYER.LIGHTNING)) + { + int[,] lightning = radar.GetRadarLayer(RADARLAYER.LIGHTNING); + radarmap.ImportLightning(lightning, radar.Left, radar.Top, radar.Right, radar.Bottom); + } + + radarmap.Timestamp = radar.Timestamp; + + bw_Radar.ReportProgress(1, radarmap); + + bw_Radar.ReportProgress(0, "Waiting..."); + int i = 0; + while (!bw_Radar.CancellationPending && (i < update)) + { + Thread.Sleep(1000); + i++; + } + } + } + + private void bw_Radar_ProgressChanged(object sender, ProgressChangedEventArgs e) + { + if (e.ProgressPercentage < 0) + { + SayRadar((string)e.UserState); + } + else if (e.ProgressPercentage == 0) + { + SayRadar((string)e.UserState); + } + else if (e.ProgressPercentage == 1) + { + // update radar + RadarMap = (RadarMap)e.UserState; + UpdateRadarImage(); + } + } + + private void bw_Radar_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) + { + + } + + #endregion + + private void bw_Stations_DoWork(object sender, DoWorkEventArgs e) + { + bw_Stations.ReportProgress(-1, "Calculating stations' visibility of scatter point..."); + foreach (LocationEntry le in Locations[Properties.Settings.Default.CurrentBand].Values) + { + // stop, if cancellation pending + if (bw_Stations.CancellationPending) + break; + + // sleep to keep cpu load low + Thread.Sleep(10); + + try + { + // calculate distance to scp + double dxqrb = SphericalEarth.LatLon.Distance(Properties.Settings.Default.ScpLat, Properties.Settings.Default.ScpLon, le.Location.Lat, le.Location.Lon); + + // continue, if distance to scp is outside bounds (regardless of path) + if (dxqrb < (double)Properties.Settings.Default.Filter_MinDistance) + continue; + if (dxqrb > (double)Properties.Settings.Default.Filter_MaxDistance) + continue; + + // get scp potential + SCPPOTENTIAL potential = GetScpPotential(le); + + SCPPOTENTIAL minpotential = SCPPOTENTIAL.NONELOC; + if (Properties.Settings.Default.Filter_VisibleScpOnly) + { + if ((RadarMap != null) && RadarMap.HasCloudTops && (Properties.Settings.Default.ScpCloudTop > 0)) + { + minpotential = SCPPOTENTIAL.CLOUDTOP; + } + else + { + minpotential = SCPPOTENTIAL.MAXCLOUD; + } + } + if (potential >= minpotential) + { + // send update to main thread + bw_Stations.ReportProgress((int)potential, le); + } + } + catch (Exception ex) + { + Console.WriteLine(ex.Message); + } + } + + bw_Stations.ReportProgress(-1, "Ready."); + } + + private void bw_Stations_ProgressChanged(object sender, ProgressChangedEventArgs e) + { + if (e.ProgressPercentage == -1) + { + Say((string)e.UserState); + } + else if (e.ProgressPercentage >= 0) + { + SCPPOTENTIAL potential = (SCPPOTENTIAL)e.ProgressPercentage; + LocationEntry le = (LocationEntry)e.UserState; + + // create Marker + try + { + // create marker if enabled + GMarkerGoogleType type = GetSmallMarkerFromScpPotential(potential); + GMarkerGoogle dxm = new GMarkerGoogle(new PointLatLng(le.Location.Lat, le.Location.Lon), type); + dxm.Tag = le.Location.Call; + dxm.ToolTipMode = MarkerTooltipMode.OnMouseOver; + dxm.ToolTipText = le.Location.Call + "\n\nLat: " + le.Location.Lat.ToString("F8") + "\nLon: " + le.Location.Lon.ToString("F8") + "\nLoc: " + le.Location.Loc; + gm_dxstations.Markers.Add(dxm); + } + catch (Exception ex) + { + Console.WriteLine(le.Location.Call + ":" + ex.Message); + } + } + + } + + private void bw_Stations_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) + { + + } + + private void cb_Band_SelectedIndexChanged(object sender, EventArgs e) + { + if (!Loaded) + return; + try + { + Properties.Settings.Default.CurrentBand = (BAND)cb_Band.SelectedValue; + Properties.Settings.Default.Save(); + BandChanged(); + } + catch + { + // do nothing + } + } + + private void cb_Radar_SelectedIndexChanged(object sender, EventArgs e) + { + if (!Loaded) + return; + try + { + string radar = (string)cb_Radar.SelectedItem; + Properties.Settings.Default.CurrentRadar = radar; + Properties.Settings.Default.Save(); + RadarChanged(); + } + catch + { + // do nothing + } + } + + private void btn_scp_Clear_Click(object sender, EventArgs e) + { + ClearScp(); + } + + private void cb_ElevationModel_SelectedIndexChanged(object sender, EventArgs e) + { + if (!Loaded) + return; + try + { + Properties.Settings.Default.CurrentElevationModel = (ELEVATIONMODEL)cb_ElevationModel.SelectedValue; + Properties.Settings.Default.Save(); + ElevationModelChanged(); + } + catch + { + // do nothing + } + } + + private void cb_Map_Bounds_CheckedChanged(object sender, EventArgs e) + { + gm_bounds.IsVisibile = cb_Map_Bounds.Checked; + } + + private void cb_Map_Distances_CheckedChanged(object sender, EventArgs e) + { + gm_distances.IsVisibile = cb_Map_Distances.Checked; + } + + private void cb_Map_Horizons_CheckedChanged(object sender, EventArgs e) + { + gm_horizons.IsVisibile = cb_Map_Horizons.Checked; + } + + private void cb_Map_Intensity_CheckedChanged(object sender, EventArgs e) + { + gm_intensity.IsVisibile = cb_Map_Intensity.Checked; + } + + private void cb_Map_CloudTops_CheckedChanged(object sender, EventArgs e) + { + gm_cloudtops.IsVisibile = cb_Map_CloudTops.Checked; + } + + private void cb_Map_Lightning_CheckedChanged(object sender, EventArgs e) + { + gm_lightning.IsVisibile = cb_Map_Lightning.Checked; + } + + + #region StationDatabaseUpdater + + private void bw_StationDatabaseUpdater_ProgressChanged(object sender, ProgressChangedEventArgs e) + { + try + { + if (e.ProgressPercentage < 0) + { + // error message received + Say((string)e.UserState); + } + else if (e.ProgressPercentage == 0) + { + // status message received + string msg = (string)e.UserState; + SayDatabase(msg); + } + else if (e.ProgressPercentage == 1) + { + Properties.Settings.Default.StationsDatabase_Status = (DATABASESTATUS)e.UserState; + Color color = DatabaseStatus.GetDatabaseStatusColor(Properties.Settings.Default.StationsDatabase_Status); + if (tsl_Database_LED_Stations.BackColor != color) + tsl_Database_LED_Stations.BackColor = color; + string text = "Stations Database Status\n\n" + DatabaseStatus.GetDatabaseStatusText(Properties.Settings.Default.StationsDatabase_Status); + if (tsl_Database_LED_Stations.ToolTipText != text) + tsl_Database_LED_Stations.ToolTipText = text; + } + if (!this.Disposing && (ss_Main != null)) + ss_Main.Update(); + } + catch (Exception ex) + { + Say(ex.ToString()); + } + } + + private void bw_StationDatabaseUpdater_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) + { + } + + #endregion + + #region ElevationDatabaseUpdater + + private void bw_ElevationDatabaseUpdater_ProgressChanged(object sender, ProgressChangedEventArgs e) + { + try + { + if (e.ProgressPercentage < 0) + { + // error message received + Say((string)e.UserState); + } + else if (e.ProgressPercentage == 0) + { + // status message received + string msg = (string)e.UserState; + SayDatabase(msg); + } + else if (e.ProgressPercentage == 1) + { + // database status update message received + if (sender == this.bw_GLOBEUpdater) + { + Properties.Settings.Default.Elevation_GLOBE_DatabaseStatus = (DATABASESTATUS)e.UserState; + Color color = DatabaseStatus.GetDatabaseStatusColor(Properties.Settings.Default.Elevation_GLOBE_DatabaseStatus); + if (tsl_Database_LED_GLOBE.BackColor != color) + tsl_Database_LED_GLOBE.BackColor = color; + string text = "GLOBE Database Status\n\n" + DatabaseStatus.GetDatabaseStatusText(Properties.Settings.Default.Elevation_GLOBE_DatabaseStatus); + if (tsl_Database_LED_GLOBE.ToolTipText != text) + tsl_Database_LED_GLOBE.ToolTipText = text; + } + else if (sender == this.bw_SRTM3Updater) + { + Properties.Settings.Default.Elevation_SRTM3_DatabaseStatus = (DATABASESTATUS)e.UserState; + Color color = DatabaseStatus.GetDatabaseStatusColor(Properties.Settings.Default.Elevation_SRTM3_DatabaseStatus); + if (tsl_Database_LED_SRTM3.BackColor != color) + tsl_Database_LED_SRTM3.BackColor = color; + string text = "SRTM3 Database Status\n\n" + DatabaseStatus.GetDatabaseStatusText(Properties.Settings.Default.Elevation_SRTM3_DatabaseStatus); + if (tsl_Database_LED_SRTM3.ToolTipText != text) + tsl_Database_LED_SRTM3.ToolTipText = text; + } + else if (sender == this.bw_SRTM1Updater) + { + Properties.Settings.Default.Elevation_SRTM1_DatabaseStatus = (DATABASESTATUS)e.UserState; + Color color = DatabaseStatus.GetDatabaseStatusColor(Properties.Settings.Default.Elevation_SRTM1_DatabaseStatus); + if (tsl_Database_LED_SRTM1.BackColor != color) + tsl_Database_LED_SRTM1.BackColor = color; + string text = "SRTM1 Database Status\n\n" + DatabaseStatus.GetDatabaseStatusText(Properties.Settings.Default.Elevation_SRTM1_DatabaseStatus); + if (tsl_Database_LED_SRTM1.ToolTipText != text) + tsl_Database_LED_SRTM1.ToolTipText = text; + } + } + if (!this.Disposing && (ss_Main != null)) + ss_Main.Update(); + } + catch (Exception ex) + { + Say(ex.ToString()); + } + } + + + #endregion + } + +} diff --git a/RainScout/MainDlg.resx b/RainScout/MainDlg.resx new file mode 100644 index 0000000..ecb61fb --- /dev/null +++ b/RainScout/MainDlg.resx @@ -0,0 +1,163 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 119, 17 + + + + + iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAIAAABLbSncAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + wwAADsMBx2+oZAAAABBJREFUGFdjqMcBhpREfT0AN/NfQdTsp04AAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAIAAABLbSncAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + wwAADsMBx2+oZAAAABBJREFUGFdjqMcBhpREfT0AN/NfQdTsp04AAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAIAAABLbSncAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + wwAADsMBx2+oZAAAABBJREFUGFdjqMcBhpREfT0AN/NfQdTsp04AAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAIAAABLbSncAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + wwAADsMBx2+oZAAAABBJREFUGFdjqMcBhpREfT0AN/NfQdTsp04AAAAASUVORK5CYII= + + + + 213, 17 + + + 334, 17 + + + 425, 17 + + + 542, 17 + + + 667, 17 + + \ No newline at end of file diff --git a/RainScout/OptionsDlg.Designer.cs b/RainScout/OptionsDlg.Designer.cs new file mode 100644 index 0000000..740cae5 --- /dev/null +++ b/RainScout/OptionsDlg.Designer.cs @@ -0,0 +1,718 @@ +namespace RainScout +{ + partial class OptionsDlg + { + /// + /// Erforderliche Designervariable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Verwendete Ressourcen bereinigen. + /// + /// True, wenn verwaltete Ressourcen gelöscht werden sollen; andernfalls False. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Vom Windows Form-Designer generierter Code + + /// + /// Erforderliche Methode für die Designerunterstützung. + /// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden. + /// + private void InitializeComponent() + { + this.tc_Main = new System.Windows.Forms.TabControl(); + this.tp_General = new System.Windows.Forms.TabPage(); + this.tp_Stations = new System.Windows.Forms.TabPage(); + this.btn_Options_Stations_Update = new System.Windows.Forms.Button(); + this.groupBox2 = new System.Windows.Forms.GroupBox(); + this.cb_Options_Stations_5760M = new System.Windows.Forms.CheckBox(); + this.cb_Options_Stations_76G = new System.Windows.Forms.CheckBox(); + this.cb_Options_Stations_47G = new System.Windows.Forms.CheckBox(); + this.cb_Options_Stations_24G = new System.Windows.Forms.CheckBox(); + this.cb_Options_Stations_10G = new System.Windows.Forms.CheckBox(); + this.cb_Options_Stations_3400M = new System.Windows.Forms.CheckBox(); + this.cb_Options_Stations_2320M = new System.Windows.Forms.CheckBox(); + this.cb_Options_Stations_1296M = new System.Windows.Forms.CheckBox(); + this.cb_Options_Stations_432M = new System.Windows.Forms.CheckBox(); + this.cb_Options_Stations_144M = new System.Windows.Forms.CheckBox(); + this.cb_Options_Stations_70M = new System.Windows.Forms.CheckBox(); + this.cb_Options_Stations_50M = new System.Windows.Forms.CheckBox(); + this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.label6 = new System.Windows.Forms.Label(); + this.tb_Options_Stations_Height = new System.Windows.Forms.TextBox(); + this.label5 = new System.Windows.Forms.Label(); + this.tb_Options_Stations_Elevation = new System.Windows.Forms.TextBox(); + this.label4 = new System.Windows.Forms.Label(); + this.tb_Options_Stations_Loc = new System.Windows.Forms.TextBox(); + this.label3 = new System.Windows.Forms.Label(); + this.tb_Options_Stations_Lon = new System.Windows.Forms.TextBox(); + this.label2 = new System.Windows.Forms.Label(); + this.tb_Options_Stations_Lat = new System.Windows.Forms.TextBox(); + this.label1 = new System.Windows.Forms.Label(); + this.tb_Options_Stations_Call = new System.Windows.Forms.TextBox(); + this.tc_Scatter = new System.Windows.Forms.TabPage(); + this.tb_Options_Scatter_MaxAngle = new System.Windows.Forms.TextBox(); + this.label9 = new System.Windows.Forms.Label(); + this.tb_Options_Scatter_MaxHeight = new System.Windows.Forms.TextBox(); + this.label8 = new System.Windows.Forms.Label(); + this.tb_Options_Scatter_MinHeight = new System.Windows.Forms.TextBox(); + this.label7 = new System.Windows.Forms.Label(); + this.btn_OK = new System.Windows.Forms.Button(); + this.btn_Cancel = new System.Windows.Forms.Button(); + this.ud_MinLat = new System.Windows.Forms.NumericUpDown(); + this.label10 = new System.Windows.Forms.Label(); + this.label11 = new System.Windows.Forms.Label(); + this.ud_MaxLon = new System.Windows.Forms.NumericUpDown(); + this.label12 = new System.Windows.Forms.Label(); + this.ud_MaxLat = new System.Windows.Forms.NumericUpDown(); + this.label13 = new System.Windows.Forms.Label(); + this.ud_MinLon = new System.Windows.Forms.NumericUpDown(); + this.tc_Main.SuspendLayout(); + this.tp_General.SuspendLayout(); + this.tp_Stations.SuspendLayout(); + this.groupBox2.SuspendLayout(); + this.groupBox1.SuspendLayout(); + this.tc_Scatter.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.ud_MinLat)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.ud_MaxLon)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.ud_MaxLat)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.ud_MinLon)).BeginInit(); + this.SuspendLayout(); + // + // tc_Main + // + this.tc_Main.Controls.Add(this.tp_General); + this.tc_Main.Controls.Add(this.tp_Stations); + this.tc_Main.Controls.Add(this.tc_Scatter); + this.tc_Main.Location = new System.Drawing.Point(12, 12); + this.tc_Main.Name = "tc_Main"; + this.tc_Main.SelectedIndex = 0; + this.tc_Main.Size = new System.Drawing.Size(592, 403); + this.tc_Main.TabIndex = 0; + // + // tp_General + // + this.tp_General.BackColor = System.Drawing.SystemColors.Control; + this.tp_General.Controls.Add(this.label13); + this.tp_General.Controls.Add(this.ud_MinLon); + this.tp_General.Controls.Add(this.label12); + this.tp_General.Controls.Add(this.ud_MaxLat); + this.tp_General.Controls.Add(this.label11); + this.tp_General.Controls.Add(this.ud_MaxLon); + this.tp_General.Controls.Add(this.label10); + this.tp_General.Controls.Add(this.ud_MinLat); + this.tp_General.Location = new System.Drawing.Point(4, 22); + this.tp_General.Name = "tp_General"; + this.tp_General.Padding = new System.Windows.Forms.Padding(3); + this.tp_General.Size = new System.Drawing.Size(584, 377); + this.tp_General.TabIndex = 0; + this.tp_General.Text = "General"; + // + // tp_Stations + // + this.tp_Stations.BackColor = System.Drawing.SystemColors.Control; + this.tp_Stations.Controls.Add(this.btn_Options_Stations_Update); + this.tp_Stations.Controls.Add(this.groupBox2); + this.tp_Stations.Controls.Add(this.groupBox1); + this.tp_Stations.Location = new System.Drawing.Point(4, 22); + this.tp_Stations.Name = "tp_Stations"; + this.tp_Stations.Padding = new System.Windows.Forms.Padding(3); + this.tp_Stations.Size = new System.Drawing.Size(584, 377); + this.tp_Stations.TabIndex = 1; + this.tp_Stations.Text = "Stations"; + this.tp_Stations.Enter += new System.EventHandler(this.tp_Stations_Enter); + // + // btn_Options_Stations_Update + // + this.btn_Options_Stations_Update.Location = new System.Drawing.Point(468, 42); + this.btn_Options_Stations_Update.Name = "btn_Options_Stations_Update"; + this.btn_Options_Stations_Update.Size = new System.Drawing.Size(84, 20); + this.btn_Options_Stations_Update.TabIndex = 14; + this.btn_Options_Stations_Update.Text = "Update"; + this.btn_Options_Stations_Update.UseVisualStyleBackColor = true; + this.btn_Options_Stations_Update.Click += new System.EventHandler(this.btn_Options_Stations_Update_Click); + // + // groupBox2 + // + this.groupBox2.Controls.Add(this.cb_Options_Stations_5760M); + this.groupBox2.Controls.Add(this.cb_Options_Stations_76G); + this.groupBox2.Controls.Add(this.cb_Options_Stations_47G); + this.groupBox2.Controls.Add(this.cb_Options_Stations_24G); + this.groupBox2.Controls.Add(this.cb_Options_Stations_10G); + this.groupBox2.Controls.Add(this.cb_Options_Stations_3400M); + this.groupBox2.Controls.Add(this.cb_Options_Stations_2320M); + this.groupBox2.Controls.Add(this.cb_Options_Stations_1296M); + this.groupBox2.Controls.Add(this.cb_Options_Stations_432M); + this.groupBox2.Controls.Add(this.cb_Options_Stations_144M); + this.groupBox2.Controls.Add(this.cb_Options_Stations_70M); + this.groupBox2.Controls.Add(this.cb_Options_Stations_50M); + this.groupBox2.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic))), System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.groupBox2.Location = new System.Drawing.Point(6, 218); + this.groupBox2.Name = "groupBox2"; + this.groupBox2.Size = new System.Drawing.Size(279, 136); + this.groupBox2.TabIndex = 13; + this.groupBox2.TabStop = false; + this.groupBox2.Text = "QRV"; + // + // cb_Options_Stations_5760M + // + this.cb_Options_Stations_5760M.AutoSize = true; + this.cb_Options_Stations_5760M.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_Stations_5760M.Location = new System.Drawing.Point(113, 106); + this.cb_Options_Stations_5760M.Name = "cb_Options_Stations_5760M"; + this.cb_Options_Stations_5760M.Size = new System.Drawing.Size(62, 17); + this.cb_Options_Stations_5760M.TabIndex = 11; + this.cb_Options_Stations_5760M.Text = "5.7GHz"; + this.cb_Options_Stations_5760M.UseVisualStyleBackColor = true; + // + // cb_Options_Stations_76G + // + this.cb_Options_Stations_76G.AutoSize = true; + this.cb_Options_Stations_76G.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_Stations_76G.Location = new System.Drawing.Point(207, 108); + this.cb_Options_Stations_76G.Name = "cb_Options_Stations_76G"; + this.cb_Options_Stations_76G.Size = new System.Drawing.Size(59, 17); + this.cb_Options_Stations_76G.TabIndex = 10; + this.cb_Options_Stations_76G.Text = "76GHz"; + this.cb_Options_Stations_76G.UseVisualStyleBackColor = true; + // + // cb_Options_Stations_47G + // + this.cb_Options_Stations_47G.AutoSize = true; + this.cb_Options_Stations_47G.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_Stations_47G.Location = new System.Drawing.Point(207, 83); + this.cb_Options_Stations_47G.Name = "cb_Options_Stations_47G"; + this.cb_Options_Stations_47G.Size = new System.Drawing.Size(59, 17); + this.cb_Options_Stations_47G.TabIndex = 9; + this.cb_Options_Stations_47G.Text = "47GHz"; + this.cb_Options_Stations_47G.UseVisualStyleBackColor = true; + // + // cb_Options_Stations_24G + // + this.cb_Options_Stations_24G.AutoSize = true; + this.cb_Options_Stations_24G.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_Stations_24G.Location = new System.Drawing.Point(207, 56); + this.cb_Options_Stations_24G.Name = "cb_Options_Stations_24G"; + this.cb_Options_Stations_24G.Size = new System.Drawing.Size(59, 17); + this.cb_Options_Stations_24G.TabIndex = 8; + this.cb_Options_Stations_24G.Text = "24GHz"; + this.cb_Options_Stations_24G.UseVisualStyleBackColor = true; + // + // cb_Options_Stations_10G + // + this.cb_Options_Stations_10G.AutoSize = true; + this.cb_Options_Stations_10G.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_Stations_10G.Location = new System.Drawing.Point(207, 27); + this.cb_Options_Stations_10G.Name = "cb_Options_Stations_10G"; + this.cb_Options_Stations_10G.Size = new System.Drawing.Size(59, 17); + this.cb_Options_Stations_10G.TabIndex = 7; + this.cb_Options_Stations_10G.Text = "10GHz"; + this.cb_Options_Stations_10G.UseVisualStyleBackColor = true; + // + // cb_Options_Stations_3400M + // + this.cb_Options_Stations_3400M.AutoSize = true; + this.cb_Options_Stations_3400M.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_Stations_3400M.Location = new System.Drawing.Point(113, 79); + this.cb_Options_Stations_3400M.Name = "cb_Options_Stations_3400M"; + this.cb_Options_Stations_3400M.Size = new System.Drawing.Size(62, 17); + this.cb_Options_Stations_3400M.TabIndex = 6; + this.cb_Options_Stations_3400M.Text = "3.4GHz"; + this.cb_Options_Stations_3400M.UseVisualStyleBackColor = true; + // + // cb_Options_Stations_2320M + // + this.cb_Options_Stations_2320M.AutoSize = true; + this.cb_Options_Stations_2320M.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_Stations_2320M.Location = new System.Drawing.Point(113, 53); + this.cb_Options_Stations_2320M.Name = "cb_Options_Stations_2320M"; + this.cb_Options_Stations_2320M.Size = new System.Drawing.Size(62, 17); + this.cb_Options_Stations_2320M.TabIndex = 5; + this.cb_Options_Stations_2320M.Text = "2.3GHz"; + this.cb_Options_Stations_2320M.UseVisualStyleBackColor = true; + // + // cb_Options_Stations_1296M + // + this.cb_Options_Stations_1296M.AutoSize = true; + this.cb_Options_Stations_1296M.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_Stations_1296M.Location = new System.Drawing.Point(113, 27); + this.cb_Options_Stations_1296M.Name = "cb_Options_Stations_1296M"; + this.cb_Options_Stations_1296M.Size = new System.Drawing.Size(62, 17); + this.cb_Options_Stations_1296M.TabIndex = 4; + this.cb_Options_Stations_1296M.Text = "1.2GHz"; + this.cb_Options_Stations_1296M.UseVisualStyleBackColor = true; + // + // cb_Options_Stations_432M + // + this.cb_Options_Stations_432M.AutoSize = true; + this.cb_Options_Stations_432M.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_Stations_432M.Location = new System.Drawing.Point(21, 108); + this.cb_Options_Stations_432M.Name = "cb_Options_Stations_432M"; + this.cb_Options_Stations_432M.Size = new System.Drawing.Size(64, 17); + this.cb_Options_Stations_432M.TabIndex = 3; + this.cb_Options_Stations_432M.Text = "432Mhz"; + this.cb_Options_Stations_432M.UseVisualStyleBackColor = true; + // + // cb_Options_Stations_144M + // + this.cb_Options_Stations_144M.AutoSize = true; + this.cb_Options_Stations_144M.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_Stations_144M.Location = new System.Drawing.Point(21, 83); + this.cb_Options_Stations_144M.Name = "cb_Options_Stations_144M"; + this.cb_Options_Stations_144M.Size = new System.Drawing.Size(64, 17); + this.cb_Options_Stations_144M.TabIndex = 2; + this.cb_Options_Stations_144M.Text = "144Mhz"; + this.cb_Options_Stations_144M.UseVisualStyleBackColor = true; + // + // cb_Options_Stations_70M + // + this.cb_Options_Stations_70M.AutoSize = true; + this.cb_Options_Stations_70M.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_Stations_70M.Location = new System.Drawing.Point(21, 56); + this.cb_Options_Stations_70M.Name = "cb_Options_Stations_70M"; + this.cb_Options_Stations_70M.Size = new System.Drawing.Size(58, 17); + this.cb_Options_Stations_70M.TabIndex = 1; + this.cb_Options_Stations_70M.Text = "70Mhz"; + this.cb_Options_Stations_70M.UseVisualStyleBackColor = true; + // + // cb_Options_Stations_50M + // + this.cb_Options_Stations_50M.AutoSize = true; + this.cb_Options_Stations_50M.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cb_Options_Stations_50M.Location = new System.Drawing.Point(21, 27); + this.cb_Options_Stations_50M.Name = "cb_Options_Stations_50M"; + this.cb_Options_Stations_50M.Size = new System.Drawing.Size(58, 17); + this.cb_Options_Stations_50M.TabIndex = 0; + this.cb_Options_Stations_50M.Text = "50Mhz"; + this.cb_Options_Stations_50M.UseVisualStyleBackColor = true; + // + // groupBox1 + // + this.groupBox1.Controls.Add(this.label6); + this.groupBox1.Controls.Add(this.tb_Options_Stations_Height); + this.groupBox1.Controls.Add(this.label5); + this.groupBox1.Controls.Add(this.tb_Options_Stations_Elevation); + this.groupBox1.Controls.Add(this.label4); + this.groupBox1.Controls.Add(this.tb_Options_Stations_Loc); + this.groupBox1.Controls.Add(this.label3); + this.groupBox1.Controls.Add(this.tb_Options_Stations_Lon); + this.groupBox1.Controls.Add(this.label2); + this.groupBox1.Controls.Add(this.tb_Options_Stations_Lat); + this.groupBox1.Controls.Add(this.label1); + this.groupBox1.Controls.Add(this.tb_Options_Stations_Call); + this.groupBox1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic))), System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.groupBox1.Location = new System.Drawing.Point(6, 18); + this.groupBox1.Name = "groupBox1"; + this.groupBox1.Size = new System.Drawing.Size(279, 194); + this.groupBox1.TabIndex = 12; + this.groupBox1.TabStop = false; + this.groupBox1.Text = "Geographical"; + // + // label6 + // + this.label6.AutoSize = true; + this.label6.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label6.Location = new System.Drawing.Point(18, 161); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(84, 13); + this.label6.TabIndex = 23; + this.label6.Text = "Antenna Height:"; + // + // tb_Options_Stations_Height + // + this.tb_Options_Stations_Height.CharacterCasing = System.Windows.Forms.CharacterCasing.Upper; + this.tb_Options_Stations_Height.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_Options_Stations_Height.Location = new System.Drawing.Point(116, 158); + this.tb_Options_Stations_Height.Name = "tb_Options_Stations_Height"; + this.tb_Options_Stations_Height.Size = new System.Drawing.Size(134, 20); + this.tb_Options_Stations_Height.TabIndex = 22; + this.tb_Options_Stations_Height.TextChanged += new System.EventHandler(this.tb_Options_Stations_Height_TextChanged); + // + // label5 + // + this.label5.AutoSize = true; + this.label5.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label5.Location = new System.Drawing.Point(18, 135); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(54, 13); + this.label5.TabIndex = 21; + this.label5.Text = "Elevation:"; + // + // tb_Options_Stations_Elevation + // + this.tb_Options_Stations_Elevation.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_Options_Stations_Elevation.Location = new System.Drawing.Point(116, 132); + this.tb_Options_Stations_Elevation.Name = "tb_Options_Stations_Elevation"; + this.tb_Options_Stations_Elevation.ReadOnly = true; + this.tb_Options_Stations_Elevation.Size = new System.Drawing.Size(134, 20); + this.tb_Options_Stations_Elevation.TabIndex = 20; + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label4.Location = new System.Drawing.Point(18, 109); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(46, 13); + this.label4.TabIndex = 19; + this.label4.Text = "Locator:"; + // + // tb_Options_Stations_Loc + // + this.tb_Options_Stations_Loc.CharacterCasing = System.Windows.Forms.CharacterCasing.Upper; + this.tb_Options_Stations_Loc.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_Options_Stations_Loc.Location = new System.Drawing.Point(116, 106); + this.tb_Options_Stations_Loc.Name = "tb_Options_Stations_Loc"; + this.tb_Options_Stations_Loc.Size = new System.Drawing.Size(134, 20); + this.tb_Options_Stations_Loc.TabIndex = 18; + this.tb_Options_Stations_Loc.Text = "JO50IW"; + this.tb_Options_Stations_Loc.TextChanged += new System.EventHandler(this.tb_Options_Stations_Loc_TextChanged); + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label3.Location = new System.Drawing.Point(18, 83); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(57, 13); + this.label3.TabIndex = 17; + this.label3.Text = "Longitude:"; + // + // tb_Options_Stations_Lon + // + this.tb_Options_Stations_Lon.CharacterCasing = System.Windows.Forms.CharacterCasing.Upper; + this.tb_Options_Stations_Lon.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_Options_Stations_Lon.Location = new System.Drawing.Point(116, 80); + this.tb_Options_Stations_Lon.Name = "tb_Options_Stations_Lon"; + this.tb_Options_Stations_Lon.Size = new System.Drawing.Size(134, 20); + this.tb_Options_Stations_Lon.TabIndex = 16; + this.tb_Options_Stations_Lon.TextChanged += new System.EventHandler(this.tb_Options_Stations_Lon_TextChanged); + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label2.Location = new System.Drawing.Point(18, 57); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(48, 13); + this.label2.TabIndex = 15; + this.label2.Text = "Latitude:"; + // + // tb_Options_Stations_Lat + // + this.tb_Options_Stations_Lat.CharacterCasing = System.Windows.Forms.CharacterCasing.Upper; + this.tb_Options_Stations_Lat.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_Options_Stations_Lat.Location = new System.Drawing.Point(116, 54); + this.tb_Options_Stations_Lat.Name = "tb_Options_Stations_Lat"; + this.tb_Options_Stations_Lat.Size = new System.Drawing.Size(134, 20); + this.tb_Options_Stations_Lat.TabIndex = 14; + this.tb_Options_Stations_Lat.TextChanged += new System.EventHandler(this.tb_Options_Stations_Lat_TextChanged); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.label1.Location = new System.Drawing.Point(18, 31); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(49, 13); + this.label1.TabIndex = 13; + this.label1.Text = "Call sign:"; + // + // tb_Options_Stations_Call + // + this.tb_Options_Stations_Call.CharacterCasing = System.Windows.Forms.CharacterCasing.Upper; + this.tb_Options_Stations_Call.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tb_Options_Stations_Call.Location = new System.Drawing.Point(116, 28); + this.tb_Options_Stations_Call.Name = "tb_Options_Stations_Call"; + this.tb_Options_Stations_Call.Size = new System.Drawing.Size(134, 20); + this.tb_Options_Stations_Call.TabIndex = 12; + this.tb_Options_Stations_Call.Text = "DL2ALF"; + this.tb_Options_Stations_Call.TextChanged += new System.EventHandler(this.tb_Options_Stations_Call_TextChanged); + // + // tc_Scatter + // + this.tc_Scatter.BackColor = System.Drawing.SystemColors.Control; + this.tc_Scatter.Controls.Add(this.tb_Options_Scatter_MaxAngle); + this.tc_Scatter.Controls.Add(this.label9); + this.tc_Scatter.Controls.Add(this.tb_Options_Scatter_MaxHeight); + this.tc_Scatter.Controls.Add(this.label8); + this.tc_Scatter.Controls.Add(this.tb_Options_Scatter_MinHeight); + this.tc_Scatter.Controls.Add(this.label7); + this.tc_Scatter.Location = new System.Drawing.Point(4, 22); + this.tc_Scatter.Name = "tc_Scatter"; + this.tc_Scatter.Padding = new System.Windows.Forms.Padding(3); + this.tc_Scatter.Size = new System.Drawing.Size(584, 377); + this.tc_Scatter.TabIndex = 2; + this.tc_Scatter.Text = "Scatter"; + this.tc_Scatter.Enter += new System.EventHandler(this.tc_Scatter_Enter); + // + // tb_Options_Scatter_MaxAngle + // + this.tb_Options_Scatter_MaxAngle.Location = new System.Drawing.Point(122, 86); + this.tb_Options_Scatter_MaxAngle.Name = "tb_Options_Scatter_MaxAngle"; + this.tb_Options_Scatter_MaxAngle.Size = new System.Drawing.Size(100, 20); + this.tb_Options_Scatter_MaxAngle.TabIndex = 5; + this.tb_Options_Scatter_MaxAngle.TextChanged += new System.EventHandler(this.tb_Options_Scatter_MaxAngle_TextChanged); + // + // label9 + // + this.label9.AutoSize = true; + this.label9.Location = new System.Drawing.Point(15, 89); + this.label9.Name = "label9"; + this.label9.Size = new System.Drawing.Size(97, 13); + this.label9.TabIndex = 4; + this.label9.Text = "Scatter Max Angle:"; + // + // tb_Options_Scatter_MaxHeight + // + this.tb_Options_Scatter_MaxHeight.Location = new System.Drawing.Point(122, 57); + this.tb_Options_Scatter_MaxHeight.Name = "tb_Options_Scatter_MaxHeight"; + this.tb_Options_Scatter_MaxHeight.Size = new System.Drawing.Size(100, 20); + this.tb_Options_Scatter_MaxHeight.TabIndex = 3; + this.tb_Options_Scatter_MaxHeight.TextChanged += new System.EventHandler(this.tb_Options_Scatter_MaxHeight_TextChanged); + // + // label8 + // + this.label8.AutoSize = true; + this.label8.Location = new System.Drawing.Point(15, 60); + this.label8.Name = "label8"; + this.label8.Size = new System.Drawing.Size(101, 13); + this.label8.TabIndex = 2; + this.label8.Text = "Scatter Max Height:"; + // + // tb_Options_Scatter_MinHeight + // + this.tb_Options_Scatter_MinHeight.Location = new System.Drawing.Point(122, 31); + this.tb_Options_Scatter_MinHeight.Name = "tb_Options_Scatter_MinHeight"; + this.tb_Options_Scatter_MinHeight.Size = new System.Drawing.Size(100, 20); + this.tb_Options_Scatter_MinHeight.TabIndex = 1; + this.tb_Options_Scatter_MinHeight.TextChanged += new System.EventHandler(this.tb_Options_Scatter_MinHeight_TextChanged); + // + // label7 + // + this.label7.AutoSize = true; + this.label7.Location = new System.Drawing.Point(15, 34); + this.label7.Name = "label7"; + this.label7.Size = new System.Drawing.Size(98, 13); + this.label7.TabIndex = 0; + this.label7.Text = "Scatter Min Height:"; + // + // btn_OK + // + this.btn_OK.DialogResult = System.Windows.Forms.DialogResult.OK; + this.btn_OK.Location = new System.Drawing.Point(647, 63); + this.btn_OK.Name = "btn_OK"; + this.btn_OK.Size = new System.Drawing.Size(75, 23); + this.btn_OK.TabIndex = 1; + this.btn_OK.Text = "OK"; + this.btn_OK.UseVisualStyleBackColor = true; + // + // btn_Cancel + // + this.btn_Cancel.DialogResult = System.Windows.Forms.DialogResult.Cancel; + this.btn_Cancel.Location = new System.Drawing.Point(647, 104); + this.btn_Cancel.Name = "btn_Cancel"; + this.btn_Cancel.Size = new System.Drawing.Size(75, 23); + this.btn_Cancel.TabIndex = 2; + this.btn_Cancel.Text = "Cancel"; + this.btn_Cancel.UseVisualStyleBackColor = true; + // + // ud_MinLat + // + this.ud_MinLat.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::RainScout.Properties.Settings.Default, "MinLat", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.ud_MinLat.Location = new System.Drawing.Point(505, 244); + this.ud_MinLat.Maximum = new decimal(new int[] { + 90, + 0, + 0, + 0}); + this.ud_MinLat.Minimum = new decimal(new int[] { + 90, + 0, + 0, + -2147483648}); + this.ud_MinLat.Name = "ud_MinLat"; + this.ud_MinLat.Size = new System.Drawing.Size(51, 20); + this.ud_MinLat.TabIndex = 0; + this.ud_MinLat.Value = global::RainScout.Properties.Settings.Default.MinLat; + // + // label10 + // + this.label10.AutoSize = true; + this.label10.Location = new System.Drawing.Point(435, 246); + this.label10.Name = "label10"; + this.label10.Size = new System.Drawing.Size(42, 13); + this.label10.TabIndex = 1; + this.label10.Text = "MinLat:"; + // + // label11 + // + this.label11.AutoSize = true; + this.label11.Location = new System.Drawing.Point(435, 324); + this.label11.Name = "label11"; + this.label11.Size = new System.Drawing.Size(48, 13); + this.label11.TabIndex = 3; + this.label11.Text = "MaxLon:"; + // + // ud_MaxLon + // + this.ud_MaxLon.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::RainScout.Properties.Settings.Default, "MaxLon", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.ud_MaxLon.Location = new System.Drawing.Point(505, 322); + this.ud_MaxLon.Maximum = new decimal(new int[] { + 180, + 0, + 0, + 0}); + this.ud_MaxLon.Minimum = new decimal(new int[] { + 180, + 0, + 0, + -2147483648}); + this.ud_MaxLon.Name = "ud_MaxLon"; + this.ud_MaxLon.Size = new System.Drawing.Size(51, 20); + this.ud_MaxLon.TabIndex = 2; + this.ud_MaxLon.Value = global::RainScout.Properties.Settings.Default.MaxLon; + // + // label12 + // + this.label12.AutoSize = true; + this.label12.Location = new System.Drawing.Point(435, 298); + this.label12.Name = "label12"; + this.label12.Size = new System.Drawing.Size(45, 13); + this.label12.TabIndex = 5; + this.label12.Text = "MaxLat:"; + // + // ud_MaxLat + // + this.ud_MaxLat.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::RainScout.Properties.Settings.Default, "MaxLat", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.ud_MaxLat.Location = new System.Drawing.Point(505, 296); + this.ud_MaxLat.Maximum = new decimal(new int[] { + 90, + 0, + 0, + 0}); + this.ud_MaxLat.Minimum = new decimal(new int[] { + 90, + 0, + 0, + -2147483648}); + this.ud_MaxLat.Name = "ud_MaxLat"; + this.ud_MaxLat.Size = new System.Drawing.Size(51, 20); + this.ud_MaxLat.TabIndex = 4; + this.ud_MaxLat.Value = global::RainScout.Properties.Settings.Default.MaxLat; + // + // label13 + // + this.label13.AutoSize = true; + this.label13.Location = new System.Drawing.Point(435, 272); + this.label13.Name = "label13"; + this.label13.Size = new System.Drawing.Size(45, 13); + this.label13.TabIndex = 7; + this.label13.Text = "MinLon:"; + // + // ud_MinLon + // + this.ud_MinLon.DataBindings.Add(new System.Windows.Forms.Binding("Value", global::RainScout.Properties.Settings.Default, "MinLon", true, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged)); + this.ud_MinLon.Location = new System.Drawing.Point(505, 270); + this.ud_MinLon.Maximum = new decimal(new int[] { + 180, + 0, + 0, + 0}); + this.ud_MinLon.Minimum = new decimal(new int[] { + 180, + 0, + 0, + -2147483648}); + this.ud_MinLon.Name = "ud_MinLon"; + this.ud_MinLon.Size = new System.Drawing.Size(51, 20); + this.ud_MinLon.TabIndex = 6; + this.ud_MinLon.Value = global::RainScout.Properties.Settings.Default.MinLon; + // + // OptionsDlg + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(751, 442); + this.Controls.Add(this.btn_Cancel); + this.Controls.Add(this.btn_OK); + this.Controls.Add(this.tc_Main); + this.Name = "OptionsDlg"; + this.Text = "RainScout Options"; + this.tc_Main.ResumeLayout(false); + this.tp_General.ResumeLayout(false); + this.tp_General.PerformLayout(); + this.tp_Stations.ResumeLayout(false); + this.groupBox2.ResumeLayout(false); + this.groupBox2.PerformLayout(); + this.groupBox1.ResumeLayout(false); + this.groupBox1.PerformLayout(); + this.tc_Scatter.ResumeLayout(false); + this.tc_Scatter.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.ud_MinLat)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.ud_MaxLon)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.ud_MaxLat)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.ud_MinLon)).EndInit(); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.TabControl tc_Main; + private System.Windows.Forms.TabPage tp_General; + private System.Windows.Forms.TabPage tp_Stations; + private System.Windows.Forms.Button btn_OK; + private System.Windows.Forms.Button btn_Cancel; + private System.Windows.Forms.GroupBox groupBox2; + private System.Windows.Forms.CheckBox cb_Options_Stations_50M; + private System.Windows.Forms.GroupBox groupBox1; + private System.Windows.Forms.Label label6; + private System.Windows.Forms.TextBox tb_Options_Stations_Height; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.TextBox tb_Options_Stations_Elevation; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.TextBox tb_Options_Stations_Loc; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.TextBox tb_Options_Stations_Lon; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.TextBox tb_Options_Stations_Lat; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.TextBox tb_Options_Stations_Call; + private System.Windows.Forms.CheckBox cb_Options_Stations_1296M; + private System.Windows.Forms.CheckBox cb_Options_Stations_432M; + private System.Windows.Forms.CheckBox cb_Options_Stations_144M; + private System.Windows.Forms.CheckBox cb_Options_Stations_70M; + private System.Windows.Forms.CheckBox cb_Options_Stations_3400M; + private System.Windows.Forms.CheckBox cb_Options_Stations_2320M; + private System.Windows.Forms.CheckBox cb_Options_Stations_5760M; + private System.Windows.Forms.CheckBox cb_Options_Stations_76G; + private System.Windows.Forms.CheckBox cb_Options_Stations_47G; + private System.Windows.Forms.CheckBox cb_Options_Stations_24G; + private System.Windows.Forms.CheckBox cb_Options_Stations_10G; + private System.Windows.Forms.TabPage tc_Scatter; + private System.Windows.Forms.TextBox tb_Options_Scatter_MaxAngle; + private System.Windows.Forms.Label label9; + private System.Windows.Forms.TextBox tb_Options_Scatter_MaxHeight; + private System.Windows.Forms.Label label8; + private System.Windows.Forms.TextBox tb_Options_Scatter_MinHeight; + private System.Windows.Forms.Label label7; + private System.Windows.Forms.Button btn_Options_Stations_Update; + private System.Windows.Forms.Label label13; + private System.Windows.Forms.NumericUpDown ud_MinLon; + private System.Windows.Forms.Label label12; + private System.Windows.Forms.NumericUpDown ud_MaxLat; + private System.Windows.Forms.Label label11; + private System.Windows.Forms.NumericUpDown ud_MaxLon; + private System.Windows.Forms.Label label10; + private System.Windows.Forms.NumericUpDown ud_MinLat; + } +} \ No newline at end of file diff --git a/RainScout/OptionsDlg.cs b/RainScout/OptionsDlg.cs new file mode 100644 index 0000000..32588cc --- /dev/null +++ b/RainScout/OptionsDlg.cs @@ -0,0 +1,229 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; +using System.Globalization; +using ScoutBase.Core; +using ScoutBase.Elevation; + +namespace RainScout +{ + public partial class OptionsDlg : Form + { + MainDlg ParentDlg; + + bool ChangeLatFromLoc; + bool ChangeLonFromLoc; + bool ChangeLocFromLatLon; + + public OptionsDlg(MainDlg parentdlg) + { + InitializeComponent(); + ParentDlg = parentdlg; + } + + private void tp_Stations_Enter(object sender, EventArgs e) + { + // try to fill infos from properties + tb_Options_Stations_Call.Text = Properties.Settings.Default.MyCall; + tb_Options_Stations_Lat.Text = Properties.Settings.Default.MyLat.ToString("F8", CultureInfo.InvariantCulture); + tb_Options_Stations_Lon.Text = Properties.Settings.Default.MyLon.ToString("F8", CultureInfo.InvariantCulture); + tb_Options_Stations_Loc.Text = Properties.Settings.Default.MyLoc; + tb_Options_Stations_Elevation.Text = Properties.Settings.Default.MyElevation.ToString("F0"); + tb_Options_Stations_Height.Text = Properties.Settings.Default.MyHeight.ToString("F0"); + + } + + private void tb_Options_Stations_Call_TextChanged(object sender, EventArgs e) + { + base.OnTextChanged(e); + /* + CallsignEntry entry = ParentDlg.Locations.FindEntry(tb_Options_Stations_Call.Text); + if (entry != null) + { + Properties.Settings.Default.MyLat = entry.Lat; + Properties.Settings.Default.MyLon = entry.Lon; + Properties.Settings.Default.MyLoc = entry.Loc; + tb_Options_Stations_Lat.Text = entry.Lat.ToString("F8", CultureInfo.InvariantCulture); + tb_Options_Stations_Lon.Text = entry.Lon.ToString("F8", CultureInfo.InvariantCulture); + tb_Options_Stations_Loc.Text = entry.Loc; + tb_Options_Stations_Elevation.Text = entry.Elevation.ToString(); + tb_Options_Stations_Height.Text = entry.Height.ToString(); + if (entry.IsPrecise) + tb_Options_Stations_Loc.BackColor = Color.LightGreen; + else + tb_Options_Stations_Loc.BackColor = Color.White; + } + else + { + Properties.Settings.Default.MyLat = double.NaN; + Properties.Settings.Default.MyLon = double.NaN; + Properties.Settings.Default.MyLoc = ""; + Properties.Settings.Default.MyElevation = 0; + Properties.Settings.Default.MyHeight = 0; + tb_Options_Stations_Loc.BackColor = Color.White; + tb_Options_Stations_Lat.Text = ""; + tb_Options_Stations_Lon.Text = ""; + tb_Options_Stations_Loc.Text = ""; + tb_Options_Stations_Elevation.Text = ""; + tb_Options_Stations_Height.Text = ""; + + } + */ + } + + private void tb_Options_Stations_Lat_TextChanged(object sender, EventArgs e) + { + if (String.IsNullOrEmpty(tb_Options_Stations_Lat.Text)) + return; + try + { + double lat = System.Convert.ToDouble(tb_Options_Stations_Lat.Text, CultureInfo.InvariantCulture); + double lon = System.Convert.ToDouble(tb_Options_Stations_Lon.Text, CultureInfo.InvariantCulture); + tb_Options_Stations_Elevation.Text = ElevationData.Database[lat, lon, Properties.Settings.Default.CurrentElevationModel].ToString("F0"); + if (ChangeLatFromLoc) + { + ChangeLatFromLoc = false; + } + else + { + ChangeLocFromLatLon = true; + tb_Options_Stations_Loc.Text = MaidenheadLocator.LocFromLatLon(lat, lon,false, 3); + } + } + catch + { + } + } + + private void tb_Options_Stations_Lon_TextChanged(object sender, EventArgs e) + { + if (String.IsNullOrEmpty(tb_Options_Stations_Lon.Text)) + return; + try + { + double lat = System.Convert.ToDouble(tb_Options_Stations_Lat.Text, CultureInfo.InvariantCulture); + double lon = System.Convert.ToDouble(tb_Options_Stations_Lon.Text, CultureInfo.InvariantCulture); + tb_Options_Stations_Elevation.Text = ElevationData.Database[lat, lon, Properties.Settings.Default.CurrentElevationModel].ToString("F0"); + if (ChangeLonFromLoc) + { + ChangeLonFromLoc = false; + } + else + { + ChangeLocFromLatLon = true; + tb_Options_Stations_Loc.Text = MaidenheadLocator.LocFromLatLon(lat, lon, false, 3); + } + } + catch + { + } + } + + private void tb_Options_Stations_Loc_TextChanged(object sender, EventArgs e) + { + if (String.IsNullOrEmpty(tb_Options_Stations_Loc.Text)) + return; + if (!MaidenheadLocator.Check(tb_Options_Stations_Loc.Text)) + return; + if (ChangeLocFromLatLon) + { + ChangeLocFromLatLon = false; + } + else + { + ChangeLatFromLoc = true; + tb_Options_Stations_Lat.Text = MaidenheadLocator.LatFromLoc(tb_Options_Stations_Loc.Text).ToString("F8", CultureInfo.InvariantCulture); + ChangeLonFromLoc = true; + tb_Options_Stations_Lon.Text = MaidenheadLocator.LonFromLoc(tb_Options_Stations_Loc.Text).ToString("F8", CultureInfo.InvariantCulture); + } + } + + private void tb_Options_Stations_Height_TextChanged(object sender, EventArgs e) + { + + } + + private void btn_Options_Stations_Update_Click(object sender, EventArgs e) + { + // check all entries and update callsign database + /* + try + { + CallsignEntry entry = ParentDlg.Locations.FindEntry(tb_Options_Stations_Call.Text); + if (entry != null) + { + entry.Lat = System.Convert.ToDouble(tb_Options_Stations_Lat.Text, CultureInfo.InvariantCulture); + entry.Lon = System.Convert.ToDouble(tb_Options_Stations_Lon.Text, CultureInfo.InvariantCulture); + entry.Loc = tb_Options_Stations_Loc.Text; + entry.Elevation = ParentDlg.ElevationData[entry.Lat, entry.Lon]; + entry.Height = System.Convert.ToDouble(tb_Options_Stations_Height.Text, CultureInfo.InvariantCulture); + } + else + { + entry = new CallsignEntry(); + entry.Call = tb_Options_Stations_Call.Text; + entry.Lat = System.Convert.ToDouble(tb_Options_Stations_Lat.Text, CultureInfo.InvariantCulture); + entry.Lon = System.Convert.ToDouble(tb_Options_Stations_Lon.Text, CultureInfo.InvariantCulture); + entry.Loc = tb_Options_Stations_Loc.Text; + entry.Elevation = ParentDlg.ElevationData[entry.Lat, entry.Lon]; + entry.Height = System.Convert.ToDouble(tb_Options_Stations_Height.Text, CultureInfo.InvariantCulture); + ParentDlg.Locations.AddEntry(entry); + } + } + catch (Exception ex) + { + MessageBox.Show("An error occured while updating call sign database: " + ex.Message, "Error"); + } + */ + } + + private void tc_Scatter_Enter(object sender, EventArgs e) + { + tb_Options_Scatter_MinHeight.Text = Properties.Settings.Default.Scatter_MinHeight.ToString("F0", CultureInfo.InvariantCulture); + tb_Options_Scatter_MaxHeight.Text = Properties.Settings.Default.Scatter_MaxHeight.ToString("F0", CultureInfo.InvariantCulture); + tb_Options_Scatter_MaxAngle.Text = Properties.Settings.Default.Scatter_MaxAngle.ToString("F0", CultureInfo.InvariantCulture); + } + + private void tb_Options_Scatter_MinHeight_TextChanged(object sender, EventArgs e) + { + try + { + Properties.Settings.Default.Scatter_MinHeight = System.Convert.ToDouble(tb_Options_Scatter_MinHeight.Text, CultureInfo.InvariantCulture); + } + catch + { + MessageBox.Show("Invalid value: " + tb_Options_Scatter_MinHeight.Text, "Error"); + } + } + + private void tb_Options_Scatter_MaxHeight_TextChanged(object sender, EventArgs e) + { + try + { + Properties.Settings.Default.Scatter_MaxHeight = System.Convert.ToDouble(tb_Options_Scatter_MaxHeight.Text, CultureInfo.InvariantCulture); + } + catch + { + MessageBox.Show("Invalid value: " + tb_Options_Scatter_MaxHeight.Text, "Error"); + } + } + + private void tb_Options_Scatter_MaxAngle_TextChanged(object sender, EventArgs e) + { + try + { + Properties.Settings.Default.Scatter_MaxAngle = System.Convert.ToDouble(tb_Options_Scatter_MaxAngle.Text, CultureInfo.InvariantCulture); + } + catch + { + MessageBox.Show("Invalid value: " + tb_Options_Scatter_MaxAngle.Text, "Error"); + } + } + + } +} diff --git a/RainScout/OptionsDlg.resx b/RainScout/OptionsDlg.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/RainScout/OptionsDlg.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/RainScout/Program.cs b/RainScout/Program.cs new file mode 100644 index 0000000..e073b36 --- /dev/null +++ b/RainScout/Program.cs @@ -0,0 +1,21 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Windows.Forms; + +namespace RainScout +{ + static class Program + { + /// + /// Der Haupteinstiegspunkt für die Anwendung. + /// + [STAThread] + static void Main() + { + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + Application.Run(new MainDlg()); + } + } +} diff --git a/RainScout/Properties/AssemblyInfo.cs b/RainScout/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..2d03d64 --- /dev/null +++ b/RainScout/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Allgemeine Informationen über eine Assembly werden über die folgenden +// Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern, +// die mit einer Assembly verknüpft sind. +[assembly: AssemblyTitle("RainScout")] +[assembly: AssemblyDescription("Rain Scatter Prediction & Supervision")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("DL2ALF")] +[assembly: AssemblyProduct("RainScout")] +[assembly: AssemblyCopyright("Copyright © 2015 DL2ALF")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Durch Festlegen von ComVisible auf "false" werden die Typen in dieser Assembly unsichtbar +// für COM-Komponenten. Wenn Sie auf einen Typ in dieser Assembly von +// COM zugreifen müssen, legen Sie das ComVisible-Attribut für diesen Typ auf "true" fest. +[assembly: ComVisible(false)] + +// Die folgende GUID bestimmt die ID der Typbibliothek, wenn dieses Projekt für COM verfügbar gemacht wird +[assembly: Guid("8931a288-97f9-43e5-82e7-6c8ce4602c49")] + +// Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten: +// +// Hauptversion +// Nebenversion +// Buildnummer +// Revision +// +// Sie können alle Werte angeben oder die standardmäßigen Build- und Revisionsnummern +// übernehmen, indem Sie "*" eingeben: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/RainScout/Properties/Resources.Designer.cs b/RainScout/Properties/Resources.Designer.cs new file mode 100644 index 0000000..3df150b --- /dev/null +++ b/RainScout/Properties/Resources.Designer.cs @@ -0,0 +1,63 @@ +//------------------------------------------------------------------------------ +// +// Dieser Code wurde von einem Tool generiert. +// Laufzeitversion:4.0.30319.42000 +// +// Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn +// der Code erneut generiert wird. +// +//------------------------------------------------------------------------------ + +namespace RainScout.Properties { + using System; + + + /// + /// Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw. + /// + // Diese Klasse wurde von der StronglyTypedResourceBuilder automatisch generiert + // -Klasse über ein Tool wie ResGen oder Visual Studio automatisch generiert. + // Um einen Member hinzuzufügen oder zu entfernen, bearbeiten Sie die .ResX-Datei und führen dann ResGen + // mit der /str-Option erneut aus, oder Sie erstellen Ihr VS-Projekt neu. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() { + } + + /// + /// Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("RainScout.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Ãœberschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle + /// Ressourcenzuordnungen, die diese stark typisierte Ressourcenklasse verwenden. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + } +} diff --git a/RainScout/Properties/Resources.resx b/RainScout/Properties/Resources.resx new file mode 100644 index 0000000..af7dbeb --- /dev/null +++ b/RainScout/Properties/Resources.resx @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/RainScout/Properties/Settings.Designer.cs b/RainScout/Properties/Settings.Designer.cs new file mode 100644 index 0000000..708aa15 --- /dev/null +++ b/RainScout/Properties/Settings.Designer.cs @@ -0,0 +1,877 @@ +//------------------------------------------------------------------------------ +// +// Dieser Code wurde von einem Tool generiert. +// Laufzeitversion:4.0.30319.42000 +// +// Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn +// der Code erneut generiert wird. +// +//------------------------------------------------------------------------------ + +namespace RainScout.Properties { + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.5.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default { + get { + return defaultInstance; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("OpenStreetMap")] + public string Map_Provider { + get { + return ((string)(this["Map_Provider"])); + } + set { + this["Map_Provider"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("DL2ALF")] + public string MyCall { + get { + return ((string)(this["MyCall"])); + } + set { + this["MyCall"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("50.937067")] + public double MyLat { + get { + return ((double)(this["MyLat"])); + } + set { + this["MyLat"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("10.68327")] + public double MyLon { + get { + return ((double)(this["MyLon"])); + } + set { + this["MyLon"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("JO50IW")] + public string MyLoc { + get { + return ((string)(this["MyLoc"])); + } + set { + this["MyLoc"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("0")] + public double ScpLat { + get { + return ((double)(this["ScpLat"])); + } + set { + this["ScpLat"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("0")] + public double ScpLon { + get { + return ((double)(this["ScpLon"])); + } + set { + this["ScpLon"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("")] + public string ScpLoc { + get { + return ((string)(this["ScpLoc"])); + } + set { + this["ScpLoc"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("ElevationData\\GLOBE")] + public string Elevation_GLOBE_DataPath { + get { + return ((string)(this["Elevation_GLOBE_DataPath"])); + } + set { + this["Elevation_GLOBE_DataPath"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("ElevationData\\SRTM1")] + public string Elevation_SRTM1_DataPath { + get { + return ((string)(this["Elevation_SRTM1_DataPath"])); + } + set { + this["Elevation_SRTM1_DataPath"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("ElevationData\\SRTM3")] + public string Elevation_SRTM3_DataPath { + get { + return ((string)(this["Elevation_SRTM3_DataPath"])); + } + set { + this["Elevation_SRTM3_DataPath"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("True")] + public bool Elevation_GLOBE_Enabled { + get { + return ((bool)(this["Elevation_GLOBE_Enabled"])); + } + set { + this["Elevation_GLOBE_Enabled"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("False")] + public bool Elevation_SRTM1_Enabled { + get { + return ((bool)(this["Elevation_SRTM1_Enabled"])); + } + set { + this["Elevation_SRTM1_Enabled"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("True")] + public bool Elevation_SRTM3_Enabled { + get { + return ((bool)(this["Elevation_SRTM3_Enabled"])); + } + set { + this["Elevation_SRTM3_Enabled"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("False")] + public bool Path_Cubic_Spline { + get { + return ((bool)(this["Path_Cubic_Spline"])); + } + set { + this["Path_Cubic_Spline"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("0.6")] + public double Path_Default_F1_Clearance { + get { + return ((double)(this["Path_Default_F1_Clearance"])); + } + set { + this["Path_Default_F1_Clearance"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("0")] + public double Path_Default_Ground_Clearance { + get { + return ((double)(this["Path_Default_Ground_Clearance"])); + } + set { + this["Path_Default_Ground_Clearance"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("1.33")] + public double Path_Default_K_Factor { + get { + return ((double)(this["Path_Default_K_Factor"])); + } + set { + this["Path_Default_K_Factor"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("10")] + public double Path_Default_Max_Distance { + get { + return ((double)(this["Path_Default_Max_Distance"])); + } + set { + this["Path_Default_Max_Distance"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("0")] + public double Path_Default_Max_Elevation { + get { + return ((double)(this["Path_Default_Max_Elevation"])); + } + set { + this["Path_Default_Max_Elevation"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("0")] + public double Path_Default_Max_Squint { + get { + return ((double)(this["Path_Default_Max_Squint"])); + } + set { + this["Path_Default_Max_Squint"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("100")] + public double Path_NearFieldSuppression { + get { + return ((double)(this["Path_NearFieldSuppression"])); + } + set { + this["Path_NearFieldSuppression"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("1000")] + public int Path_StepWidth { + get { + return ((int)(this["Path_StepWidth"])); + } + set { + this["Path_StepWidth"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("")] + public string Path_BandSettings { + get { + return ((string)(this["Path_BandSettings"])); + } + set { + this["Path_BandSettings"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("Horizon\\")] + public string Horizon_DataPath { + get { + return ((string)(this["Horizon_DataPath"])); + } + set { + this["Horizon_DataPath"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("600")] + public double Scatter_MaxRadius { + get { + return ((double)(this["Scatter_MaxRadius"])); + } + set { + this["Scatter_MaxRadius"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("200")] + public double Scatter_MinRadius { + get { + return ((double)(this["Scatter_MinRadius"])); + } + set { + this["Scatter_MinRadius"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("45")] + public double Scatter_MaxAngle { + get { + return ((double)(this["Scatter_MaxAngle"])); + } + set { + this["Scatter_MaxAngle"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("8000")] + public double Scatter_MinHeight { + get { + return ((double)(this["Scatter_MinHeight"])); + } + set { + this["Scatter_MinHeight"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("20000")] + public double Scatter_MaxHeight { + get { + return ((double)(this["Scatter_MaxHeight"])); + } + set { + this["Scatter_MaxHeight"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("")] + public string DXCall { + get { + return ((string)(this["DXCall"])); + } + set { + this["DXCall"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("0")] + public double DXLat { + get { + return ((double)(this["DXLat"])); + } + set { + this["DXLat"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("0")] + public double DXLon { + get { + return ((double)(this["DXLon"])); + } + set { + this["DXLon"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("")] + public string DXLoc { + get { + return ((string)(this["DXLoc"])); + } + set { + this["DXLoc"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("Database\\calls.bin")] + public string Database_Filename { + get { + return ((string)(this["Database_Filename"])); + } + set { + this["Database_Filename"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("0")] + public double MyElevation { + get { + return ((double)(this["MyElevation"])); + } + set { + this["MyElevation"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("10")] + public double MyHeight { + get { + return ((double)(this["MyHeight"])); + } + set { + this["MyHeight"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("35")] + public decimal MinLat { + get { + return ((decimal)(this["MinLat"])); + } + set { + this["MinLat"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("60")] + public decimal MaxLat { + get { + return ((decimal)(this["MaxLat"])); + } + set { + this["MaxLat"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("-15")] + public decimal MinLon { + get { + return ((decimal)(this["MinLon"])); + } + set { + this["MinLon"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("30")] + public decimal MaxLon { + get { + return ((decimal)(this["MaxLon"])); + } + set { + this["MaxLon"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("B10G")] + public global::ScoutBase.Core.BAND CurrentBand { + get { + return ((global::ScoutBase.Core.BAND)(this["CurrentBand"])); + } + set { + this["CurrentBand"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("SRTM3")] + public global::ScoutBase.Elevation.ELEVATIONMODEL CurrentElevationModel { + get { + return ((global::ScoutBase.Elevation.ELEVATIONMODEL)(this["CurrentElevationModel"])); + } + set { + this["CurrentElevationModel"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + public global::RainScout.BandSettings Band_Settings { + get { + return ((global::RainScout.BandSettings)(this["Band_Settings"])); + } + set { + this["Band_Settings"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("")] + public string CurrentRadar { + get { + return ((string)(this["CurrentRadar"])); + } + set { + this["CurrentRadar"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("False")] + public bool Filter_VisibleScpOnly { + get { + return ((bool)(this["Filter_VisibleScpOnly"])); + } + set { + this["Filter_VisibleScpOnly"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("100")] + public decimal Filter_MinDistance { + get { + return ((decimal)(this["Filter_MinDistance"])); + } + set { + this["Filter_MinDistance"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("500")] + public decimal Filter_MaxDistance { + get { + return ((decimal)(this["Filter_MaxDistance"])); + } + set { + this["Filter_MaxDistance"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("100")] + public int Radar_Opacity { + get { + return ((int)(this["Radar_Opacity"])); + } + set { + this["Radar_Opacity"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("True")] + public bool Map_Intensity { + get { + return ((bool)(this["Map_Intensity"])); + } + set { + this["Map_Intensity"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("False")] + public bool Map_CloudTops { + get { + return ((bool)(this["Map_CloudTops"])); + } + set { + this["Map_CloudTops"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("False")] + public bool Map_Lightning { + get { + return ((bool)(this["Map_Lightning"])); + } + set { + this["Map_Lightning"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("True")] + public bool Map_Bounds { + get { + return ((bool)(this["Map_Bounds"])); + } + set { + this["Map_Bounds"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("True")] + public bool Map_Horizons { + get { + return ((bool)(this["Map_Horizons"])); + } + set { + this["Map_Horizons"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("True")] + public bool Map_Distances { + get { + return ((bool)(this["Map_Distances"])); + } + set { + this["Map_Distances"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("0")] + public double ScpCloudTop { + get { + return ((double)(this["ScpCloudTop"])); + } + set { + this["ScpCloudTop"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("UNDEFINED")] + public global::System.Data.SQLite.DATABASESTATUS StationsDatabase_Status { + get { + return ((global::System.Data.SQLite.DATABASESTATUS)(this["StationsDatabase_Status"])); + } + set { + this["StationsDatabase_Status"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("True")] + public bool Background_Update_OnStartup { + get { + return ((bool)(this["Background_Update_OnStartup"])); + } + set { + this["Background_Update_OnStartup"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("True")] + public bool Location_RestrictToAreaOfInterest { + get { + return ((bool)(this["Location_RestrictToAreaOfInterest"])); + } + set { + this["Location_RestrictToAreaOfInterest"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("UNDEFINED")] + public global::System.Data.SQLite.DATABASESTATUS Elevation_GLOBE_DatabaseStatus { + get { + return ((global::System.Data.SQLite.DATABASESTATUS)(this["Elevation_GLOBE_DatabaseStatus"])); + } + set { + this["Elevation_GLOBE_DatabaseStatus"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("UNDEFINED")] + public global::System.Data.SQLite.DATABASESTATUS Elevation_SRTM3_DatabaseStatus { + get { + return ((global::System.Data.SQLite.DATABASESTATUS)(this["Elevation_SRTM3_DatabaseStatus"])); + } + set { + this["Elevation_SRTM3_DatabaseStatus"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("UNDEFINED")] + public global::System.Data.SQLite.DATABASESTATUS Elevation_SRTM1_DatabaseStatus { + get { + return ((global::System.Data.SQLite.DATABASESTATUS)(this["Elevation_SRTM1_DatabaseStatus"])); + } + set { + this["Elevation_SRTM1_DatabaseStatus"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("True")] + public bool Elevation_GLOBE_EnableCache { + get { + return ((bool)(this["Elevation_GLOBE_EnableCache"])); + } + set { + this["Elevation_GLOBE_EnableCache"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("False")] + public bool Elevation_SRTM3_EnableCache { + get { + return ((bool)(this["Elevation_SRTM3_EnableCache"])); + } + set { + this["Elevation_SRTM3_EnableCache"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("False")] + public bool Elevation_SRTM1_EnableCache { + get { + return ((bool)(this["Elevation_SRTM1_EnableCache"])); + } + set { + this["Elevation_SRTM1_EnableCache"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("")] + public string RainScout_Instance_ID { + get { + return ((string)(this["RainScout_Instance_ID"])); + } + set { + this["RainScout_Instance_ID"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("http://www.airscout.eu/usr/getkey.php")] + public string AirScout_GetKey_URL { + get { + return ((string)(this["AirScout_GetKey_URL"])); + } + set { + this["AirScout_GetKey_URL"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("http://www.airscout.eu/usr/register.php")] + public string AirScout_Register_URL { + get { + return ((string)(this["AirScout_Register_URL"])); + } + set { + this["AirScout_Register_URL"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("http://www.airscout.eu/usr/upload_location.php")] + public string AirScout_UploadLocation_URL { + get { + return ((string)(this["AirScout_UploadLocation_URL"])); + } + set { + this["AirScout_UploadLocation_URL"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("http://www.airscout.eu/usr/upload_qrv.php")] + public string AirScout_UploadQRV_URL { + get { + return ((string)(this["AirScout_UploadQRV_URL"])); + } + set { + this["AirScout_UploadQRV_URL"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("")] + public string RainScout_Device_ID { + get { + return ((string)(this["RainScout_Device_ID"])); + } + set { + this["RainScout_Device_ID"] = value; + } + } + } +} diff --git a/RainScout/Properties/Settings.settings b/RainScout/Properties/Settings.settings new file mode 100644 index 0000000..e2061c8 --- /dev/null +++ b/RainScout/Properties/Settings.settings @@ -0,0 +1,219 @@ + + + + + + OpenStreetMap + + + DL2ALF + + + 50.937067 + + + 10.68327 + + + JO50IW + + + 0 + + + 0 + + + + + + ElevationData\GLOBE + + + ElevationData\SRTM1 + + + ElevationData\SRTM3 + + + True + + + False + + + True + + + False + + + 0.6 + + + 0 + + + 1.33 + + + 10 + + + 0 + + + 0 + + + 100 + + + 1000 + + + + + + Horizon\ + + + 600 + + + 200 + + + 45 + + + 8000 + + + 20000 + + + + + + 0 + + + 0 + + + + + + Database\calls.bin + + + 0 + + + 10 + + + 35 + + + 60 + + + -15 + + + 30 + + + B10G + + + SRTM3 + + + + + + + + + False + + + 100 + + + 500 + + + 100 + + + True + + + False + + + False + + + True + + + True + + + True + + + 0 + + + UNDEFINED + + + True + + + True + + + UNDEFINED + + + UNDEFINED + + + UNDEFINED + + + True + + + False + + + False + + + + + + http://www.airscout.eu/usr/getkey.php + + + http://www.airscout.eu/usr/register.php + + + http://www.airscout.eu/usr/upload_location.php + + + http://www.airscout.eu/usr/upload_qrv.php + + + + + + \ No newline at end of file diff --git a/RainScout/RAINSCOUTSTATUS.cs b/RainScout/RAINSCOUTSTATUS.cs new file mode 100644 index 0000000..fb46c2f --- /dev/null +++ b/RainScout/RAINSCOUTSTATUS.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace RainScout +{ + public enum RAINSCOUTSTATUS + { + NONE = 0, + LOCATIONSCOMPLETE = 1, + ELEVATIONDATACOMPLETE = 2, + HORIZONDATACOMPLETE =4 + } +} diff --git a/RainScout/RadarMap.cs b/RainScout/RadarMap.cs new file mode 100644 index 0000000..17b3689 --- /dev/null +++ b/RainScout/RadarMap.cs @@ -0,0 +1,343 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; +using GMap.NET; +using GMap.NET.WindowsForms; +using RainScout.Core; + +namespace RainScout +{ + public class RadarMap + { + // color value for semi-transparent areas + public Color ColorSemitransparent { get; set; } = Color.FromArgb(60, 0, 0, 0); + + // parent control + GMapControl ParentMap = null; + + // color legends + ValueColorTable IntensityLegend = new ValueColorTable(); + ValueColorTable CloudTopsLegend = new ValueColorTable(); + ValueColorTable LightningLegend = new ValueColorTable(); + + // map bounds + public double Top { get; internal set; } = 0; + public double Left { get; internal set; } = 0; + public double Bottom { get; internal set; } = 0; + public double Right { get; internal set; } = 0; + + // size + public Size Size { get { return new Size(this.Width, this.Height); } } + + // dimension in px + public int Width { get; internal set; } = 4096; + public int Height { get; internal set; } = 4096; + + // bitmaps + public Bitmap Intensity { get; internal set; } = null; + public Bitmap CloudTops { get; internal set; } = null; + public Bitmap Lightning { get; internal set; } = null; + + // maps containing info? + public bool HasIntensity { get { return Intensity != null; } } + public bool HasCloudTops { get { return CloudTops != null; } } + public bool HasLightning { get { return Lightning != null; } } + + public DateTime Timestamp { get; set; } = DateTime.MinValue; + + public RadarMap(GMapControl parentmap, double left, double top, double right, double bottom, int width, int height) + { + ParentMap = parentmap; + + /* + IntensityLegend.Add(-1, ColorSemitransparent); + IntensityLegend.Add(0, Color.Transparent); + IntensityLegend.Add(1, ColorTranslator.FromHtml("#828282")); + IntensityLegend.Add(2, ColorTranslator.FromHtml("#8C8C8C")); + IntensityLegend.Add(3, ColorTranslator.FromHtml("#A0A0A0")); + IntensityLegend.Add(4, ColorTranslator.FromHtml("#AFAFAF")); + IntensityLegend.Add(5, ColorTranslator.FromHtml("#BEBEBE")); + IntensityLegend.Add(6, ColorTranslator.FromHtml("#CDCDCD")); + IntensityLegend.Add(7, ColorTranslator.FromHtml("#DCDCDC")); + IntensityLegend.Add(8, ColorTranslator.FromHtml("#8FE7E1")); + IntensityLegend.Add(9, ColorTranslator.FromHtml("#51EFE5")); + IntensityLegend.Add(10, ColorTranslator.FromHtml("#22CFEE")); + IntensityLegend.Add(11, ColorTranslator.FromHtml("#1FBFF0")); + IntensityLegend.Add(12, ColorTranslator.FromHtml("#1CB0F2")); + IntensityLegend.Add(13, ColorTranslator.FromHtml("#19A1F3")); + IntensityLegend.Add(14, ColorTranslator.FromHtml("#127AF2")); + IntensityLegend.Add(15, ColorTranslator.FromHtml("#127AF2")); + IntensityLegend.Add(16, ColorTranslator.FromHtml("#0B53F2")); + IntensityLegend.Add(17, ColorTranslator.FromHtml("#052EF2")); + IntensityLegend.Add(18, ColorTranslator.FromHtml("#052EF1")); + IntensityLegend.Add(19, ColorTranslator.FromHtml("#2BFF2D")); + IntensityLegend.Add(20, ColorTranslator.FromHtml("#29F62B")); + IntensityLegend.Add(21, ColorTranslator.FromHtml("#27ED29")); + IntensityLegend.Add(22, ColorTranslator.FromHtml("#25E427")); + IntensityLegend.Add(23, ColorTranslator.FromHtml("#23DA25")); + IntensityLegend.Add(24, ColorTranslator.FromHtml("#21D123")); + IntensityLegend.Add(25, ColorTranslator.FromHtml("#1FC821")); + IntensityLegend.Add(26, ColorTranslator.FromHtml("#1FC821")); + IntensityLegend.Add(27, ColorTranslator.FromHtml("#1EC01F")); + IntensityLegend.Add(28, ColorTranslator.FromHtml("#1EC01F")); + IntensityLegend.Add(29, ColorTranslator.FromHtml("#1CB81D")); + IntensityLegend.Add(30, ColorTranslator.FromHtml("#1AB01C")); + IntensityLegend.Add(31, ColorTranslator.FromHtml("#19A81A")); + IntensityLegend.Add(32, ColorTranslator.FromHtml("#17A018")); + IntensityLegend.Add(33, ColorTranslator.FromHtml("#159816")); + IntensityLegend.Add(34, ColorTranslator.FromHtml("#139015")); + IntensityLegend.Add(35, ColorTranslator.FromHtml("#FEFD34")); + IntensityLegend.Add(36, ColorTranslator.FromHtml("#F9EE31")); + IntensityLegend.Add(37, ColorTranslator.FromHtml("#F2DF2E")); + IntensityLegend.Add(38, ColorTranslator.FromHtml("#ECCF2B")); + IntensityLegend.Add(39, ColorTranslator.FromHtml("#E6BF28")); + IntensityLegend.Add(40, ColorTranslator.FromHtml("#E6BF28")); + IntensityLegend.Add(41, ColorTranslator.FromHtml("#ECB326")); + IntensityLegend.Add(42, ColorTranslator.FromHtml("#F1A724")); + IntensityLegend.Add(43, ColorTranslator.FromHtml("#F79A23")); + IntensityLegend.Add(44, ColorTranslator.FromHtml("#FD8E22")); + IntensityLegend.Add(45, ColorTranslator.FromHtml("#FD8E22")); + IntensityLegend.Add(46, ColorTranslator.FromHtml("#FD691E")); + IntensityLegend.Add(47, ColorTranslator.FromHtml("#FC431A")); + IntensityLegend.Add(48, ColorTranslator.FromHtml("#FC1918")); + IntensityLegend.Add(49, ColorTranslator.FromHtml("#FC0017")); + IntensityLegend.Add(50, ColorTranslator.FromHtml("#FC0017")); + IntensityLegend.Add(51, ColorTranslator.FromHtml("#F20016")); + IntensityLegend.Add(52, ColorTranslator.FromHtml("#E80015")); + IntensityLegend.Add(53, ColorTranslator.FromHtml("#DD0013")); + IntensityLegend.Add(54, ColorTranslator.FromHtml("#D40012")); + IntensityLegend.Add(55, ColorTranslator.FromHtml("#D40012")); + IntensityLegend.Add(56, ColorTranslator.FromHtml("#C70010")); + IntensityLegend.Add(57, ColorTranslator.FromHtml("#B9000E")); + IntensityLegend.Add(58, ColorTranslator.FromHtml("#AC000C")); + IntensityLegend.Add(59, ColorTranslator.FromHtml("#9E000A")); + IntensityLegend.Add(60, ColorTranslator.FromHtml("#FEC8FE")); + IntensityLegend.Add(61, ColorTranslator.FromHtml("#F3B4F3")); + IntensityLegend.Add(62, ColorTranslator.FromHtml("#E7A0E7")); + IntensityLegend.Add(63, ColorTranslator.FromHtml("#DB8CDB")); + IntensityLegend.Add(64, ColorTranslator.FromHtml("#CF78CF")); + IntensityLegend.Add(65, ColorTranslator.FromHtml("#C464C4")); + IntensityLegend.Add(66, ColorTranslator.FromHtml("#B850B8")); + IntensityLegend.Add(67, ColorTranslator.FromHtml("#AD3CAD")); + IntensityLegend.Add(68, ColorTranslator.FromHtml("#A128A1")); + IntensityLegend.Add(69, ColorTranslator.FromHtml("#961396")); + IntensityLegend.Add(70, ColorTranslator.FromHtml("#8A008A")); + IntensityLegend.Add(100, ColorTranslator.FromHtml("#FFFFFF")); + */ + + // initialize intensity dictionary + IntensityLegend.Add(-1, Color.FromArgb(112, 0, 0, 0)); + IntensityLegend.Add(0, Color.Transparent); + IntensityLegend.Add(1, Color.FromArgb(255, 1, 1, 1)); + IntensityLegend.Add(4, Color.FromArgb(255, 55, 1, 117)); + IntensityLegend.Add(8, Color.FromArgb(255, 7, 0, 246)); + IntensityLegend.Add(16, Color.FromArgb(255, 0, 114, 198)); + IntensityLegend.Add(20, Color.FromArgb(255, 1, 162, 1)); + IntensityLegend.Add(24, Color.FromArgb(255, 0, 195, 5)); + IntensityLegend.Add(28, Color.FromArgb(255, 50, 214, 2)); + IntensityLegend.Add(32, Color.FromArgb(255, 155, 229, 7)); + IntensityLegend.Add(36, Color.FromArgb(255, 221, 218, 0)); + IntensityLegend.Add(40, Color.FromArgb(255, 247, 181, 1)); + IntensityLegend.Add(44, Color.FromArgb(255, 254, 129, 3)); + IntensityLegend.Add(48, Color.FromArgb(255, 251, 86, 0)); + IntensityLegend.Add(52, Color.FromArgb(255, 252, 2, 6)); + IntensityLegend.Add(56, Color.FromArgb(255, 150, 6, 10)); + IntensityLegend.Add(60, Color.FromArgb(255, 255, 255, 255)); + + + // initialize cloud top legend + CloudTopsLegend.Add(-1, ColorSemitransparent); + CloudTopsLegend.Add(0, Color.Transparent); + CloudTopsLegend.Add(1, Color.FromArgb(255, 170, 170, 170)); + CloudTopsLegend.Add(500, Color.FromArgb(255, 226, 255, 255)); + CloudTopsLegend.Add(1000,Color.FromArgb(255, 180, 240, 250)); + CloudTopsLegend.Add(1500,Color.FromArgb(255, 150, 210, 250)); + CloudTopsLegend.Add(2000,Color.FromArgb(255, 120, 185, 250)); + CloudTopsLegend.Add(2500,Color.FromArgb(255, 80, 165, 245)); + CloudTopsLegend.Add(3000,Color.FromArgb(255, 60, 150, 245)); + CloudTopsLegend.Add(3500,Color.FromArgb(255, 45, 155, 150)); + CloudTopsLegend.Add(4000,Color.FromArgb(255, 30, 180, 30)); + CloudTopsLegend.Add(4500,Color.FromArgb(255, 55, 210, 60)); + CloudTopsLegend.Add(5000,Color.FromArgb(255, 80, 240, 80)); + CloudTopsLegend.Add(5500,Color.FromArgb(255, 150, 245, 140)); + CloudTopsLegend.Add(6000,Color.FromArgb(255, 200, 255, 190)); + CloudTopsLegend.Add(6500,Color.FromArgb(255, 255, 250, 170)); + CloudTopsLegend.Add(7000,Color.FromArgb(255, 255, 232, 120)); + CloudTopsLegend.Add(7500,Color.FromArgb(255, 255, 192, 60)); + CloudTopsLegend.Add(8000,Color.FromArgb(255, 255, 160, 0)); + CloudTopsLegend.Add(8500,Color.FromArgb(255, 255, 96, 0)); + CloudTopsLegend.Add(9000,Color.FromArgb(255, 245, 50, 0)); + CloudTopsLegend.Add(9500,Color.FromArgb(255, 225, 20, 0)); + CloudTopsLegend.Add(10000,Color.FromArgb(255, 192, 0, 0)); + CloudTopsLegend.Add(10500,Color.FromArgb(255, 165, 0, 0)); + CloudTopsLegend.Add(11000,Color.FromArgb(255, 169, 0, 186)); + CloudTopsLegend.Add(11500,Color.FromArgb(255, 236, 59, 255)); + CloudTopsLegend.Add(20000,Color.FromArgb(255, 255, 0, 255)); + + // initialize lightning dictionary + LightningLegend.Add(-1, Color.FromArgb(112, 0, 0, 0)); + LightningLegend.Add(0, Color.FromArgb(0, 0, 0, 0)); + LightningLegend.Add(0, Color.FromArgb(255, 0, 0, 0)); + LightningLegend.Add(0, Color.Transparent); + LightningLegend.Add(1, ColorTranslator.FromHtml("#FFFFFF")); + LightningLegend.Add(5, ColorTranslator.FromHtml("#FFFE85")); + LightningLegend.Add(10, ColorTranslator.FromHtml("#FFFE34")); + LightningLegend.Add(15, ColorTranslator.FromHtml("#FED82E")); + LightningLegend.Add(20, ColorTranslator.FromHtml("#FDB127")); + LightningLegend.Add(25, ColorTranslator.FromHtml("#FD8A21")); + LightningLegend.Add(40, ColorTranslator.FromHtml("#FF5500")); + LightningLegend.Add(80, ColorTranslator.FromHtml("#FF0000")); + LightningLegend.Add(120, ColorTranslator.FromHtml("#BF0000")); + + Left = left; + Top = top; + Right = right; + Bottom = bottom; + + Width = width; + Height = height; + + + // create bitmaps and fill with transparent color + Intensity = new Bitmap(Width, Height); + using (Graphics g = Graphics.FromImage(Intensity)) + { + g.Clear(Color.Transparent); + } + CloudTops = new Bitmap(Width, Height); + using (Graphics g = Graphics.FromImage(CloudTops)) + { + g.Clear(Color.Transparent); + } + Lightning = new Bitmap(Width, Height); + using (Graphics g = Graphics.FromImage(Lightning)) + { + g.Clear(Color.Transparent); + } + } + + private void ImportValues(int[,] values, Bitmap dst, ValueColorTable legend, double left, double top, double right, double bottom) + { + // return on no array + if (values == null) + return; + + // get source array dimensions + int srcwidth = values.GetLength(0); + int srcheight = values.GetLength(1); + GPoint srctl = ParentMap.FromLatLngToLocal(new PointLatLng(top, left)); + GPoint srcbr = ParentMap.FromLatLngToLocal(new PointLatLng(bottom, right)); + double srcscalex = (double)(srcbr.X - srctl.X) / (double)srcwidth; + double srcscaley = (double)(srcbr.Y - srctl.Y) / (double)srcheight; + + // get destination array dimensions + double dstwidth = this.Width; + double dstheight = this.Height; + GPoint dsttl = ParentMap.FromLatLngToLocal(new PointLatLng(this.Top, this.Left)); + GPoint dstbr = ParentMap.FromLatLngToLocal(new PointLatLng(this.Bottom, this.Right)); + double dstscalex = (double)(dstbr.X - dsttl.X) / (double)dstwidth; + double dstscaley = (double)(dstbr.Y - dsttl.Y) / (double)dstheight; + + // start mapping + for (int x = 0; x < dstwidth; x++) + { + for (int y = 0; y < dstheight; y++) + { + try + { + int srcx = (int)(((double)x * (double)dstscalex + (double)dsttl.X - (double)srctl.X) / srcscalex); + int srcy = (int)(((double)y * (double)dstscaley + (double)dsttl.Y - (double)srctl.Y) / srcscaley); + if ((srcx >= 0) && (srcx < srcwidth) && (srcy >= 0) && (srcy < srcheight)) + { + if (values[srcx, srcy] == -1) + dst.SetPixel(x, y, ColorSemitransparent); + if (values[srcx, srcy] == 0) + dst.SetPixel(x, y, Color.Transparent); + else if (values[srcx, srcy] > 0) + { + Color c = legend.GetColorFromValue(values[srcx, srcy]); + dst.SetPixel(x, y, c); +// Console.WriteLine(x.ToString() + "," + y.ToString() + ":" + values[srcx, srcy].ToString() + "-->" + c.ToString()); + + } + } + } + catch (Exception ex) + { + Console.WriteLine("Error while setting color in map: " + ex.Message); + } + } + } + } + + public void ImportIntensity(int[,] intensity, double left, double top, double right, double bottom) + { + ImportValues(intensity, Intensity, IntensityLegend, left, top, right, bottom); + } + + public void ImportCloudTops(int[,] cloudtops, double left, double top, double right, double bottom) + { + ImportValues(cloudtops, CloudTops, CloudTopsLegend, left, top, right, bottom); + } + + public void ImportLightning(int[,] lightning, double left, double top, double right, double bottom) + { + ImportValues(lightning, Lightning, LightningLegend, left, top, right, bottom); + } + + public int GetValue(Bitmap src, ValueColorTable legend, int x, int y) + { + // check bounds + if ((x < 0) || (x > this.Width) || (y < 0) || (y > this.Height)) + return -1; + + Color c = src.GetPixel(x, y); + + return legend.GetValueFromColor(c, NEARESTCOLORSTRATEGY.RGB); + } + + public int GetIntensityValue(int x, int y) + { + return GetValue(Intensity, IntensityLegend, x, y); + } + + public int GetCloudTopValue(int x, int y) + { + return GetValue(CloudTops, CloudTopsLegend, x, y); + } + + public int GetLightningValue(int x, int y) + { + return GetValue(Lightning, LightningLegend, x, y); + } + + public Color GetColor(Bitmap src, int x, int y) + { + // check bounds + if ((x < 0) || (x > this.Width) || (y < 0) || (y > this.Height)) + return Color.Transparent; + + Color c = src.GetPixel(x, y); + + return c; + } + + public Color GetIntensityColor(int x, int y) + { + return GetColor(Intensity, x, y); + } + + public Color GetCloudTopColor(int x, int y) + { + return GetColor(CloudTops, x, y); + } + + public Color GetLightningColor(int x, int y) + { + return GetColor(Lightning, x, y); + } + } +} diff --git a/AirScoutDatabaseManager/AirScoutDatabaseManager.csproj b/RainScout/RainScout.csproj similarity index 51% rename from AirScoutDatabaseManager/AirScoutDatabaseManager.csproj rename to RainScout/RainScout.csproj index 13d61e8..2db0015 100644 --- a/AirScoutDatabaseManager/AirScoutDatabaseManager.csproj +++ b/RainScout/RainScout.csproj @@ -1,35 +1,21 @@  - + Debug x86 8.0.30703 2.0 - {00062ABB-C482-4B06-BD1B-C49DE9ABA9E5} + {F14C9DB2-D556-45F4-8CB5-E9B402C36087} WinExe Properties - AirScoutDatabaseManager - AirScoutDatabaseManager - v4.0 - Client + RainScout + RainScout + v4.7.2 + + 512 - publish\ - true - Disk - false - Foreground - 7 - Days - false - false - true - 0 - 1.0.0.%2a - false - false - true x86 @@ -40,6 +26,7 @@ DEBUG;TRACE prompt 4 + false x86 @@ -49,6 +36,10 @@ TRACE prompt 4 + false + + + RainScout.Program true @@ -57,7 +48,9 @@ full AnyCPU prompt - MinimumRecommendedRules.ruleset + false + false + false bin\Release\ @@ -66,24 +59,49 @@ pdbonly AnyCPU prompt - MinimumRecommendedRules.ruleset + false + false + false - - ..\packages\HtmlAgilityPack.1.8.4\lib\Net40-client\HtmlAgilityPack.dll - True + + ..\packages\CSJ2K.NetCore.3.0.0\lib\netstandard2.0\CSJ2K.dll - - ..\packages\Newtonsoft.Json.12.0.3\lib\net40\Newtonsoft.Json.dll - - - ..\packages\SSH.NET.2016.1.0\lib\net40\Renci.SshNet.dll - True + + ..\packages\DeviceId.4.5.0\lib\net40\DeviceId.dll + + ..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll + + + ..\packages\System.Collections.Immutable.1.7.1\lib\net461\System.Collections.Immutable.dll + - - ..\packages\System.Data.SQLite.Core.1.0.112.0\lib\net40\System.Data.SQLite.dll + + ..\packages\Stub.System.Data.SQLite.Core.NetFramework.1.0.113.3\lib\net46\System.Data.SQLite.dll + + + ..\packages\System.Drawing.Common.4.5.1\lib\net461\System.Drawing.Common.dll + + + ..\packages\System.IO.FileSystem.4.3.0\lib\net46\System.IO.FileSystem.dll + True + + + ..\packages\System.IO.FileSystem.Primitives.4.3.0\lib\net46\System.IO.FileSystem.Primitives.dll + True + + + + ..\packages\System.Memory.4.5.4\lib\net461\System.Memory.dll + + + + ..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll + + + ..\packages\System.Runtime.CompilerServices.Unsafe.4.5.3\lib\net461\System.Runtime.CompilerServices.Unsafe.dll @@ -95,26 +113,35 @@ + + + + + Form MainDlg.cs - - - - True - True - Settings.settings - - - + Form + + OptionsDlg.cs + + + + + + + MainDlg.cs + + OptionsDlg.cs + ResXFileCodeGenerator Resources.Designer.cs @@ -123,18 +150,40 @@ True Resources.resx + True - PublicSettingsSingleFileGenerator + SettingsSingleFileGenerator Settings.Designer.cs + + True + Settings.settings + True + - - {288a26ec-b690-41a2-84e5-61c9b7b74046} - AirScout.Aircrafts + + {CD637EDA-E0C3-4ABF-8E24-A5B94892311C} + CubicSpline + + + {d0c39d9d-bed0-418b-9a5e-713176caf40c} + GMap.NET.Core + + + {e06def77-f933-42fb-afd7-db2d0d8d6a98} + GMap.NET.WindowsForms + + + {2aa51078-c9e9-4ad0-a8cd-2a028a6bc886} + RainScout.Core + + + {58a3209f-1bf2-4b59-9a2a-0983ce232cb0} + RainScout.Radars {ee86e933-d883-4b18-80eb-0fba55ec67c6} @@ -148,13 +197,9 @@ {009cabfd-726d-481f-972d-0a218e0ad9b9} ScoutBase.Elevation - - {d0c39d9d-bed0-418b-9a5e-713176caf40c} - GMap.NET.Core - - - {e06def77-f933-42fb-afd7-db2d0d8d6a98} - GMap.NET.WindowsForms + + {610db007-5f74-4b5d-8b71-5e2c163a99b3} + ScoutBase.Propagation {358e87d7-849f-412a-b487-f7b7d585a7f9} @@ -164,35 +209,18 @@ {6056d3be-7002-4a6a-a9ea-6ff45122a3c7} SQLiteDatabase - - {7b815c51-6896-4989-bd1b-8d2d7a116aa3} - WinTest - - - - - False - Microsoft .NET Framework 4 Client Profile %28x86 und x64%29 - true - - - False - .NET Framework 3.5 SP1 - false - - - False - Windows Installer 4.5 - true - - + + + + + Dieses Projekt verweist auf mindestens ein NuGet-Paket, das auf diesem Computer fehlt. Verwenden Sie die Wiederherstellung von NuGet-Paketen, um die fehlenden Dateien herunterzuladen. Weitere Informationen finden Sie unter "http://go.microsoft.com/fwlink/?LinkID=322105". Die fehlende Datei ist "{0}". - + nichts weiter unternehmen + } + + } + return "???"; + } + + public static int IsCall (string S) + { + // bewertet Übergabestring als Call + // Rückgabewerte : -1 - auf keinen Fall + // 0 - vielleicht + // +1 - wahrscheinlich + try + { + S = S.Trim(); + S = S.ToUpper(); + // auf unerlaubte Zeichen testen + for (int j = 0;j < S.Length;j++) + { + if (((S[j] <'A') || (S[j] > 'Z')) && + ((S[j] < '0') || (S[j] > '9')) && + ((S[j] != '/'))) + { + return -1; + } + } + // Rufzeichen von Zusätzen befreien + S = Cut(S); + // Rufzeichen zu kurz + if (S.Length < 3) + return -1; + // eigentlicher Test + // erstes Zeichen Zahl + if (Char.IsNumber(S,0)) + { + // zweites Zeichen muss Buchstabe sein + // drittes Zeichen muss Zahl sein + // Beispiel : 9A5O + if (Char.IsLetter(S,1) && Char.IsNumber(S,2)) + return 1; + return -1; + } + else + { + // erstes Zeichen Buchstabe + // zweites Zeichen Buchstabe + if (Char.IsLetter(S,1)) + { + // drittes Zeichen muss Zahl sein + // Beispiel DL0GTH + if (Char.IsNumber(S,2)) + return 1; + return -1; + } + else + { + // zweites Zeichen Zahl + // drittes Zeichen Buchstabe + // Beispiel G7RAU + if (Char.IsLetter(S,2)) + return 1; + // drittes Zeichen Zahl + // Beispiel T91CO + if (Char.IsLetter(S,3)) + return 1; + return -1; + } + } + } + catch + { + return -1; + } + } + + public static int IsLoc (string S) + { + // bewertet Übergabestring als Locator + // Rückgabewerte : -1 - auf keinen Fall + // 0 - vielleicht + // +1 - wahrscheinlich + S = S.Trim(); + S = S.ToUpper(); + if (S.Length == 6) + { + if ((S[0] >= 'A') && (S[0] <= 'X') && + (S[1] >= 'A') && (S[1] <= 'X') && + (S[2] >= '0') && (S[2] <= '9') && + (S[3] >= '0') && (S[3] <= '9') && + (S[4] >= 'A') && (S[4] <= 'X') && + (S[5] >= 'A') && (S[5] <= 'X')) + { + return 1; + } + } + return -1; + } + + public static bool IsNumeric (string S) + { + // bewertet Übergabestring als Ganzzahl + int i = 0; + while ((i< S.Length) && (S[i] >= '0') && (S[i] <= '9')) + i+=1; + return (i >= S.Length); + } + } + + public class WCUtils : Object + { + public static void Debug ( string S, int priority ) + { + System.Console.WriteLine(System.DateTime.UtcNow+"("+priority+") - "+S); + } + } +} diff --git a/RainScout/Wait.cmd b/RainScout/Wait.cmd new file mode 100644 index 0000000..fc11601 --- /dev/null +++ b/RainScout/Wait.cmd @@ -0,0 +1 @@ +TIMEOUT 5 || exit /b 0 \ No newline at end of file diff --git a/RainScout/app.config b/RainScout/app.config new file mode 100644 index 0000000..be8d951 --- /dev/null +++ b/RainScout/app.config @@ -0,0 +1,222 @@ + + + + +
+ + + + + + OpenStreetMap + + + DL2ALF + + + 50.937067 + + + 10.68327 + + + JO50IW + + + 0 + + + 0 + + + + + + ElevationData\GLOBE + + + ElevationData\SRTM1 + + + ElevationData\SRTM3 + + + True + + + False + + + True + + + False + + + 0.6 + + + 0 + + + 1.33 + + + 10 + + + 0 + + + 0 + + + 100 + + + 1000 + + + + + + Horizon\ + + + 600 + + + 200 + + + 45 + + + 8000 + + + 20000 + + + + + + 0 + + + 0 + + + + + + Database\calls.bin + + + 0 + + + 10 + + + 35 + + + 60 + + + -15 + + + 30 + + + B10G + + + SRTM3 + + + + + + False + + + 100 + + + 500 + + + 100 + + + True + + + False + + + False + + + True + + + True + + + True + + + 0 + + + UNDEFINED + + + True + + + True + + + UNDEFINED + + + UNDEFINED + + + UNDEFINED + + + True + + + False + + + False + + + + + + http://www.airscout.eu/usr/getkey.php + + + http://www.airscout.eu/usr/register.php + + + http://www.airscout.eu/usr/upload_location.php + + + http://www.airscout.eu/usr/upload_qrv.php + + + + + + + diff --git a/RainScout/packages.config b/RainScout/packages.config new file mode 100644 index 0000000..a9ee17e --- /dev/null +++ b/RainScout/packages.config @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/SQLiteDatabase/SQLiteDatabase/SQLiteDatabase.csproj b/SQLiteDatabase/SQLiteDatabase/SQLiteDatabase.csproj index d6697ac..1ec7d59 100644 --- a/SQLiteDatabase/SQLiteDatabase/SQLiteDatabase.csproj +++ b/SQLiteDatabase/SQLiteDatabase/SQLiteDatabase.csproj @@ -76,8 +76,8 @@ - - ..\..\packages\System.Data.SQLite.Core.1.0.112.0\lib\net40\System.Data.SQLite.dll + + ..\..\packages\Stub.System.Data.SQLite.Core.NetFramework.1.0.113.3\lib\net40\System.Data.SQLite.dll @@ -109,12 +109,12 @@ - + Dieses Projekt verweist auf mindestens ein NuGet-Paket, das auf diesem Computer fehlt. Verwenden Sie die Wiederherstellung von NuGet-Paketen, um die fehlenden Dateien herunterzuladen. Weitere Informationen finden Sie unter "http://go.microsoft.com/fwlink/?LinkID=322105". Die fehlende Datei ist "{0}". - + simply copy over + File.Copy(file.FullName, oldfilename); + } + else if (new FileInfo(oldfilename).LastWriteTimeUtc < file.LastWriteTimeUtc) + { + // file exists but is older --> delete old file and copy over + File.Delete(oldfilename); + File.Copy(file.FullName, oldfilename); + + } + + if (this.CancellationPending) + return false; + + // reduce CPU load + Thread.Sleep(1); + } + catch (Exception ex) + { + this.ReportProgress(-1, "Error while checking " + oldfilename); + return false; + } + } + + return true; + } + } + catch (Exception ex) + { + // Error loading database + this.ReportProgress(-1, "[" + url + "]: " + ex.ToString()); + } + + return false; + } + + protected override void OnDoWork(DoWorkEventArgs e) + { + StartOptions = (CATUpdaterStartOptions)e.Argument; + this.ReportProgress(0, StartOptions.Name + " started."); + + // name the thread for debugging + if (String.IsNullOrEmpty(Thread.CurrentThread.Name)) + Thread.CurrentThread.Name = nameof(CATUpdater); + + // create directories if not exist + try + { + if (!Directory.Exists(TmpDirectory)) + Directory.CreateDirectory(TmpDirectory); + if (!Directory.Exists(RigData.Database.DefaultDatabaseDirectory())) + Directory.CreateDirectory(RigData.Database.DefaultDatabaseDirectory()); + } + catch (Exception ex) + { + this.ReportProgress(-1, "Error while creating directories: " + ex.ToString()); + } + + this.ReportProgress(0, "Updating rig definitions..."); + + // get update interval + int interval = (int)Properties.Settings.Default.Database_BackgroundUpdate_Period * 60; + do + { + try + { + // check if any kind of update is enabled + if ((StartOptions.Options == BACKGROUNDUPDATERSTARTOPTIONS.RUNONCE) || (StartOptions.Options == BACKGROUNDUPDATERSTARTOPTIONS.RUNPERIODICALLY)) + { + // reset database status + Stopwatch st = new Stopwatch(); + st.Start(); + // clear temporary files + try + { + SupportFunctions.DeleteFilesFromDirectory(TmpDirectory, new string[] { "*" + FileExtension, "*.PendingOverwrite" }); + } + catch (Exception ex) + { + this.ReportProgress(-1, ex.ToString()); + } + // update rig database + this.ReportProgress(0, "Updating rig definitions from web database..."); + // get update from url + if (ReadRigsFromURL(Properties.Settings.Default.Rigs_UpdateURL + "rigs.zip", Path.Combine(TmpDirectory, "rigs.zip"))) + { + st.Stop(); + this.ReportProgress(0, " Rig database update completed: " + st.Elapsed.ToString(@"hh\:mm\:ss")); + } + else + { + st.Stop(); + this.ReportProgress(0, " Rig database update completed with errors: " + st.Elapsed.ToString(@"hh\:mm\:ss")); + } + + if (this.CancellationPending) + break; + + // sleep once to get all messages to main thread + Thread.Sleep(1000); + + // sleep when running periodically + if (StartOptions.Options == BACKGROUNDUPDATERSTARTOPTIONS.RUNPERIODICALLY) + { + int i = 0; + while (!this.CancellationPending && (i < interval)) + { + Thread.Sleep(1000); + i++; + } + } + } + } + catch (Exception ex) + { + this.ReportProgress(-1, ex.ToString()); + } + } + while (!this.CancellationPending && (StartOptions.Options == BACKGROUNDUPDATERSTARTOPTIONS.RUNPERIODICALLY)); + if (this.CancellationPending) + this.ReportProgress(0, "Cancelled."); + else + this.ReportProgress(0, "Finished."); + } + + } +} diff --git a/ScoutBase/ScoutBase.CAT/CommPort.cs b/ScoutBase/ScoutBase.CAT/CommPort.cs new file mode 100644 index 0000000..2219b2b --- /dev/null +++ b/ScoutBase/ScoutBase.CAT/CommPort.cs @@ -0,0 +1,881 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Diagnostics.Contracts; +using System.IO.Ports; +using System.Linq; +using System.Linq.Expressions; +using System.Runtime.Remoting.Channels; +using System.Text; +using System.Threading; +using System.Windows.Forms; + +namespace ScoutBase.CAT +{ + + // enums + + public enum CommWorkerEvent + { + evErr = -1, + evNotify, + evPortStat, + evOnlineStat, + evSent, + evRcvd, + evStatusLine, + evTimeout + // not supported: ,evRlsd + } + + [Description("Stopbits")] + public enum StopBits + { + [Description("1")] + sbOne, + [Description("1,5")] + sbOne_5, + [Description("2")] + sbTwo + } + + [Description("Parity")] + public enum Parity + { + [Description("None")] + ptNone, + [Description("Odd")] + ptOdd, + [Description("Even")] + ptEven, + [Description("Mark")] + ptMark, + [Description("Space")] + ptSpace + } + + [Description("Flow Control")] + public enum FlowControl + { + [Description("Low")] + fcLow, + [Description("High")] + fcHigh, + [Description("Handshake")] + fcHandShake + } + + public enum RxBlockMode { rbChar, rbBlockSize, rbTerminator } + + + public class CommPort : BackgroundWorker + { + + public readonly int BufSize = 1024; + + private DateTime FNextStatusTime = DateTime.MinValue; + private DateTime FDeadLineTime = DateTime.MinValue; + + // command queue + public CommandQueue FQueue = new CommandQueue(); + + // serial port + private SerialPort COM = new SerialPort(); + + private FlowControl FRtsMode = FlowControl.fcLow; + private FlowControl FDtrMode = FlowControl.fcLow; + + // public properties + public string PortName { get { return GetPortName(); } set { SetPortName(value); } } + public int BaudRate { get { return GetBaudRate(); } set { SetBaudRate(value); } } + public int DataBits { get { return GetDataBits(); } set { SetDataBits(value); } } + public StopBits StopBits { get { return GetStopBits(); } set { SetStopBits(value); } } + public Parity Parity { get { return GetParity(); } set { SetParity(value); } } + public FlowControl DtrMode { get { return FDtrMode; } set { SetDtrMode(value); } } + public FlowControl RtsMode { get { return FRtsMode; } set { SetRtsMode(value); } } + public bool Open { get { return GetOpen(); } } + public bool RtsBit { get { return GetRtsBit(); } set { SetRtsBit(value); } } + public bool DtrBit { get { return GetDtrBit(); } set { SetDtrBit(value); } } + public bool CtsBit { get; internal set; } + public bool DsrBit { get; internal set; } + public bool RlsdBit { get { return GetRlsdBit(); } } //(receive-line-signal-detect, not supported yet + + // public events + public delegate void CommNotifyEventHandler(object sender); + + public event CommNotifyEventHandler OnError; + public event CommNotifyEventHandler OnReceived; + public event CommNotifyEventHandler OnSent; + public event CommNotifyEventHandler OnCtsDsr; + + //------------------------------------------------------------------------------ + // Initialization + //------------------------------------------------------------------------------ + + public CommPort() + { + // enable progress report & cancellation + WorkerReportsProgress = true; + WorkerSupportsCancellation = true; + + // create serial port object + SerialPort COM = new SerialPort(); + + COM.ReadBufferSize = BufSize; + + //set default comm paraams + PortName = "COM1"; + BaudRate = 19200; + DataBits = 8; + StopBits = StopBits.sbOne; + Parity = Parity.ptNone; + + FDtrMode = FlowControl.fcLow; + RtsMode = FlowControl.fcLow; + + // do not use xon/off so far + /* + FDcb.XonLim := BUF_SIZE div 2; + FDcb.XoffLim := MulDiv(BUF_SIZE, 3, 4); + FDcb.XonChar := #17; //$11 + FDcb.XoffChar := #19; //$13 + */ + + } + + //------------------------------------------------------------------------------ + // Get/set + //------------------------------------------------------------------------------ + + private bool GetOpen() + { + if (COM != null) + { + return COM.IsOpen; + } + + return false; + } + + private string GetPortName() + { + if (COM != null) + { + return COM.PortName; + } + + return ""; + } + + private int GetBaudRate() + { + if (COM != null) + { + return COM.BaudRate; + } + + return 0; + } + + private int GetDataBits() + { + if (COM != null) + { + return COM.DataBits; + } + + return 0; + } + + private Parity GetParity() + { + if (COM != null) + { + switch (COM.Parity) + { + case System.IO.Ports.Parity.None: + return Parity.ptNone; + case System.IO.Ports.Parity.Odd: + return Parity.ptOdd; + case System.IO.Ports.Parity.Even: + return Parity.ptEven; + case System.IO.Ports.Parity.Mark: + return Parity.ptMark; + case System.IO.Ports.Parity.Space: + return Parity.ptSpace; + } + } + + return Parity.ptNone; + } + + private StopBits GetStopBits() + { + if (COM != null) + { + switch(COM.StopBits) + { + case System.IO.Ports.StopBits.One: + return StopBits.sbOne; + case System.IO.Ports.StopBits.OnePointFive: + return StopBits.sbOne_5; + case System.IO.Ports.StopBits.Two: + return StopBits.sbTwo; + } + } + + return StopBits.sbOne; + } + + private void SetPortName(string value) + { + if (COM != null) + { + // check for empty values --> not allowed! + if (!String.IsNullOrEmpty(value)) + { + COM.PortName = value; + } + + } + } + + private void SetBaudRate(int value) + { + if (COM != null) + { + COM.BaudRate = value; + } + } + + private void SetDataBits(int value) + { + if (COM != null) + { + COM.DataBits = Math.Max(5, Math.Min(8, value)); + } + } + + private void SetParity(Parity value) + { + if (COM != null) + { + switch(value) + { + case Parity.ptNone: + COM.Parity = System.IO.Ports.Parity.None; + break; + case Parity.ptOdd: + COM.Parity = System.IO.Ports.Parity.Odd; + break; + case Parity.ptEven: + COM.Parity = System.IO.Ports.Parity.Even; + break; + case Parity.ptMark: + COM.Parity = System.IO.Ports.Parity.Mark; + break; + case Parity.ptSpace: + COM.Parity = System.IO.Ports.Parity.Space; + break; + } + } + } + + private void SetStopBits(StopBits value) + { + if (COM != null) + { + switch (value) + { + case StopBits.sbOne: + COM.StopBits = System.IO.Ports.StopBits.One; + break; + case StopBits.sbOne_5: + COM.StopBits = System.IO.Ports.StopBits.OnePointFive; + break; + case StopBits.sbTwo: + COM.StopBits = System.IO.Ports.StopBits.Two; + break; + } + } + } + + + //------------------------------------------------------------------------------ + // Read/write + //------------------------------------------------------------------------------ + + public void PurgeRx() + { + if (COM == null) + return; + + COM.DiscardInBuffer(); + } + + public void PurgeTx() + { + if (COM == null) + return; + + COM.DiscardOutBuffer(); + } + + //------------------------------------------------------------------------------ + // Fire events + //------------------------------------------------------------------------------ + + private void FireErrEvent() + { + if (OnError != null) + { + OnError.Invoke(this); + } + } + + private void FireTxEvent() + { + if (OnSent != null) + { + OnSent.Invoke(this); + } + } + + private void FireRxEvent() + { + if (OnReceived != null) + { + OnReceived.Invoke(this); + } + } + + private void FireCtsDsrEvent() + { + if (OnCtsDsr != null) + { + OnCtsDsr.Invoke(this); + } + } + + + //------------------------------------------------------------------------------ + // Control bits + //------------------------------------------------------------------------------ + + private bool GetCtsBit() + { + if (COM != null) + { + return COM.CtsHolding; + } + + return false; + } + + private bool GetDsrBit() + { + if (COM != null) + { + return COM.DsrHolding; + } + + return false; + } + + private bool GetDtrBit() + { + return COM.DtrEnable; + } + + private bool GetRtsBit() + { + return COM.RtsEnable; + } + + private bool GetRlsdBit() + { + // not implemented + return false; + } + + private void SetDtrBit(bool value) + { + if (COM != null) + { + COM.DtrEnable = value; + } + } + + private void SetRtsBit(bool value) + { + if (COM != null) + { + COM.RtsEnable = value; + } + } + + private void SetDtrMode(FlowControl value) + { + if (COM != null) + { + switch (value) + { + case FlowControl.fcLow: + COM.Handshake = Handshake.None; + COM.DtrEnable = false; + break; + case FlowControl.fcHigh: + COM.Handshake = Handshake.None; + COM.DtrEnable = true; + break; + case FlowControl.fcHandShake: + COM.Handshake = Handshake.RequestToSend; + break; + } + } + } + + private void SetRtsMode(FlowControl value) + { + if (COM != null) + { + switch (value) + { + case FlowControl.fcLow: + COM.Handshake = Handshake.None; + COM.RtsEnable = false; + break; + case FlowControl.fcHigh: + COM.Handshake = Handshake.None; + COM.RtsEnable = true; + break; + case FlowControl.fcHandShake: + COM.Handshake = Handshake.RequestToSend; + break; + } + } + } + + //------------------------------------------------------------------------------ + // Queue + //------------------------------------------------------------------------------ + + public void AddCommands(List cmds, CommandKind kind) + { + lock (FQueue) + { + for (int i = 0; i < cmds.Count; i++) + { + QueueItem item = new QueueItem(); + item.Code = cmds[i].Code; + item.Number = i; + item.ReplyLength = cmds[i].ReplyLength; + item.ReplyEnd = ByteFuns.BytesToStr(cmds[i].ReplyEnd); + item.Kind = kind; + FQueue.Add(item); + } + } + } + + + //------------------------------------------------------------------------------ + // Background worker + //------------------------------------------------------------------------------ + + protected override void OnDoWork(DoWorkEventArgs e) + { + // get the startup parameters + CommPortStartParams StartParams = (CommPortStartParams)e.Argument; + + byte[] RxBuffer = null; + RxBlockMode RxBlockMode = RxBlockMode.rbChar; + int RxBlockSize = 0; + string RxBlockTerminator = ""; + + bool PortInitialized = true; // set to true to get a possible error message once + bool PortOpen = false; + bool Online = false; + + // remember old values for check on changes + int OldRxChars = 0; + int OldTxChars = 0; + bool oldrts = false; + bool olddtr = false; + bool oldcts = false; + bool olddsr = false; + + Thread.CurrentThread.Priority = ThreadPriority.Highest; + if (String.IsNullOrEmpty(Thread.CurrentThread.Name)) + { + Thread.CurrentThread.Name = "CommWorker"; + } + + // .NET SerialPort implementation does not have full functionality + // so we try to poll the interface for all information needed and fire according events + + while (!this.CancellationPending) + { + try + { + // hopefully we got a valid SerialPort object + // skip, if not + if (COM == null) + { + throw new NullReferenceException("COM port is null."); + } + + // try to start communication, if not started + if (!COM.IsOpen) + { + try + { + // try to open port, if not open + COM.Open(); + OldRxChars = COM.BytesToRead; + OldTxChars = COM.BytesToWrite; + CtsBit = COM.CtsHolding; + DsrBit = COM.DsrHolding; + + PortInitialized = true; + + // clear buffers + PurgeRx(); + PurgeTx(); + RxBuffer = null; + + // set initial queue and phase, status + lock (FQueue) + { + FQueue.Clear(); + FQueue.Phase = ExchangePhase.phIdle; + } + + Online = false; + + // queue initial commands + this.ReportProgress((int)CommWorkerEvent.evNotify, "Adding init commands to queue."); + AddCommands(StartParams.RigCommands.InitCmd, CommandKind.ckInit); + AddCommands(StartParams.RigCommands.StatusCmd, CommandKind.ckStatus); + } + catch (Exception ex) + { + // report port status on change + if (PortOpen) + { + PortOpen = false; + this.ReportProgress((int)CommWorkerEvent.evPortStat, false); + } + + if (PortInitialized) + { + PortInitialized = false; + throw new InvalidOperationException("Cannot start communication (" + ex.Message + ")"); + } + } + } + + // skip if COM is not open + if (COM.IsOpen) + { + // report port status on change + if (!PortOpen) + { + PortOpen = true; + this.ReportProgress((int)CommWorkerEvent.evPortStat, true); + } + } + else + { + // report port status on change + if (PortOpen) + { + PortOpen = false; + this.ReportProgress((int)CommWorkerEvent.evPortStat, false); + } + Thread.Sleep(1000); + continue; + } + + // check if status refresh is necessary + if (Online && (DateTime.Now > FNextStatusTime)) + { + // are there already status commands in queue? + // add, if not + if (FQueue.HasStatusCommands()) + { + this.ReportProgress((int)CommWorkerEvent.evNotify, "Status commands already in queue."); + } + else + { + this.ReportProgress((int)CommWorkerEvent.evNotify, "Adding status commands to queue."); + AddCommands(StartParams.RigCommands.StatusCmd, CommandKind.ckStatus); + } + + // set next status refresh time + FNextStatusTime = DateTime.Now.AddMilliseconds(StartParams.PollMs); + } + + // are we in phIdle phase? + if (FQueue.Phase == ExchangePhase.phIdle) + { + // rx chars available? --> read them + int rxcount = COM.BytesToRead; + if (rxcount > 0) + { + byte[] buf = new byte[rxcount]; + COM.Read(buf, 0, rxcount); + + // report unexpected bytes + this.ReportProgress((int)CommWorkerEvent.evErr, + "Unexpected bytes in RX buffer: " + ((StartParams.RigCommands.CmdType == CommandType.ctBinary)? ByteFuns.BytesToHex(buf) : "\"" + ByteFuns.BytesToStr(buf) + "\"")); + PurgeRx(); + RxBuffer = null; + } + + // check queue and send next command if any + lock (FQueue) + { + if (FQueue.Count > 0) + { + // clear all buffers + PurgeRx(); + PurgeTx(); + RxBuffer = null; + + // prepare for receiving reply + RxBlockSize = FQueue[0].ReplyLength; + RxBlockTerminator = FQueue[0].ReplyEnd; + if (!String.IsNullOrEmpty(FQueue[0].ReplyEnd)) + RxBlockMode = RxBlockMode.rbTerminator; + else if (FQueue[0].ReplyLength > 0) + RxBlockMode = RxBlockMode.rbBlockSize; + else RxBlockMode = RxBlockMode.rbChar; + + // log + string s = ""; + switch (FQueue[0].Kind) + { + case CommandKind.ckInit: + s = "init"; + break; + case CommandKind.ckWrite: + s = StartParams.RigCommands.ParamToStr(FQueue[0].Param); + break; + case CommandKind.ckStatus: + s = "status"; + break; + case CommandKind.ckCustom: + s = "custom"; + break; + } + this.ReportProgress((int)CommWorkerEvent.evNotify, "Sending " + s + " command (" + + ((StartParams.RigCommands.CmdType == CommandType.ctBinary)? ByteFuns.BytesToHex(FQueue[0].Code) : "\"" + ByteFuns.BytesToStr(FQueue[0].Code) + "\"") + ")"); + + // send command + byte[] buf = FQueue[0].Code; + COM.Write(buf, 0, buf.Length); + + FQueue.Phase = ExchangePhase.phSending; + } + } + } + + // are we in phSending phase? + else if (FQueue.Phase == ExchangePhase.phSending) + { + // still bytes to send? + int txcount = COM.BytesToWrite; + if (txcount > 0) + { + // do nothing and wait until all bytes are sent + } + else + { + // report finish + this.ReportProgress((int)CommWorkerEvent.evSent); + + // do we need reply? + if (FQueue.CurrentCmd().NeedsReply()) + { + // set receiving phase and deadline time + FQueue.Phase = ExchangePhase.phReceiving; + FDeadLineTime = DateTime.Now.AddMilliseconds(StartParams.TimeoutMs); + } + else + { + // delete command and set idle phase + lock (FQueue) + { + FQueue.Delete(0); + FDeadLineTime = DateTime.MaxValue; + FQueue.Phase = ExchangePhase.phIdle; + } + } + } + + } + + // are we in receiving phase? + else if (FQueue.Phase == ExchangePhase.phReceiving) + { + // rx chars available? --> read them + int rxcount = COM.BytesToRead; + if (rxcount > 0) + { + byte[] buf = new byte[rxcount]; + COM.Read(buf, 0, rxcount); + + // initally copy buffer, else resize and append + if (RxBuffer == null) + { + RxBuffer = buf; + } + else + { + int oldlen = RxBuffer.Length; + Array.Resize(ref RxBuffer, RxBuffer.Length + rxcount); + Array.Copy(buf, 0, RxBuffer, oldlen, rxcount); + } + + // fire rx event if rx complete (according to RxBlockMode) + bool fire = false; + switch (RxBlockMode) + { + case RxBlockMode.rbBlockSize: + fire = RxBuffer.Length >= RxBlockSize; + break; + case RxBlockMode.rbTerminator: + // convert RXBuffer to string + // be sure to use a converter with full 8bit conversion + var MyEncoding = Encoding.GetEncoding("Windows-1252"); + string rxstring = MyEncoding.GetString(RxBuffer); + fire = rxstring.EndsWith(RxBlockTerminator); + break; + // rbChar + default: + fire = true; + break; + } + if (fire) + { + Online = true; + + // report that we are online + this.ReportProgress((int)CommWorkerEvent.evOnlineStat, true); + + // report received + // put the current command in the message, so that it won't get lost during processing + this.ReportProgress((int)CommWorkerEvent.evRcvd, new CommReceived(FQueue.CurrentCmd(), RxBuffer)); + + RxBuffer = null; + + // still might be a wrong answer + // remove the command and set idle state anyway + lock (FQueue) + { + FQueue.Delete(0); + FQueue.Phase = ExchangePhase.phIdle; + } + } + } + + // check for Timeout + if (DateTime.Now > FDeadLineTime) + { + if (PortOpen) + { + // report timeout + Online = false; + this.ReportProgress((int)CommWorkerEvent.evTimeout, FQueue.CurrentCmd()); + this.ReportProgress((int)CommWorkerEvent.evOnlineStat, false); + } + + // clear all buffers + PurgeRx(); + PurgeTx(); + lock(FQueue) + { + FQueue.Clear(); + FQueue.Phase = ExchangePhase.phIdle; + } + + // queue initial commands + this.ReportProgress((int)CommWorkerEvent.evNotify, "Adding init commands to queue."); + AddCommands(StartParams.RigCommands.InitCmd, CommandKind.ckInit); + AddCommands(StartParams.RigCommands.StatusCmd, CommandKind.ckStatus); + } + } + + // status line changed? + bool cts = COM.CtsHolding; + bool dsr = COM.DsrHolding; + bool rts = COM.RtsEnable; + bool dtr = COM.DtrEnable; + if (oldrts != rts) + { + // report status line change + oldrts = rts; + this.ReportProgress((int)CommWorkerEvent.evStatusLine); + } + if (olddtr != dtr) + { + // report status line change + olddtr = dtr; + this.ReportProgress((int)CommWorkerEvent.evStatusLine); + } + if (oldcts != cts) + { + // report status line change + oldcts = cts; + this.ReportProgress((int)CommWorkerEvent.evStatusLine); + } + if (olddsr != dsr) + { + // report status line change + olddsr = dsr; + this.ReportProgress((int)CommWorkerEvent.evStatusLine); + } + + Thread.Sleep(StartParams.COMPollMs); + } + catch (Exception ex) + { + // report error + this.ReportProgress((int)CommWorkerEvent.evErr, ex.ToString()); + + // try to close COM + if ((COM != null) && (COM.IsOpen)) + { + try + { + COM.Close(); + + } + catch + { + // do nothing + } + } + + // sleep a while + Thread.Sleep(1000); + } + } + + // try to close COM + if ((COM != null) && (COM.IsOpen)) + { + try + { + COM.Close(); + } + catch + { + // do nothing + } + } + } + + + } +} \ No newline at end of file diff --git a/ScoutBase/ScoutBase.CAT/CommPortStartParams.cs b/ScoutBase/ScoutBase.CAT/CommPortStartParams.cs new file mode 100644 index 0000000..9e8d6ea --- /dev/null +++ b/ScoutBase/ScoutBase.CAT/CommPortStartParams.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Windows.Forms; + +namespace ScoutBase.CAT +{ + // CommPort background worker startup commands + public class CommPortStartParams + { + public int RigNumber { get; set; } = 0; + public RigCommands RigCommands { get; set; } = new RigCommands(); + public int PollMs { get; set; } = 1000; + public int TimeoutMs { get; set; } = 5000; + public int COMPollMs { get; set; } = 20; + } +} diff --git a/ScoutBase/ScoutBase.CAT/CommReceived.cs b/ScoutBase/ScoutBase.CAT/CommReceived.cs new file mode 100644 index 0000000..da0f2e7 --- /dev/null +++ b/ScoutBase/ScoutBase.CAT/CommReceived.cs @@ -0,0 +1,24 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace ScoutBase.CAT +{ + public class CommReceived + { + public QueueItem Cmd { get; set; } = new QueueItem(); + public byte[] Received { get; set; } = new byte[0]; + + public CommReceived() + { + + } + + public CommReceived(QueueItem sent, byte[] received) + { + Cmd = sent; + Received = received; + } + } +} diff --git a/ScoutBase/ScoutBase.CAT/CommStatusBits.cs b/ScoutBase/ScoutBase.CAT/CommStatusBits.cs new file mode 100644 index 0000000..eef85ce --- /dev/null +++ b/ScoutBase/ScoutBase.CAT/CommStatusBits.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Windows.Forms; + +namespace ScoutBase.CAT +{ + public class CommStatusBits + { + public bool Cts { get; set; } = false; + public bool Dsr { get; set; } = false; + + public CommStatusBits() + { + + } + + public CommStatusBits(bool cts, bool dsr) + { + Cts = cts; + Dsr = dsr; + } + } +} diff --git a/ScoutBase/ScoutBase.CAT/CommWorker.cs b/ScoutBase/ScoutBase.CAT/CommWorker.cs new file mode 100644 index 0000000..1baad15 --- /dev/null +++ b/ScoutBase/ScoutBase.CAT/CommWorker.cs @@ -0,0 +1,148 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.IO.Ports; +using System.Linq; +using System.Text; +using System.Threading; + +namespace ScoutBase.CAT +{ + /* + public enum CommWorkerEvent + { + evErr, + evTxEmpty, + exRxChar, + evCts, + evDsr, + evRlsd + } + + public class CommWorker : BackgroundWorker + { + + private int OldRxChars = 0; + private int OldTxChars = 0; + private bool OldCts = false; + private bool OldDsr = false; + + protected override void OnDoWork(DoWorkEventArgs e) + { + Thread.CurrentThread.Priority = ThreadPriority.Highest; + if (String.IsNullOrEmpty(Thread.CurrentThread.Name)) + { + Thread.CurrentThread.Name = "CommPort Worker Thread"; + } + + SerialPort COM = (SerialPort)e.Argument; + + // .NET SerialPort implementation does not have full functionality + // so we try to poll the interface for all information needed and fire according events + + while (!this.CancellationPending) + { + // hopefully we got a valid SerialPort object + if (COM != null) + { + // try to open port, if not open + if (!COM.IsOpen) + { + try + { + COM.Open(); + OldRxChars = COM.BytesToRead; + OldTxChars = COM.BytesToWrite; + OldCts = COM.CtsHolding; + OldDsr = COM.DsrHolding; + } + catch (Exception ex) + { + this.ReportProgress((int)CommWorkerEvent.evErr, ex.ToString()); + Thread.Sleep(1000); + } + } + + // refresh status + if (DateTime.Now > FNextStatusTime) + { + if (FQueue.HasStatusCommands()) + { + OmniRig.Log("RIG" + RigNumber.ToString() + " Status commands already in queue"); + } + else + { + OmniRig.Log("RIG" + RigNumber.ToString() + " Adding status commands to queue"); + AddCommands(RigCommands.StatusCmd, CommandKind.ckStatus); + } + + FNextStatusTime = DateTime.Now.AddMilliseconds(PollMs); + } + + // port is open --> get status info + if (COM.IsOpen) + { + try + { + // rx chars available? + int rxchars = COM.BytesToRead; + if (OldRxChars != rxchars) + { + OldRxChars = rxchars; + this.ReportProgress((int)CommWorkerEvent.exRxChar, rxchars); + } + + // tx empty? + int txchars = COM.BytesToWrite; + if (OldTxChars != txchars) + { + OldTxChars = txchars; + if (txchars == 0) + { + this.ReportProgress((int)CommWorkerEvent.evTxEmpty, txchars); + } + } + + // CTS changed? + bool cts = COM.CtsHolding; + if (OldCts != cts) + { + OldCts = cts; + this.ReportProgress((int)CommWorkerEvent.evCts, cts); + } + + // DSR changed? + bool dsr = COM.DsrHolding; + if (OldDsr != dsr) + { + OldDsr = dsr; + this.ReportProgress((int)CommWorkerEvent.evDsr, dsr); + } + } + catch (Exception ex) + { + this.ReportProgress((int)CommWorkerEvent.evErr, ex.ToString()); + Thread.Sleep(1000); + } + } + + } + + Thread.Sleep(10); + } + + // try to close COM + if ((COM != null) && (COM.IsOpen)) + { + COM.Close(); + } + } + + public CommWorker() + { + this.WorkerReportsProgress = true; + this.WorkerSupportsCancellation = true; + } + } + */ +} diff --git a/ScoutBase/ScoutBase.CAT/CommandKind.cs b/ScoutBase/ScoutBase.CAT/CommandKind.cs new file mode 100644 index 0000000..b9de650 --- /dev/null +++ b/ScoutBase/ScoutBase.CAT/CommandKind.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace ScoutBase.CAT +{ + public enum CommandKind + { + ckInit, + ckWrite, + ckStatus, + ckCustom + } +} diff --git a/ScoutBase/ScoutBase.CAT/CommandQueue.cs b/ScoutBase/ScoutBase.CAT/CommandQueue.cs new file mode 100644 index 0000000..09a91a3 --- /dev/null +++ b/ScoutBase/ScoutBase.CAT/CommandQueue.cs @@ -0,0 +1,59 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Collections.ObjectModel; +using System.IO; + +namespace ScoutBase.CAT +{ + public class CommandQueue : Collection + { + public ExchangePhase Phase = ExchangePhase.phIdle; + + public CommandQueue() + { + + } + + public void Delete(int index) + { + this.RemoveAt(index); + } + + public QueueItem AddBeforeStatusCommands(QueueItem item) + { + int idx = this.Count; + // decrease insert index in case of status commands pending + // item[0] is the command currently worked on, so start with 1 + for (int i = 1; i < this.Count; i++) + { + if (this[i].Kind == CommandKind.ckStatus) + { + idx = i; + break; + } + } + + this.Insert(idx, item); + return item; + } + + public bool HasStatusCommands() + { + foreach (QueueItem item in this) + { + if (item.Kind == CommandKind.ckStatus) + return true; + } + + return false; + } + + public QueueItem CurrentCmd() + { + return this[0]; + } + + } +} diff --git a/ScoutBase/ScoutBase.CAT/CustomRig.cs b/ScoutBase/ScoutBase.CAT/CustomRig.cs new file mode 100644 index 0000000..8bcf276 --- /dev/null +++ b/ScoutBase/ScoutBase.CAT/CustomRig.cs @@ -0,0 +1,836 @@ +using System; +using System.CodeDom; +using System.Security.Cryptography; +using System.Windows.Forms; + +namespace ScoutBase.CAT +{ + // Base class for a rig to derive from + public abstract class CustomRig + { + // private constant für COM port polling + private readonly int COMPollMs = 20; + + // private rig command set + private RigCommands FRigCommands = new RigCommands(); + + // private port & rig status, values & parameters + protected bool FEnabled = false; + protected bool FPortOpen = false; + protected bool FOnline = false; + protected long FFreq = 0; + protected long FFreqA = 0; + protected long FFreqB = 0; + protected long FRitOffset = 0; + protected long FPitch = 0; + protected RigParam FVfo = RigParam.pmNone; + protected RigParam FSplit = RigParam.pmNone; + protected RigParam FRit = RigParam.pmNone; + protected RigParam FXit = RigParam.pmNone; + protected RigParam FTx = RigParam.pmNone; + protected RigParam FMode = RigParam.pmNone; + protected PortBits FPortBits = new PortBits(); + + // public members + public int RigNumber = 0; + + public int PollMs = 0; + public int TimeoutMs = 0; + + public CommPort ComPort = new CommPort(); + public RigParam LastWrittenMode = RigParam.pmNone; + + // public rig status + public RigCtlStatus Status { get { return GetStatus(); } } + public string StatusStr { get { return GetStatusStr(); } } + + // public rig command set + public RigCommands RigCommands { get { return FRigCommands; } set { SetRigCommands(value); } } + public bool Enabled { get { return FEnabled; } set { SetEnabled(value); } } + public bool PortOpen { get { return FPortOpen; } set { SetPortOpen(value); } } + public bool Online { get { return FOnline; } set { SetOnline(value); } } + + // public properties + public long Freq { get { return FFreq; } set { SetFreq(value); } } + public long FreqA { get { return FFreqA; } set { SetFreqA(value); } } + public long FreqB { get { return FFreqB; } set { SetFreqB(value); } } + public long Pitch { get { return FPitch; } set { SetPitch(value); } } + public long RitOffset { get { return FRitOffset; } set { SetRitOffset(value); } } + public RigParam Vfo { get { return FVfo; } set { SetVfo(value); } } + public RigParam Split { get { return FSplit; } set { SetSplit(value); } } + public RigParam Rit { get { return FRit; } set { SetRit(value); } } + public RigParam Xit { get { return FXit; } set { SetXit(value); } } + public RigParam Tx { get { return FTx; } set { SetTx(value); } } + public RigParam Mode { get { return FMode; } set { SetMode(value); } } + public PortBits PortBits { get { return FPortBits; } } + + // these commands are implemented in the descendant class, + // just to keep them in a separate file + protected abstract void AddWriteCommand(RigParam param, long value = 0); + protected abstract void AddCustomCommand(object sender, byte[] code, int len, string end); + + protected abstract void ProcessInitReply(int number, byte[] data); + protected abstract void ProcessStatusReply(int number, byte[] data); + protected abstract void ProcessWriteReply(RigParam param, byte[] data); + protected abstract void ProcessCustomReply(object sender, byte[] code, byte[] data); + + + //------------------------------------------------------------------------------ + // System + //------------------------------------------------------------------------------ + + public CustomRig() + { + if (ComPort != null) + { + // set PortBits + if (FPortBits != null) + { + FPortBits.FPort = ComPort; + } + + // subscribe to COM port event + ComPort.ProgressChanged += ComPort_ProgressChanged; + } + } + + //------------------------------------------------------------------------------ + // Status + //------------------------------------------------------------------------------ + + private RigCtlStatus GetStatus() + { + if (RigCommands == null) + return RigCtlStatus.stNotConfigured; + else if (!FEnabled) + return RigCtlStatus.stDisabled; + else if (!FPortOpen) + return RigCtlStatus.stPortBusy; + else if (!FOnline) + return RigCtlStatus.stNotResponding; + else return RigCtlStatus.stOnLine; + } + + private string GetStatusStr() + { + string[] statusstr = new string[] { "Rig is not configured", "Rig is disabled", "Port is not available", "Rig is not responding", "Rig is online" }; + return statusstr[(int)GetStatus()]; + } + + + //------------------------------------------------------------------------------ + // Rig capabilities + //------------------------------------------------------------------------------ + + public bool IsParamReadable(RigParam param) + { + if (RigCommands == null) + return false; + if (RigCommands.ReadableParams == null) + return false; + + return RigCommands.ReadableParams.Contains(param); + } + + public bool IsParamWriteable(RigParam param) + { + if (RigCommands == null) + return false; + if (RigCommands.WriteableParams == null) + return false; + + return RigCommands.WriteableParams.Contains(param); + } + + //------------------------------------------------------------------------------ + // COM port + //------------------------------------------------------------------------------ + + private void SetEnabled(bool value) + { + // do nothing if already enabled + if (FEnabled == value) + return; + + // check for valid rig commands + if (RigCommands == null) + return; + + // check for valid COM port + if (ComPort == null) + return; + + // set new value & do additional stuff + if (value) + { + // log + OmniRig.Log(new LogNotifyEventArgs(DateTime.UtcNow, LOGLEVEL.llInfo, "Starting RIG" + RigNumber.ToString())); + + // start COM + if (!ComPort.IsBusy) + { + // set parameter + CommPortStartParams p = new CommPortStartParams(); + p.RigNumber = RigNumber; + p.RigCommands = RigCommands; + p.PollMs = PollMs; + p.TimeoutMs = TimeoutMs; + p.COMPollMs = COMPollMs; + + // start background worker + DateTime timeout = DateTime.Now.AddMilliseconds(TimeoutMs); + ComPort.RunWorkerAsync(p); + while (!ComPort.IsBusy) + { + Application.DoEvents(); + if (DateTime.Now > timeout) + { + // report timeout & live with it + OmniRig.Log(new LogNotifyEventArgs(DateTime.UtcNow, LOGLEVEL.llError, "RIG" + RigNumber.ToString() + " Timeout while starting ComPortWorker.")); + } + } + } + + FEnabled = true; + } + else + { + + // log + OmniRig.Log(new LogNotifyEventArgs(DateTime.UtcNow, LOGLEVEL.llInfo, "Stopping RIG" + RigNumber.ToString())); + + // stop background worker + DateTime timeout = DateTime.Now.AddMilliseconds(TimeoutMs); + ComPort.CancelAsync(); + while (ComPort.IsBusy) + { + Application.DoEvents(); + if (DateTime.Now > timeout) + { + // report timeout + OmniRig.Log(new LogNotifyEventArgs(DateTime.UtcNow, LOGLEVEL.llError, "RIG" + RigNumber.ToString() + " Timeout while stopping ComPortWorker.")); + // kill COM port on timeout to be sure, that the port is released + ComPort = null; + GC.Collect(); + ComPort = new CommPort(); + } + } + + // reset stati + FEnabled = false; + SetPortOpen(false); + } + + // fire status event + OmniRig.FireComNotifyStatus(RigNumber); + + LastWrittenMode = RigParam.pmNone; + + } + + private void SetPortOpen(bool value) + { + // do nothing if already open + if (FPortOpen == value) + return; + + if (value) + { + FPortOpen = true; + } + else + { + FPortOpen = false; + SetOnline(false); + } + + // fire status event + OmniRig.FireComNotifyStatus(RigNumber); + } + + private void SetOnline (bool value) + { + // do nothing if already online + if (FOnline == value) + return; + + // set new value & do additional stuff + if (value) + { + FOnline = true; + } + else + { + FOnline = false; + + // clear all public stati & values & properties + FFreq = 0; + FFreqA = 0; + FFreqB = 0; + FPitch = 0; + FRitOffset = 0; + FVfo = RigParam.pmNone; + FSplit = RigParam.pmNone; + FRit = RigParam.pmNone; + FXit = RigParam.pmNone; + FTx = RigParam.pmNone; + FMode = RigParam.pmNone; + + } + + // fire status event + OmniRig.FireComNotifyStatus(RigNumber); + + // fire param event + OmniRig.FireComNotifyParams(RigNumber, 6); + } + + //------------------------------------------------------------------------------ + // Set param + //------------------------------------------------------------------------------ + + private void SetRigCommands(RigCommands value) + { + FRigCommands = value; + OmniRig.FireComNotifyRigType(RigNumber); + } + + private void SetFreq(long value) + { + // return on not enabled or not writeable + if (!Enabled || !IsParamWriteable(RigParam.pmFreq)) + return; + + AddWriteCommand(RigParam.pmFreq, value); + } + + private void SetFreqA(long value) + { + // return on not enabled or not writeable + if (!Enabled || !IsParamWriteable(RigParam.pmFreqA)) + return; + + AddWriteCommand(RigParam.pmFreqA, value); + } + + private void SetFreqB(long value) + { + // return on not enabled or not writeable + if (!Enabled || !IsParamWriteable(RigParam.pmFreqB)) + return; + + AddWriteCommand(RigParam.pmFreqB, value); + } + + private void SetPitch(long value) + { + // return on not enabled or not writeable + if (!Enabled || IsParamWriteable(RigParam.pmPitch)) + return; + + AddWriteCommand(RigParam.pmPitch, value); + + // remember the pitch that we set if we cannot read it back from the rig + if (!IsParamReadable(RigParam.pmPitch)) + { + FPitch = value; + + // fake ParamChange notification + OmniRig.FireComNotifyParams(RigNumber, 1); + } + } + + private void SetRitOffset(long value) + { + // return on not enabled or not writeable + if (!Enabled || !IsParamWriteable(RigParam.pmRitOffset)) + return; + + AddWriteCommand(RigParam.pmRitOffset, value); + } + + private void SetMode(RigParam param) + { + // return on not enabled or not in set or not writeable + if (!Enabled || !RigParams.ModeParams.Contains(param) || !IsParamWriteable(param)) + return; + + AddWriteCommand(param); + } + + private void SetRit(RigParam param) + { + // return on not enabled or not in set or not writeable + if (!Enabled || !RigParams.RitOnParams.Contains(param) || !IsParamWriteable(param)) + return; + + AddWriteCommand(param); + } + + private void SetSplit(RigParam param) + { + // return on not enabled or not in set or not writeable + if (!Enabled || !RigParams.SplitOnParams.Contains(param) || !IsParamWriteable(param)) + return; + + if (IsParamWriteable(param) && (param != Split)) + { + AddWriteCommand(param); + } + + // emulate split mode if not writeable + else if (param == RigParam.pmSplitOn) + { + if (Vfo == RigParam.pmVfoAA) + { + Vfo = RigParam.pmVfoAB; + } + else if (Vfo == RigParam.pmVfoBB) + { + Vfo = RigParam.pmVfoBA; + } + } + else + { + if (Vfo == RigParam.pmVfoAB) + { + Vfo = RigParam.pmVfoAA; + } + else if (Vfo == RigParam.pmVfoBA) + { + Vfo = RigParam.pmVfoBB; + } + } + } + + private void SetTx(RigParam param) + { + // return on not enabled or not in set or not writeable + if (!Enabled || !RigParams.TxParams.Contains(param) || !IsParamWriteable(param)) + return; + + AddWriteCommand(param); + } + + private void SetVfo(RigParam param) + { + // return on not enabled or not in set or not writeable + if (!Enabled || !RigParams.VfoParams.Contains(param) || !IsParamWriteable(param)) + return; + + AddWriteCommand(param); + } + + public void ForceVfo(RigParam param) + { + // return on not enabled or not in set or not writeable + if (!Enabled || !RigParams.ModeParams.Contains(param) || !IsParamWriteable(param)) + return; + + AddWriteCommand(param); + } + + private void SetXit(RigParam param) + { + // return on not enabled or not in set or not writeable + if (!Enabled || !RigParams.XitOnParams.Contains(param) || !IsParamWriteable(param)) + return; + + AddWriteCommand(param); + } + + private RigParam GetSplit() + { + if (FSplit != RigParam.pmNone) + return FSplit; + + // emulate Split from VFO if not readable + if ((Vfo == RigParam.pmVfoAA) || (Vfo == RigParam.pmVfoBB)) + return RigParam.pmSplitOff; + else if ((Vfo == RigParam.pmVfoAB) || (Vfo == RigParam.pmVfoBA)) + return RigParam.pmSplitOn; + return RigParam.pmNone; + } + + //------------------------------------------------------------------------------ + // Public methods + //------------------------------------------------------------------------------ + + public void ClearRit() + { + AddWriteCommand(RigParam.pmRit0); + } + + public long FrequencyOfTone(int tone) + { + long result = tone; + + lock (this) + { + if ((Mode == RigParam.pmCW_U) || (Mode == RigParam.pmCW_L)) + { + result -= Pitch; + } + if ((Mode == RigParam.pmCW_L) || (Mode == RigParam.pmSSB_L)) + { + result = -result; + } + + result += Freq; + } + + return result; + } + + public long GetRxFrequency() + { + long result = 0; + lock (this) + { + try + { + if (IsParamReadable(RigParam.pmFreqA) && new RigParamSet() { RigParam.pmVfoA, RigParam.pmVfoAA, RigParam.pmVfoAB }.Contains(Vfo)) + { + result = FreqA; + } + else if (IsParamReadable(RigParam.pmFreqB) && new RigParamSet() { RigParam.pmVfoB, RigParam.pmVfoBA, RigParam.pmVfoBB }.Contains(Vfo)) + { + result = FreqB; + } + else if ((Tx != RigParam.pmTx) || (Split != RigParam.pmSplitOn)) + { + result = Freq; + } + else + { + result = 0; + } + + //include RIT + if (Rit == RigParam.pmRitOn) + { + result += RitOffset; + } + } + catch (Exception ex) + { + OmniRig.Log(new LogNotifyEventArgs(DateTime.UtcNow, LOGLEVEL.llComm, "RIG" + RigNumber.ToString() + " Error while calcluating RX frequency: " + ex.Message)); + } + } + + return result; + } + + public long GetTxFrequency() + { + long result = 0; + lock (this) + { + try + { + if (IsParamReadable(RigParam.pmFreqA) && new RigParamSet() { RigParam.pmVfoAA, RigParam.pmVfoBA }.Contains(Vfo)) + { + result = FreqA; + } + else if (IsParamReadable(RigParam.pmFreqB) && new RigParamSet() { RigParam.pmVfoAB, RigParam.pmVfoBB }.Contains(Vfo)) + { + result = FreqB; + } + else if (Tx != RigParam.pmTx) + { + result = Freq; + } + else + { + result = 0; + } + + //include XIT + if (Xit == RigParam.pmXitOn) + { + result += RitOffset; + } + } + catch (Exception ex) + { + + } + } + + return result; + } + + + // sets the rig to a simplex mode on frequency + // the disableritxit parameter is for compatibility + public void SetSimplexMode(long freq, bool disableritxit = true) + { + // return on empty command set + if (RigCommands == null) + return; + + if (IsParamWriteable(RigParam.pmFreqA) && IsParamWriteable(RigParam.pmVfoAA)) + { + ForceVfo(RigParam.pmVfoAA); + FreqA = freq; + } + else if (IsParamWriteable(RigParam.pmFreqA) && IsParamWriteable(RigParam.pmVfoA) && IsParamWriteable(RigParam.pmSplitOff)) + { + ForceVfo(RigParam.pmVfoA); + FreqA = freq; + } + else if (IsParamWriteable(RigParam.pmFreq) && IsParamWriteable(RigParam.pmVfoA) && IsParamWriteable(RigParam.pmVfoB)) + { + ForceVfo(RigParam.pmVfoB); + Freq = freq; + ForceVfo(RigParam.pmVfoA); + Freq = freq; + } + else if (IsParamWriteable(RigParam.pmFreq) && IsParamWriteable(RigParam.pmVfoEqual)) + { + Freq = freq; + ForceVfo(RigParam.pmVfoEqual); + } + else if (IsParamWriteable(RigParam.pmFreq) && IsParamWriteable(RigParam.pmVfoSwap)) + { + ForceVfo(RigParam.pmVfoSwap); + Freq = freq; + ForceVfo(RigParam.pmVfoSwap); + Freq = freq; + } + // Added by RA6UAZ for Icom Marine Radio NMEA Command + else if (IsParamWriteable(RigParam.pmFreq) && !IsParamWriteable(RigParam.pmFreqA) && IsParamWriteable(RigParam.pmFreqB)) + { + Freq = freq; + FreqB = freq; + } + else if (IsParamWriteable(RigParam.pmFreq)) + { + Freq = freq; + } + + if (IsParamWriteable(RigParam.pmSplitOff)) + { + Split = RigParam.pmSplitOff; + } + + // why? + if (disableritxit) + { + Rit = RigParam.pmRitOff; + Xit = RigParam.pmXitOff; + } + } + + // sets the rig to a duplex mode on two frequencies + // the disableritxit parameter is for compatibility + public void SetSplitMode(long rxfreq, long txfreq, bool disableritxit = true) + { + // return on empty command set + if (RigCommands == null) + return; + + //set rx and tx frequencies and split + if (IsParamWriteable(RigParam.pmFreqA) && IsParamWriteable(RigParam.pmFreqB) && IsParamWriteable(RigParam.pmVfoAB)) + { + // TS-570 + ForceVfo(RigParam.pmVfoAB); + FreqA = rxfreq; + FreqB = txfreq; + } + else if (IsParamWriteable(RigParam.pmFreq) && IsParamWriteable(RigParam.pmVfoEqual)) + { + // IC-746 + Freq = txfreq; + ForceVfo(RigParam.pmVfoEqual); + Freq = rxfreq; + } + else if (IsParamWriteable(RigParam.pmVfoB) && IsParamWriteable(RigParam.pmFreq) && IsParamWriteable(RigParam.pmVfoA)) + { + // FT-100D + ForceVfo(RigParam.pmVfoB); + Freq = txfreq; + ForceVfo(RigParam.pmVfoA); + Freq = rxfreq; + } + else if (IsParamWriteable(RigParam.pmFreq) && IsParamWriteable(RigParam.pmVfoSwap)) + { + // FT-817 ? + ForceVfo(RigParam.pmVfoSwap); + Freq = txfreq; + ForceVfo(RigParam.pmVfoSwap); + Freq = rxfreq; + } + else if (IsParamWriteable(RigParam.pmFreqA) && IsParamWriteable(RigParam.pmFreqB) && IsParamWriteable(RigParam.pmVfoA)) + { + //FT-1000 MP, IC-7610 + ForceVfo(RigParam.pmVfoA); + FreqA = rxfreq; + FreqB = txfreq; + } + // Added by RA6UAZ for Icom Marine Radio NMEA Command + else if (IsParamWriteable(RigParam.pmFreq) && !IsParamWriteable(RigParam.pmFreqA) && IsParamWriteable(RigParam.pmFreqB)) + { + Freq = rxfreq; + FreqB = txfreq; + } + + if (IsParamWriteable(RigParam.pmSplitOn)) + { + Split = RigParam.pmSplitOn; + } + + // why? + if (disableritxit) + { + Rit = RigParam.pmRitOff; + Xit = RigParam.pmXitOff; + } + } + + public void SetBothModes(RigParam value) + { + + } + + //------------------------------------------------------------------------------ + // Comm event + //------------------------------------------------------------------------------ + + private void ComPort_ProgressChanged(object sender, System.ComponentModel.ProgressChangedEventArgs e) + { + // try to catch all exceptions here so that they do not affect serial communication + try + { + // report error + if (e.ProgressPercentage == (int)CommWorkerEvent.evErr) + { + OmniRig.Log(new LogNotifyEventArgs(DateTime.UtcNow, LOGLEVEL.llError, "RIG" + RigNumber.ToString() + " COM Error on " + ((ComPort != null)? ComPort.PortName : "[null]") + ": " + (string)e.UserState)); + + // set rig offline and fire event + if (FOnline) + { + FOnline = false; + OmniRig.FireComNotifyStatus(RigNumber); + } + } + + // report notify + else if (e.ProgressPercentage == (int)CommWorkerEvent.evNotify) + { + OmniRig.Log(new LogNotifyEventArgs(DateTime.UtcNow, LOGLEVEL.llComm, "RIG" + RigNumber.ToString() + " COM Message: " + (string)e.UserState)); + } + + // report port status + else if (e.ProgressPercentage == (int)CommWorkerEvent.evPortStat) + { + bool portopen = (bool)e.UserState; + if (FPortOpen && !portopen) + { + FPortOpen = false; + FOnline = false; + OmniRig.FireComNotifyStatus(RigNumber); + } + else if (!FPortOpen & portopen) + { + FPortOpen = true; + OmniRig.FireComNotifyStatus(RigNumber); + } + } + + // report online status + else if (e.ProgressPercentage == (int)CommWorkerEvent.evOnlineStat) + { + bool online = (bool)e.UserState; + + // set online status and fire event, if necessary + if (FOnline & !online) + { + OmniRig.Log(new LogNotifyEventArgs(DateTime.UtcNow, LOGLEVEL.llError, "RIG" + RigNumber.ToString() + " COM Timeout while receiving.")); + FOnline = false; + OmniRig.FireComNotifyStatus(RigNumber); + } + else if (!FOnline & online) + { + FOnline = true; + OmniRig.FireComNotifyStatus(RigNumber); + } + } + + // report rx message + else if (e.ProgressPercentage == (int)CommWorkerEvent.evRcvd) + { + CommReceived rcvd = (CommReceived)e.UserState; + + OmniRig.Log(new LogNotifyEventArgs( + DateTime.UtcNow, + LOGLEVEL.llComm, + "RIG" + RigNumber.ToString() + " COM Reply received (" + ((RigCommands.CmdType == CommandType.ctBinary)? ByteFuns.BytesToHex(rcvd.Received) : "\"" + ByteFuns.BytesToStr(rcvd.Received) + "\"") + ")")); + + //process data + try + { + switch (rcvd.Cmd.Kind) + { + case CommandKind.ckInit: + ProcessInitReply(rcvd.Cmd.Number, rcvd.Received); + break; + case CommandKind.ckWrite: + ProcessWriteReply(rcvd.Cmd.Param, rcvd.Received); + break; + case CommandKind.ckStatus: + ProcessStatusReply(rcvd.Cmd.Number, rcvd.Received); + break; + case CommandKind.ckCustom: + ProcessCustomReply(rcvd.Cmd.CustSender, rcvd.Cmd.Code, rcvd.Received); + break; + } + } + catch (Exception ex) + { + OmniRig.Log(new LogNotifyEventArgs(DateTime.UtcNow, LOGLEVEL.llFatal, "RIG" + RigNumber.ToString() + " Error while processing reply: " + ex.Message)); + } + } + else if (e.ProgressPercentage == (int)CommWorkerEvent.evStatusLine) + { + OmniRig.Log(new LogNotifyEventArgs( + DateTime.UtcNow, + LOGLEVEL.llComm, + "RIG" + RigNumber.ToString() + + " Status line changed: CTS = " + + ((ComPort.CtsBit) ? "ON" : "OFF") + ", DSR=" + + ((ComPort.DsrBit) ? "ON" : "OFF"))); + + // no event to fire so far? + // fire ComStatus instead + OmniRig.FireComNotifyStatus(RigNumber); + } + + // report receiving timeout + else if (e.ProgressPercentage == (int)CommWorkerEvent.evTimeout) + { + // get last command from UserState + // should not be null, but we want to be sure + string bytes = "[null]"; + if (e.UserState != null) + { + bytes = (RigCommands.CmdType == CommandType.ctBinary)? ByteFuns.BytesToHex(((QueueItem)e.UserState).Code) : "\"" + ByteFuns.BytesToStr(((QueueItem)e.UserState).Code) + "\""; + } + OmniRig.Log(new LogNotifyEventArgs( + DateTime.UtcNow, LOGLEVEL.llError, "RIG" + RigNumber.ToString() + " COM Timeout: Missing answer from rig (" + bytes + ")")); + + // set rig offline and fire event + if (FOnline) + { + FOnline = false; + OmniRig.FireComNotifyStatus(RigNumber); + } + } + } + catch (Exception ex) + { + OmniRig.Log(new LogNotifyEventArgs(DateTime.UtcNow, LOGLEVEL.llFatal, "RIG" + RigNumber.ToString() + " Error while processing message from COM: " + ex.Message)); + } + } + } +} diff --git a/ScoutBase/ScoutBase.CAT/ExchangePhase.cs b/ScoutBase/ScoutBase.CAT/ExchangePhase.cs new file mode 100644 index 0000000..63f7197 --- /dev/null +++ b/ScoutBase/ScoutBase.CAT/ExchangePhase.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace ScoutBase.CAT +{ + public enum ExchangePhase + { + phSending, + phReceiving, + phIdle + } +} diff --git a/ScoutBase/ScoutBase.CAT/Helpers.cs b/ScoutBase/ScoutBase.CAT/Helpers.cs new file mode 100644 index 0000000..7b2e8a7 --- /dev/null +++ b/ScoutBase/ScoutBase.CAT/Helpers.cs @@ -0,0 +1,26 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Reflection; +using System.Text; + +namespace ScoutBase.CAT +{ + public static class Helpers + { + /// + /// Returns true if running under Linux/Mono + /// + public static bool IsMono + { + get + { + int p = (int)Environment.OSVersion.Platform; + return (p == 4) || (p == 6) || (p == 128); + } + } + + + } +} diff --git a/ScoutBase/ScoutBase.CAT/LogNotifyEventArgs.cs b/ScoutBase/ScoutBase.CAT/LogNotifyEventArgs.cs new file mode 100644 index 0000000..dbce19d --- /dev/null +++ b/ScoutBase/ScoutBase.CAT/LogNotifyEventArgs.cs @@ -0,0 +1,37 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Text; + +namespace ScoutBase.CAT +{ + [Description("Log level for log notifications")] + public enum LOGLEVEL + { + [Description("All")] + llAll = 0, + [Description("Communication")] + llComm = 1, + [Description("Info")] + llInfo = 2, + [Description("Errors")] + llError = 3, + [Description("Fatal")] + llFatal = 4 + } + + public class LogNotifyEventArgs + { + public DateTime TimeStamp { get; set; } = DateTime.UtcNow; + public LOGLEVEL LogLevel { get; set; } = LOGLEVEL.llAll; + public string Message { get; set; } = ""; + + public LogNotifyEventArgs(DateTime timestamp, LOGLEVEL loglevel, string message) + { + TimeStamp = timestamp; + LogLevel = loglevel; + Message = message; + } + } +} diff --git a/ScoutBase/ScoutBase.CAT/OmniRig.cs b/ScoutBase/ScoutBase.CAT/OmniRig.cs new file mode 100644 index 0000000..f2ae676 --- /dev/null +++ b/ScoutBase/ScoutBase.CAT/OmniRig.cs @@ -0,0 +1,173 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Reflection; +using System.Runtime.Remoting.Messaging; +using System.Text; +using System.Windows.Forms; +using System.Diagnostics; + +namespace ScoutBase.CAT +{ + public static class OmniRig + { + + // Rig settings directory + public static string RigDefinitionsDirectory = RigData.Database.DefaultDatabaseDirectory(); + public static string RigDefinitionsFileExtension = ".ini"; + + // Log + public static string LogFileName { get; set; } = "CAT.log"; + public static void Log(LogNotifyEventArgs args) + { + try + { + File.AppendAllText(LogFileName, "[" + args.TimeStamp.ToString("yyyy-MM-dd HH:mm:ss,fff") + "][" + args.LogLevel.ToString() + "]: " + args.Message + Environment.NewLine) ; + if (LogNotify != null) + { + LogNotify.Invoke(args); + } + } + catch (Exception ex) + { + Console.WriteLine("Unable to write to logfile [" + LogFileName + "]:" + ex.ToString()); + } + } + + // Rigs + public static Rig Rig1 = new Rig(1); + public static Rig Rig2 = new Rig(2); + public static Rig Rig3 = new Rig(3); + public static Rig Rig4 = new Rig(4); + + // public properties + public static bool DialogVisible { get; } = false; // not supported so far + public static int SoftwareVersion + { + get + { + int version = 0; + FileVersionInfo info = FileVersionInfo.GetVersionInfo(Assembly.GetExecutingAssembly().Location); + version = ((info.FileMajorPart & 0x0000FFFF) << 16) + (info.FileMinorPart & 0x0000FFFF); + return version; + } + } + public static int InterfaceVersion + { + get + { + int version = 0; + Version ver = Assembly.GetExecutingAssembly().GetName().Version; + version = ((ver.Major & 0x0000FFFF) << 16) + (ver.Minor & 0x0000FFFF); + return version; + } + } + + // public events + public delegate void RigTypeChangeEventHandler(int rignumber); + public static event RigTypeChangeEventHandler RigTypeChange; + + public delegate void StatusChangeEventHandler(int rignumber); + public static event StatusChangeEventHandler StatusChange; + + public delegate void ParamsChangeEventHandler(int rignumber, int Params); + public static event ParamsChangeEventHandler ParamsChange; + + public delegate void CustomReplyEventHandler(int rignumber, object sender, byte[] code, byte[] data); + public static event CustomReplyEventHandler CustomReply; + + // never fired, for compatibility only + public delegate void VisibleChangeEventHandler(); + public static event VisibleChangeEventHandler VisibleChange; + + public delegate void LogNotifyEventHandler(LogNotifyEventArgs args); + public static event LogNotifyEventHandler LogNotify; + + public static void FireComNotifyRigType(int rignumber) + { + if (OmniRig.RigTypeChange != null) + { + OmniRig.RigTypeChange.Invoke(rignumber); + } + } + + public static void FireComNotifyStatus(int rignumber) + { + if (OmniRig.StatusChange != null) + { + OmniRig.StatusChange.Invoke(rignumber); + } + } + + public static void FireComNotifyParams(int rignumber, int Params) + { + if (OmniRig.ParamsChange != null) + { + OmniRig.ParamsChange.Invoke(rignumber, Params); + } + } + + // different implementation as there is no ActiveX object + public static void FireComNotifyCustom(int rignumber, object sender, byte[] code, byte[] data) + { + if (OmniRig.CustomReply != null) + { + OmniRig.CustomReply.Invoke(rignumber, sender, code, data); + } + } + + // gets a rig command set from settings file using rig type name + public static RigCommands CommandsFromRigType (string rigtype) + { + // return empty command set on empty rig type name + if (String.IsNullOrEmpty(rigtype)) + return new RigCommands(); + + // check for invalid directory name --> set application executing directory instead + string settingsdir = OmniRig.RigDefinitionsDirectory; + if (!Directory.Exists(settingsdir)) + { + settingsdir = Application.StartupPath; + } + + // check for invalid settings extension --> change to standard extension + string settingsextension = OmniRig.RigDefinitionsFileExtension; + if (String.IsNullOrEmpty(settingsextension) || !settingsextension.StartsWith(".")) + { + settingsextension = ".ini"; + } + return RigCommands.FromIni(Path.Combine(settingsdir, rigtype + settingsextension)); + } + + // list all supported rigs from rig settings files found in RigDefinitionsDirectory + public static List SupportedRigs() + { + List rigs = new List(); + + // return empty list, if directory does not extist + if (!Directory.Exists(RigDefinitionsDirectory)) + return rigs; + try + { + Console.WriteLine("Getting rig definition files (*" + RigDefinitionsFileExtension + ") from " + RigDefinitionsDirectory); + // get all configuration files from directory + string[] configs = Directory.GetFiles(RigDefinitionsDirectory, "*" + RigDefinitionsFileExtension); + Console.WriteLine("Found " + configs.Length + " file(s)."); + // get straight filename without extension + for (int i = 0; i < configs.Length; i++) + { + string rig = Path.GetFileNameWithoutExtension(configs[i]); + rigs.Add(rig); + } + } + catch (Exception ex) + { + // do nothing + } + + // return a list of rigs + return rigs; + } + } +} diff --git a/ScoutBase/ScoutBase.CAT/ParamValue.cs b/ScoutBase/ScoutBase.CAT/ParamValue.cs new file mode 100644 index 0000000..baa20d2 --- /dev/null +++ b/ScoutBase/ScoutBase.CAT/ParamValue.cs @@ -0,0 +1,26 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading; + +namespace ScoutBase.CAT +{ + public class ParamValue + { + public int Start, Len; //insert or extract bytes, Start is a 0-based index + public ValueFormat Format; //encode or decode according to this format + public double Mult, Add; //linear transformation before encoding or after decoding + public RigParam Param; //param to insert or to report + + public ParamValue() + { + Start = 0; + Len = 0; + Format = ValueFormat.vfNone; + Mult = 0; + Add = 0; + Param = RigParam.pmNone; + } + } +} diff --git a/ScoutBase/ScoutBase.CAT/PortBits.cs b/ScoutBase/ScoutBase.CAT/PortBits.cs new file mode 100644 index 0000000..77db302 --- /dev/null +++ b/ScoutBase/ScoutBase.CAT/PortBits.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace ScoutBase.CAT +{ + public class PortBits + { + public bool Cts { get { return (FPort != null) ? FPort.CtsBit : false; } } + public bool Dsr { get { return (FPort != null) ? FPort.DsrBit : false; } } + public bool Dtr { get { return (FPort != null) ? FPort.DtrBit : false; } set { if (FPort != null) FPort.DtrBit = value; } } + public bool Rts { get { return (FPort != null) ? FPort.RtsBit : false; } set { if (FPort != null) FPort.RtsBit = value; } } + + public CommPort FPort = null; + + public bool Lock() + { + // not used? + return false; + } + + public void Unlock() + { + // not used? + } + } +} diff --git a/ScoutBase/ScoutBase.CAT/Properties/AssemblyInfo.cs b/ScoutBase/ScoutBase.CAT/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..a88b120 --- /dev/null +++ b/ScoutBase/ScoutBase.CAT/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Allgemeine Informationen über eine Assembly werden über die folgenden +// Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern, +// die einer Assembly zugeordnet sind. +[assembly: AssemblyTitle("ScoutBase.CAT")] +[assembly: AssemblyDescription("ScoutBase CAT interface")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("DL2ALF")] +[assembly: AssemblyProduct("ScoutBase")] +[assembly: AssemblyCopyright("Copyright © 2021 DL2ALF")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Durch Festlegen von ComVisible auf FALSE werden die Typen in dieser Assembly +// für COM-Komponenten unsichtbar. Wenn Sie auf einen Typ in dieser Assembly von +// COM aus zugreifen müssen, sollten Sie das ComVisible-Attribut für diesen Typ auf "True" festlegen. +[assembly: ComVisible(false)] + +// Die folgende GUID bestimmt die ID der Typbibliothek, wenn dieses Projekt für COM verfügbar gemacht wird +[assembly: Guid("c9291203-b5d0-4179-888d-04bc670b158f")] + +// Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten: +// +// Hauptversion +// Nebenversion +// Buildnummer +// Revision +// +// Sie können alle Werte angeben oder Standardwerte für die Build- und Revisionsnummern verwenden, +// indem Sie "*" wie unten gezeigt eingeben: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("3.0.0.0")] +[assembly: AssemblyFileVersion("3.0.0.0")] diff --git a/ScoutBase/ScoutBase.CAT/Properties/Settings.Designer.cs b/ScoutBase/ScoutBase.CAT/Properties/Settings.Designer.cs new file mode 100644 index 0000000..ca002a4 --- /dev/null +++ b/ScoutBase/ScoutBase.CAT/Properties/Settings.Designer.cs @@ -0,0 +1,62 @@ +//------------------------------------------------------------------------------ +// +// Dieser Code wurde von einem Tool generiert. +// Laufzeitversion:4.0.30319.42000 +// +// Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn +// der Code erneut generiert wird. +// +//------------------------------------------------------------------------------ + +namespace ScoutBase.CAT.Properties { + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.5.0.0")] + public sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default { + get { + return defaultInstance; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("60")] + public int Database_BackgroundUpdate_Period { + get { + return ((int)(this["Database_BackgroundUpdate_Period"])); + } + set { + this["Database_BackgroundUpdate_Period"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("http://www.airscout.eu/downloads/ScoutBase/1/RigData/")] + public string Rigs_UpdateURL { + get { + return ((string)(this["Rigs_UpdateURL"])); + } + set { + this["Rigs_UpdateURL"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("")] + public string Database_Directory { + get { + return ((string)(this["Database_Directory"])); + } + set { + this["Database_Directory"] = value; + } + } + } +} diff --git a/ScoutBase/ScoutBase.CAT/Properties/Settings.settings b/ScoutBase/ScoutBase.CAT/Properties/Settings.settings new file mode 100644 index 0000000..34ba9d7 --- /dev/null +++ b/ScoutBase/ScoutBase.CAT/Properties/Settings.settings @@ -0,0 +1,15 @@ + + + + + + 60 + + + http://www.airscout.eu/downloads/ScoutBase/1/RigData/ + + + + + + \ No newline at end of file diff --git a/ScoutBase/ScoutBase.CAT/QueueItem.cs b/ScoutBase/ScoutBase.CAT/QueueItem.cs new file mode 100644 index 0000000..e7d170f --- /dev/null +++ b/ScoutBase/ScoutBase.CAT/QueueItem.cs @@ -0,0 +1,26 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace ScoutBase.CAT +{ + public class QueueItem + { + public byte[] Code = new byte[0]; + public CommandKind Kind = CommandKind.ckInit; + + public RigParam Param = RigParam.pmNone; // param of Set comand + public int Number; // ordinal number of Init or Status command + public object CustSender; // COM object that sent custom command + + public int ReplyLength = 0; + public string ReplyEnd = ""; + + public bool NeedsReply() + { + return (ReplyLength > 0) || (!String.IsNullOrEmpty(ReplyEnd)); + } + + } +} diff --git a/ScoutBase/ScoutBase.CAT/Rig.cs b/ScoutBase/ScoutBase.CAT/Rig.cs new file mode 100644 index 0000000..7fe1082 --- /dev/null +++ b/ScoutBase/ScoutBase.CAT/Rig.cs @@ -0,0 +1,674 @@ +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Globalization; +using System.Linq; +using System.Runtime.CompilerServices; +using System.Text; + +namespace ScoutBase.CAT +{ + public class Rig : CustomRig + { + + protected RigParamSet ChangedParams = new RigParamSet(); + + public Rig(int rignumber = 0) + { + // set rig number + RigNumber = rignumber; + } + + //------------------------------------------------------------------------------ + // Interpret reply + //------------------------------------------------------------------------------ + + private bool ValidateReply(byte[] data, BitMask mask) + { + bool result = false; + + if (mask == null) + return true; + if (data.Length != mask.Mask.Length) + return false; + if (data.Length != mask.Flags.Length) + return false; + + var MyEncoding = Encoding.GetEncoding("Windows-1252"); + string datastr = MyEncoding.GetString(data); + string flagstr = MyEncoding.GetString(mask.Flags); + + result = ByteFuns.BytesEqual(ByteFuns.BytesAnd(data, mask.Mask), mask.Flags); + return result; + } + + protected override void ProcessInitReply(int number, byte[] data) + { + ValidateReply(data, RigCommands.InitCmd[number].Validation); + } + + protected override void ProcessStatusReply(int number, byte[] data) + { + try + { + // validate reply + RigCommand cmd = RigCommands.StatusCmd[number]; + if (!ValidateReply(data, cmd.Validation)) + { + throw new ArgumentException("Reply validation failed (" + ((RigCommands.CmdType == CommandType.ctBinary)? ByteFuns.BytesToHex(data) : "\"" + ByteFuns.BytesToStr(data) + "\"") + ")"); + } + + // extract numeric values + for (int i = 0; i < cmd.Values.Count; i++) + { + StoreParam(cmd.Values[i].Param, UnformatValue(data, cmd.Values[i])); + } + + // extract bit flags + for (int i = 0; i < cmd.Flags.Count; i++) + { + if ((data.Length == cmd.Flags[i].Mask.Length) && (data.Length == cmd.Flags[i].Flags.Length)) + { + if (ByteFuns.BytesEqual(ByteFuns.BytesAnd(data, cmd.Flags[i].Mask), cmd.Flags[i].Flags)) + { + StoreParam(cmd.Flags[i].Param); + } + } + else + { + throw new ArgumentException("Incorrect reply length (" + ((RigCommands.CmdType == CommandType.ctBinary) ? ByteFuns.BytesToHex(data) : "\"" + ByteFuns.BytesToStr(data) + "\"") + ")"); + } + } + + // tell clients + if (ChangedParams.Count > 0) + { + OmniRig.FireComNotifyParams(RigNumber, ChangedParams.Count); + ChangedParams.Clear(); + } + } + catch (Exception ex) + { + // log error + OmniRig.Log(new LogNotifyEventArgs(DateTime.UtcNow, LOGLEVEL.llError, "RIG" + RigNumber.ToString() + " Error processing status reply: " + ex.Message)); + } + } + + protected override void ProcessWriteReply(RigParam param, byte[] data) + { + ValidateReply(data, RigCommands.WriteCmd[param].Validation); + } + + protected override void ProcessCustomReply(object sender, byte[] code, byte[] data) + { + // different implementation as there is no ActiveX object + OmniRig.FireComNotifyCustom(RigNumber, this, code, data); + } + + //------------------------------------------------------------------------------ + // Add command to queue + //------------------------------------------------------------------------------ + + protected override void AddWriteCommand(RigParam param, long value = 0) + { + // return on empty rig commands + if (RigCommands == null) + return; + + // generate cmd + try + { + + // is cmd supported? + RigCommand cmd = RigCommands.WriteCmd[param]; + if (cmd.Code == null) + { + throw new ArgumentException("Write command not supported for " + RigCommands.ParamToStr(param)); + } + + byte[] newcode = cmd.Code; + byte[] fmtvalue = null; + + // command with value? + if (cmd.Value.Format != ValueFormat.vfNone) + { + // format value and handle exception + fmtvalue = FormatValue(value, cmd.Value); + + // check available space + if (cmd.Value.Start + cmd.Value.Len > newcode.Length) + { + throw new ArgumentException("Value too long (" + value.ToString() + ")"); + } + + // copy value to the right place of destination + Array.Copy(fmtvalue, 0, newcode, cmd.Value.Start, cmd.Value.Len); + } + + //add command to queue + lock (ComPort.FQueue) + { + QueueItem item = new QueueItem(); + item.Code = newcode; + item.Param = param; + item.Kind = CommandKind.ckWrite; + item.ReplyLength = cmd.ReplyLength; + item.ReplyEnd = ByteFuns.BytesToStr(cmd.ReplyEnd); + ComPort.FQueue.AddBeforeStatusCommands(item); + } + + // log + if (cmd.Value.Format != ValueFormat.vfNone) + { + OmniRig.Log(new LogNotifyEventArgs(DateTime.UtcNow, LOGLEVEL.llInfo, "RIG" + RigNumber.ToString() + " Generating write command for " + RigCommands.ParamToStr(param) + " = " + value.ToString())); + } + else + { + OmniRig.Log(new LogNotifyEventArgs(DateTime.UtcNow, LOGLEVEL.llInfo, "RIG" + RigNumber.ToString() + " Generating write command for " + RigCommands.ParamToStr(param) + " set")); + } + + } + catch (Exception ex) + { + OmniRig.Log(new LogNotifyEventArgs(DateTime.UtcNow, LOGLEVEL.llError, "RIG" + RigNumber.ToString() + " Error while generating write command: " + ex.Message)); + } + } + + protected override void AddCustomCommand(object sender, byte[] code, int len, string end) + { + if (code == null) + return; + + try + { + lock (ComPort.FQueue) + { + QueueItem item = new QueueItem(); + item.Code = code; + item.Kind = CommandKind.ckCustom; + item.CustSender = sender; + item.ReplyLength = len; + item.ReplyEnd = end; + ComPort.FQueue.Add(item); + } + + // not implemented + // PostMessage(MainForm.Handle, WM_TXQUEUE, RigNumber, 0); + } + catch (Exception ex) + { + OmniRig.Log(new LogNotifyEventArgs(DateTime.UtcNow, LOGLEVEL.llError, "RIG" + RigNumber.ToString() + " Error while generating custom command: " + ex.Message)); + } + } + + + + //------------------------------------------------------------------------------ + // Format + //------------------------------------------------------------------------------ + + private byte[] FormatValue(long value, ParamValue info) + { + // scale value according to param info + value = (long)Math.Round(value * info.Mult + info.Add); + + // create result array + byte[] result = new byte[info.Len]; + + // check for invalid values + if (((info.Format == ValueFormat.vfBcdLU) || (info.Format == ValueFormat.vfBcdBU)) && (value < 0)) + { + throw new ArgumentException("User passed invalid value (" + value.ToString() + ")"); + } + + // convert format + switch (info.Format) + { + case ValueFormat.vfText: ToText(ref result, value); break; + case ValueFormat.vfBinL: ToBinL(ref result, value); break; + case ValueFormat.vfBinB: ToBinB(ref result, value); break; + case ValueFormat.vfBcdLU: ToBcdLU(ref result, value); break; + case ValueFormat.vfBcdLS: ToBcdLS(ref result, value); break; + case ValueFormat.vfBcdBU: ToBcdBU(ref result, value); break; + case ValueFormat.vfBcdBS: ToBcdBS(ref result, value); break; + case ValueFormat.vfYaesu: ToYaesu(ref result, value); break; + // Added by RA6UAZ for Icom Marine Radio NMEA Command + case ValueFormat.vfDPIcom: ToDPIcom(ref result, value); break; + case ValueFormat.vfTextUD: ToTextUD(ref result, value); break; + } + + // return result + return result; + } + + // ASCII codes of digits + private void ToText(ref byte[] arr, long value) + { + int len = arr.Length; + string s = value.ToString(); + if (s.Length <= len) + { + s = s.PadLeft(len, '0'); + } + else + { + throw new ArgumentException("Value is too long (" + value.ToString() + ")"); + } + var MyEncoding = Encoding.GetEncoding("Windows-1252"); + arr = MyEncoding.GetBytes(s); + } + + private void ToTextUD(ref byte[] arr, long value) + { + int len = arr.Length; + string s = Math.Abs(value).ToString(); + if (s.Length <= len - 1) + { + s = s.PadLeft(arr.Length, '0'); + if (value > 0) + { + s = "U" + s.Remove(0, 1); + } + else + { + s = "D" + s.Remove(0, 1); + } + } + else + { + throw new ArgumentException("Value is too long (" + value.ToString() + ")"); + } + var MyEncoding = Encoding.GetEncoding("Windows-1252"); + arr = MyEncoding.GetBytes(s); + } + + // Added by RA6UAZ for Icom Marine Radio NMEA Command + private void ToDPIcom(ref byte[] arr, long value) + { + double f= value / 1000000.0; + string s = f.ToString("F6", CultureInfo.InvariantCulture).PadLeft(arr.Length,'0'); + var MyEncoding = Encoding.GetEncoding("Windows-1252"); + arr = MyEncoding.GetBytes(s); + } + + // integer, little endian + private void ToBinL(ref byte[] arr, long value) + { + // get length of array to switch between int and long + int len = arr.Length; + if (len < 8) + { + // assuming int + // check bounds and cast value to integer + if ((value <= int.MaxValue) && (value >= int.MinValue)) + { + int v = (int)value; + byte[] a = BitConverter.GetBytes(v); + Array.Copy(a, arr, len); + } + else + { + throw new ArgumentException("Value is out of bounds (" + value.ToString() + ")"); + } + } + else + { + // assuming long or even longer + byte[] a = BitConverter.GetBytes(value); + Array.Copy(a, arr, len); + } + } + + // integer, big endian + private void ToBinB(ref byte[] arr, long value) + { + arr = BitConverter.GetBytes(value); + Array.Reverse(arr); + } + + // BCD big endian unsigned + private void ToBcdBU(ref byte[] arr, long value) + { + byte[] chars = new byte[arr.Length * 2]; + ToText(ref chars, value); + for (int i = 0; i < arr.Length; i++) + { + arr[i] = (byte)(((chars[i * 2] - (byte)('0')) << 4) | (chars[i * 2 + 1] - (byte)('0'))); + } + } + + // BCD little endian unsigned + private void ToBcdLU(ref byte[] arr, long value) + { + ToBcdBU(ref arr, value); + Array.Reverse(arr); + } + + // BCD little endian signed; sign in high byte (00 or FF) + private void ToBcdLS(ref byte[] arr, long value) + { + ToBcdLU(ref arr, Math.Abs(value)); + if (value < 0) + { + arr[arr.Length] = 0xFF; + } + } + + // BCD big endian signed + private void ToBcdBS(ref byte[] arr, long value) + { + ToBcdBU(ref arr, Math.Abs(value)); + if (value < 0) + { + arr[0] = 0xFF; + } + + } + + // 16 bits. high bit of the 1-st byte is sign, + // the rest is integer, absolute value, big endian (not complementary!) + private void ToYaesu(ref byte[] arr, long value) + { + ToBinB(ref arr, Math.Abs(value)); + if (value < 0) + { + arr[0] = (byte)(arr[0] | 0x80); + } + } + + //------------------------------------------------------------------------------ + // Unformat + //------------------------------------------------------------------------------ + + // bytes to value + private long UnformatValue(byte[] data, ParamValue info) + { + // create result variable and temp arrray + long result = 0; + byte[] value = new byte[info.Len]; + // copy over bytes from answer to temp array + Array.Copy(data, info.Start, value, 0, info.Len); + + // check for successful copy + if ((value == null) || (value.Length != info.Len)) + { + throw new ArgumentException("Reply too short or malformatted(" + ((RigCommands.CmdType == CommandType.ctBinary) ? ByteFuns.BytesToHex(data) : "\"" + ByteFuns.BytesToStr(data) + "\"") + ")"); + } + + // convert bytes to value + switch (info.Format) + { + case ValueFormat.vfText: result = FromText(value); break; + case ValueFormat.vfBinL: result = FromBinL(value); break; + case ValueFormat.vfBinB: result = FromBinB(value); break; + case ValueFormat.vfBcdLU: result = FromBcdLU(value); break; + case ValueFormat.vfBcdLS: result = FromBcdLS(value); break; + case ValueFormat.vfBcdBU: result = FromBcdBU(value); break; + case ValueFormat.vfBcdBS: result = FromBcdBS(value); break; + // Added by RA6UAZ for Icom Marine Radio NMEA Command + case ValueFormat.vfDPIcom: result = FromDPIcom(value); break; + case ValueFormat.vfYaesu: result = FromYaesu(value); break; + } + + // scale value according to param info + result = (long)Math.Round(result * info.Mult + info.Add); + + // return result + return result; + } + + private long FromText(byte[] data) + { + long result = 0; + var MyEncoding = Encoding.GetEncoding("Windows-1252"); + string s = MyEncoding.GetString(data); + if (!long.TryParse(s, out result)) + { + throw new ArgumentException("Invalid reply(" + ((RigCommands.CmdType == CommandType.ctBinary) ? ByteFuns.BytesToHex(data) : "\"" + ByteFuns.BytesToStr(data) + "\"") + ")"); + } + + return result; + } + + // Added by RA6UAZ for Icom Marine Radio NMEA Command + private long FromDPIcom(byte[] data) + { + var MyEncoding = Encoding.GetEncoding("Windows-1252"); + string s = MyEncoding.GetString(data); + // cut string at first non-numeric char + for (int i = 0; i < s.Length; i++) + { + if (!s[i].ToString().All("0123456789.".Contains)) + { + s = s.Substring(0, i-1); + break; + } + } + double result = 0; + double.TryParse(s, NumberStyles.Float, CultureInfo.InvariantCulture, out result); + result = 1000000.0 * result; + return (long)Math.Round(result); + } + + private long FromBinL(byte[] data) + { + byte[] b; + + //propagate sign if data is less than 8 bytes + if ((data[data.Length - 1] & 0x80) > 0) + { + b = new byte[sizeof(long)] { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; + } + else + { + b = new byte[sizeof(long)] { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80 }; + } + + //copy data + Array.Copy(data, b, Math.Min(data.Length, sizeof(long))); + + return BitConverter.ToInt64(b, 0); + + } + + private long FromBinB(byte[] data) + { + Array.Reverse(data); + return FromBinL(data); + } + + private long FromBcdBU(byte[] data) + { + char[] chars = new char[data.Length * 2]; + for (int i = 0; i < data.Length; i++) + { + chars[i * 2] = (char)((byte)('0') + ((data[i] >> 4) & 0x0F)); + chars[i * 2 + 1] = (char)((byte)('0') + (data[i] & 0x0F)); + } + + long result = 0; + if (!long.TryParse(new string(chars), out result)) + { + throw new FormatException("Invalid BCD value (" + ((RigCommands.CmdType == CommandType.ctBinary) ? ByteFuns.BytesToHex(data) : "\"" + ByteFuns.BytesToStr(data) + "\"") + ")"); + } + + return result; + } + + private long FromBcdLU(byte[] data) + { + Array.Reverse(data); + return FromBcdBU(data); + } + + private long FromBcdBS(byte[] data) + { + int result = 0; + if (data[0] == 0) + { + result = 1; + } + else + { + result = -1; + } + data[0] = 0; + return result * FromBcdBU(data); + } + + private long FromBcdLS(byte[] data) + { + Array.Reverse(data); + return FromBcdBS(data); + } + + //16 bits. high bit of the 1-st byte is sign, + //the rest is integer, absolute value, big endian (not complementary!) + private long FromYaesu(byte[] data) + { + long result = 0; + if ((data[0] & 0x80) == 0) + { + result = 1; + } + else + { + result = -1; + } + data[0] = (byte)(data[0] & 0x7F); + return result * FromBinB(data); + } + + //------------------------------------------------------------------------------ + // Store extracted param + //------------------------------------------------------------------------------ + + private void StoreParam(RigParam param) + { + RigParam p = RigParam.pmNone; + if (RigParams.VfoParams.Contains(param)) + p = FVfo; + else if (RigParams.SplitOnParams.Contains(param)) + p = FSplit; + else if (RigParams.RitOnParams.Contains(param)) + p = FRit; + else if (RigParams.XitOnParams.Contains(param)) + p = FXit; + else if (RigParams.TxParams.Contains(param)) + p = FTx; + else if (RigParams.ModeParams.Contains(param)) + p = FMode; + else return; + + // return on no change + if (p == param) + return; + + // set param + if (RigParams.VfoParams.Contains(param)) + FVfo = param; + else if (RigParams.SplitOnParams.Contains(param)) + FSplit = param; + else if (RigParams.RitOnParams.Contains(param)) + FRit = param; + else if (RigParams.XitOnParams.Contains(param)) + FXit = param; + else if (RigParams.TxParams.Contains(param)) + FTx = param; + else if (RigParams.ModeParams.Contains(param)) + FMode = param; + else return; + + // add parameter to set of changes + ChangedParams.Add(p); + + // unsolved problem: + // there is no command to read the mode of the other VFO, + // its change goes undetected. + if (RigParams.ModeParams.Contains(param) && (param != LastWrittenMode)) + { + LastWrittenMode = RigParam.pmNone; + } + + // log + OmniRig.Log(new LogNotifyEventArgs(DateTime.UtcNow, LOGLEVEL.llInfo, "RIG" + RigNumber.ToString() + " Param changed: " + RigCommands.ParamToStr(param) + " set")); + + } + + private void StoreParam(RigParam param, long value) + { + long v = 0; + switch (param) + { + case RigParam.pmFreqA: v = FFreqA; break; + case RigParam.pmFreqB: v = FFreqB; break; + case RigParam.pmFreq: v = FFreq; break; + case RigParam.pmPitch: v = FPitch; break; + case RigParam.pmRitOffset: v = FRitOffset; break; + default: + return; + } + + // return on no change + if (v == value) + return; + + // set value + switch (param) + { + case RigParam.pmFreqA: FFreqA = value; break; + case RigParam.pmFreqB: FFreqB = value; break; + case RigParam.pmFreq: FFreq = value; break; + case RigParam.pmPitch: FPitch = value; break; + case RigParam.pmRitOffset: FRitOffset = value; break; + default: + return; + } + + // add parameter to set of changes + ChangedParams.Add(param); + + // log + OmniRig.Log(new LogNotifyEventArgs(DateTime.UtcNow, LOGLEVEL.llInfo, "RIG" + RigNumber.ToString() + " param changed: " + RigCommands.ParamToStr(param) + " = " + value.ToString())); + } + + + public void SendCustomCommand(dynamic command, int replylength, dynamic replyend) + { + byte[] cmd = new byte[0]; + byte[] t = new byte[0]; + string trm = ""; + + if (command.GetType() == typeof(byte)) + { + cmd = new byte[1]; + cmd[0] = (byte)command; + } + else if (command.GetType() == typeof(byte[])) + { + cmd = (byte[])command; + } + else if (command.GetType() == typeof(string)) + { + cmd = ByteFuns.StrToBytes((string)command); + } + + if (replyend.GetType() == typeof(byte)) + { + t = new byte[1]; + t[0] = (byte)replyend; + trm = ByteFuns.BytesToStr(t); + } + else if (replyend.GetType() == typeof(byte[])) + { + trm = ByteFuns.BytesToStr(replyend); + } + else if (replyend.GetType() == typeof(string)) + { + trm = replyend; + } + + AddCustomCommand(this, cmd, replyend, trm); + } + } +} diff --git a/ScoutBase/ScoutBase.CAT/RigCommand.cs b/ScoutBase/ScoutBase.CAT/RigCommand.cs new file mode 100644 index 0000000..fde8a1e --- /dev/null +++ b/ScoutBase/ScoutBase.CAT/RigCommand.cs @@ -0,0 +1,27 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace ScoutBase.CAT +{ + public class RigCommand + { + // what to send + public byte[] Code = new byte[0]; + public ParamValue Value = new ParamValue(); + + // what to wait for + public byte[] ReplyEnd = new byte[0]; + public int ReplyLength = 0; + public BitMask Validation = new BitMask(); + + // what to extract + public List Values = new List(); + public List Flags = new List(); + + public RigCommand() + { + } + } +} diff --git a/ScoutBase/ScoutBase.CAT/RigCommands.cs b/ScoutBase/ScoutBase.CAT/RigCommands.cs new file mode 100644 index 0000000..e30a221 --- /dev/null +++ b/ScoutBase/ScoutBase.CAT/RigCommands.cs @@ -0,0 +1,879 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.Diagnostics; +using System.Globalization; +using System.IO; +using System.Linq; +using System.Runtime.Remoting.Messaging; +using System.Text; +using IniParser; +using IniParser.Model; + +namespace ScoutBase.CAT +{ + public enum CommandType + { + ctNone = 0, + ctASCII = 1, + ctBinary = 2 + } + + public class RigCommands + { + // public properties + public string RigType { get; internal set; } = ""; + public CommandType CmdType = CommandType.ctNone; + public bool WasError + { + get + { + return ((ErrorList != null) && ErrorList.Count > 0); + } + } + + public List InitCmd = new List(); + public Dictionary WriteCmd = new Dictionary(); + public List StatusCmd = new List(); + + public RigParamSet ReadableParams = new RigParamSet(); + public RigParamSet WriteableParams = new RigParamSet(); + + // private + private List ErrorList = new List(); + + public RigCommands() + { + RigType = ""; + } + + // -------------------------------------------------------------------- + // Logging + // -------------------------------------------------------------------- + + private void Log(string msg, string section = "", string entry = "", string value = "", bool showvalue = false) + { + if (showvalue && !String.IsNullOrEmpty(section) && !String.IsNullOrEmpty(entry)) + { + value = " in " + value; + } + + // only console output is yet implemented + msg = "[" + section + "]." + entry + ": " + msg + " " + value; + Console.WriteLine(msg); + ErrorList.Add(msg); + } + + //------------------------------------------------------------------------------ + // Clear record + //------------------------------------------------------------------------------ + + public void Clear(ref RigCommand rec) + { + rec.Code = null; + Clear(ref rec.Value); + rec.ReplyLength = 0; + rec.ReplyEnd = null; + Clear(ref rec.Validation); + rec.Values = null; + rec.Flags = null; + } + + public void Clear(ref ParamValue rec) + { + rec.Start = 0; + rec.Len = 0; + rec.Format = ValueFormat.vfNone; + rec.Mult = 0; + rec.Add = 0; + rec.Param = RigParam.pmNone; + } + + public void Clear(ref BitMask rec) + { + rec.Mask = null; + rec.Flags = null; + rec.Param = RigParam.pmNone; + } + + + //------------------------------------------------------------------------------ + // Create + //------------------------------------------------------------------------------ + + public static RigCommands FromIni(string filename) + { + RigCommands commands = new RigCommands(); + + if (!File.Exists(filename)) + return commands; + + // set rig type + commands.RigType = Path.GetFileNameWithoutExtension(filename); + + // read ini + IniData inidata = new FileIniDataParser().ReadFile(filename); + + // iterate throug all sections and append command, if valid + foreach (SectionData section in inidata.Sections) + { + if (section.SectionName.ToUpper().StartsWith("INIT")) + { + commands.LoadInitCmd(section); + } + else if (section.SectionName.ToUpper().StartsWith("STATUS")) + { + commands.LoadStatusCmd(section); + } + else + { + commands.LoadWriteCmd(section); + } + } + + // list supported params + commands.ListSupportedParams(); + + // return result + return commands; + } + + //------------------------------------------------------------------------------ + // Load + //------------------------------------------------------------------------------ + + //Value=5|5|vfBcdL|1|0[|pmXXX] + private ParamValue LoadValue(SectionData section, string entry) + { + ParamValue result = new ParamValue(); + + string value = ""; + string[] a; + + try + { + value = section.Keys[entry]; + if (String.IsNullOrEmpty(value)) + return result; + + a = value.Split('|'); + } + catch + { + throw new ArgumentException("Invalid parameter >" + value + "<"); + } + + switch (a.Length) + { + case 0: + return result; + case 5: + break; + case 6: + try + { + result.Param = StrToParam(a[5]); + } + catch (Exception ex) + { + throw new ArgumentException(ex.Message); + } + break; + default: + throw new ArgumentException("Invalid syntax >" + value + "<"); + } + + try + { + result.Start = int.Parse(a[0]); + } + catch + { + throw new ArgumentException("Invalid integer >" + value + "<"); + } + + try + { + result.Len = int.Parse(a[1]); + } + catch + { + throw new ArgumentException("Invalid integer >" + value + "<"); + } + + try + { + result.Format = StrToFmt(a[2]); + } + catch + { + throw new ArgumentException("Invalid format string >" + value + "<"); + } + + try + { + result.Mult = double.Parse(a[3], CultureInfo.InvariantCulture); + } + catch + { + throw new ArgumentException("Invalid Multiplier value >" + value + "<"); + } + + try + { + result.Add = double.Parse(a[4], CultureInfo.InvariantCulture); + } + catch + { + throw new ArgumentException("Invalid Add value >" + value + "<"); + } + + return result; + } + + private RigCommand LoadCommon(SectionData section) + { + RigCommand command = new RigCommand(); + string value = ""; + string entry = "Command"; + try + { + value = section.Keys[entry]; + if (!String.IsNullOrEmpty(value)) + { + command.Code = StrToBytes(value); + } + } + catch + { + Log("Invalid byte string", section.SectionName, entry, value); + throw new ArgumentException(); + } + + entry = "ReplyLength"; + try + { + value = section.Keys[entry]; + if (!String.IsNullOrEmpty(value)) + { + command.ReplyLength = int.Parse(value); + } + } + catch + { + Log("Invalid integer value", section.SectionName, entry, value); + throw new ArgumentException(); + } + + entry = "ReplyEnd"; + try + { + value = section.Keys[entry]; + if (!String.IsNullOrEmpty(value)) + { + command.ReplyEnd = StrToBytes(value); + } + } + catch + { + Log("Invalid byte string", section.SectionName, entry, value); + throw new ArgumentException(); + } + + entry = "Validate"; + try + { + value = section.Keys[entry]; + if (!String.IsNullOrEmpty(value)) + { + command.Validation = StrToMask(value); + } + } + catch + { + Log("Invalid byte string", section.SectionName, entry, value); + throw new ArgumentException(); + } + + return command; + } + + private void LoadInitCmd(SectionData section) + { + // empty section + if ((section == null) || (section.Keys.Count == 0)) + return; + + RigCommand command = new RigCommand(); + + // validate all entries + // log but continue on errors + try + { + ValidateEntryNames(section, new string[] { "COMMAND", "REPLYLENGTH", "REPLYEND", "VALIDATE" }); + } + catch (Exception ex) + { + Log(ex.Message, section.SectionName); + } + + // load command + // stop on errors + try + { + command = LoadCommon(section); + + // check if values are set --> not allowed in INIT + if ((command.Value != null) && (command.Value.Format != ValueFormat.vfNone)) + { + Log("Value is not allowed in INIT", section.SectionName); + throw new ArgumentException(); + } + } + catch (Exception ex) + { + // do nothing but return on error + return; + } + + // add command + InitCmd.Add(command); + } + + + private void LoadStatusCmd(SectionData section) + { + // empty section + if ((section == null) || (section.Keys.Count == 0)) + return; + + RigCommand command = new RigCommand(); + + // validate all entries + // log but continue on errors + try + { + ValidateEntryNames(section, new string[] { "COMMAND", "REPLYLENGTH", "REPLYEND", "VALIDATE", "VALUE*", "FLAG*" }); + } + catch (Exception ex) + { + Log(ex.Message, section.SectionName); + } + + // load command + // stop on errors + try + { + command = LoadCommon(section); + + // check if reply length or reply end is set + if ((command.ReplyLength == 0) && (command.ReplyEnd == null)) + { + Log("Either ReplyLength or ReplyEnd must be specified", section.SectionName); + throw new ArgumentException(); + } + + // iterate through entries and get values + foreach (KeyData key in section.Keys) + { + string entry = key.KeyName; + string value = key.Value; + if (entry.ToUpper().StartsWith("VALUE")) + { + try + { + ParamValue paramvalue = LoadValue(section,entry); + ValidateValue(paramvalue, Math.Max(command.ReplyLength, command.Validation.Mask.Length)); + // report error but continue + if (paramvalue.Param == RigParam.pmNone) + { + Log("Parameter name is missing >" + value + "<", section.SectionName, entry); + } + if (!RigParams.NumericParams.Contains(paramvalue.Param)) + { + Log("Parameter must be of numeric type <" + value + "<", section.SectionName, entry); + } + + // add value + if (command.Values == null) + { + command.Values = new List(); + } + command.Values.Add(paramvalue); + } + catch (Exception ex) + { + Log(ex.Message,section.SectionName, entry); + throw new ArgumentException(); + } + } + else if (entry.ToUpper().StartsWith("FLAG")) + { + try + { + BitMask flag = StrToMask(value); + ValidateMask(entry, flag, command.ReplyLength, command.ReplyEnd); + + // add value + if (command.Flags == null) + { + command.Flags = new List(); + } + command.Flags.Add(flag); + } + catch (Exception ex) + { + Log(ex.Message, section.SectionName, entry); + throw new ArgumentException(); + } + } + } + + if ((command.Values == null) && (command.Flags == null)) + { + Log("At least one ValueNN or FlagNN must be defined", section.SectionName); + throw new ArgumentException(); + } + } + catch (Exception ex) + { + // do nothing but return on error + return; + } + + // add command + StatusCmd.Add(command); + } + + private void LoadWriteCmd(SectionData section) + { + // empty section + if ((section == null) || (section.Keys.Count == 0)) + return; + + bool error = false; + + RigCommand command = new RigCommand(); + RigParam rigparam = RigParam.pmNone; + + try + { + rigparam = StrToParam(section.SectionName); + } + catch (Exception ex) + { + Log(ex.Message, section.SectionName); + throw new ArgumentException(); + } + + // validate all entries + // log but continue on errors + try + { + ValidateEntryNames(section, new string[] { "COMMAND", "REPLYLENGTH", "REPLYEND", "VALIDATE", "VALUE" }); + } + catch (Exception ex) + { + Log(ex.Message, section.SectionName); + } + + try + { + + command = LoadCommon(section); + + string entry = "Value"; + try + { + command.Value = LoadValue(section, entry); + ValidateValue(command.Value, command.Code.Length); + + // verify + if (command.Value.Param != RigParam.pmNone) + { + Log("Parameter name is not allowed.", section.SectionName, entry); + error = true; + } + if (RigParams.NumericParams.Contains(rigparam) && (command.Value.Len == 0)) + { + Log("Value is missing.", section.SectionName, entry); + error = true; + } + if (!RigParams.NumericParams.Contains(rigparam) && (command.Value.Len > 0)) + { + Log("Parameter does not require a value.", section.SectionName, entry); + error = true; + } + } + catch (Exception ex) + { + Log(ex.Message, section.SectionName); + throw new ArgumentException(); + } + + } + catch (Exception ex) + { + // do nothing but return on error + return; + } + + // add/update command if valid + if (!error) + { + WriteCmd[rigparam] = command; + } + } + + //------------------------------------------------------------------------------ + // Conversion functions + //------------------------------------------------------------------------------ + + private ValueFormat StrToFmt(string s) + { + ValueFormat result = ValueFormat.vfNone; + if (!Enum.TryParse(s, out result)) + { + throw new ArgumentException("Invalid format name: >" + s + "<"); + } + return result; + } + + private RigParam StrToParam(string s) + { + RigParam result = RigParam.pmNone; + if (!Enum.TryParse(s, out result)) + { + throw new ArgumentException("Invalid parameter name: >" + s + "<"); + } + return result; + } + + public string ParamToStr(RigParam param) + { + return param.ToString(); + } + + private byte[] StrToBytes(string s) + { + // blank + s = s.Trim(); + if (s.Length < 2) + { + return null; + } + + // ASCII + if (s.StartsWith("(")) + { + if (s.EndsWith(")")) + { + // set command type + CmdType = CommandType.ctASCII; + var MyEncoding = Encoding.GetEncoding("Windows-1252"); + return MyEncoding.GetBytes(s.Substring(1, s.Length - 2)); + } + else + { + throw new ArgumentException("Invalid ASCII parameter >" + s + "<"); + } + } + + // Binary (Hex) + if (s[1].ToString().All("0123456789abcdefABCDEF".Contains)) + { + // set command type + CmdType = CommandType.ctBinary; + + // remove all dots + s = s.Replace(".", ""); + if (s.Length % 2 > 0) + { + throw new ArgumentException("Invalid HEX parameter >" + s + "<"); + } + int len = s.Length / 2; + byte[] result = new byte[len]; + for (int i = 0; i < len; i++) + { + result[i] = byte.Parse(s.Substring(i * 2, 2), System.Globalization.NumberStyles.HexNumber); + } + return result; + } + + // string is not valid + throw new ArgumentException("Invalid string parameter >" + s + "<"); + } + + private byte[] FlagsFromMask(byte[] a, char c) + { + byte[] result = new byte[a.Length]; + Array.Copy(a, result, a.Length); + if (c == '(') + { + for (int i = 0; i < a.Length; i++) + { + if (a[i] == (byte)'.') + { + a[i] = 0; + result[i] = 0; + } + else + { + a[i] = 0xFF; + } + } + } + else + { + for (int i = 0; i < a.Length; i++) + { + if (a[i] != 0) + { + a[i] = 0xFF; + } + } + } + + return result; + } + + //Flag1 =".......................0.............."|pmRitOff + //Flag1 =13.00.00.00.00.00.00.00|00.00.00.00.00.00.00.00|pmVfoAA + //Validation=FEFEE05EFBFD + //Validation=FFFFFFFF.FF.0000000000.FF|FEFEE05E.03.0000000000.FD + + private BitMask StrToMask(string s) + { + BitMask result = new BitMask(); + + if (String.IsNullOrEmpty(s)) + return result; + + // split the string + string[] a = s.Split('|'); + + if ((a.Length < 1) || (a.Length > 3)) + throw new ArgumentException("Invalid numer of parameters >" + s + "<"); + + result.Mask = StrToBytes(a[0]); + if (result.Mask == null) + { + throw new ArgumentException("Invalid mask >" + s + "<"); + } + + switch (a.Length) + { + case 1: + // just mask, infer flags + result.Flags = FlagsFromMask(result.Mask, a[0][0]); + break; + case 2: + // mask|param or mask|flags + try + { + result.Param = StrToParam(a[1]); + if (result.Param != RigParam.pmNone) + { + result.Flags = FlagsFromMask(result.Mask, a[0][0]); + } + } + catch + { + result.Flags = StrToBytes(a[1]); + } + break; + case 3: + // mask|flags|param + result.Flags = StrToBytes(a[1]); + result.Param = StrToParam(a[2]); + break; + } + + return result; + } + + //------------------------------------------------------------------------------ + // Validation + //------------------------------------------------------------------------------ + + private void ValidateMask(string entry, BitMask mask, int len, byte[] end) + { + if ((mask.Mask == null) && (mask.Flags == null) && (mask.Param == RigParam.pmNone)) + { + return; + } + + if ((mask.Mask == null) || (mask.Flags == null)) + { + throw new ArgumentException("Incorrect mask length (" + ((CmdType == CommandType.ctBinary) ? ByteFuns.BytesToHex(mask.Mask) : "\"" + ByteFuns.BytesToStr(mask.Mask) + "\"") + ")"); + } + else if (mask.Mask.Length != mask.Flags.Length) + { + throw new ArgumentException("Incorrect mask length (" + ((CmdType == CommandType.ctBinary) ? ByteFuns.BytesToHex(mask.Mask) : "\"" + ByteFuns.BytesToStr(mask.Mask) + "\"") + ")"); + } + else if ((len > 0) && (mask.Mask.Length != len)) + { + throw new ArgumentException("Mask length (" + mask.Mask.Length.ToString() + ") <> ReplyLength (" + mask.Flags.Length.ToString() + ")"); + } + else if (!ByteFuns.BytesEqual(ByteFuns.BytesAnd(mask.Flags, mask.Flags), mask.Flags)) + { + throw new ArgumentException("Mask hides valid bits (" + + ((CmdType == CommandType.ctBinary) ? ByteFuns.BytesToHex(mask.Mask) : "\"" + ByteFuns.BytesToStr(mask.Mask) + "\"") + ")" + + " & " + + ((CmdType == CommandType.ctBinary) ? ByteFuns.BytesToHex(mask.Flags) : "\"" + ByteFuns.BytesToStr(mask.Flags) + "\"") + ")"); + } + //syntax is different for validation masks and flag masks + else if (entry.ToUpper() == "VALIDATE") + { + if (mask.Param != RigParam.pmNone) + { + throw new ArgumentException("Parameter name is not allowed >" + ParamToStr(mask.Param) + "<"); + } + byte[] ending = new byte[mask.Flags.Length - len]; + Array.Copy(mask.Flags, mask.Flags.Length - len, ending, 0, len); + if (!ByteFuns.BytesEqual(ending, end)) + { + throw new ArgumentException("Mask does not end with ReplyEnd " + + ((CmdType == CommandType.ctBinary) ? ByteFuns.BytesToHex(mask.Mask) : "\"" + ByteFuns.BytesToStr(mask.Mask) + "\"") + ")" + + " <> " + + ((CmdType == CommandType.ctBinary) ? ByteFuns.BytesToHex(end) : "\"" + ByteFuns.BytesToStr(end) + "\"") + ")"); + } + } + else + { + if (mask.Param == RigParam.pmNone) + { + throw new ArgumentException("Parameter name is missing"); + } + if (mask.Mask == null) + { + throw new ArgumentException("Mask is blank"); + } + } + } + + private void ValidateValue(ParamValue paramvalue, int len) + { + // empty parameter + if (paramvalue.Param == RigParam.pmNone) + return; + // set length to max when zero + if (len == 0) + len = int.MaxValue; + + if ((paramvalue.Start < 0) || (paramvalue.Start > len)) + { + throw new ArgumentException("Invalid Start value" + paramvalue.Start.ToString()); + } + if ((paramvalue.Len < 0) || (paramvalue.Start + paramvalue.Len > len)) + { + throw new ArgumentException("Invalid Length value" + paramvalue.Len.ToString()); + } + if (paramvalue.Mult <= 0) + { + throw new ArgumentException("Invalid Multiplier value" + paramvalue.Mult.ToString("F8")); + } + } + + private void ValidateEntryNames(SectionData section, string[] validnames) + { + // empty section or validnames + if ((section == null) || (section.Keys.Count == 0) || (validnames == null) || (validnames.Length == 0)) + return; + + foreach (KeyData key in section.Keys) + { + bool ok = false; + foreach (string validname in validnames) + { + // make strings upper and cut strings in case of '*' + string s1 = key.KeyName.ToUpper(); + string s2 = validname.ToUpper(); + if (s2.EndsWith("*")) + { + s2 = s2.Substring(0, s2.Length - 1); + s1 = s1.Substring(0, s2.Length); + } + if (s1 == s2) + { + ok = true; + break; + } + } + if (!ok) + { + throw new ArgumentException("Invalid entry name >" + key.KeyName + "<"); + } + } + } + + //------------------------------------------------------------------------------ + // Supported params + //------------------------------------------------------------------------------ + + private void ListSupportedParams() + { + ReadableParams = new RigParamSet(); + WriteableParams = new RigParamSet(); + + foreach (RigCommand cmd in StatusCmd) + { + if (cmd.Values != null) + { + foreach (ParamValue value in cmd.Values) + { + ReadableParams.Add(value.Param); + } + } + if (cmd.Flags != null) + { + foreach (BitMask flags in cmd.Flags) + { + ReadableParams.Add(flags.Param); + } + } + } + + if ((WriteCmd != null) && (WriteCmd.Keys != null)) + { + foreach (RigParam p in WriteCmd.Keys) + { + WriteableParams.Add(p); + } + } + } + + private string ParamListToString(RigParamSet Params) + { + string result = ""; + foreach (RigParam p in Params) + { + if (String.IsNullOrEmpty(result)) + { + result = p.ToString(); + } + else + { + result = result + "," + p.ToString(); + } + } + + return result; + } + + private int ParamsToInt(RigParamSet Params) + { + int result = 0; + + foreach (RigParam p in Params) + { + result = result | 1 << (int)p; + } + + return result; + + } + } + + +} diff --git a/ScoutBase/ScoutBase.CAT/RigCtlStatus.cs b/ScoutBase/ScoutBase.CAT/RigCtlStatus.cs new file mode 100644 index 0000000..540d1e7 --- /dev/null +++ b/ScoutBase/ScoutBase.CAT/RigCtlStatus.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace ScoutBase.CAT +{ + public enum RigCtlStatus + { + stNotConfigured, + stDisabled, + stPortBusy, + stNotResponding, + stOnLine + } +} diff --git a/ScoutBase/ScoutBase.CAT/RigDatabase.cs b/ScoutBase/ScoutBase.CAT/RigDatabase.cs new file mode 100644 index 0000000..8295458 --- /dev/null +++ b/ScoutBase/ScoutBase.CAT/RigDatabase.cs @@ -0,0 +1,75 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Reflection; +using System.Text; + +namespace ScoutBase.CAT +{ + public class RigData + { + static RigDatabase rigs = new RigDatabase(); + public static RigDatabase Database + { + get + { + return rigs; + } + } + } + + // holds the rig definitions database + // this is a simple directory structure so far + public class RigDatabase + { + public string DefaultDatabaseDirectory() + { + // create default database directory name + // fully qualify path and adjust it to Windows/Linux notation + // create directory if not exists + // return directory string if needed + string dir = Properties.Settings.Default.Database_Directory; + // set default value if empty + if (String.IsNullOrEmpty(dir)) + dir = "RigData"; + // fully qualify path if not rooted + if (!System.IO.Path.IsPathRooted(dir)) + { + // empty or incomplete settings --> create fully qulified standard path + // collect entry assembly info + Assembly ass = Assembly.GetExecutingAssembly(); + string company = ""; + string product = ""; + object[] attribs; + attribs = ass.GetCustomAttributes(typeof(AssemblyCompanyAttribute), true); + if (attribs.Length > 0) + { + company = ((AssemblyCompanyAttribute)attribs[0]).Company; + } + attribs = ass.GetCustomAttributes(typeof(AssemblyProductAttribute), true); + if (attribs.Length > 0) + { + product = ((AssemblyProductAttribute)attribs[0]).Product; + } + // create database path + string rootdir = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData); + if (!String.IsNullOrEmpty(company)) + rootdir = Path.Combine(rootdir, company); + if (!String.IsNullOrEmpty(product)) + rootdir = Path.Combine(rootdir, product); + dir = Path.Combine(rootdir, dir); + } + // replace Windows/Linux directory spearator chars + dir = dir.Replace('\\', Path.DirectorySeparatorChar); + dir = dir.Replace('/', Path.DirectorySeparatorChar); + // create directory if not exists + if (!Directory.Exists(dir)) + Directory.CreateDirectory(dir); + return dir; + } + + } + + +} diff --git a/ScoutBase/ScoutBase.CAT/RigParam.cs b/ScoutBase/ScoutBase.CAT/RigParam.cs new file mode 100644 index 0000000..1d05629 --- /dev/null +++ b/ScoutBase/ScoutBase.CAT/RigParam.cs @@ -0,0 +1,108 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace ScoutBase.CAT +{ + // set of possible rig params + public enum RigParam + { + pmNone, + pmFreq, pmFreqA, pmFreqB, pmPitch, pmRitOffset, pmRit0, + pmVfoAA, pmVfoAB, pmVfoBA, pmVfoBB, pmVfoA, pmVfoB, pmVfoEqual, pmVfoSwap, + pmSplitOn, pmSplitOff, + pmRitOn, pmRitOff, + pmXitOn, pmXitOff, + pmRx, pmTx, + pmCW_U, pmCW_L, pmSSB_U, pmSSB_L, pmDIG_U, pmDIG_L, pmAM, pmFM + } + + // provide different sets of RigParam values (static and readonly) + // for Check use xxx.Contains(param) + public static class RigParams + { + public static HashSet AllParams + { + get + { + HashSet parms = new HashSet(); + Array values = Enum.GetValues(typeof(RigParam)); + foreach (RigParam p in values) + { + parms.Add(p); + } + return parms; + } + } + + public static HashSet NumericParams + { + get + { + HashSet parms = new HashSet() { RigParam.pmFreq, RigParam.pmFreqA, RigParam.pmFreqB, RigParam.pmPitch, RigParam.pmRitOffset }; + return parms; + } + } + + public static HashSet VfoParams + { + get + { + HashSet parms = new HashSet() { RigParam.pmVfoAA, RigParam.pmVfoAB, RigParam.pmVfoBA, RigParam.pmVfoBB, RigParam.pmVfoA, RigParam.pmVfoB, RigParam.pmVfoEqual, RigParam.pmVfoSwap }; + return parms; + } + } + + public static HashSet SplitOnParams + { + get + { + HashSet parms = new HashSet() { RigParam.pmSplitOn, RigParam.pmSplitOff }; + return parms; + } + } + + public static HashSet RitOnParams + { + get + { + HashSet parms = new HashSet() { RigParam.pmRitOn, RigParam.pmRitOff }; + return parms; + } + } + + public static HashSet XitOnParams + { + get + { + HashSet parms = new HashSet() { RigParam.pmXitOn, RigParam.pmXitOff }; + return parms; + } + } + + public static HashSet TxParams + { + get + { + HashSet parms = new HashSet() { RigParam.pmRx, RigParam.pmTx }; + return parms; + } + } + + public static HashSet ModeParams + { + get + { + HashSet parms = new HashSet() { RigParam.pmCW_U, RigParam.pmCW_L, RigParam.pmSSB_U, RigParam.pmSSB_L, RigParam.pmDIG_U, RigParam.pmDIG_L, RigParam.pmAM, RigParam.pmFM }; + return parms; + } + } + } + + public class RigParamSet : HashSet + { + + } + +} diff --git a/ScoutBase/ScoutBase.CAT/RigSettings.cs b/ScoutBase/ScoutBase.CAT/RigSettings.cs new file mode 100644 index 0000000..9c8dd91 --- /dev/null +++ b/ScoutBase/ScoutBase.CAT/RigSettings.cs @@ -0,0 +1,120 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Windows.Forms; + +namespace ScoutBase.CAT +{ + public class RigSettings + { + // rig type name + public string RigType { get; set; } = ""; + + // this is for compatibility with OmniRig under Windows only + public int Port { + get + { + // try to extract COMxx number from PortName + // should work on Windows + int port = 0; + + if (Helpers.IsMono) + return 0; + + string portnumber = PortName.Replace("COM", ""); + int.TryParse(portnumber, out port); + + return port; + } + set + { + // try to extract COM-number from PortName + // should work on Windows + + // try to set COMxx name from Port + // should work on Windows + + if (!Helpers.IsMono) + { + PortName = "COM" + Port.ToString(); + } + + } + } + + // port settings + public string PortName { get; set; } = ""; + public int Baudrate { get; set; } = 9600; + public int DataBits { get; set; } = 8; + public Parity Parity { get; set; } = Parity.ptNone; + public StopBits StopBits { get; set; } = StopBits.sbOne; + public FlowControl RtsMode { get; set; } = FlowControl.fcLow; + public FlowControl DtrMode { get; set; } = FlowControl.fcLow; + + // time settings + public int PollMs { get; set; } = 1000; + public int TimeoutMs { get; set; } = 5000; + + public static RigSettings FromRig (Rig rig) + { + RigSettings settings = new RigSettings(); + try + { + settings.RigType = rig.RigCommands.RigType; + settings.PortName = rig.ComPort.PortName; + settings.Baudrate = rig.ComPort.BaudRate; + settings.DataBits = rig.ComPort.DataBits; + settings.Parity = rig.ComPort.Parity; + settings.StopBits = rig.ComPort.StopBits; + settings.RtsMode = rig.ComPort.RtsMode; + settings.DtrMode = rig.ComPort.DtrMode; + settings.PollMs = rig.PollMs; + settings.TimeoutMs = rig.TimeoutMs; + } + catch + { + // do nothing + } + + return settings; + } + + public void ToRig(Rig rig) + { + // do nothing if rig is invalid + if (rig == null) + return; + + // get rig enabled/disabled + bool oldenabled = rig.Enabled; + + // if enabled --> disable rig first + if (oldenabled) + rig.Enabled = false; + + try + { + // write settings to rig + rig.RigCommands = OmniRig.CommandsFromRigType(RigType); + + rig.ComPort.PortName = PortName; + rig.ComPort.BaudRate = Baudrate; + rig.ComPort.DataBits = DataBits; + rig.ComPort.Parity = Parity; + rig.ComPort.StopBits = StopBits; + rig.ComPort.RtsMode = RtsMode; + rig.ComPort.DtrMode = DtrMode; + + rig.PollMs = PollMs; + rig.TimeoutMs = TimeoutMs; + } + finally + { + // enable the rig if previously enabled + if (oldenabled) + rig.Enabled = true; + } + } + } +} diff --git a/ScoutBase/ScoutBase.CAT/ScoutBase.CAT.csproj b/ScoutBase/ScoutBase.CAT/ScoutBase.CAT.csproj new file mode 100644 index 0000000..2871868 --- /dev/null +++ b/ScoutBase/ScoutBase.CAT/ScoutBase.CAT.csproj @@ -0,0 +1,102 @@ + + + + + Debug + AnyCPU + {C9291203-B5D0-4179-888D-04BC670B158F} + Library + Properties + ScoutBase.CAT + ScoutBase.CAT + v4.0 + 512 + true + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + ..\packages\ini-parser.2.5.2\lib\net20\INIFileParser.dll + + + + + + + + + + + + + + + + + + + Component + + + + + + + + + + + + + + True + True + Settings.settings + + + + + + + + + + + + + + + + + PublicSettingsSingleFileGenerator + Settings.Designer.cs + + + + + {ee86e933-d883-4b18-80eb-0fba55ec67c6} + ScoutBase.Core + + + + + + + + \ No newline at end of file diff --git a/AirScoutDatabaseManager/Settings.cs b/ScoutBase/ScoutBase.CAT/Settings.cs similarity index 96% rename from AirScoutDatabaseManager/Settings.cs rename to ScoutBase/ScoutBase.CAT/Settings.cs index 864557e..253cafe 100644 --- a/AirScoutDatabaseManager/Settings.cs +++ b/ScoutBase/ScoutBase.CAT/Settings.cs @@ -1,4 +1,4 @@ -namespace AirScoutDatabaseManager.Properties { +namespace AirScout.CAT.Properties { // Diese Klasse ermöglicht die Behandlung bestimmter Ereignisse der Einstellungsklasse: diff --git a/ScoutBase/ScoutBase.CAT/ValueFormat.cs b/ScoutBase/ScoutBase.CAT/ValueFormat.cs new file mode 100644 index 0000000..94cb5cb --- /dev/null +++ b/ScoutBase/ScoutBase.CAT/ValueFormat.cs @@ -0,0 +1,24 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace ScoutBase.CAT +{ + [Flags] + public enum ValueFormat + { + vfNone, + vfText, // asc codes + vfBinL, // integer, little endian + vfBinB, // integer, big endian + vfBcdLU, // BCD little endian unsigned + vfBcdLS, // BCD little endian signed; sign in high byte (00 or FF) + vfBcdBU, // big endian + vfBcdBS, // big endian + vfYaesu, // format invented by Yaesu + // Added by RA6UAZ for Icom Marine Radio NMEA Command + vfDPIcom, // format Decimal point by Icom + vfTextUD // Yaesu: text, but sign is U for + and D for - + } +} diff --git a/ScoutBase/ScoutBase.CAT/app.config b/ScoutBase/ScoutBase.CAT/app.config new file mode 100644 index 0000000..1830e46 --- /dev/null +++ b/ScoutBase/ScoutBase.CAT/app.config @@ -0,0 +1,21 @@ + + + + +
+ + + + + + 60 + + + http://www.airscout.eu/downloads/ScoutBase/1/RigData/ + + + + + + + \ No newline at end of file diff --git a/ScoutBase/ScoutBase.CAT/packages.config b/ScoutBase/ScoutBase.CAT/packages.config new file mode 100644 index 0000000..ab38f70 --- /dev/null +++ b/ScoutBase/ScoutBase.CAT/packages.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/ScoutBase/ScoutBase.Core/Band.cs b/ScoutBase/ScoutBase.Core/Band.cs index c8338b7..31ccacb 100644 --- a/ScoutBase/ScoutBase.Core/Band.cs +++ b/ScoutBase/ScoutBase.Core/Band.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.ComponentModel; using System.Linq; using System.Reflection; using System.Text; @@ -9,32 +10,46 @@ namespace ScoutBase.Core public enum BAND { [StringCustomAttribute("None")] + [Description("None")] BNONE = 0, [StringCustomAttribute("50M")] + [Description("50M")] B50M = 50, [StringCustomAttribute("70M")] + [Description("70M")] B70M = 70, [StringCustomAttribute("144M")] + [Description("144M")] B144M = 144, [StringCustomAttribute("432M")] + [Description("432M")] B432M = 432, [StringCustomAttribute("1.2G")] + [Description("1.2G")] B1_2G = 1296, [StringCustomAttribute("2.3G")] + [Description("2.3G")] B2_3G = 2320, [StringCustomAttribute("3.4G")] + [Description("3.4G")] B3_4G = 3400, [StringCustomAttribute("5.7G")] + [Description("5.7G")] B5_7G = 5760, [StringCustomAttribute("10G")] + [Description("10G")] B10G = 10368, [StringCustomAttribute("24G")] + [Description("24G")] B24G = 24048, [StringCustomAttribute("47G")] + [Description("47G")] B47G = 47088, [StringCustomAttribute("76G")] + [Description("76G")] B76G = 76032, [StringCustomAttribute("All")] + [Description("All")] BALL = 999999999 } @@ -151,9 +166,19 @@ namespace ScoutBase.Core return bands[i - 1]; } + public static double ToHz(BAND band) + { + return (int)band * 1000000.0; + } + + public static double To10Hz(BAND band) + { + return (int)band * 100000.0; + } + public static double To100Hz(BAND band) { - return (int)band *10000.0; + return (int)band * 10000.0; } public static double TokHz(BAND band) diff --git a/ScoutBase/ScoutBase.Core/BitmapHelpers.cs b/ScoutBase/ScoutBase.Core/BitmapHelpers.cs new file mode 100644 index 0000000..f8476a5 --- /dev/null +++ b/ScoutBase/ScoutBase.Core/BitmapHelpers.cs @@ -0,0 +1,40 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Drawing.Drawing2D; +using System.Drawing.Imaging; +using System.Linq; +using System.Text; + +namespace ScoutBase.Core +{ + public static class BitmapHelpers + { + + public static Image SetOpacity(this Image image, float opacity) + { + var colorMatrix = new ColorMatrix(); + colorMatrix.Matrix33 = opacity; + var imageAttributes = new ImageAttributes(); + imageAttributes.SetColorMatrix( + colorMatrix, + ColorMatrixFlag.Default, + ColorAdjustType.Bitmap); + var output = new Bitmap(image.Width, image.Height); + using (var gfx = Graphics.FromImage(output)) + { + gfx.SmoothingMode = SmoothingMode.AntiAlias; + gfx.DrawImage( + image, + new Rectangle(0, 0, image.Width, image.Height), + 0, + 0, + image.Width, + image.Height, + GraphicsUnit.Pixel, + imageAttributes); + } + return output; + } + } +} diff --git a/ScoutBase/ScoutBase.Core/Cloning.cs b/ScoutBase/ScoutBase.Core/Cloning.cs new file mode 100644 index 0000000..a2c9e2a --- /dev/null +++ b/ScoutBase/ScoutBase.Core/Cloning.cs @@ -0,0 +1,30 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Runtime.Serialization; +using System.Runtime.Serialization.Formatters.Binary; +using System.Text; + +namespace ScoutBase.Core +{ + public static class Cloning + { + public static T Clone(this T source) + { + // Don't serialize a null object, simply return the default for that object + if (Object.ReferenceEquals(source, null)) + { + return default(T); + } + + IFormatter formatter = new BinaryFormatter(); + using (MemoryStream stream = new MemoryStream()) + { + formatter.Serialize(stream, source); + stream.Seek(0, SeekOrigin.Begin); + return (T)formatter.Deserialize(stream); + } + } + } +} diff --git a/ScoutBase/ScoutBase.Core/EnumHelpers.cs b/ScoutBase/ScoutBase.Core/EnumHelpers.cs new file mode 100644 index 0000000..4be02c0 --- /dev/null +++ b/ScoutBase/ScoutBase.Core/EnumHelpers.cs @@ -0,0 +1,78 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Windows.Forms; + +namespace ScoutBase.Core +{ + public static class EnumHelpers + { + public static string GetEnumDescription(this Enum value) + { + Type type = value.GetType(); + string name = Enum.GetName(type, value); + if (name != null) + { + FieldInfo field = type.GetField(name); + if (field != null) + { + DescriptionAttribute attr = + Attribute.GetCustomAttribute(field, + typeof(DescriptionAttribute)) as DescriptionAttribute; + if (attr != null) + { + return attr.Description; + } + } + } + return null; + } + + public static void BindToEnum(this ComboBox comboBox) + { + var enumType = typeof(TEnum); + + var fields = enumType.GetMembers() + .OfType() + .Where(p => p.MemberType == MemberTypes.Field) + .Where(p => p.IsLiteral) + .ToList(); + + var valuesByName = new Dictionary(); + + foreach (var field in fields) + { + try + { + var descriptionAttribute = field.GetCustomAttributes(typeof(DescriptionAttribute), false)[0] as DescriptionAttribute; + + var value = (int)field.GetValue(null); + var description = string.Empty; + + if (!string.IsNullOrEmpty(descriptionAttribute?.Description)) + { + description = descriptionAttribute.Description; + } + else + { + description = field.Name; + } + + valuesByName[description] = value; + } + catch (Exception ex) + { + // do nothing if gtting oif description fails + } + } + + comboBox.DataSource = valuesByName.ToList(); + comboBox.DisplayMember = "Key"; + comboBox.ValueMember = "Value"; + } + } + +} diff --git a/ScoutBase/ScoutBase.Core/Propagation.cs b/ScoutBase/ScoutBase.Core/Propagation.cs index 4cd2091..1ac1992 100644 --- a/ScoutBase/ScoutBase.Core/Propagation.cs +++ b/ScoutBase/ScoutBase.Core/Propagation.cs @@ -21,7 +21,42 @@ namespace ScoutBase.Core } /// - /// Returns the elevation angle Epsilon an object at (bearing, distance, H) is seen from an observer(h) + /// Returns the slant range of an object at (h)eight of observer, position of observer (mylat, mylon), position of object (lat, lon), (H))eight of object is seen from an observer + /// + /// The height of the observer [m]. + /// The latitude of the observer [deg]. + /// The longitude of the observer [deg]. + /// The latitude of the object [deg]. + /// The longitude of the object [deg]. + /// The height of the object [m]. + /// The equivalent earth radius [km]. + /// The slant range in [km]. + public static double SlantRangeFromHeights(double h, double mylat, double mylon, double lat, double lon, double H, double radius) + { + return SlantRangeFromHeights(h, LatLon.Distance(mylat, mylon, lat, lon), H, radius); + } + + /// + /// Returns the slant range of an object at (h)eight of observer, (dist)ance to object, (H))eight of object is seen from an observer + /// + /// The height of the observer [m]. + /// The distance of the object [km]. + /// The height of the object [m]. + /// The equivalent earth radius [km]. + /// The slant range in [km]. + public static double SlantRangeFromHeights(double h, double dist, double H, double radius) + { + // convert heights into [km] + h = h / 1000.0; + H = H / 1000.0; + // calculate alpha angle in [rad] + double alpha = dist / radius; + double d = Math.Sqrt((radius + h) * (radius + h) + (radius + H) * (radius + H) - 2.0 * (radius + h) * (radius + H) * Math.Cos(alpha)); + return d; + } + + /// + /// Returns the elevation angle Epsilon an object at (h)eight of observer, (dist)ance to object, (H))eight of object is seen from an observer /// /// The height of the observer [m]. /// The distance of the object [km]. @@ -34,8 +69,7 @@ namespace ScoutBase.Core h = h / 1000.0; H = H / 1000.0; // calculate alpha angle in [rad] - double alpha = dist / radius; - double d = Math.Sqrt((radius + h) * (radius + h) + (radius + H) * (radius + H) - 2.0 * (radius + h) * (radius + H) * Math.Cos(alpha)); + double d = SlantRangeFromHeights(h, dist, H, radius); double a = ((radius + H) * (radius + H) - (radius + h) * (radius + h) - d * d) / 2.0 / d; return Math.Asin(a / (radius + h)); } @@ -73,10 +107,29 @@ namespace ScoutBase.Core // convert heights into [km] h = h / 1000.0; double beta = Math.PI / 2.0 + eps; - double gamma = Math.PI - AlphaFromDistance(dist,radius) - beta; + double gamma = Math.PI - AlphaFromDistance(dist, radius) - beta; return ((radius + h) * Math.Sin(beta) / Math.Sin(gamma) - radius) * 1000; } + /// + /// Returns the maximum distance an object can have at a given Height (H) to be still visible to an observer(h) at an angle Epsilon (eps) + /// + /// The height of the observer [m]. + /// The height of the object [m]. + /// The angle Epsilon [rad]. + /// The equivalent earth radius [km]. + /// The distance of the object [km]. + public static double DistanceFromEpsilon(double h, double H, double eps, double radius) + { + // convert heights into [km] + h = h / 1000.0; + H = H / 1000.0; + double beta = Math.PI / 2.0 + eps; + double gamma = Math.Asin((radius + h) / (radius + H) * Math.Sin(beta)); + double alpha = Math.PI - beta - gamma; + return alpha * radius; + } + /// /// Returns the radius of the F1 Fresnel Zone /// @@ -104,6 +157,17 @@ namespace ScoutBase.Core return Math.Sqrt(2 * re) * (Math.Sqrt(h1) + Math.Sqrt(h2)); } + /// + /// Returns the Doppler shift of a moving object in relation to an observer + /// + /// The frequency in [Hz]. + /// The resulting speed [m/s] - positive when moving away, negative when moving towards. + /// The resulting doppler shift [Hz]. + public static double DopplerShift(double qrg, double speed) + { + double c = 300000000.0; // light speed in m/s + return qrg - qrg * c / (c + speed); + } } } diff --git a/ScoutBase/ScoutBase.Core/ScoutBase.Core.csproj b/ScoutBase/ScoutBase.Core/ScoutBase.Core.csproj index 1496405..ccd4dfc 100644 --- a/ScoutBase/ScoutBase.Core/ScoutBase.Core.csproj +++ b/ScoutBase/ScoutBase.Core/ScoutBase.Core.csproj @@ -58,8 +58,8 @@ - - ..\..\packages\System.Data.SQLite.Core.1.0.112.0\lib\net40\System.Data.SQLite.dll + + ..\..\packages\Stub.System.Data.SQLite.Core.NetFramework.1.0.113.3\lib\net40\System.Data.SQLite.dll @@ -71,7 +71,10 @@ + + + @@ -108,12 +111,12 @@ - + Dieses Projekt verweist auf mindestens ein NuGet-Paket, das auf diesem Computer fehlt. Verwenden Sie die Wiederherstellung von NuGet-Paketen, um die fehlenden Dateien herunterzuladen. Weitere Informationen finden Sie unter "http://go.microsoft.com/fwlink/?LinkID=322105". Die fehlende Datei ist "{0}". - + Undo() does not work inside Keypressed or TextChanged + Console.Beep(); + int start = OldSelectionStart; + int length = OldSelectionLength; + SilentText = OldText; + Select(start, length); + } + + protected override void OnKeyPress(KeyPressEventArgs e) + { + base.OnKeyPress(e); + + // check for valid numeric input + if (!char.IsControl(e.KeyChar) && (CharsAllowed.IndexOf(e.KeyChar) < 0)) + { + Console.Beep(); + e.Handled = true; + } + } + + protected override void OnTextChanged(EventArgs e) + { + if (!String.IsNullOrEmpty(Text)) + { + // do checks and reset Text to old value in case of error + // check '-' is allowed only once and only on 1st position + if (Text.LastIndexOf('-') > 0) + UndoText(); + // check bounds + try + { + value = System.Convert.ToDouble(Text, CultureInfo.InvariantCulture); + } + catch + { + value = double.NaN; + } + if (!double.IsNaN(value) && !CheckBounds(value)) + UndoText(); + base.OnTextChanged(e); + } + } + } + public class Int32TextBox : SilentTextBox { string formatspecifier = "F0"; diff --git a/ScoutBase/ScoutBase.Core/SupportFunctions.cs b/ScoutBase/ScoutBase.Core/SupportFunctions.cs index b05fc1e..19371c5 100644 --- a/ScoutBase/ScoutBase.Core/SupportFunctions.cs +++ b/ScoutBase/ScoutBase.Core/SupportFunctions.cs @@ -566,7 +566,7 @@ namespace ScoutBase.Core downloaddir = filename.Substring(0, filename.LastIndexOf("/")); // set path to calling assembly's path if not otherwise specified if (String.IsNullOrEmpty(downloaddir)) - downloaddir = Assembly.GetCallingAssembly().Location; + downloaddir = Path.GetDirectoryName(Assembly.GetCallingAssembly().Location); try { Console.WriteLine("[UnzipFile: Trying to unzip file: " + filename); diff --git a/ScoutBase/ScoutBase.Core/packages.config b/ScoutBase/ScoutBase.Core/packages.config index 2bc3b5b..05a4de8 100644 --- a/ScoutBase/ScoutBase.Core/packages.config +++ b/ScoutBase/ScoutBase.Core/packages.config @@ -1,5 +1,6 @@  - + + \ No newline at end of file diff --git a/ScoutBase/ScoutBase.Database/ScoutBase.Database.csproj b/ScoutBase/ScoutBase.Database/ScoutBase.Database.csproj index b51ae0c..47eeda4 100644 --- a/ScoutBase/ScoutBase.Database/ScoutBase.Database.csproj +++ b/ScoutBase/ScoutBase.Database/ScoutBase.Database.csproj @@ -38,8 +38,8 @@ - - ..\..\packages\System.Data.SQLite.Core.1.0.112.0\lib\net40\System.Data.SQLite.dll + + ..\..\packages\Stub.System.Data.SQLite.Core.NetFramework.1.0.113.3\lib\net40\System.Data.SQLite.dll @@ -65,11 +65,11 @@ - + Dieses Projekt verweist auf mindestens ein NuGet-Paket, das auf diesem Computer fehlt. Verwenden Sie die Wiederherstellung von NuGet-Paketen, um die fehlenden Dateien herunterzuladen. Weitere Informationen finden Sie unter "http://go.microsoft.com/fwlink/?LinkID=322105". Die fehlende Datei ist "{0}". - + \ No newline at end of file diff --git a/ScoutBase/ScoutBase.Database/packages.config b/ScoutBase/ScoutBase.Database/packages.config index 2bc3b5b..05a4de8 100644 --- a/ScoutBase/ScoutBase.Database/packages.config +++ b/ScoutBase/ScoutBase.Database/packages.config @@ -1,5 +1,6 @@  - + + \ No newline at end of file diff --git a/ScoutBase/ScoutBase.Elevation/ElevationDatabase.cs b/ScoutBase/ScoutBase.Elevation/ElevationDatabase.cs index f2c9b65..e914cdf 100644 --- a/ScoutBase/ScoutBase.Elevation/ElevationDatabase.cs +++ b/ScoutBase/ScoutBase.Elevation/ElevationDatabase.cs @@ -206,36 +206,39 @@ namespace ScoutBase.Elevation // upgrades database to V1 if (MessageBox.Show("A major database upgrade is necessary to run this version of AirScout. Older versions of AirScout are not compatible anymore and will cause errors. \n\nPress >OK< to start upgrade now (this will take some minutes). \nPress >Cancel< to leave.", "Database Upgrade of " + Path.GetFileName(db.DBLocation), MessageBoxButtons.OKCancel) == DialogResult.Cancel) Environment.Exit(-1); // exit immediately - // set savepoint - string savepointname = "UpgradeToV1"; - db.Execute("SAVEPOINT " + savepointname); - try + lock (db) { - // drop version info table --> maintain PRAGMA user_version instead - db.DropTable("VersionInfo"); - // change Elevation table - Stopwatch st = new Stopwatch(); - st.Start(); - Log.WriteMessage("Database " + db.DBLocation + " is being converted..."); - UpgradeTableToV1(db, ElevationTileDesignator.TableName); - UpgradeTableToV1(db, ElevationPathDesignator.TableName); - st.Stop(); - Log.WriteMessage("Database " + db.DBLocation + " is converted successfully [" + st.ElapsedMilliseconds / 1000 + "ms]"); - // set new database version - db.SetUserVerion(1); - // release savepoint - db.Execute("RELEASE " + savepointname); - } - catch (Exception ex) - { - // fatal error, can't upgrade database and can't rollback --> write log - Log.WriteMessage(ex.ToString(), LogLevel.Error); - Log.WriteMessage("Application crashed and will close immediately."); - Log.FlushLog(); - // try to rollback database - db.Execute("ROLLBACK TO " + savepointname); - // exit immediately - Environment.Exit(-1); + // set savepoint + string savepointname = "UpgradeToV1"; + db.Execute("SAVEPOINT " + savepointname); + try + { + // drop version info table --> maintain PRAGMA user_version instead + db.DropTable("VersionInfo"); + // change Elevation table + Stopwatch st = new Stopwatch(); + st.Start(); + Log.WriteMessage("Database " + db.DBLocation + " is being converted..."); + UpgradeTableToV1(db, ElevationTileDesignator.TableName); + UpgradeTableToV1(db, ElevationPathDesignator.TableName); + st.Stop(); + Log.WriteMessage("Database " + db.DBLocation + " is converted successfully [" + st.ElapsedMilliseconds / 1000 + "ms]"); + // set new database version + db.SetUserVerion(1); + // release savepoint + db.Execute("RELEASE " + savepointname); + } + catch (Exception ex) + { + // fatal error, can't upgrade database and can't rollback --> write log + Log.WriteMessage(ex.ToString(), LogLevel.Error); + Log.WriteMessage("Application crashed and will close immediately."); + Log.FlushLog(); + // try to rollback database + db.Execute("ROLLBACK TO " + savepointname); + // exit immediately + Environment.Exit(-1); + } } } @@ -371,51 +374,82 @@ namespace ScoutBase.Elevation public string GetDBLocation(ELEVATIONMODEL model) { - return this.GetDBLocation(GetElevationDatabase(model)); + System.Data.SQLite.SQLiteDatabase db = GetElevationDatabase(model); + if (db == null) + return ""; + return this.GetDBLocation(db); } public double GetDBSize(ELEVATIONMODEL model) { - return this.GetDBSize(GetElevationDatabase(model)); + System.Data.SQLite.SQLiteDatabase db = GetElevationDatabase(model); + if (db == null) + return 0; + return this.GetDBSize(db); } public DATABASESTATUS GetDBStatus(ELEVATIONMODEL model) { - return this.GetDBStatus(GetElevationDatabase(model)); + System.Data.SQLite.SQLiteDatabase db = GetElevationDatabase(model); + if (db == null) + return DATABASESTATUS.UNDEFINED; + return this.GetDBStatus(db); } public void SetDBStatus(ELEVATIONMODEL model, DATABASESTATUS status) { - this.SetDBStatus(status, GetElevationDatabase(model)); + System.Data.SQLite.SQLiteDatabase db = GetElevationDatabase(model); + if (db == null) + return; + this.SetDBStatus(status, db); } public bool GetDBStatusBit(ELEVATIONMODEL model, DATABASESTATUS statusbit) { - return this.GetDBStatusBit(statusbit, GetElevationDatabase(model)); + System.Data.SQLite.SQLiteDatabase db = GetElevationDatabase(model); + if (db == null) + return false; + return this.GetDBStatusBit(statusbit, db); } public void SetDBStatusBit(ELEVATIONMODEL model, DATABASESTATUS statusbit) { - this.SetDBStatusBit(statusbit, GetElevationDatabase(model)); + System.Data.SQLite.SQLiteDatabase db = GetElevationDatabase(model); + if (db == null) + return; + this.SetDBStatusBit(statusbit, db); } public void ResetDBStatusBit(ELEVATIONMODEL model, DATABASESTATUS statusbit) { - this.ResetDBStatusBit(statusbit, GetElevationDatabase(model)); + System.Data.SQLite.SQLiteDatabase db = GetElevationDatabase(model); + if (db == null) + return; + this.ResetDBStatusBit(statusbit, db); } public void BeginTransaction(ELEVATIONMODEL model) { - this.BeginTransaction(GetElevationDatabase(model)); + System.Data.SQLite.SQLiteDatabase db = GetElevationDatabase(model); + if (db == null) + return; + this.BeginTransaction(db); } public void Commit(ELEVATIONMODEL model) { - this.Commit(GetElevationDatabase(model)); + System.Data.SQLite.SQLiteDatabase db = GetElevationDatabase(model); + if (db == null) + return; + this.Commit(db); } + private DataTable Select(ELEVATIONMODEL model, string sql) { - return this.Select(sql, GetElevationDatabase(model)); + System.Data.SQLite.SQLiteDatabase db = GetElevationDatabase(model); + if (db == null) + return null; + return this.Select(sql, db); } /// @@ -632,27 +666,36 @@ namespace ScoutBase.Elevation // load new tile from cache or database string loc = MaidenheadLocator.LocFromLatLon(lat, lon, false, 3); ElevationTileDesignator td = null; - lock (cache) + if (cache != null) { - // try to find tile in cache first - td = (ElevationTileDesignator)cache[loc]; - if (td == null) + lock (cache) { - // try to find tile in database - td = this.ElevationTileFind(loc, model); - if (td != null) - { - // maintain cache size --> remove - if (cache.Count > GetCacheSize(model)) - { - cache.RemoveAt(0); - } - cache.Add(loc, td); - } + // try to find tile in cache first + td = (ElevationTileDesignator)cache[loc]; } } + + if (td == null) + { + // try to find tile in database + td = this.ElevationTileFind(loc, model); + if (td != null) + { + // maintain cache size --> remove + if (cache.Count > GetCacheSize(model)) + { + cache.RemoveAt(0); + } + cache.Add(loc, td); + } + } + // keep tile in cache - SetElevationTile(model, td); + if (td != null) + { + SetElevationTile(model, td); + } + // return tile even if null return td; } @@ -734,13 +777,18 @@ namespace ScoutBase.Elevation string tn = tablename; if (String.IsNullOrEmpty(tn)) tn = ElevationTileDesignator.TableName; - return GetElevationDatabase(model).TableExists(tn); + System.Data.SQLite.SQLiteDatabase db = GetElevationDatabase(model); + if (db == null) + return false; + return db.TableExists(tn); } public void ElevationTileCreateTable(ELEVATIONMODEL model, string tablename = "") { System.Data.SQLite.SQLiteDatabase db = GetElevationDatabase(model); - lock (db.DBCommand) + if (db == null) + return; + lock (db) { // check for table name is null or empty --> use default tablename from type instead string tn = tablename; @@ -755,7 +803,9 @@ namespace ScoutBase.Elevation public int ElevationTileInsert(ElevationTileDesignator tile, ELEVATIONMODEL model) { System.Data.SQLite.SQLiteDatabase db = GetElevationDatabase(model); - lock (db.DBCommand) + if (db == null) + return -1; + lock (db) { db.DBCommand.CommandText = "INSERT INTO " + ElevationTileDesignator.TableName + " (TileIndex, MinElv, MinLat, MinLon, MaxElv, MaxLat, MaxLon, Rows, Columns, Elv, LastUpdated) VALUES (@TileIndex, @MinElv, @MinLat, @MinLon, @MaxElv, @MaxLat, @MaxLon, @Rows, @Columns, @Elv, @LastUpdated)"; db.DBCommand.Parameters.Clear(); @@ -778,6 +828,8 @@ namespace ScoutBase.Elevation { int errors = 0; System.Data.SQLite.SQLiteDatabase db = GetElevationDatabase(model); + if (db == null) + return -1; try { db.BeginTransaction(); @@ -805,7 +857,9 @@ namespace ScoutBase.Elevation public int ElevationTileDelete(ElevationTileDesignator tile, ELEVATIONMODEL model) { System.Data.SQLite.SQLiteDatabase db = GetElevationDatabase(model); - lock (db.DBCommand) + if (db == null) + return -1; + lock (db) { db.DBCommand.CommandText = "DELETE FROM " + ElevationTileDesignator.TableName + " WHERE TileIndex = @TileIndex"; db.DBCommand.Parameters.Clear(); @@ -817,7 +871,9 @@ namespace ScoutBase.Elevation public int ElevationTileUpdate(ElevationTileDesignator tile, ELEVATIONMODEL model) { System.Data.SQLite.SQLiteDatabase db = GetElevationDatabase(model); - lock (db.DBCommand) + if (db == null) + return -1; + lock (db) { db.DBCommand.CommandText = "UPDATE " + ElevationTileDesignator.TableName + " SET TileIndex = @TileIndex, MinElv = @MinElv, MinLat = @MinLat, MinLon = @MinLon, MaxElv = @MaxElv, MaxLat = @MaxLat, MaxLon = @MaxLon, Rows = @Rows, Columns = @Columns, Elv = @Elv, LastUpdated = @LastUpdated WHERE TileIndex = @TileIndex"; db.DBCommand.Parameters.Clear(); @@ -829,7 +885,7 @@ namespace ScoutBase.Elevation db.DBCommand.Parameters.Add(tile.AsDouble("MaxLat")); db.DBCommand.Parameters.Add(tile.AsDouble("MaxLon")); db.DBCommand.Parameters.Add(tile.AsInt32("Rows")); - db.DBCommand.Parameters.Add(tile.AsInt32("Columms")); + db.DBCommand.Parameters.Add(tile.AsInt32("Columns")); db.DBCommand.Parameters.Add(tile.AsBinary("Elv")); db.DBCommand.Parameters.Add(tile.AsUNIXTime("LastUpdated")); return db.ExecuteNonQuery(db.DBCommand); @@ -839,6 +895,8 @@ namespace ScoutBase.Elevation public void ElevationTileInsertOrUpdateIfNewer(ElevationTileDesignator tile, ELEVATIONMODEL model) { System.Data.SQLite.SQLiteDatabase db = GetElevationDatabase(model); + if (db == null) + return; DateTime dt = this.ElevationTileFindLastUpdated(tile,model); if (dt == DateTime.MinValue) this.ElevationTileInsert(tile, model); @@ -855,7 +913,9 @@ namespace ScoutBase.Elevation public ElevationTileDesignator ElevationTileFind(ElevationTileDesignator tile, ELEVATIONMODEL model) { System.Data.SQLite.SQLiteDatabase db = GetElevationDatabase(model); - lock (db.DBCommand) + if (db == null) + return null; + lock (db) { db.DBCommand.CommandText = "SELECT * FROM " + ElevationTileDesignator.TableName + " WHERE TileIndex = @TileIndex"; db.DBCommand.Parameters.Clear(); @@ -878,7 +938,9 @@ namespace ScoutBase.Elevation public bool ElevationTileExists(ElevationTileDesignator tile, ELEVATIONMODEL model) { System.Data.SQLite.SQLiteDatabase db = GetElevationDatabase(model); - lock (db.DBCommand) + if (db == null) + return false; + lock (db) { db.DBCommand.CommandText = "SELECT EXISTS (SELECT LastUpdated FROM " + ElevationTileDesignator.TableName + " WHERE TileIndex = @TileIndex)"; db.DBCommand.Parameters.Clear(); @@ -899,12 +961,22 @@ namespace ScoutBase.Elevation public DateTime ElevationTileFindLastUpdated(ElevationTileDesignator tile, ELEVATIONMODEL model) { System.Data.SQLite.SQLiteDatabase db = GetElevationDatabase(model); - lock (db.DBCommand) + if (db == null) + return DateTime.MinValue; + lock (db) { - db.DBCommand.CommandText = "SELECT LastUpdated FROM " + ElevationTileDesignator.TableName + " WHERE TileIndex = @TileIndex"; - db.DBCommand.Parameters.Clear(); - db.DBCommand.Parameters.Add(tile.AsString("TileIndex")); - object result = db.ExecuteScalar(db.DBCommand); + object result = null; + try + { + db.DBCommand.CommandText = "SELECT LastUpdated FROM " + ElevationTileDesignator.TableName + " WHERE TileIndex = @TileIndex"; + db.DBCommand.Parameters.Clear(); + db.DBCommand.Parameters.Add(tile.AsString("TileIndex")); + result = db.ExecuteScalar(db.DBCommand); + } + catch (Exception ex) + { + + } if (result != null) return (SQLiteEntry.UNIXTimeToDateTime((int)result)); } @@ -920,7 +992,9 @@ namespace ScoutBase.Elevation public ElvMinMaxInfo ElevationTileFindMinMaxInfo(ElevationTileDesignator tile, ELEVATIONMODEL model) { System.Data.SQLite.SQLiteDatabase db = GetElevationDatabase(model); - lock (db.DBCommand) + if (db == null) + return null; + lock (db) { db.DBCommand.CommandText = "SELECT MinElv, MinLat, MInLon, MaxElv, MaxLat, MaxLon FROM " + ElevationTileDesignator.TableName + " WHERE TileIndex = @TileIndex"; db.DBCommand.Parameters.Clear(); @@ -943,7 +1017,10 @@ namespace ScoutBase.Elevation public List ElevationTileGetAll(ELEVATIONMODEL model) { List l = new List(); - DataTable Result = GetElevationDatabase(model).Select("SELECT * FROM " + ElevationTileDesignator.TableName); + System.Data.SQLite.SQLiteDatabase db = GetElevationDatabase(model); + if (db == null) + return l; + DataTable Result = db.Select("SELECT * FROM " + ElevationTileDesignator.TableName); if ((Result == null) || (Result.Rows.Count == 0)) return l; foreach (DataRow row in Result.Rows) @@ -957,31 +1034,40 @@ namespace ScoutBase.Elevation // gets all aircraftpositions from database // supports abort calculation if called from background worker and cancellation requested int i = 0; - SQLiteCommand cmd = new SQLiteCommand(GetElevationDatabase(model).DBConnection); - cmd.CommandText = "SELECT * FROM " + ElevationTileDesignator.TableName; - SQLiteDataReader reader = cmd.ExecuteReader(); - while (reader.Read()) + System.Data.SQLite.SQLiteDatabase db = GetElevationDatabase(model); + if (db == null) + return l; + lock (db) { - ElevationTileDesignator tile = new ElevationTileDesignator((IDataRecord)reader); - l.Add(tile); - i++; - // abort calculation if called from background worker and cancellation pending - if (caller != null) + SQLiteCommand cmd = new SQLiteCommand(db.DBConnection); + cmd.CommandText = "SELECT * FROM " + ElevationTileDesignator.TableName; + SQLiteDataReader reader = cmd.ExecuteReader(); + while (reader.Read()) { - if (caller.WorkerSupportsCancellation && caller.CancellationPending) - return new List(); - if (caller.WorkerReportsProgress && (i % 1000 == 0)) - caller.ReportProgress(0, "Getting tile " + i.ToString() + " of"); + ElevationTileDesignator tile = new ElevationTileDesignator((IDataRecord)reader); + l.Add(tile); + i++; + // abort calculation if called from background worker and cancellation pending + if (caller != null) + { + if (caller.WorkerSupportsCancellation && caller.CancellationPending) + return new List(); + if (caller.WorkerReportsProgress && (i % 1000 == 0)) + caller.ReportProgress(0, "Getting tile " + i.ToString() + " of"); + } } + reader.Close(); } - reader.Close(); return l; } public List ElevationTileGetAll(ELEVATIONMODEL model, double minlat, double minlon, double maxlat, double maxlon) { List l = new List(); - DataTable Result = GetElevationDatabase(model).Select("SELECT * FROM Elevation"); + System.Data.SQLite.SQLiteDatabase db = GetElevationDatabase(model); + if (db == null) + return l; + DataTable Result = db.Select("SELECT * FROM Elevation"); if ((Result == null) || (Result.Rows.Count == 0)) return l; foreach (DataRow row in Result.Rows) @@ -1000,28 +1086,34 @@ namespace ScoutBase.Elevation // gets all elevation tiles from database // supports abort calculation if called from background worker and cancellation requested int i = 0; - SQLiteCommand cmd = new SQLiteCommand(GetElevationDatabase(model).DBConnection); - cmd.CommandText = "SELECT * FROM " + ElevationTileDesignator.TableName; - SQLiteDataReader reader = cmd.ExecuteReader(); - while (reader.Read()) + System.Data.SQLite.SQLiteDatabase db = GetElevationDatabase(model); + if (db == null) + return l; + lock (db) { - ElevationTileDesignator tile = new ElevationTileDesignator((IDataRecord)reader); - if ((tile.BaseLat >= minlat) && (tile.BaseLat <= maxlat) && ((tile.BaseLon >= minlon) && (tile.BaseLon <= maxlon)) || - (tile.BaseLat + 1 / 24.0 >= minlat) && (tile.BaseLat + 1 / 24.0 <= maxlat) && ((tile.BaseLon + 2 / 24.0 >= minlon) && (tile.BaseLon + 2 / 24.0 <= maxlon))) + SQLiteCommand cmd = new SQLiteCommand(db.DBConnection); + cmd.CommandText = "SELECT * FROM " + ElevationTileDesignator.TableName; + SQLiteDataReader reader = cmd.ExecuteReader(); + while (reader.Read()) { - l.Add(tile); - i++; - } - // abort calculation if called from background worker and cancellation pending - if (caller != null) - { - if (caller.WorkerSupportsCancellation && caller.CancellationPending) - return new List(); - if (caller.WorkerReportsProgress && (i % 1000 == 0)) - caller.ReportProgress(0, "Getting tile " + i.ToString() + " of"); + ElevationTileDesignator tile = new ElevationTileDesignator((IDataRecord)reader); + if ((tile.BaseLat >= minlat) && (tile.BaseLat <= maxlat) && ((tile.BaseLon >= minlon) && (tile.BaseLon <= maxlon)) || + (tile.BaseLat + 1 / 24.0 >= minlat) && (tile.BaseLat + 1 / 24.0 <= maxlat) && ((tile.BaseLon + 2 / 24.0 >= minlon) && (tile.BaseLon + 2 / 24.0 <= maxlon))) + { + l.Add(tile); + i++; + } + // abort calculation if called from background worker and cancellation pending + if (caller != null) + { + if (caller.WorkerSupportsCancellation && caller.CancellationPending) + return new List(); + if (caller.WorkerReportsProgress && (i % 1000 == 0)) + caller.ReportProgress(0, "Getting tile " + i.ToString() + " of"); + } } + reader.Close(); } - reader.Close(); return l; } @@ -1040,7 +1132,14 @@ namespace ScoutBase.Elevation public long ElevationTileCount(ELEVATIONMODEL model) { - long count = (long)GetElevationDatabase(model).ExecuteScalar("SELECT COUNT(*) FROM " + ElevationTileDesignator.TableName); + System.Data.SQLite.SQLiteDatabase db = GetElevationDatabase(model); + if (db == null) + return 0; + long count = 0; + lock (db) + { + count = (long)db.ExecuteScalar("SELECT COUNT(*) FROM " + ElevationTileDesignator.TableName); + } if (count <= 0) return 0; return count; @@ -1066,13 +1165,18 @@ namespace ScoutBase.Elevation string tn = tablename; if (String.IsNullOrEmpty(tn)) tn = ElevationPathDesignator.TableName; - return GetElevationDatabase(model).TableExists(tn); + System.Data.SQLite.SQLiteDatabase db = GetElevationDatabase(model); + if (db == null) + return false; + return db.TableExists(tn); } public void ElevationPathCreateTable(ELEVATIONMODEL model, string tablename = "") { System.Data.SQLite.SQLiteDatabase db = GetElevationDatabase(model); - lock (db.DBCommand) + if (db == null) + return; + lock (db) { // check for table name is null or empty --> use default tablename from type instead string tn = tablename; @@ -1093,7 +1197,9 @@ namespace ScoutBase.Elevation public bool ElevationPathExists(ElevationPathDesignator path, ELEVATIONMODEL model) { System.Data.SQLite.SQLiteDatabase db = GetElevationDatabase(model); - lock (db.DBCommand) + if (db == null) + return false; + lock (db) { db.DBCommand.CommandText = "SELECT EXISTS (SELECT LastUpdated FROM " + ElevationPathDesignator.TableName + " WHERE Lat1 = @Lat1 AND Lon1 = @Lon1 AND Lat2 = @Lat2 AND Lon2 = @Lon2 AND StepWidth = @StepWidth)"; db.DBCommand.Parameters.Clear(); @@ -1118,7 +1224,9 @@ namespace ScoutBase.Elevation public ElevationPathDesignator ElevationPathFind(ElevationPathDesignator path, ELEVATIONMODEL model) { System.Data.SQLite.SQLiteDatabase db = GetElevationDatabase(model); - lock (db.DBCommand) + if (db == null) + return null; + lock (db) { db.DBCommand.CommandText = "SELECT * FROM " + ElevationPathDesignator.TableName + " WHERE Lat1 = @Lat1 AND Lon1 = @Lon1 AND Lat2 = @Lat2 AND Lon2 = @Lon2 AND StepWidth = @StepWidth"; db.DBCommand.Parameters.Clear(); @@ -1143,7 +1251,9 @@ namespace ScoutBase.Elevation public DateTime ElevationPathFindLastUpdated(ElevationPathDesignator path, ELEVATIONMODEL model) { System.Data.SQLite.SQLiteDatabase db = GetElevationDatabase(model); - lock (db.DBCommand) + if (db == null) + return DateTime.MinValue; + lock (db) { db.DBCommand.CommandText = "SELECT LastUpdated FROM " + ElevationPathDesignator.TableName + " WHERE Lat1 = @Lat1 AND Lon1 = @Lon1 AND Lat2 = @Lat2 AND Lon2 = @Lon2 AND StepWidth = @StepWidth"; db.DBCommand.Parameters.Clear(); @@ -1162,7 +1272,9 @@ namespace ScoutBase.Elevation public int ElevationPathInsert(ElevationPathDesignator path, ELEVATIONMODEL model) { System.Data.SQLite.SQLiteDatabase db = GetElevationDatabase(model); - lock (db.DBCommand) + if (db == null) + return -1; + lock (db) { db.DBCommand.CommandText = "INSERT INTO " + ElevationPathDesignator.TableName + " (Lat1, Lon1, Lat2, Lon2, StepWidth, Count, Path, LastUpdated) VALUES (@Lat1, @Lon1, @Lat2, @Lon2, @StepWidth, @Count, @Path, @LastUpdated)"; db.DBCommand.Parameters.Clear(); @@ -1181,7 +1293,9 @@ namespace ScoutBase.Elevation public int ElevationPathDelete(ElevationPathDesignator path, ELEVATIONMODEL model) { System.Data.SQLite.SQLiteDatabase db = GetElevationDatabase(model); - lock (db.DBCommand) + if (db == null) + return -1; + lock (db) { db.DBCommand.CommandText = "DELETE FROM " + ElevationPathDesignator.TableName + " WHERE Lat1 = @Lat1 AND Lon1 = @Lon1 AND Lat2 = @Lat2 AND Lon2 = @Lon2 AND StepWidth = @StepWidth"; db.DBCommand.Parameters.Clear(); @@ -1197,7 +1311,9 @@ namespace ScoutBase.Elevation public int ElevationPathDeleteAll(ELEVATIONMODEL model) { System.Data.SQLite.SQLiteDatabase db = GetElevationDatabase(model); - lock (db.DBCommand) + if (db == null) + return -1; + lock (db) { db.DBCommand.CommandText = "DELETE FROM " + ElevationPathDesignator.TableName; db.DBCommand.Parameters.Clear(); @@ -1208,7 +1324,9 @@ namespace ScoutBase.Elevation public int ElevationPathUpdate(ElevationPathDesignator path, ELEVATIONMODEL model) { System.Data.SQLite.SQLiteDatabase db = GetElevationDatabase(model); - lock (db.DBCommand) + if (db == null) + return -1; + lock (db) { db.DBCommand.CommandText = "UPDATE " + ElevationPathDesignator.TableName + " SET Lat1 = @Lat1, Lon1 = @Lon1, Lat2 = @Lat2, Lon2 = @Lon2, StepWidth = @StepWidth, Count = @Count, Path = @Path, LastUpdated = @LastUpdated WHERE Lat1 = @Lat1 AND Lon1 = @Lon1 AND Lat2 = @Lat2 AND Lon2 = @Lon2 AND StepWidth = @StepWidth"; db.DBCommand.Parameters.Clear(); @@ -1226,6 +1344,8 @@ namespace ScoutBase.Elevation public void ElevationPathInsertOrUpdateIfNewer(ElevationPathDesignator path, ELEVATIONMODEL model) { System.Data.SQLite.SQLiteDatabase db = GetElevationDatabase(model); + if (db == null) + return; DateTime dt = this.ElevationPathFindLastUpdated(path, model); if (dt == DateTime.MinValue) this.ElevationPathInsert(path, model); @@ -1346,13 +1466,13 @@ namespace ScoutBase.Elevation ep.Path = MovingAverage(raw, avperiod); } - // check if database is still complete, could have benn changed during background calculation + // check if database is still complete, could have been changed during background calculation if (complete) complete = GetDBStatusBit(model, DATABASESTATUS.COMPLETE) & !GetDBStatusBit(model, DATABASESTATUS.ERROR); // validate path according to completeness of database ep.Valid = complete; - // oops, tile is missing --> check if database status - // COMPLETE: check boounds --> path complete inside bounds --> assuming that missing tile is a "wet square" --> keep path valid + // oops, tile is missing --> check database status + // COMPLETE: check bounds --> path complete inside bounds --> assuming that missing tile is a "wet square" --> keep path valid // NOT COMPLETE: assuming that tile is missing --> invalidate path if (tilemissing) { @@ -1399,13 +1519,18 @@ namespace ScoutBase.Elevation string tn = tablename; if (String.IsNullOrEmpty(tn)) tn = ElevationHorizonDesignator.TableName; - return GetElevationDatabase(model).TableExists(tn); + System.Data.SQLite.SQLiteDatabase db = GetElevationDatabase(model); + if (db == null) + return false; + return db.TableExists(tn); } public void ElevationHorizonCreateTable(ELEVATIONMODEL model, string tablename = "") { System.Data.SQLite.SQLiteDatabase db = GetElevationDatabase(model); - lock (db.DBCommand) + if (db == null) + return; + lock (db) { // check for table name is null or empty --> use default tablename from type instead string tn = tablename; @@ -1426,7 +1551,9 @@ namespace ScoutBase.Elevation public bool ElevationHorizonExists(ElevationHorizonDesignator path, ELEVATIONMODEL model) { System.Data.SQLite.SQLiteDatabase db = GetElevationDatabase(model); - lock (db.DBCommand) + if (db == null) + return false; + lock (db) { db.DBCommand.CommandText = "SELECT EXISTS (SELECT LastUpdated FROM " + ElevationHorizonDesignator.TableName + " WHERE Lat = @Lat AND Lon = @Lon AND Distance = @Distance AND StepWidth = @StepWidth)"; db.DBCommand.Parameters.Clear(); @@ -1450,7 +1577,9 @@ namespace ScoutBase.Elevation public ElevationHorizonDesignator ElevationHorizonFind(ElevationHorizonDesignator path, ELEVATIONMODEL model) { System.Data.SQLite.SQLiteDatabase db = GetElevationDatabase(model); - lock (db.DBCommand) + if (db == null) + return null; + lock (db) { db.DBCommand.CommandText = "SELECT * FROM " + ElevationHorizonDesignator.TableName + " WHERE Lat = @Lat AND Lon = @Lon AND Distance = @Distance AND StepWidth = @StepWidth"; db.DBCommand.Parameters.Clear(); @@ -1474,7 +1603,9 @@ namespace ScoutBase.Elevation public DateTime ElevationHorizonFindLastUpdated(ElevationHorizonDesignator path, ELEVATIONMODEL model) { System.Data.SQLite.SQLiteDatabase db = GetElevationDatabase(model); - lock (db.DBCommand) + if (db == null) + return DateTime.MinValue; + lock (db) { db.DBCommand.CommandText = "SELECT LastUpdated FROM " + ElevationHorizonDesignator.TableName + " WHERE Lat = @Lat AND Lon = @Lon AND Distance = @Distance AND StepWidth = @StepWidth"; db.DBCommand.Parameters.Clear(); @@ -1492,7 +1623,9 @@ namespace ScoutBase.Elevation public int ElevationHorizonInsert(ElevationHorizonDesignator path, ELEVATIONMODEL model) { System.Data.SQLite.SQLiteDatabase db = GetElevationDatabase(model); - lock (db.DBCommand) + if (db == null) + return -1; + lock (db) { db.DBCommand.CommandText = "INSERT INTO " + ElevationHorizonDesignator.TableName + " (Lat, Lon, Distance, StepWidth, Count, Paths, LastUpdated) VALUES (@Lat, @Lon, @Distance, @StepWidth, @Count, @Paths, @LastUpdated)"; db.DBCommand.Parameters.Clear(); @@ -1510,7 +1643,9 @@ namespace ScoutBase.Elevation public int ElevationHorizonDelete(ElevationHorizonDesignator path, ELEVATIONMODEL model) { System.Data.SQLite.SQLiteDatabase db = GetElevationDatabase(model); - lock (db.DBCommand) + if (db == null) + return -1; + lock (db) { db.DBCommand.CommandText = "DELETE FROM " + ElevationHorizonDesignator.TableName + " WHERE Lat = @Lat AND Lon = @Lon AND Distance = @Distance AND StepWidth = @StepWidth"; db.DBCommand.Parameters.Clear(); @@ -1525,7 +1660,9 @@ namespace ScoutBase.Elevation public int ElevationHorizonDeleteAll(ELEVATIONMODEL model) { System.Data.SQLite.SQLiteDatabase db = GetElevationDatabase(model); - lock (db.DBCommand) + if (db == null) + return -1; + lock (db) { db.DBCommand.CommandText = "DELETE FROM " + ElevationHorizonDesignator.TableName; db.DBCommand.Parameters.Clear(); @@ -1536,7 +1673,9 @@ namespace ScoutBase.Elevation public int ElevationHorizonUpdate(ElevationHorizonDesignator path, ELEVATIONMODEL model) { System.Data.SQLite.SQLiteDatabase db = GetElevationDatabase(model); - lock (db.DBCommand) + if (db == null) + return -1; + lock (db) { db.DBCommand.CommandText = "UPDATE " + ElevationHorizonDesignator.TableName + " SET Lat = @Lat, Lon = @Lon, Distance = @Distance, StepWidth = @StepWidth, Count = @Count, Paths = @Paths, LastUpdated = @LastUpdated WHERE Lat = @Lat AND Lon = @Lon AND Distance = @Distance AND StepWidth = @StepWidth"; db.DBCommand.Parameters.Clear(); @@ -1553,6 +1692,8 @@ namespace ScoutBase.Elevation public void ElevationHorizonInsertOrUpdateIfNewer(ElevationHorizonDesignator path, ELEVATIONMODEL model) { System.Data.SQLite.SQLiteDatabase db = GetElevationDatabase(model); + if (db == null) + return; DateTime dt = this.ElevationHorizonFindLastUpdated(path, model); if (dt == DateTime.MinValue) this.ElevationHorizonInsert(path, model); @@ -1624,13 +1765,18 @@ namespace ScoutBase.Elevation string tn = tablename; if (String.IsNullOrEmpty(tn)) tn = LocalObstructionDesignator.TableName; - return GetElevationDatabase(model).TableExists(tn); + System.Data.SQLite.SQLiteDatabase db = GetElevationDatabase(model); + if (db == null) + return false; + return db.TableExists(tn); } public void LocalObstructionCreateTable(ELEVATIONMODEL model, string tablename = "") { System.Data.SQLite.SQLiteDatabase db = GetElevationDatabase(model); - lock (db.DBCommand) + if (db == null) + return; + lock (db) { // check for table name is null or empty --> use default tablename from type instead string tn = tablename; @@ -1651,7 +1797,9 @@ namespace ScoutBase.Elevation public bool LocalObstructionExists(LocalObstructionDesignator obstr, ELEVATIONMODEL model) { System.Data.SQLite.SQLiteDatabase db = GetElevationDatabase(model); - lock (db.DBCommand) + if (db == null) + return false; + lock (db) { db.DBCommand.CommandText = "SELECT EXISTS (SELECT LastUpdated FROM " + LocalObstructionDesignator.TableName + " WHERE Lat = @Lat AND Lon = @Lon)"; db.DBCommand.Parameters.Clear(); @@ -1684,8 +1832,14 @@ namespace ScoutBase.Elevation public LocalObstructionDesignator LocalObstructionFind(LocalObstructionDesignator obstr, ELEVATIONMODEL model) { + if (obstr == null) + return null; + System.Data.SQLite.SQLiteDatabase db = GetElevationDatabase(model); - lock (db.DBCommand) + if (db == null) + return null; + + lock (db) { db.DBCommand.CommandText = "SELECT * FROM " + LocalObstructionDesignator.TableName + " WHERE Lat = @Lat AND Lon = @Lon"; db.DBCommand.Parameters.Clear(); @@ -1706,8 +1860,14 @@ namespace ScoutBase.Elevation public DateTime LocalObstructionFindLastUpdated(LocalObstructionDesignator obstr, ELEVATIONMODEL model) { + if (obstr == null) + return DateTime.MinValue; + System.Data.SQLite.SQLiteDatabase db = GetElevationDatabase(model); - lock (db.DBCommand) + if (db == null) + return DateTime.MinValue; + + lock (db) { db.DBCommand.CommandText = "SELECT LastUpdated FROM " + LocalObstructionDesignator.TableName + " WHERE Lat = @Lat AND Lon = @Lon"; db.DBCommand.Parameters.Clear(); @@ -1722,8 +1882,14 @@ namespace ScoutBase.Elevation public int LocalObstructionInsert(LocalObstructionDesignator obstr, ELEVATIONMODEL model) { + if (obstr == null) + return -1; + System.Data.SQLite.SQLiteDatabase db = GetElevationDatabase(model); - lock (db.DBCommand) + if (db == null) + return -1; + + lock (db) { db.DBCommand.CommandText = "INSERT INTO " + LocalObstructionDesignator.TableName + " (Lat, Lon, Distance, Height, LastUpdated) VALUES (@Lat, @Lon, @Distance, @Height, @LastUpdated)"; db.DBCommand.Parameters.Clear(); @@ -1738,8 +1904,14 @@ namespace ScoutBase.Elevation public int LocalObstructionDelete(LocalObstructionDesignator obstr, ELEVATIONMODEL model) { + if (obstr == null) + return -1; + System.Data.SQLite.SQLiteDatabase db = GetElevationDatabase(model); - lock (db.DBCommand) + if (db == null) + return -1; + + lock (db) { db.DBCommand.CommandText = "DELETE FROM " + LocalObstructionDesignator.TableName + " WHERE Lat = @Lat AND Lon = @Lon"; db.DBCommand.Parameters.Clear(); @@ -1752,7 +1924,10 @@ namespace ScoutBase.Elevation public int LocalObstructionDeleteAll(ELEVATIONMODEL model) { System.Data.SQLite.SQLiteDatabase db = GetElevationDatabase(model); - lock (db.DBCommand) + if (db == null) + return -1; + + lock (db) { db.DBCommand.CommandText = "DELETE FROM " + LocalObstructionDesignator.TableName; db.DBCommand.Parameters.Clear(); @@ -1762,8 +1937,14 @@ namespace ScoutBase.Elevation public int LocalObstructionUpdate(LocalObstructionDesignator obstr, ELEVATIONMODEL model) { + if (obstr == null) + return -1; + System.Data.SQLite.SQLiteDatabase db = GetElevationDatabase(model); - lock (db.DBCommand) + if (db == null) + return -1; + + lock (db) { db.DBCommand.CommandText = "UPDATE " + LocalObstructionDesignator.TableName + " SET Lat = @Lat, Lon = @Lon, Distance = @Distance, Height = @Height, LastUpdated = @LastUpdated WHERE Lat = @Lat AND Lon = @Lon"; db.DBCommand.Parameters.Clear(); @@ -1776,15 +1957,23 @@ namespace ScoutBase.Elevation return result; } } + public void LocalObstructionInsertOrUpdateIfNewer(LocalObstructionDesignator obstr, ELEVATIONMODEL model) { + if (obstr == null) + return; + System.Data.SQLite.SQLiteDatabase db = GetElevationDatabase(model); + if (db == null) + return; + DateTime dt = this.LocalObstructionFindLastUpdated(obstr, model); if (dt == DateTime.MinValue) this.LocalObstructionInsert(obstr, model); else if (dt < obstr.LastUpdated) this.LocalObstructionUpdate(obstr, model); } + #endregion #region ElevationCatalogue @@ -1816,18 +2005,21 @@ namespace ScoutBase.Elevation int count = db.TableRowCount(tablename); // copy rows, if any // don't care about the column type --> SQLite can handle that - if (count > 0) + lock (db) { - db.Execute("UPDATE " + tablename + " SET LastUpdated = strftime('%s',LastUpdated)"); + if (count > 0) + { + db.Execute("UPDATE " + tablename + " SET LastUpdated = strftime('%s',LastUpdated)"); + } + // change table's structure + // BE CAREFUL HERE!!! + int schema_version = db.GetSchemaVersion(); + db.Execute("PRAGMA writable_schema = ON"); + db.Execute("UPDATE sqlite_master SET sql = replace(sql, 'LastUpdated TEXT', 'LastUpdated INT32') WHERE type = 'table' AND name = '" + tablename + "'"); + schema_version++; + db.SetSchemaVerion(schema_version); + db.Execute("PRAGMA writable_schema = OFF"); } - // change table's structure - // BE CAREFUL HERE!!! - int schema_version = db.GetSchemaVersion(); - db.Execute("PRAGMA writable_schema = ON"); - db.Execute("UPDATE sqlite_master SET sql = replace(sql, 'LastUpdated TEXT', 'LastUpdated INT32') WHERE type = 'table' AND name = '" + tablename + "'"); - schema_version++; - db.SetSchemaVerion(schema_version); - db.Execute("PRAGMA writable_schema = OFF"); } } diff --git a/ScoutBase/ScoutBase.Elevation/ElevationDatabaseUpdater.cs b/ScoutBase/ScoutBase.Elevation/ElevationDatabaseUpdater.cs index e0d869e..67c6749 100644 --- a/ScoutBase/ScoutBase.Elevation/ElevationDatabaseUpdater.cs +++ b/ScoutBase/ScoutBase.Elevation/ElevationDatabaseUpdater.cs @@ -43,7 +43,7 @@ namespace ScoutBase.Elevation ElevationDatabaseUpdaterStartOptions StartOptions; // Temp directory to save downloaded files - string TmpDirectory = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), Application.CompanyName, Application.ProductName, "Tmp").TrimEnd(Path.DirectorySeparatorChar); + string TmpDirectory = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), Application.CompanyName, Application.ProductName, "Tmp", "ElevationData").TrimEnd(Path.DirectorySeparatorChar); public ElevationDatabaseUpdater() : base() { @@ -464,8 +464,8 @@ namespace ScoutBase.Elevation } Stopwatch st = new Stopwatch(); st.Start(); - // check last change of database file - if (HasDatabaseChanged() || HasUpdateChanged() || HaveBoundsChanged()) + // check last change of database file and no errors + if (HasDatabaseChanged() || HasUpdateChanged() || HaveBoundsChanged() || ((GetSavedDatabaseStatus() & DATABASESTATUS.ERROR) > 0)) { // database and/or update has changed --> full check necessary // check if database is complete diff --git a/ScoutBase/ScoutBase.Elevation/ElevationModel.cs b/ScoutBase/ScoutBase.Elevation/ElevationModel.cs index 1d4ae7b..f13497a 100644 --- a/ScoutBase/ScoutBase.Elevation/ElevationModel.cs +++ b/ScoutBase/ScoutBase.Elevation/ElevationModel.cs @@ -1,17 +1,25 @@ using System; using System.Collections.Generic; +using System.ComponentModel; using System.Linq; using System.Text; namespace ScoutBase.Elevation { + [Description("Elevation Model")] public enum ELEVATIONMODEL { + [Description("None")] NONE = 0, + [Description("GLOBE")] GLOBE = 1, + [Description("SRTM3")] SRTM3 = 2, + [Description("SRTM1")] SRTM1 = 3, + [Description("ASTER3")] ASTER3 = 4, + [Description("ASTER1")] ASTER1 = 5 } } diff --git a/ScoutBase/ScoutBase.Elevation/LocalObstruction.cs b/ScoutBase/ScoutBase.Elevation/LocalObstruction.cs index 393caf6..07a51e0 100644 --- a/ScoutBase/ScoutBase.Elevation/LocalObstruction.cs +++ b/ScoutBase/ScoutBase.Elevation/LocalObstruction.cs @@ -30,6 +30,7 @@ namespace ScoutBase.Elevation /// Holds the local obstruction information /// [System.ComponentModel.DesignerCategory("")] + [Serializable] public class LocalObstructionDesignator : SQLiteEntry { ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/ScoutBase/ScoutBase.Elevation/ScoutBase.Elevation.csproj b/ScoutBase/ScoutBase.Elevation/ScoutBase.Elevation.csproj index fda19c8..c4be306 100644 --- a/ScoutBase/ScoutBase.Elevation/ScoutBase.Elevation.csproj +++ b/ScoutBase/ScoutBase.Elevation/ScoutBase.Elevation.csproj @@ -58,8 +58,8 @@ - - ..\..\packages\System.Data.SQLite.Core.1.0.112.0\lib\net40\System.Data.SQLite.dll + + ..\..\packages\Stub.System.Data.SQLite.Core.NetFramework.1.0.113.3\lib\net40\System.Data.SQLite.dll @@ -111,12 +111,12 @@ - + Dieses Projekt verweist auf mindestens ein NuGet-Paket, das auf diesem Computer fehlt. Verwenden Sie die Wiederherstellung von NuGet-Paketen, um die fehlenden Dateien herunterzuladen. Weitere Informationen finden Sie unter "http://go.microsoft.com/fwlink/?LinkID=322105". Die fehlende Datei ist "{0}". - + use default tablename from type instead string tn = tablename; if (String.IsNullOrEmpty(tn)) @@ -257,6 +295,8 @@ namespace ScoutBase.Propagation public void PropagationPathCreateTable(ELEVATIONMODEL model, string tablename = "") { System.Data.SQLite.SQLiteDatabase db = GetPropagationDatabase(model); + if (db == null) + return; lock (db.DBCommand) { // check for table name is null or empty --> use default tablename from type instead @@ -272,6 +312,8 @@ namespace ScoutBase.Propagation public long PropagationPathCount(ELEVATIONMODEL model) { System.Data.SQLite.SQLiteDatabase db = GetPropagationDatabase(model); + if (db == null) + return 0; long count = (long)db.ExecuteScalar("SELECT COUNT(*) FROM " + PropagationPathDesignator.TableName); if (count <= 0) return 0; @@ -287,6 +329,8 @@ namespace ScoutBase.Propagation public bool PropagationPathExists(PropagationPathDesignator path, ELEVATIONMODEL model) { System.Data.SQLite.SQLiteDatabase db = GetPropagationDatabase(model); + if (db == null) + return false; lock (db.DBCommand) { db.DBCommand.CommandText = "SELECT EXISTS (SELECT LastUpdated FROM " + PropagationPathDesignator.TableName + " WHERE Lat1 = @Lat1 AND Lon1 = @Lon1 AND h1 = @h1 AND Lat2 = @Lat2 AND Lon2 = @Lon2 AND h2 = @h2 AND QRG = @QRG AND Radius = @Radius AND F1_Clearance = @F1_Clearance AND StepWidth = @StepWidth)"; @@ -317,6 +361,8 @@ namespace ScoutBase.Propagation public PropagationPathDesignator PropagationPathFind(PropagationPathDesignator path, ELEVATIONMODEL model) { System.Data.SQLite.SQLiteDatabase db = GetPropagationDatabase(model); + if (db == null) + return null; // save localobstruction double obstr = path.LocalObstruction; lock (db.DBCommand) @@ -349,6 +395,8 @@ namespace ScoutBase.Propagation public DateTime PropagationPathFindLastUpdated(PropagationPathDesignator path, ELEVATIONMODEL model) { System.Data.SQLite.SQLiteDatabase db = GetPropagationDatabase(model); + if (db == null) + return DateTime.MinValue; lock (db.DBCommand) { db.DBCommand.CommandText = "SELECT LastUpdated FROM " + PropagationPathDesignator.TableName + " WHERE Lat1 = @Lat1 AND Lon1 = @Lon1 AND h1 = @h1 AND Lat2 = @Lat2 AND Lon2 = @Lon2 AND h2 = @h2 AND QRG = @QRG AND Radius = @Radius AND F1_Clearance = @F1_Clearance AND StepWidth = @StepWidth"; @@ -373,6 +421,8 @@ namespace ScoutBase.Propagation public int PropagationPathInsert(PropagationPathDesignator path, ELEVATIONMODEL model) { System.Data.SQLite.SQLiteDatabase db = GetPropagationDatabase(model); + if (db == null) + return -1; lock (db.DBCommand) { db.DBCommand.CommandText = "INSERT INTO " + PropagationPathDesignator.TableName + " (Lat1, Lon1, h1, Lat2, Lon2, h2, QRG, Radius, F1_Clearance, StepWidth, Eps1_Min, Eps2_Min, LastUpdated) VALUES (@Lat1, @Lon1, @h1, @Lat2, @Lon2, @h2, @QRG, @Radius, @F1_Clearance, @StepWidth, @Eps1_Min, @Eps2_Min, @LastUpdated)"; @@ -397,6 +447,8 @@ namespace ScoutBase.Propagation public int PropagationPathDelete(PropagationPathDesignator path, ELEVATIONMODEL model) { System.Data.SQLite.SQLiteDatabase db = GetPropagationDatabase(model); + if (db == null) + return -1; lock (db.DBCommand) { db.DBCommand.CommandText = "DELETE FROM " + PropagationPathDesignator.TableName + " WHERE Lat1 = @Lat1 AND Lon1 = @Lon1 AND h1 = @h1 AND Lat2 = @Lat2 AND Lon2 = @Lon2 AND h2 = @h2 AND QRG = @QRG AND Radius = @Radius AND F1_Clearance = @F1_Clearance AND StepWidth = @StepWidth"; @@ -418,6 +470,8 @@ namespace ScoutBase.Propagation public int PropagationPathDeleteAll(ELEVATIONMODEL model) { System.Data.SQLite.SQLiteDatabase db = GetPropagationDatabase(model); + if (db == null) + return -1; lock (db.DBCommand) { db.DBCommand.CommandText = "DELETE FROM " + PropagationPathDesignator.TableName; @@ -429,6 +483,8 @@ namespace ScoutBase.Propagation public int PropagationPathUpdate(PropagationPathDesignator path, ELEVATIONMODEL model) { System.Data.SQLite.SQLiteDatabase db = GetPropagationDatabase(model); + if (db == null) + return -1; lock (db.DBCommand) { db.DBCommand.CommandText = "UPDATE " + PropagationPathDesignator.TableName + " SET Lat1 = @Lat1, Lon1 = @Lon1, h1 = @h1, Lat2 = @Lat2, Lon2 = @Lon2, h2 = @h2, QRG = @QRG, Radius = @Radius, F1_Clearance = @F1_Clearance, @StepWidth = @StepWidth, Eps1_Min = @Eps1_Min, Eps2_Min = @Eps2_Min, LastUpdated = @LastUpdated WHERE Lat1 = @Lat1 AND Lon1 = @Lon1 AND h1 = @h1 AND Lat2 = @Lat2 AND Lon2 = @Lon2 AND h2 = @h2 AND QRG = @QRG AND Radius = @Radius AND F1_Clearance = @F1_Clearance AND StepWidth = @StepWidth"; @@ -452,6 +508,8 @@ namespace ScoutBase.Propagation public void PropagationPathInsertOrUpdateIfNewer(PropagationPathDesignator path, ELEVATIONMODEL model) { System.Data.SQLite.SQLiteDatabase db = GetPropagationDatabase(model); + if (db == null) + return; DateTime dt = this.PropagationPathFindLastUpdated(path, model); if (dt == DateTime.MinValue) this.PropagationPathInsert(path, model); @@ -476,32 +534,50 @@ namespace ScoutBase.Propagation // return null if elevation path is null for whatever reason if (ep == null) return null; - for (int i = 0; i < ep.Count; i++) +// using (StreamWriter sw = new StreamWriter(File.OpenWrite("propagation.csv"))) { - double dist1 = i * stepwidth / 1000.0; - double dist2 = (ep.Count - i - 1) * stepwidth / 1000.0; - double f1c1 = ScoutBase.Core.Propagation.F1Radius(qrg, dist1, dist2) * f1_clearance; - double f1c2 = ScoutBase.Core.Propagation.F1Radius(qrg, dist2, dist1) * f1_clearance; - double nf = NearFieldSuppression / 1000.0; - double eps1; - double eps2; - if (dist1 > nf) - eps1 = ScoutBase.Core.Propagation.EpsilonFromHeights(h1, dist1, ep.Path[i] + f1c1, radius); - else - eps1 = ScoutBase.Core.Propagation.EpsilonFromHeights(h1, nf, ep.Path[i] + f1c1, radius); - if (eps1 > eps1_min) - eps1_min = eps1; - if (dist2 > nf) - eps2 = ScoutBase.Core.Propagation.EpsilonFromHeights(h2, dist2, ep.Path[i] + f1c2, radius); - else - eps2 = ScoutBase.Core.Propagation.EpsilonFromHeights(h2, nf, ep.Path[i] + f1c2, radius); - if (eps2 > eps2_min) - eps2_min = eps2; - if (caller != null) +// sw.WriteLine("i;dist1;dist2;f1c1;f1c2;elv;eps1;eps1_min;eps2;eps2_min"); + for (int i = 0; i < ep.Count; i++) { - // abort calculation if cancellation pending - if (caller.WorkerSupportsCancellation && caller.CancellationPending) - return null; + double dist1 = i * stepwidth / 1000.0; + double dist2 = (ep.Count - i - 1) * stepwidth / 1000.0; + double f1c1 = ScoutBase.Core.Propagation.F1Radius(qrg, dist1, dist2) * f1_clearance; + double f1c2 = ScoutBase.Core.Propagation.F1Radius(qrg, dist2, dist1) * f1_clearance; + double nf = NearFieldSuppression / 1000.0; + double eps1; + double eps2; + if (dist1 > nf) + eps1 = ScoutBase.Core.Propagation.EpsilonFromHeights(h1, dist1, ep.Path[i] + f1c1, radius); + else + eps1 = ScoutBase.Core.Propagation.EpsilonFromHeights(h1, nf, ep.Path[i] + f1c1, radius); + if (eps1 > eps1_min) + eps1_min = eps1; + if (dist2 > nf) + eps2 = ScoutBase.Core.Propagation.EpsilonFromHeights(h2, dist2, ep.Path[i] + f1c2, radius); + else + eps2 = ScoutBase.Core.Propagation.EpsilonFromHeights(h2, nf, ep.Path[i] + f1c2, radius); + if (eps2 > eps2_min) + eps2_min = eps2; + if (caller != null) + { + // abort calculation if cancellation pending + if (caller.WorkerSupportsCancellation && caller.CancellationPending) + return null; + } + /* + sw.WriteLine( + i.ToString() + ";" + + dist1.ToString("F8") + ";" + + dist2.ToString("F8") + ";" + + f1c1.ToString("F8") + ";" + + f1c2.ToString("F8") + ";" + + ep.Path[i].ToString() + ";" + + eps1.ToString("F8") + ";" + + eps1_min.ToString("F8") + ";" + + eps2.ToString("F8") + ";" + + eps2_min.ToString("F8") + ); + */ } } PropagationPathDesignator pp = new PropagationPathDesignator(lat1, lon1, h1, lat2, lon2, h2, qrg, radius, f1_clearance, stepwidth, eps1_min, eps2_min, localobstruction); @@ -534,6 +610,8 @@ namespace ScoutBase.Propagation public bool PropagationHorizonTableExists(ELEVATIONMODEL model, string tablename = "") { System.Data.SQLite.SQLiteDatabase db = GetPropagationDatabase(model); + if (db == null) + return false; // check for table name is null or empty --> use default tablename from type instead string tn = tablename; if (String.IsNullOrEmpty(tn)) @@ -544,6 +622,8 @@ namespace ScoutBase.Propagation public void PropagationHorizonCreateTable(ELEVATIONMODEL model, string tablename = "") { System.Data.SQLite.SQLiteDatabase db = GetPropagationDatabase(model); + if (db == null) + return; lock (db.DBCommand) { // check for table name is null or empty --> use default tablename from type instead @@ -559,6 +639,8 @@ namespace ScoutBase.Propagation public long PropagationHorizonCount(ELEVATIONMODEL model) { System.Data.SQLite.SQLiteDatabase db = GetPropagationDatabase(model); + if (db == null) + return 0; long count = (long)db.ExecuteScalar("SELECT COUNT(*) FROM " + PropagationHorizonDesignator.TableName); if (count <= 0) return 0; @@ -575,6 +657,8 @@ namespace ScoutBase.Propagation { System.Data.SQLite.SQLiteDatabase db = GetPropagationDatabase(model); lock (db.DBCommand) + if (db == null) + return false; { db.DBCommand.CommandText = "SELECT EXISTS (SELECT LastUpdated FROM " + PropagationHorizonDesignator.TableName + " WHERE Lat = @Lat AND Lon = @Lon AND h = @h AND Dist = @Dist AND QRG = @QRG AND Radius = @Radius AND F1_Clearance = @F1_Clearance AND StepWidth = @StepWidth)"; db.DBCommand.Parameters.Clear(); @@ -602,6 +686,8 @@ namespace ScoutBase.Propagation public PropagationHorizonDesignator PropagationHorizonFind(PropagationHorizonDesignator hor, ELEVATIONMODEL model) { System.Data.SQLite.SQLiteDatabase db = GetPropagationDatabase(model); + if (db == null) + return null; // save localobstruction LocalObstructionDesignator obstr = hor.LocalObstruction; lock (db.DBCommand) @@ -632,6 +718,8 @@ namespace ScoutBase.Propagation public DateTime PropagationHorizonFindLastUpdated(PropagationHorizonDesignator hor, ELEVATIONMODEL model) { System.Data.SQLite.SQLiteDatabase db = GetPropagationDatabase(model); + if (db == null) + return DateTime.MinValue; lock (db.DBCommand) { db.DBCommand.CommandText = "SELECT LastUpdated FROM " + PropagationHorizonDesignator.TableName + " WHERE Lat = @Lat AND Lon = @Lon AND h = @h AND Dist = @Dist AND QRG = @QRG AND Radius = @Radius AND F1_Clearance = @F1_Clearance AND StepWidth = @StepWidth"; @@ -654,6 +742,8 @@ namespace ScoutBase.Propagation public int PropagationHorizonInsert(PropagationHorizonDesignator hor, ELEVATIONMODEL model) { System.Data.SQLite.SQLiteDatabase db = GetPropagationDatabase(model); + if (db == null) + return -1; lock (db.DBCommand) { db.DBCommand.CommandText = "INSERT INTO " + PropagationHorizonDesignator.TableName + " (Lat, Lon, h, Dist, QRG, Radius, F1_Clearance, StepWidth, Horizon, LastUpdated) VALUES (@Lat, @Lon, @h, @Dist, @QRG, @Radius, @F1_Clearance, @StepWidth, @Horizon, @LastUpdated)"; @@ -675,6 +765,8 @@ namespace ScoutBase.Propagation public int PropagationHorizonDelete(PropagationHorizonDesignator hor, ELEVATIONMODEL model) { System.Data.SQLite.SQLiteDatabase db = GetPropagationDatabase(model); + if (db == null) + return -1; lock (db.DBCommand) { db.DBCommand.CommandText = "DELETE FROM " + PropagationHorizonDesignator.TableName + " WHERE Lat = @Lat AND Lon = @Lon AND h = @h AND Dist = @Dist AND QRG = @QRG AND Radius = @Radius AND F1_Clearance = @F1_Clearance AND StepWidth = @StepWidth"; @@ -694,6 +786,8 @@ namespace ScoutBase.Propagation public int PropagationHorizonDeleteAll(ELEVATIONMODEL model) { System.Data.SQLite.SQLiteDatabase db = GetPropagationDatabase(model); + if (db == null) + return -1; lock (db.DBCommand) { db.DBCommand.CommandText = "DELETE FROM " + PropagationHorizonDesignator.TableName; @@ -705,6 +799,8 @@ namespace ScoutBase.Propagation public int PropagationHorizonUpdate(PropagationHorizonDesignator hor, ELEVATIONMODEL model) { System.Data.SQLite.SQLiteDatabase db = GetPropagationDatabase(model); + if (db == null) + return -1; lock (db.DBCommand) { db.DBCommand.CommandText = "UPDATE " + PropagationHorizonDesignator.TableName + " SET Lat = @Lat, Lon = @Lon, h = @h, Dist = @Dist, QRG = @QRG, Radius = @Radius, F1_Clearance = @F1_Clearance, @StepWidth = @StepWidth, Horizon = @Horizon, LastUpdated = @LastUpdated WHERE Lat = @Lat AND Lon = @Lon AND h = @h AND Dist = @Dist AND QRG = @QRG AND Radius = @Radius AND F1_Clearance = @F1_Clearance AND StepWidth = @StepWidth"; @@ -725,6 +821,8 @@ namespace ScoutBase.Propagation public void PropagationHorizonInsertOrUpdateIfNewer(PropagationHorizonDesignator hor, ELEVATIONMODEL model) { System.Data.SQLite.SQLiteDatabase db = GetPropagationDatabase(model); + if (db == null) + return; DateTime dt = this.PropagationHorizonFindLastUpdated(hor, model); if (dt == DateTime.MinValue) this.PropagationHorizonInsert(hor, model); @@ -741,54 +839,69 @@ namespace ScoutBase.Propagation PropagationHorizonDesignator hd = new PropagationHorizonDesignator(lat, lon, h, dist, qrg, radius, f1_clearance, stepwidth, hor, localobstruction); for (int j = 0; j < 360; j++) { - // report progress if called from background worker - if (caller != null) + try { - if (caller.WorkerReportsProgress) - caller.ReportProgress(-1, "Calculating horizon " + j.ToString() + "° of 360°"); - } - double eps_min = double.MinValue; - double eps_dist = 0; - short eps_elv = 0; - // find or create elevation path - ElevationPathDesignator ep = ElevationData.Database.ElevationPathFindOrCreateFromBearing(caller, lat, lon, j, dist, stepwidth, model, false); - for (int i = 0; i < ep.Count; i++) - { - double d = i * stepwidth / 1000.0; - double nf = NearFieldSuppression / 1000.0; - double eps; - if (d > nf) + // report progress if called from background worker + if (caller != null) { - double f1c = ScoutBase.Core.Propagation.F1Radius(qrg, d, dist) * f1_clearance; - eps = ScoutBase.Core.Propagation.EpsilonFromHeights(h, d, ep.Path[i] + f1c, radius); + if (caller.WorkerReportsProgress) + caller.ReportProgress(-1, "Calculating horizon " + j.ToString() + "° of 360°"); } - else + double eps_min = double.MinValue; + double eps_dist = 0; + short eps_elv = 0; + // find or create elevation path + ElevationPathDesignator ep = ElevationData.Database.ElevationPathFindOrCreateFromBearing(caller, lat, lon, j, dist, stepwidth, model, false); + + // abort calculation if called from background worker and cancellation pending + if (caller != null) { - double f1c = ScoutBase.Core.Propagation.F1Radius(qrg, nf, dist) * f1_clearance; - eps = ScoutBase.Core.Propagation.EpsilonFromHeights(h, nf, ep.Path[i] + f1c, radius); + if (caller.WorkerSupportsCancellation && caller.CancellationPending) + return null; } - if (eps > eps_min) + + for (int i = 0; i < ep.Count; i++) { - eps_min = eps; - eps_dist = d; - eps_elv = ep.Path[i]; + double d = i * stepwidth / 1000.0; + double nf = NearFieldSuppression / 1000.0; + double eps; + if (d > nf) + { + double f1c = ScoutBase.Core.Propagation.F1Radius(qrg, d, dist) * f1_clearance; + eps = ScoutBase.Core.Propagation.EpsilonFromHeights(h, d, ep.Path[i] + f1c, radius); + } + else + { + double f1c = ScoutBase.Core.Propagation.F1Radius(qrg, nf, dist) * f1_clearance; + eps = ScoutBase.Core.Propagation.EpsilonFromHeights(h, nf, ep.Path[i] + f1c, radius); + } + if (eps > eps_min) + { + eps_min = eps; + eps_dist = d; + eps_elv = ep.Path[i]; + } + } + hor[j] = new HorizonPoint(eps_dist, eps_min, eps_elv); + // report current horizon if called from background worker + if (caller != null) + { + if (caller.WorkerReportsProgress) + caller.ReportProgress(j, hor[j]); + } + // take status from elevation path + if (!ep.Valid) + valid = false; + // abort calculation if called from background worker and cancellation pending + if (caller != null) + { + if (caller.WorkerSupportsCancellation && caller.CancellationPending) + return null; } } - hor[j] = new HorizonPoint(eps_dist, eps_min, eps_elv); - // report current horizon if called from background worker - if (caller != null) + catch (Exception ex) { - if (caller.WorkerReportsProgress) - caller.ReportProgress(j, hor[j]); - } - // take status from elevation path - if (!ep.Valid) - valid = false; - // abort calculation if called from background worker and cancellation pending - if (caller != null) - { - if (caller.WorkerSupportsCancellation && caller.CancellationPending) - return null; + } } // copy over the horizon and status diff --git a/ScoutBase/ScoutBase.Propagation/PropagationHorizon.cs b/ScoutBase/ScoutBase.Propagation/PropagationHorizon.cs index 0817a12..26f96c5 100644 --- a/ScoutBase/ScoutBase.Propagation/PropagationHorizon.cs +++ b/ScoutBase/ScoutBase.Propagation/PropagationHorizon.cs @@ -17,6 +17,7 @@ namespace ScoutBase.Propagation /// Holds the horizon information /// [System.ComponentModel.DesignerCategory("")] + [Serializable] public class PropagationHorizonDesignator : SQLiteEntry { ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -45,7 +46,7 @@ namespace ScoutBase.Propagation // MEMBERS ONLY TO STORE STATUS TEMPORARLY --> NOT STORED IN DATABASE // horizon status: valid / invalid - public bool Valid = true; + public bool Valid = false; // horizon status: selected / not selected public bool Selected = false; // horizon status local obstructed / not obstructed @@ -74,6 +75,7 @@ namespace ScoutBase.Propagation LocalObstruction = localobstruction; if (Horizon == null) return; + Valid = true; if (LocalObstruction == null) return; for (int i = 0; i > 360; i++) diff --git a/ScoutBase/ScoutBase.Propagation/PropagationPath.cs b/ScoutBase/ScoutBase.Propagation/PropagationPath.cs index ef875ee..68b724e 100644 --- a/ScoutBase/ScoutBase.Propagation/PropagationPath.cs +++ b/ScoutBase/ScoutBase.Propagation/PropagationPath.cs @@ -83,7 +83,7 @@ namespace ScoutBase.Propagation // MEMBERS ONLY TO STORE STATUS TEMPORARLY --> NOT STORED IN DATABASE // path status: valid / invalid - public bool Valid = true; + public bool Valid = false; // path status: selected / not selected public bool Selected = false; // path status local obstructed / not obstructed @@ -116,6 +116,7 @@ namespace ScoutBase.Propagation public PropagationPathDesignator(DataRow row, double localobstruction) : this() { FillFromDataRow(row); + Valid = true; LocalObstruction = localobstruction; if (Eps1_Min < LocalObstruction) LocalObstructed = true; @@ -124,6 +125,7 @@ namespace ScoutBase.Propagation public PropagationPathDesignator(IDataRecord record, double localobstruction) : this() { FillFromDataRecord(record); + Valid = true; LocalObstruction = localobstruction; if (Eps1_Min < LocalObstruction) LocalObstructed = true; diff --git a/ScoutBase/ScoutBase.Propagation/ScoutBase.Propagation.csproj b/ScoutBase/ScoutBase.Propagation/ScoutBase.Propagation.csproj index 71475b4..380fd91 100644 --- a/ScoutBase/ScoutBase.Propagation/ScoutBase.Propagation.csproj +++ b/ScoutBase/ScoutBase.Propagation/ScoutBase.Propagation.csproj @@ -38,8 +38,8 @@ - - ..\..\packages\System.Data.SQLite.Core.1.0.112.0\lib\net40\System.Data.SQLite.dll + + ..\..\packages\Stub.System.Data.SQLite.Core.NetFramework.1.0.113.3\lib\net40\System.Data.SQLite.dll @@ -93,12 +93,12 @@ - + Dieses Projekt verweist auf mindestens ein NuGet-Paket, das auf diesem Computer fehlt. Verwenden Sie die Wiederherstellung von NuGet-Paketen, um die fehlenden Dateien herunterzuladen. Weitere Informationen finden Sie unter "http://go.microsoft.com/fwlink/?LinkID=322105". Die fehlende Datei ist "{0}". - +