private void CheckRcn() { if (!Callsign.IsJACallsign(log.Callsign)) { log.Point = 0; ErrorReason.Set(listErr, Reason.OmakuniNonJA.ToString()); return; } if (Contestno.HasPower(log.ReceivedCn) == false) { ErrorReason.Set(listErr, Reason.InvalidReceivedCn.ToString()); } var hasStroke = Callsign.HasStroke(log.Callsign); var areano = Contestno.GetAreano(log); var stationAreano = Areano.GetNoFromStation(station, SubSelecter ? listMainArea : listSubArea); var suggests = Areano.GetSuggestFromStation(station, SubSelecter ? listMainArea : listSubArea); if (!Freq.IsBeen(log.Freq)) { ErrorReason.Set(listErr, Reason.InvalidFreq.ToString()); } if (Contestno.GetRegion(Contestno.GetPrefno(log, SubSelecter ? false : true)) != Callsign.GetRegion(log.Callsign, hasStroke)) { ErrorReason.Set(listErr, Reason.RegionUnmatches.ToString()); } if (!Station.IsMatched(areano, stationAreano) && station != null && !hasStroke) { ErrorReason.Set(listErr, Reason.AddressUnmatches.ToString(), Utils.ConvTostrarrFromList(suggests)); } if (!Areano.IsBeen(SubSelecter ? listMainArea : listSubArea, areano)) { ErrorReason.Set(listErr, Reason.ReceivedCnUnexists.ToString(), Utils.ConvTostrarrFromList(Areano.GetFromList(Station.GetList(station), listMainArea))); } }
public bool ValidateConfiguration() { bool callsignValidity = Callsign.VerifyCallsign(); bool passwordValidity = Helpers.VerifyPassword(Callsign, Password); bool checkSoftwareName = SoftwareName.IndexOf(' ') > -1; bool checkSoftwareVersion = SoftwareVersion.IndexOf(' ') > -1; if (!callsignValidity) { Trace.TraceWarning($"{nameof(Callsign)} could not be validated, see http://www.aprs-is.net/Connecting.aspx for more information"); } if (!passwordValidity) { Trace.TraceWarning($"{nameof(Password)} is not valid for given callsign. Please request a valid password with the software vendor in case you need write access to the APRS server."); } if (Password == "-1") { Trace.TraceWarning("APRS client is in readonly mode. Request a valid password in case you need write access to the APRS server"); } if (!checkSoftwareName) { Trace.TraceWarning($"{nameof(SoftwareName)} contains a space.Spaces are illegal. Your mileage may vary now."); } if (!checkSoftwareVersion) { Trace.TraceWarning($"{nameof(SoftwareVersion)} contains a space. Spaces are illegal. Your mileage may vary now."); } return(callsignValidity && passwordValidity && checkSoftwareName && checkSoftwareVersion); }
public IActionResult Post() { using (var context = new DataAccess.UserDBContext()) { string name = GetRandomName(false); while (!context.ValidAnonName(name)) { name = GetRandomName(true); } User usr = new User(); usr.verification_token = "ANON"; usr.email = name.ToLowerInvariant(); usr.enabled = 1; usr.hash = context.GenEmailToken(); usr.verified = 0; context.users.Add(usr); context.SaveChanges(); Callsign callsign = new Callsign(); callsign.user = usr; callsign.name = name; callsign.enabled = 1; callsign.created = DateTime.Now; context.callsigns.Add(callsign); context.SaveChanges(); return(Ok(new string[] { name, usr.hash })); } }
public async Task SetCallsingAsync(Callsign callsign, OnSetCallsignDelegate onSetCallsign) { _callsignToSet = callsign ?? throw new ArgumentNullException(nameof(callsign)); _onSetCallsign = onSetCallsign ?? throw new ArgumentNullException(nameof(onSetCallsign)); // Checking if callsign changed _getCodeCommand.SetResponseDelegate(OnGetCodeResponse_SetCallsignPathway); _getCodeCommand.SendGetCodeCommand(); }
private void OnGetCodeResponse(FoxCode code) { _callsign = new Callsign() { Code = code }; _getSpeedCommand.SetResponseDelegate(OnGetSpeedResponse); _getSpeedCommand.SendGetSpeedCommand(); }
/// <summary> /// Creates from string. /// </summary> /// <param name="packet">The packet string.</param> /// <param name="destCall">The dest call.</param> /// <returns>AprsPacket</returns> /// <exception cref="HamAprsParser.Exceptions.AprsParserException">Unable to parse message payload in packet</exception> public static MessagePayload CreateFromString(string packet, Callsign destCall) { var result = Patterns.MessageRegex.Match(packet); if (!result.Success) throw new AprsParserException(packet, "Unable to parse message payload in packet"); var payload = new MessagePayload(packet) { Type = PayloadType.Message, TargetCall = new Callsign(result.Groups["target"].Value), MessageBody = result.Groups["content"].Value.TrimEnd(), MessageId = null }; if (destCall.Base == "BEACON") payload.TargetCall = destCall; // Check for Ack type message result = Patterns.AckRegex.Match(payload.MessageBody); if (result.Success) { payload.IsAck = true; payload.MessageId = result.Groups["ack"].Value; payload.MessageBody = null; return payload; } // Check for Rej type message result = Patterns.RejRegex.Match(payload.MessageBody); if (result.Success) { payload.IsRej = true; payload.MessageId = result.Groups["rej"].Value; payload.MessageBody = null; return payload; } // Attempt to seperate id from message if present result = Patterns.MsgIdRegex.Match(payload.MessageBody); if (result.Success) { payload.MessageId = result.Groups["msgid"].Value; payload.MessageBody = result.Groups["msg"].Value.TrimEnd(); return payload; } // Check for telemetry indicator result = Patterns.TelemetryRegex.Match(payload.MessageBody); if (result.Success) payload.Type = PayloadType.Telemetry; return payload; }
private void CheckRcn() { if (!Callsign.IsJACallsign(log.Callsign)) { log.Point = 0; ErrorReason.Set(listErr, Reason.OmakuniNonJA.ToString()); return; } var hasStroke = Callsign.HasStroke(log.Callsign); var areano = Contestno.GetAreano(log); var phoneRegion = Contestno.GetPhoneRegion(areano, listMainArea); var stationAreano = Areano.GetNoFromStation(station, listMainArea); var suggests = Areano.GetSuggestFromStation(station, listMainArea); char lrc = log.ReceivedCn[log.ReceivedCn.Length - 1]; if (lrc != 'N' && !('0' <= lrc && lrc <= '9')) { ErrorReason.Set(listErr, ExtraReason.InvalidSignOfCn.ToString()); log.Point = 0; } if (!Freq.IsBeen(log.Freq)) { ErrorReason.Set(listErr, Reason.InvalidFreq.ToString()); } if (phoneRegion == null) { switch (areano) { case "050": case "070": case "080": case "090": break; default: ErrorReason.Set(listErr, Reason.ReceivedCnUnexists.ToString(), Utils.ConvTostrarrFromList(Areano.GetFromList(Station.GetList(station), listMainArea))); break; } } else { if (!phoneRegion.Any(x => x == Callsign.GetRegion(log.Callsign, hasStroke))) { ErrorReason.Set(listErr, Reason.RegionUnmatches.ToString()); } if (!Station.IsMatched(areano, stationAreano) && station != null && !hasStroke) { ErrorReason.Set(listErr, Reason.AddressUnmatches.ToString(), Utils.ConvTostrarrFromList(suggests)); } } }
/// <summary> /// See base docs. /// </summary> /// <param name="fetchedDetail"></param> /// <returns></returns> protected override CallsignRouteDetail DoFetchAircraft(AircraftFetcher <CallsignRouteFetcher.Key, CallsignRouteDetail> .FetchedDetail fetchedDetail) { var key = fetchedDetail.Key; var detail = fetchedDetail.Detail; if (!String.IsNullOrEmpty(key.Icao24) && !String.IsNullOrEmpty(key.Callsign)) { var callsignUsed = key.Callsign; var parsed = new Callsign(callsignUsed); var airlines = _StandingDataManager.FindAirlinesForCode(parsed.Code); var isPositioning = airlines.Any(r => r.IsPositioningFlightNumber(parsed.TrimmedNumber)); var isCharter = airlines.Any(r => r.IsCharterFlightNumber(parsed.TrimmedNumber)); Route route = null; if (!isPositioning && !isCharter) { var callsigns = _CallsignParser.GetAllRouteCallsigns(key.Callsign, key.OperatorIcao); foreach (var callsign in callsigns) { callsignUsed = callsign; route = _StandingDataManager.FindRoute(callsignUsed); if (route != null) { break; } } if (route == null) { callsignUsed = key.Callsign; } } detail = new CallsignRouteDetail() { Callsign = key.Callsign, UsedCallsign = callsignUsed, Icao24 = key.Icao24, Route = route, IsCharterFlight = isCharter, IsPositioningFlight = isPositioning, }; OnFetched(new EventArgs <CallsignRouteDetail>(detail)); } return(detail); }
public void Callsign_Ctor_Parses_Callsigns_Correctly() { var worksheet = new ExcelWorksheetData(TestContext); var callsignText = worksheet.EString("Callsign"); var callsign = new Callsign(callsignText); var message = $"Callsign is '{callsignText}'"; Assert.AreEqual(worksheet.EString("OriginalCallsign"), callsign.OriginalCallsign, message); Assert.AreEqual(worksheet.EString("Code"), callsign.Code, message); Assert.AreEqual(worksheet.EString("Number"), callsign.Number, message); Assert.AreEqual(worksheet.EString("TrimmedNumber"), callsign.TrimmedNumber, message); Assert.AreEqual(worksheet.EString("TrimmedCallsign"), callsign.TrimmedCallsign, message); Assert.AreEqual(worksheet.Bool("IsOriginalCallsignValid"), callsign.IsOriginalCallsignValid, message); }
/// <summary> /// 記念局であるか確認 記念局リストに存在しないもしくは、存在しない局ならエラーリストに追加 /// </summary> /// <param name="callsign">確認先コールサイン</param> /// <param name="anvStr">記念局リスト</param> /// <param name="listError">エラーリスト</param> /// <param name="station">無線局情報</param> public static void Check(string callsign, string anvStr, Dictionary <string, ErrorReason> listError, StationData station) { if (callsign[0] != '8' || callsign.Substring(0, 2) != "8J") { return; } string cs = Callsign.GetRemovedStroke(callsign); if (!anvStr.Contains(cs)) { ErrorReason.Set(listError, Reason.AnvUnchecked.ToString()); } if (station == null && callsign[0] != '8') { ErrorReason.Set(listError, Reason.GetDataFailed.ToString()); } }
private void CheckRcn() { if (!Callsign.IsJACallsign(log.Callsign)) { log.Point = 0; ErrorReason.Set(listErr, Reason.OmakuniNonJA.ToString()); return; } if (Contestno.HasPower(log.ReceivedCn) == true) { ErrorReason.Set(listErr, Reason.InvalidReceivedCn.ToString()); } var prefno = Contestno.GetPrefno(log); if (prefno.Length > 3) { prefno = prefno.Substring(0, 2); } if (config.CategoryCode[0] == 'X' && prefno != "11") { ErrorReason.Set(listErr, ExtraReason.NotInKanagawa.ToString()); log.Point = 0; } var hasStroke = Callsign.HasStroke(log.Callsign); var areano = Contestno.GetAreano(log); var stationAreano = Areano.GetNoFromStation(station, listMainArea); var suggests = Areano.GetSuggestFromStation(station, listMainArea); if (!Freq.IsBeen(log.Freq)) { ErrorReason.Set(listErr, Reason.InvalidFreq.ToString()); } if (Contestno.GetRegion(prefno) != Callsign.GetRegion(log.Callsign, hasStroke)) { ErrorReason.Set(listErr, Reason.RegionUnmatches.ToString()); } if (!Station.IsMatched(areano, stationAreano) && station != null && !hasStroke) { ErrorReason.Set(listErr, Reason.AddressUnmatches.ToString(), Utils.ConvTostrarrFromList(suggests)); } if (!Areano.IsBeen(listMainArea, areano)) { ErrorReason.Set(listErr, Reason.ReceivedCnUnexists.ToString(), Utils.ConvTostrarrFromList(Areano.GetFromList(Station.GetList(station), listMainArea))); } }
private void _setDefaultButton_Click(object sender, EventArgs e) { if (_callsignListView.SelectedItems.Count == 0) { return; } var li = _callsignListView.SelectedItems[0]; var alias = li.Tag as Callsign; //Overwrite the server's default callsign for this account locally if (alias != null) { Callsign.SetDefaultAlias(alias); LoadCallsigns(true); } }
public override int GetHashCode() { unchecked { return(base.GetHashCode() + (Callsign.ToUpper().GetHashCode() * 3) + (VID.ToUpper().GetHashCode() * 3) + (Name.ToUpper().GetHashCode() * 3) + (ClientType.GetHashCode() * 3) + (GetItemHashCode(Location) * 3) + (Server.ToUpper().GetHashCode() * 3) + (Protocol.ToUpper().GetHashCode() * 3) + (ConnectionTime.GetHashCode() * 3) + (SoftwareName.ToUpper().GetHashCode() * 3) + (SoftwareVersion.ToUpper().GetHashCode() * 3) + (AdministrativeVersion.GetHashCode() * 3) + (ClientRating.GetHashCode() * 3) * 17); } }
private void CheckRcn() { if (!Callsign.IsJACallsign(log.Callsign)) { log.Point = 0; ErrorReason.Set(listErr, Reason.OmakuniNonJA.ToString()); return; } if (Contestno.HasPower(log.ReceivedCn) == true) { ErrorReason.Set(listErr, Reason.InvalidReceivedCn.ToString()); } //59##L var prefno = Contestno.GetPrefno(log, true); if (10 > int.Parse(prefno) || int.Parse(prefno) > 17) { ErrorReason.Set(listErr, ExtraReason.NotInKanto.ToString()); log.Point = 0; } var hasStroke = Callsign.HasStroke(log.Callsign); var areano = Contestno.GetAreano(log); var stationAreano = Areano.GetNoFromStation(station, listMainArea); var suggests = Areano.GetSuggestFromStation(station, listMainArea); if (!Freq.IsBeen(log.Freq)) { ErrorReason.Set(listErr, Reason.InvalidFreq.ToString()); } if (Contestno.GetRegion(prefno) != Callsign.GetRegion(log.Callsign, hasStroke)) { ErrorReason.Set(listErr, Reason.RegionUnmatches.ToString()); } if (!Station.IsMatched(areano, stationAreano) && station != null && !hasStroke) { ErrorReason.Set(listErr, Reason.AddressUnmatches.ToString(), Utils.ConvTostrarrFromList(suggests)); } if (!Areano.IsBeen(listMainArea, areano)) { ErrorReason.Set(listErr, Reason.ReceivedCnUnexists.ToString(), Utils.ConvTostrarrFromList(Areano.GetFromList(Station.GetList(station), listMainArea))); } }
/// <summary> /// Parses the specified MiCe payload bytes and destination call as position. /// </summary> /// <param name="payload">The payload.</param> /// <param name="destinationCall">The destination call.</param> /// <returns>PositionData.</returns> public static PositionData ParsePosition(string payload, Callsign destinationCall) { int posAmbiguity; float lat, lng; // Get latitude and position ambiguity followed by longitude GetLatitude(destinationCall.Base, out lat, out posAmbiguity); GetLongitude(destinationCall.Base, posAmbiguity, payload, out lng); // Return Position object return new PositionData { Latitude = lat, Longitude = lng, PositionAmbiguity = posAmbiguity, SymbolTable = payload[7], SymbolCode = payload[8], Source = PositionType.MicE }; }
public void ApplyStateVector(StateVector stateVector, long version) { lock (_SyncLock) { LastSeenInOpenSkyUtc = DateTime.UtcNow; Version = Math.Max(Version, Callsign.UpdateValue(stateVector.Callsign, version)); Version = Math.Max(Version, OriginCountry.UpdateValue(stateVector.OriginCountry, version)); Version = Math.Max(Version, LastPositionTime.UpdateValue(stateVector.TimeOfLastPosition, version)); Version = Math.Max(Version, LastMessageTime.UpdateValue(stateVector.TimeOfLastMessage, version)); Version = Math.Max(Version, Latitude.UpdateValue(stateVector.Latitude, version)); Version = Math.Max(Version, Longitude.UpdateValue(stateVector.Longitude, version)); Version = Math.Max(Version, AltitudeFeet.UpdateValue(stateVector.AltitudeFeet, version)); Version = Math.Max(Version, OnGround.UpdateValue(stateVector.OnGround, version)); Version = Math.Max(Version, GroundSpeedKnots.UpdateValue(stateVector.GroundSpeedKnots, version)); Version = Math.Max(Version, Track.UpdateValue(stateVector.Track, version)); Version = Math.Max(Version, VerticalRateFeetPerSecond.UpdateValue(stateVector.VerticalRateFeetPerSecond, version)); Version = Math.Max(Version, Squawk.UpdateValue(stateVector.Squawk, version)); Version = Math.Max(Version, SpecialPurposeIndicator.UpdateValue(stateVector.SpecialPurposeIndicator, version)); Version = Math.Max(Version, PositionSource.UpdateValue(stateVector.PositionSource, version)); } }
/// <summary> /// Creates from string. /// </summary> /// <param name="packet">The packet string.</param> /// <returns>AprsPacket</returns> /// <exception cref="AprsPacketException">Invalid packet format (regex failed)</exception> public static AprsPacket CreateFromString(string packet) { var result = Patterns.EnvelopeRegex.Match(packet); if (!result.Success) throw new AprsPacketException(packet, "Unable to parse APRS packet envelope"); var source = new Callsign(result.Groups["source"].Value); var digis = result.Groups["dest"].Value.Split(','); var information = result.Groups["information"].Value; var dest = new Callsign(digis[0]); var payload = ParsePacketPayload(dest, information); return new AprsPacket { SourceCall = source, DestinationCall = dest, Digipeaters = digis, Payload = payload, Original = packet }; }
internal void LoadCallsigns(bool reloadFromServer) { ACSSAuth.Client.Service.Callsign.RetrieveCallsignsCompleteDelegate signal = delegate(List <Callsign> callsigns, int availableAliasCount) { LoadCallsigns(callsigns); SetAvailableAliasControls(availableAliasCount); SetEnabled(true); }; Callsign.RetrieveCallsigns(delegate(List <Callsign> callsigns, int availableAliasCount) { //Check if it is safe to interact with the form if (this.InvokeRequired) { this.Invoke(signal, callsigns, availableAliasCount); } else { signal(callsigns, availableAliasCount); } }, reloadFromServer); }
public LocationDesignator LocationFind(string call, string loc = "") { // check all parameters if (!Callsign.Check(call)) { return(null); } if (!String.IsNullOrEmpty(loc) && !MaidenheadLocator.Check(loc)) { return(null); } // get location info LocationDesignator ld = (String.IsNullOrEmpty(loc)) ? StationData.Database.LocationFind(call) : StationData.Database.LocationFind(call, loc); // return null if not found if (ld == null) { return(null); } // get elevation ld.Elevation = GetElevation(ld.Lat, ld.Lon); ld.BestCaseElevation = false; // modify location in case of best case elevation is selected --> but do not store in database or settings! if (Properties.Settings.Default.Path_BestCaseElevation) { if (!MaidenheadLocator.IsPrecise(ld.Lat, ld.Lon, 3)) { ElvMinMaxInfo maxinfo = GetMinMaxElevationLoc(ld.Loc); if (maxinfo != null) { ld.Lat = maxinfo.MaxLat; ld.Lon = maxinfo.MaxLon; ld.Elevation = maxinfo.MaxElv; ld.BestCaseElevation = true; } } } return(ld); }
public List <LocationDesignator> LocationFindAll(string call) { // check all parameters if (!Callsign.Check(call)) { return(null); } // get location info List <LocationDesignator> l = StationData.Database.LocationFindAll(call); // return null if not found if (l == null) { return(null); } foreach (LocationDesignator ld in l) { // get elevation ld.Elevation = GetElevation(ld.Lat, ld.Lon); ld.BestCaseElevation = false; // modify location in case of best case elevation is selected --> but do not store in database or settings! if (Properties.Settings.Default.Path_BestCaseElevation) { if (!MaidenheadLocator.IsPrecise(ld.Lat, ld.Lon, 3)) { ElvMinMaxInfo maxinfo = GetMinMaxElevationLoc(ld.Loc); if (maxinfo != null) { ld.Lat = maxinfo.MaxLat; ld.Lon = maxinfo.MaxLon; ld.Elevation = maxinfo.MaxElv; ld.BestCaseElevation = true; } } } } return(l); }
/// <summary> /// See interface docs. /// </summary> /// <param name="callsign"></param> /// <returns></returns> public List <string> GetAllAlternateCallsigns(string callsign) { var result = new List <string>(); if (!String.IsNullOrEmpty(callsign)) { Initialise(); result.Add(callsign); var parsed = new Callsign(callsign); if (parsed.IsOriginalCallsignValid) { var processedCodes = new List <string>(); foreach (var airline in _StandingDataManager.FindAirlinesForCode(parsed.Code)) { ProcessAlternateAirlineCode(callsign, result, parsed.TrimmedNumber, processedCodes, airline.IcaoCode); ProcessAlternateAirlineCode(callsign, result, parsed.TrimmedNumber, processedCodes, airline.IataCode); } } } return(result); }
private void gm_Callsign_MouseMove(object sender, MouseEventArgs e) { if ((UserPos != null) && IsDraggingMarker) { if (Callsign.Check(tb_Callsign.Text)) { // get geographic coordinates of mouse pointer PointLatLng p = gm_Callsign.FromLocalToLatLng(e.X, e.Y); tb_Latitude.SilentValue = p.Lat; tb_Longitude.SilentValue = p.Lng; UserPos.ToolTipMode = MarkerTooltipMode.OnMouseOver; UserPos.ToolTipText = tb_Callsign.Text; StationLocation.Lat = p.Lat; StationLocation.Lon = p.Lng; ValidateDetails(); } else { UserPos.ToolTipMode = MarkerTooltipMode.OnMouseOver; UserPos.ToolTipText = "Please enter a valid callsign first."; } } }
public SearchData(string CallSign) { callsign = Callsign.GetRemovedStroke(CallSign); Condition = "GetFromDB"; Station = SearchDetailFromDB(); if (Station != null) { return; } Condition = "Failed to Get from DB, Try to Get from Web"; Station = GetTableData(); if (Station == null) { return; } Condition = "Existed at Web, Try to Get Details"; System.Threading.Thread.Sleep(1000); Condition = "Succeeded!"; InsertStationData(Station); }
private string DeliverQRV(string paramstr) { string json = ""; // set default values string callstr = ""; string locstr = ""; string bandstr = ""; BAND band = Properties.Settings.Default.Band; // get parameters try { if (paramstr.Contains("?")) { // OK, we have parameters --> cut them out and make all uppercase paramstr = paramstr.Substring(paramstr.IndexOf("?") + 1).ToUpper(); var pars = System.Web.HttpUtility.ParseQueryString(paramstr); callstr = pars.Get("CALL"); locstr = pars.Get("LOC"); bandstr = pars.Get("BAND"); } } catch (Exception ex) { // return error return("Error while parsing parameters!"); } // check parameters if (!Callsign.Check(callstr)) { return("Error: " + callstr + " is not a valid callsign!"); } if (!MaidenheadLocator.Check(locstr)) { return("Error: " + locstr + " is not a valid Maidenhead locator!"); } // set band to currently selected if empty if (string.IsNullOrEmpty(bandstr)) { band = Properties.Settings.Default.Band; } else { band = Bands.ParseStringValue(bandstr); } if (band == BAND.BNONE) { return("Error: " + bandstr + " is not a valid band value!"); } // search call in station database, return empty string if not found if (band != BAND.BALL) { QRVDesignator qrv = StationData.Database.QRVFind(callstr, locstr, band); if (qrv == null) { return("Error: QRV info not found in database!"); } json = qrv.ToJSON(); return(json); } List <QRVDesignator> qrvs = StationData.Database.QRVFind(callstr, locstr); if ((qrvs == null) || (qrvs.Count() == 0)) { return("Error: QRV info not found in database!"); } JsonSerializerSettings settings = new JsonSerializerSettings(); settings.DateTimeZoneHandling = DateTimeZoneHandling.Utc; settings.FloatFormatHandling = FloatFormatHandling.String; settings.Formatting = Newtonsoft.Json.Formatting.Indented; json = JsonConvert.SerializeObject(qrvs, settings); return(json); }
private static Payload ParsePacketPayload(Callsign dest, string payload) { if (string.IsNullOrWhiteSpace(payload)) throw new AprsParserException(payload, "Packet payload is empty"); switch (payload[0]) { case '`': // Current Mic-E Data (not used in TM-D700) case '\'': // Old Mic-E Data (but current data for TM-D700) case '!': case '=': case '/': case '@': case '$': var timestamp = (payload[0] == '/' || payload[0] == '@') ? TimestampParser.CreateFromString(payload) : null; var position = PositionParser.CreateFromString(payload, dest); var weather = WeatherParser.CreateFromString(payload); // TODO: This should support compressed too! Move into PositionParser var extension = UnCompressedPosition.ParseUnCompressedExtension(payload); if (weather != null) { return new WeatherPayload(payload) { Timestamp = timestamp, Position = position, Weather = weather, Extension = extension, Comment = null // TODO }; } return new PositionPayload(payload) { Timestamp = timestamp, Position = position, Extension = extension, Comment = null // TODO: Get comment from position packet }; case ':': // Message return MessagePayload.Create(payload, dest); case ';': // Object return ObjectParser.CreateFromString(payload); case '>': // Status return new UnsupportedPayload(payload) { Type = PayloadType.Status }; case '<': // Station Capabilities return new UnsupportedPayload(payload) { Type = PayloadType.StationCapabilities }; case '?': // Query return new UnsupportedPayload(payload) { Type = PayloadType.Query }; case ')': // Item return ItemParser.CreateFromString(payload); //case 'T': // Telemetry // return new UnsupportedPayload(payload) { Type = PayloadType.Telemetry }; case '#': // Peet Bros U-II Weather Station case '*': return new UnsupportedPayload(payload) { Type = PayloadType.Wx, Comment = "Peet Bros U-II Weather Station" }; case '_': // Weather report without position return WeatherPayload.Create(payload); case '{': // User Defined return new UnsupportedPayload(payload) { Type = PayloadType.UserDefined }; case '}': // 3rd-party return new UnsupportedPayload(payload) { Type = PayloadType.Thirdparty }; } return new UnsupportedPayload(payload) { Type = PayloadType.Unspecified }; }
private string DeliverLocation(string paramstr) { string json = ""; // set default values string callstr = ""; string locstr = ""; // get parameters try { if (paramstr.Contains("?")) { // OK, we have parameters --> cut them out and make all uppercase paramstr = paramstr.Substring(paramstr.IndexOf("?") + 1).ToUpper(); var pars = System.Web.HttpUtility.ParseQueryString(paramstr); callstr = pars.Get("CALL"); locstr = pars.Get("LOC"); } } catch (Exception ex) { // return error return("Error while parsing parameters!"); } // check parameters if (!Callsign.Check(callstr)) { return("Error: " + callstr + " is not a valid callsign!"); } LocationDesignator ld = null; // locstr == null or empty --> return last recent location if (String.IsNullOrEmpty(locstr)) { ld = LocationFind(callstr); if (ld == null) { return("Error: Location not found in database!"); } json = ld.ToJSON(); return(json); } if (locstr == "ALL") { List <LocationDesignator> l = LocationFindAll(callstr); if (l == null) { return("Error: Location not found in database!"); } JsonSerializerSettings settings = new JsonSerializerSettings(); settings.DateTimeZoneHandling = DateTimeZoneHandling.Utc; settings.FloatFormatHandling = FloatFormatHandling.String; settings.Formatting = Newtonsoft.Json.Formatting.Indented; settings.Culture = CultureInfo.InvariantCulture; json = JsonConvert.SerializeObject(l, settings); return(json); } if (!MaidenheadLocator.Check(locstr)) { return("Error: " + locstr + " is not a valid Maidenhead locator!"); } // search call in station database, return empty string if not found ld = LocationFind(callstr, locstr); if (ld == null) { return("Error: Location not found in database!"); } json = ld.ToJSON(); return(json); }
void _timer_Tick(object sender, EventArgs e) { string usernameAvailableMessage = "Callsign is available"; string usernameUnavailableMessage = "Callsign is unavailable"; string usernameAlreadyRegisteredMessage = "Callsign is Already Registered"; List <string> responseMessages = new List <string>(new string[] { usernameAvailableMessage, usernameUnavailableMessage, usernameAlreadyRegisteredMessage }); _timer.Stop(); if (_activeThread != null) { _activeThread.Abort(); } if (_callsignTextBox.Text.Length == 0) { _activeThread = null; return; } string errorMessage; if (Validation.ValidateAlias(_callsignTextBox.Text, out errorMessage) == false) { _setCheckMessage(errorMessage); _errorProvider.SetError(_callsignTextBox, errorMessage); } else { _errorProvider.SetError(_callsignTextBox, ""); } string currentValidationMessage = _errorProvider.GetError(_callsignTextBox); // If there is any validation message other than an account status message. if (responseMessages.Contains(currentValidationMessage) == false && string.IsNullOrEmpty(currentValidationMessage) == false) { return; } _setCheckMessage("Checking Availability..."); //Check if requested callsign is available (every n milliseconds at most) var signal = new TaskDelegate(delegate(object input) { var result = (CheckAliasResult)input; var message = string.Empty; switch (result) { case CheckAliasResult.Available: message = usernameAvailableMessage; _continueButton.Enabled = true; _legacyPasswordPanel.Visible = false; _errorProvider.SetError(_callsignTextBox, ""); break; case CheckAliasResult.Unavailable: message = usernameUnavailableMessage; _errorProvider.SetError(_callsignTextBox, usernameUnavailableMessage); break; case CheckAliasResult.Registered: message = usernameAlreadyRegisteredMessage; _errorProvider.SetError(_callsignTextBox, usernameAlreadyRegisteredMessage); break; case CheckAliasResult.InvalidLogin: message = "Invalid Credentials"; break; case CheckAliasResult.AliasLimit: message = "You already have the maximum number of callsigns."; break; case CheckAliasResult.LegacyExists: message = "Please use ASGS password to create callsign!"; _continueButton.Enabled = true; _legacyPasswordPanel.Visible = true; _errorProvider.SetError(_callsignTextBox, ""); break; } _setCheckMessage(message); }); _activeThread = Callsign.CheckUsernameAvailability(_callsignTextBox.Text, delegate(object data) { if (System.Threading.Thread.CurrentThread != _activeThread) { return; } if (_callsignTextBox.InvokeRequired) { _callsignTextBox.Invoke(signal, data); } else { signal(data); } }); }
/// <summary> /// See interface docs. /// </summary> /// <param name="callsign"></param> /// <param name="operatorIcao"></param> /// <returns></returns> public List <string> GetAllRouteCallsigns(string callsign, string operatorIcao) { var result = new List <string>(); if (!String.IsNullOrEmpty(callsign)) { Initialise(); result.Add(callsign); if (callsign.Length >= 1) { if (Char.IsDigit(callsign[0]) && (callsign.Length == 1 || Char.IsDigit(callsign[1]))) { if (!String.IsNullOrEmpty(operatorIcao) && callsign.Length + operatorIcao.Length <= 8) { result.Add(String.Format("{0}{1}", operatorIcao, callsign)); } } } var parsed = new Callsign(callsign); if (parsed.IsOriginalCallsignValid) { var code = parsed.Code; var number = parsed.Number; if (!String.IsNullOrEmpty(number)) { if (String.IsNullOrEmpty(code) && !String.IsNullOrEmpty(operatorIcao)) { code = operatorIcao; } var trimmedNumber = parsed.TrimmedNumber; if (trimmedNumber != number) { result.Add(String.Format("{0}{1}", code, trimmedNumber)); } if (code.Length == 2) { foreach (var airline in _StandingDataManager.FindAirlinesForCode(code).Where(r => !String.IsNullOrEmpty(r.IcaoCode)).OrderBy(r => r.IcaoCode)) { result.Add(String.Format("{0}{1}", airline.IcaoCode, number)); if (number != trimmedNumber) { result.Add(String.Format("{0}{1}", airline.IcaoCode, trimmedNumber)); } } } else if (code.Length == 3) { var isNumeric = number.Count(r => Char.IsDigit(r)) == number.Length; if (isNumeric) { var airlines = _StandingDataManager.FindAirlinesForCode(code).Where(r => r.IcaoCode == code && !String.IsNullOrEmpty(r.IataCode)).ToList(); if (airlines.Count == 1) { var icaoCodes = _StandingDataManager.FindAirlinesForCode(airlines[0].IataCode) .Where(r => !String.IsNullOrEmpty(r.IcaoCode) && r.IcaoCode != code) .OrderBy(r => r.IcaoCode) .Select(r => r.IcaoCode) .Distinct(); foreach (var icaoCode in icaoCodes) { result.Add(String.Format("{0}{1}", icaoCode, number)); if (number != trimmedNumber) { result.Add(String.Format("{0}{1}", icaoCode, trimmedNumber)); } } } } } } } } return(result); }
private string DeliverElevationPath(string paramstr) { string json = ""; // set default values string mycallstr = ""; string mylocstr = ""; string dxcallstr = ""; string dxlocstr = ""; BAND band = Properties.Settings.Default.Band; // get parameters try { if (paramstr.Contains("?")) { // OK, we have parameters --> cut them out and make all uppercase paramstr = paramstr.Substring(paramstr.IndexOf("?") + 1).ToUpper(); var pars = System.Web.HttpUtility.ParseQueryString(paramstr); mycallstr = pars.Get("MYCALL"); mylocstr = pars.Get("MYLOC"); dxcallstr = pars.Get("DXCALL"); dxlocstr = pars.Get("DXLOC"); } } catch (Exception ex) { // return error return("Error while parsing parameters!"); } // check parameters if (!Callsign.Check(mycallstr)) { return("Error: " + mycallstr + " is not a valid callsign!"); } if (!Callsign.Check(dxcallstr)) { return("Error: " + dxcallstr + " is not a valid callsign!"); } if (!String.IsNullOrEmpty(mylocstr) && !MaidenheadLocator.Check(mylocstr)) { return("Error: " + mylocstr + " is not a valid Maidenhead locator!"); } if (!String.IsNullOrEmpty(dxlocstr) && !MaidenheadLocator.Check(dxlocstr)) { return("Error: " + dxlocstr + " is not a valid Maidenhead locator!"); } // search call in station database, return empty string if not found LocationDesignator myloc = LocationFind(mycallstr, mylocstr); if (myloc == null) { return("Error: MyLocation not found in database!"); } LocationDesignator dxloc = LocationFind(dxcallstr, dxlocstr); if (dxloc == null) { return("Error: DXLocation not found in database!"); } // get qrv info or create default QRVDesignator myqrv = StationData.Database.QRVFindOrCreateDefault(myloc.Call, myloc.Loc, band); // set qrv defaults if zero if (myqrv.AntennaHeight == 0) { myqrv.AntennaHeight = StationData.Database.QRVGetDefaultAntennaHeight(band); } if (myqrv.AntennaGain == 0) { myqrv.AntennaGain = StationData.Database.QRVGetDefaultAntennaGain(band); } if (myqrv.Power == 0) { myqrv.Power = StationData.Database.QRVGetDefaultPower(band); } // get qrv info or create default QRVDesignator dxqrv = StationData.Database.QRVFindOrCreateDefault(dxloc.Call, dxloc.Loc, band); // set qrv defaults if zero if (dxqrv.AntennaHeight == 0) { dxqrv.AntennaHeight = StationData.Database.QRVGetDefaultAntennaHeight(band); } if (dxqrv.AntennaGain == 0) { dxqrv.AntennaGain = StationData.Database.QRVGetDefaultAntennaGain(band); } if (dxqrv.Power == 0) { dxqrv.Power = StationData.Database.QRVGetDefaultPower(band); } // get or calculate elevation path ElevationPathDesignator epath = ElevationData.Database.ElevationPathFindOrCreateFromLatLon( this, myloc.Lat, myloc.Lon, dxloc.Lat, dxloc.Lon, ElevationData.Database.GetDefaultStepWidth(Properties.Settings.Default.ElevationModel), Properties.Settings.Default.ElevationModel); if (epath == null) { return(json); } // add additional info to ppath epath.Location1 = myloc; epath.Location2 = dxloc; epath.QRV1 = myqrv; epath.QRV2 = dxqrv; // convert path to json json = epath.ToJSON(); return(json); }
private string DeliverNearestPlanes(string paramstr, List <PlaneInfo> allplanes) { string json = ""; // set default values string mycallstr = ""; string mylocstr = ""; string dxcallstr = ""; string dxlocstr = ""; string bandstr = ""; BAND band = Properties.Settings.Default.Band; // get parameters try { if (paramstr.Contains("?")) { // OK, we have parameters --> cut them out and make all uppercase paramstr = paramstr.Substring(paramstr.IndexOf("?") + 1).ToUpper(); var pars = System.Web.HttpUtility.ParseQueryString(paramstr); mycallstr = pars.Get("MYCALL"); mylocstr = pars.Get("MYLOC"); dxcallstr = pars.Get("DXCALL"); dxlocstr = pars.Get("DXLOC"); bandstr = pars.Get("BAND"); } } catch (Exception ex) { // return error return("Error while parsing parameters!"); } // check parameters if (!Callsign.Check(mycallstr)) { return("Error: " + mycallstr + " is not a valid callsign!"); } if (!Callsign.Check(dxcallstr)) { return("Error: " + dxcallstr + " is not a valid callsign!"); } if (!String.IsNullOrEmpty(mylocstr) && !MaidenheadLocator.Check(mylocstr)) { return("Error: " + mylocstr + " is not a valid Maidenhead locator!"); } if (!String.IsNullOrEmpty(dxlocstr) && !MaidenheadLocator.Check(dxlocstr)) { return("Error: " + dxlocstr + " is not a valid Maidenhead locator!"); } // set band to currently selected if empty if (string.IsNullOrEmpty(bandstr)) { band = Properties.Settings.Default.Band; } else { band = Bands.ParseStringValue(bandstr); } if (band == BAND.BNONE) { return("Error: " + bandstr + " is not a valid band value!"); } // search call in station database, return empty string if not found LocationDesignator myloc = LocationFind(mycallstr, mylocstr); if (myloc == null) { return("Error: MyLocation not found in database!"); } LocationDesignator dxloc = LocationFind(dxcallstr, dxlocstr); if (dxloc == null) { return("Error: DXLocation not found in database!"); } // get qrv info or create default QRVDesignator myqrv = StationData.Database.QRVFindOrCreateDefault(myloc.Call, myloc.Loc, band); // set qrv defaults if zero if (myqrv.AntennaHeight == 0) { myqrv.AntennaHeight = StationData.Database.QRVGetDefaultAntennaHeight(band); } if (myqrv.AntennaGain == 0) { myqrv.AntennaGain = StationData.Database.QRVGetDefaultAntennaGain(band); } if (myqrv.Power == 0) { myqrv.Power = StationData.Database.QRVGetDefaultPower(band); } // get qrv info or create default QRVDesignator dxqrv = StationData.Database.QRVFindOrCreateDefault(dxloc.Call, dxloc.Loc, band); // set qrv defaults if zero if (dxqrv.AntennaHeight == 0) { dxqrv.AntennaHeight = StationData.Database.QRVGetDefaultAntennaHeight(band); } if (dxqrv.AntennaGain == 0) { dxqrv.AntennaGain = StationData.Database.QRVGetDefaultAntennaGain(band); } if (dxqrv.Power == 0) { dxqrv.Power = StationData.Database.QRVGetDefaultPower(band); } // find local obstruction, if any LocalObstructionDesignator o = ElevationData.Database.LocalObstructionFind(myloc.Lat, myloc.Lon, Properties.Settings.Default.ElevationModel); double mybearing = LatLon.Bearing(myloc.Lat, myloc.Lon, dxloc.Lat, dxloc.Lon); double myobstr = (o != null) ? o.GetObstruction(myqrv.AntennaHeight, mybearing) : double.MinValue; // get or calculate propagation path PropagationPathDesignator ppath = PropagationData.Database.PropagationPathFindOrCreateFromLatLon( this, myloc.Lat, myloc.Lon, GetElevation(myloc.Lat, myloc.Lon) + myqrv.AntennaHeight, dxloc.Lat, dxloc.Lon, GetElevation(dxloc.Lat, dxloc.Lon) + dxqrv.AntennaHeight, Bands.ToGHz(band), LatLon.Earth.Radius * Properties.Settings.Default.Path_Band_Settings[band].K_Factor, Properties.Settings.Default.Path_Band_Settings[band].F1_Clearance, ElevationData.Database.GetDefaultStepWidth(Properties.Settings.Default.ElevationModel), Properties.Settings.Default.ElevationModel, myobstr); if (ppath == null) { return(json); } // add additional info to ppath ppath.Location1 = myloc; ppath.Location2 = dxloc; ppath.QRV1 = myqrv; ppath.QRV2 = dxqrv; /* * // estimate positions according to time * DateTime time = DateTime.UtcNow; * foreach(PlaneInfo plane in allplanes.Planes) * { * // change speed to km/h * double speed = plane.Speed_kmh; * // calculate distance after timespan * double dist = speed * (time - allplanes.At).TotalHours; * LatLon.GPoint newpos = LatLon.DestinationPoint(plane.Lat, plane.Lon, plane.Track, dist); * plane.Lat = newpos.Lat; * plane.Lon = newpos.Lon; * plane.Time = time; * } */ // get nearest planes List <PlaneInfo> nearestplanes = AircraftData.Database.GetNearestPlanes(DateTime.UtcNow, ppath, allplanes, Properties.Settings.Default.Planes_Filter_Max_Circumcircle, Properties.Settings.Default.Path_Band_Settings[band].MaxDistance, Properties.Settings.Default.Planes_MaxAlt); // convert nearestplanes to json JsonSerializerSettings settings = new JsonSerializerSettings(); settings.DateTimeZoneHandling = DateTimeZoneHandling.Utc; settings.FloatFormatHandling = FloatFormatHandling.String; settings.Formatting = Newtonsoft.Json.Formatting.Indented; json = JsonConvert.SerializeObject(nearestplanes, settings); return(json); }
public IActionResult Put(UserUpdateAction request) { using (var context = new DataAccess.UserDBContext()) { var user = context.FindUserByToken(request.Token); if (user == null || user.email == "ANON") { return(Forbid()); } switch (request.EditAction) { case UserUpdateAction.Actions.ChangeCallsign: { var callsign = context.CallsignsForUser(user).First(x => x.name.ToLowerInvariant() == request.OldValue.ToLowerInvariant()); if (callsign == null || request.NewValue.Length < 4) { return(NotFound()); } if (!context.CallsignAvailable(request.NewValue)) { return(NoContent()); } callsign.name = request.NewValue; context.SaveChanges(); return(Ok(callsign.callsign_id)); } case UserUpdateAction.Actions.AddCallsign: { var callsigns = context.CallsignsForUser(user); if (callsigns.First(x => x.name.ToLowerInvariant() == request.NewValue.ToLowerInvariant()) != null) { return(Forbid()); } if (callsigns.Count() >= 3 || request.NewValue.Length < 4) { return(NoContent()); } if (!context.CallsignAvailable(request.NewValue)) { return(NoContent()); } Callsign newCallsign = new Callsign(); newCallsign.user = user; newCallsign.name = request.NewValue; newCallsign.enabled = 1; newCallsign.created = DateTime.Now; context.callsigns.Add(newCallsign); context.SaveChanges(); return(Ok(newCallsign.callsign_id)); } case UserUpdateAction.Actions.RemoveCallsign: { var callsign = context.CallsignsForUser(user).First(x => x.name.ToLowerInvariant() == request.OldValue.ToLowerInvariant()); if (callsign == null) { return(NotFound()); } callsign.enabled = 0; context.SaveChanges(); return(Ok(callsign.callsign_id)); } case UserUpdateAction.Actions.VerifyEmail: { if (user.verified != 0 || user.verification_token != request.NewValue) { return(NotFound()); } user.verified = 1; user.verification_token = string.Empty; context.SaveChanges(); return(Ok(user.email)); } case UserUpdateAction.Actions.ChangePassword: { var hasher = new PasswordHasher <User>(); var result = hasher.VerifyHashedPassword(user, user.hash, request.OldValue); if (result == PasswordVerificationResult.Failed) { return(Forbid()); } user.hash = hasher.HashPassword(user, request.NewValue); context.SaveChanges(); return(Ok(user.user_id)); } case UserUpdateAction.Actions.ChangeEmail: { var existingUser = context.FindByEmail(request.NewValue); if (existingUser != null || user.email != request.OldValue.ToLowerInvariant()) { return(Forbid()); } if (!request.NewValue.Contains("@") || !request.NewValue.Contains(".")) { return(NotFound()); } user.email = request.NewValue; user.verified = 0; user.verification_token = context.GenEmailToken(); context.SaveChanges(); Emailer.SendVerificationEmail(user); return(Ok(user.email)); } case UserUpdateAction.Actions.RecoverPassword: { if (user.verification_token != request.OldValue) { return(Forbid()); } var hasher = new PasswordHasher <User>(); user.hash = hasher.HashPassword(user, request.NewValue); user.verified = 1; user.verification_token = string.Empty; context.SaveChanges(); return(Ok(user.user_id)); } } return(NoContent()); } }
private string DeliverPropagationPath(string paramstr) { string json = ""; // set default values string mycallstr = ""; string mylocstr = ""; string dxcallstr = ""; string dxlocstr = ""; string bandstr = ""; BAND band = Properties.Settings.Default.Band; // get parameters try { if (paramstr.Contains("?")) { // OK, we have parameters --> cut them out and make all uppercase paramstr = paramstr.Substring(paramstr.IndexOf("?") + 1).ToUpper(); var pars = System.Web.HttpUtility.ParseQueryString(paramstr); mycallstr = pars.Get("MYCALL"); mylocstr = pars.Get("MYLOC"); dxcallstr = pars.Get("DXCALL"); dxlocstr = pars.Get("DXLOC"); bandstr = pars.Get("BAND"); } } catch (Exception ex) { // return error return("Error while parsing parameters!"); } // check parameters if (!Callsign.Check(mycallstr)) { return("Error: " + mycallstr + " is not a valid callsign!"); } if (!Callsign.Check(dxcallstr)) { return("Error: " + dxcallstr + " is not a valid callsign!"); } if (!String.IsNullOrEmpty(mylocstr) && !MaidenheadLocator.Check(mylocstr)) { return("Error: " + mylocstr + " is not a valid Maidenhead locator!"); } if (!String.IsNullOrEmpty(dxlocstr) && !MaidenheadLocator.Check(dxlocstr)) { return("Error: " + dxlocstr + " is not a valid Maidenhead locator!"); } // set band to currently selected if empty if (string.IsNullOrEmpty(bandstr)) { band = Properties.Settings.Default.Band; } else { band = Bands.ParseStringValue(bandstr); } if (band == BAND.BNONE) { return("Error: " + bandstr + " is not a valid band value!"); } // search call in station database, return empty string if not found LocationDesignator myloc = LocationFind(mycallstr, mylocstr); if (myloc == null) { return("Error: MyLocation not found in database!"); } LocationDesignator dxloc = LocationFind(dxcallstr, dxlocstr); if (dxloc == null) { return("Error: DXLocation not found in database!"); } // get qrv info or create default QRVDesignator myqrv = StationData.Database.QRVFindOrCreateDefault(myloc.Call, myloc.Loc, band); // set qrv defaults if zero if (myqrv.AntennaHeight == 0) { myqrv.AntennaHeight = StationData.Database.QRVGetDefaultAntennaHeight(band); } if (myqrv.AntennaGain == 0) { myqrv.AntennaGain = StationData.Database.QRVGetDefaultAntennaGain(band); } if (myqrv.Power == 0) { myqrv.Power = StationData.Database.QRVGetDefaultPower(band); } // get qrv info or create default QRVDesignator dxqrv = StationData.Database.QRVFindOrCreateDefault(dxloc.Call, dxloc.Loc, band); // set qrv defaults if zero if (dxqrv.AntennaHeight == 0) { dxqrv.AntennaHeight = StationData.Database.QRVGetDefaultAntennaHeight(band); } if (dxqrv.AntennaGain == 0) { dxqrv.AntennaGain = StationData.Database.QRVGetDefaultAntennaGain(band); } if (dxqrv.Power == 0) { dxqrv.Power = StationData.Database.QRVGetDefaultPower(band); } // find local obstruction, if any LocalObstructionDesignator o = ElevationData.Database.LocalObstructionFind(myloc.Lat, myloc.Lon, Properties.Settings.Default.ElevationModel); double mybearing = LatLon.Bearing(myloc.Lat, myloc.Lon, dxloc.Lat, dxloc.Lon); double myobstr = (o != null) ? o.GetObstruction(myqrv.AntennaHeight, mybearing) : double.MinValue; // get or calculate propagation path PropagationPathDesignator ppath = PropagationData.Database.PropagationPathFindOrCreateFromLatLon( this, myloc.Lat, myloc.Lon, GetElevation(myloc.Lat, myloc.Lon) + myqrv.AntennaHeight, dxloc.Lat, dxloc.Lon, GetElevation(dxloc.Lat, dxloc.Lon) + dxqrv.AntennaHeight, Bands.ToGHz(band), LatLon.Earth.Radius * Properties.Settings.Default.Path_Band_Settings[band].K_Factor, Properties.Settings.Default.Path_Band_Settings[band].F1_Clearance, ElevationData.Database.GetDefaultStepWidth(Properties.Settings.Default.ElevationModel), Properties.Settings.Default.ElevationModel, myobstr); if (ppath == null) { return(json); } // add additional info to ppath ppath.Location1 = myloc; ppath.Location2 = dxloc; ppath.QRV1 = myqrv; ppath.QRV2 = dxqrv; // convert path to json json = ppath.ToJSON(); return(json); }
public bool Equals(GroupEditAction input) { if (input == null) { return(false); } return (( Name == input.Name || (Name != null && Name.Equals(input.Name)) ) && ( About == input.About || (About != null && About.Equals(input.About)) ) && ( Motto == input.Motto || (Motto != null && Motto.Equals(input.Motto)) ) && ( Theme == input.Theme || (Theme != null && Theme.Equals(input.Theme)) ) && ( AvatarImageIndex == input.AvatarImageIndex || (AvatarImageIndex.Equals(input.AvatarImageIndex)) ) && ( Tags == input.Tags || (Tags != null && Tags.Equals(input.Tags)) ) && ( IsPublic == input.IsPublic || (IsPublic != null && IsPublic.Equals(input.IsPublic)) ) && ( MembershipOption == input.MembershipOption || (MembershipOption.Equals(input.MembershipOption)) ) && ( IsPublicTopicAdminOnly == input.IsPublicTopicAdminOnly || (IsPublicTopicAdminOnly != null && IsPublicTopicAdminOnly.Equals(input.IsPublicTopicAdminOnly)) ) && ( AllowChat == input.AllowChat || (AllowChat != null && AllowChat.Equals(input.AllowChat)) ) && ( ChatSecurity == input.ChatSecurity || (ChatSecurity.Equals(input.ChatSecurity)) ) && ( Callsign == input.Callsign || (Callsign != null && Callsign.Equals(input.Callsign)) ) && ( Locale == input.Locale || (Locale != null && Locale.Equals(input.Locale)) ) && ( Homepage == input.Homepage || (Homepage.Equals(input.Homepage)) ) && ( EnableInvitationMessagingForAdmins == input.EnableInvitationMessagingForAdmins || (EnableInvitationMessagingForAdmins != null && EnableInvitationMessagingForAdmins.Equals(input.EnableInvitationMessagingForAdmins)) ) && ( DefaultPublicity == input.DefaultPublicity || (DefaultPublicity.Equals(input.DefaultPublicity)) )); }
private bool ValidateDetails() { // validates user details and sets position on map // enables/disables next button double mlat, mlon; // colour Textbox if more precise lat/lon information is available if (MaidenheadLocator.IsPrecise(tb_Latitude.Value, tb_Longitude.Value, 3)) { if (tb_Locator.BackColor != Color.PaleGreen) { tb_Locator.BackColor = Color.PaleGreen; } } else { if (tb_Locator.BackColor != Color.FloralWhite) { tb_Locator.BackColor = Color.FloralWhite; } } if (GeographicalPoint.Check(tb_Latitude.Value, tb_Longitude.Value)) { // update locator text if not focusd if (!tb_Locator.Focused) { tb_Locator.SilentText = MaidenheadLocator.LocFromLatLon(tb_Latitude.Value, tb_Longitude.Value, Properties.Settings.Default.Locator_SmallLettersForSubsquares, (int)Properties.Settings.Default.Locator_MaxLength / 2, true); } // get locator polygon Callsignpolygons.Clear(); List <PointLatLng> l = new List <PointLatLng>(); // add loc bounds to map polygons MaidenheadLocator.LatLonFromLoc(tb_Locator.Text, PositionInRectangle.TopLeft, out mlat, out mlon); l.Add(new PointLatLng(mlat, mlon)); MaidenheadLocator.LatLonFromLoc(tb_Locator.Text, PositionInRectangle.TopRight, out mlat, out mlon); l.Add(new PointLatLng(mlat, mlon)); MaidenheadLocator.LatLonFromLoc(tb_Locator.Text, PositionInRectangle.BottomRight, out mlat, out mlon); l.Add(new PointLatLng(mlat, mlon)); MaidenheadLocator.LatLonFromLoc(tb_Locator.Text, PositionInRectangle.BottomLeft, out mlat, out mlon); l.Add(new PointLatLng(mlat, mlon)); GMapPolygon p = new GMapPolygon(l, tb_Locator.Text.ToString()); p.Stroke = new Pen(Color.FromArgb(255, Color.Magenta), 3); p.Fill = new SolidBrush(Color.FromArgb(0, Color.Magenta)); Callsignpolygons.Polygons.Add(p); // update user position UserPos.Position = new PointLatLng(tb_Latitude.Value, tb_Longitude.Value); // update map position if (!IsDraggingMarker) { string loc = MaidenheadLocator.LocFromLatLon(tb_Latitude.Value, tb_Longitude.Value, Properties.Settings.Default.Locator_SmallLettersForSubsquares, (int)Properties.Settings.Default.Locator_MaxLength / 2, true); MaidenheadLocator.LatLonFromLoc(loc, PositionInRectangle.MiddleMiddle, out mlat, out mlon); gm_Callsign.Position = new PointLatLng(mlat, mlon); // adjust map zoom level int zoom = loc.Length; switch (zoom) { case 6: gm_Callsign.Zoom = 12; break; case 8: gm_Callsign.Zoom = 15; break; case 10: gm_Callsign.Zoom = 17; break; } } } // check all values if (Callsign.Check(tb_Callsign.Text) && MaidenheadLocator.Check(tb_Locator.Text) && !double.IsNaN(tb_Latitude.Value) && !double.IsNaN(tb_Longitude.Value)) { StationLocation.Lat = tb_Latitude.Value; StationLocation.Lon = tb_Longitude.Value; StationLocation.Source = MaidenheadLocator.IsPrecise(tb_Latitude.Value, tb_Longitude.Value, 3) ? GEOSOURCE.FROMUSER : GEOSOURCE.FROMLOC; StationLocation.Loc = MaidenheadLocator.LocFromLatLon(StationLocation.Lat, StationLocation.Lon, false, 3); tb_Elevation.SilentValue = GetElevation(StationLocation.Lat, StationLocation.Lon); return(true); } else { return(false); } }
/// <summary> /// Creates the specified body. /// </summary> /// <param name="body">The body.</param> /// <param name="destCall">The dest call.</param> /// <returns></returns> public static MessagePayload Create(string body, Callsign destCall) => MessageParser.CreateFromString(body, destCall);