public void TestUnprotoFilter() { var builder = new AprsFilterBuilder(); builder.AddFilter(new AprsFilter.Unproto("test")); Assert.AreEqual("u/test", builder.GetFilter()); }
public void TestRangeFilter() { var builder = new AprsFilterBuilder(); builder.AddFilter(new AprsFilter.Range(52, 5, 10)); Assert.AreEqual("r/52/5/10", builder.GetFilter()); }
public void TestGroupMessageFilter() { var builder = new AprsFilterBuilder(); builder.AddFilter(new AprsFilter.GroupMessage("test")); Assert.AreEqual("g/test", builder.GetFilter()); }
public void TestAreaFilter() { var builder = new AprsFilterBuilder(); builder.AddFilter(new AprsFilter.Area(1, 2, 3, 4)); Assert.AreEqual("a/1/2/3/4", builder.GetFilter()); }
public void TestEntryStationFilter() { var builder = new AprsFilterBuilder(); builder.AddFilter(new AprsFilter.EntryStation("test")); Assert.AreEqual("e/test", builder.GetFilter()); }
public void TestSymbolFilter() { var builder = new AprsFilterBuilder(); builder.AddFilter(new AprsFilter.Symbol("!", "@", "3")); Assert.AreEqual("s/!/@/3", builder.GetFilter()); }
public void TestDigipeaterFilter() { var builder = new AprsFilterBuilder(); builder.AddFilter(new AprsFilter.Digipeater("TEST1", "TEST2")); Assert.AreEqual("d/TEST1/TEST2", builder.GetFilter()); }
public void TestObjectFilter() { var builder = new AprsFilterBuilder(); builder.AddFilter(new AprsFilter.Object("object")); Assert.AreEqual("o/object", builder.GetFilter()); }
public void TestTypeFilter() { var builder = new AprsFilterBuilder(); builder.AddFilter(new AprsFilter.Type(AprsFilter.Types.All)); Assert.AreEqual("t/poimqstunw", builder.GetFilter()); }
public void TestBudlistFilter() { var builder = new AprsFilterBuilder(); builder.AddFilter(new AprsFilter.Budlist("abcdefg")); Assert.AreEqual("b/abcdefg", builder.GetFilter()); }
public void TestPrefixFilter() { var builder = new AprsFilterBuilder(); builder.AddFilter(new AprsFilter.Prefix("DD", "DE")); Assert.AreEqual("p/DD/DE", builder.GetFilter()); }
public void TestFriendRangeFilter() { var builder = new AprsFilterBuilder(); builder.AddFilter(new AprsFilter.FriendRange("TEST", 100)); Assert.AreEqual("f/TEST/100", builder.GetFilter()); }
public void TestMyRangeFilter() { var builder = new AprsFilterBuilder(); builder.AddFilter(new AprsFilter.MyRange(100)); Assert.AreEqual("m/100", builder.GetFilter()); }
public void Run() { _logger.LogInformation("Starting AnalyserService"); SubscribeContextFactoryEventHandlers(FlightContextFactory); var builder = new AprsFilterBuilder(); builder.AddFilter(new AprsFilter.Range(46.801111, 8.226667, 250)); // geographical center of switzerland var filter = builder.GetFilter(); var aprsConfig = new Config() { Callsign = @"Speck78", Password = "******", Uri = "aprs.glidernet.org", // glidern1.glidernet.org // aprs.glidernet.org UseOgnAdditives = true, Port = 14580, Filter = filter }; AprsClient = new Listener(aprsConfig); _logger.LogInformation("Created new AprsClient with config: {aprsConfig}", System.Text.Json.JsonSerializer.Serialize(aprsConfig)); AprsClient.PacketReceived += (sender, e) => { try { if (e.AprsMessage.DataType == DataType.Status) { return; } var posUpdate = new Skyhop.FlightAnalysis.Models.PositionUpdate( e.AprsMessage.Callsign, e.AprsMessage.ReceivedDate, e.AprsMessage.Latitude.AbsoluteValue, e.AprsMessage.Longitude.AbsoluteValue, e.AprsMessage.Altitude.FeetAboveSeaLevel, e.AprsMessage.Speed.Knots, e.AprsMessage.Direction.ToDegrees()); try { FlightContextFactory.Process(posUpdate); } catch (Exception exception) { _logger.LogError(exception, "Error: {ExceptionMessage}: Position update: {PositionUpdate}", exception.Message, posUpdate); } } catch (Exception ex) { //ColorConsole.WriteLine($"Error: {ex.Message}: AprsMessage: {e.AprsMessage}", ConsoleColor.Red); _logger.LogError(ex, "Error: {ExceptionMessage}: AprsMessage: {AprsMessage}", ex.Message, e.AprsMessage); } }; AprsClient.Open(); _logger.LogInformation("Opened Aprs Client"); }