Skip to content

Commit 0c73757

Browse files
Merge pull request #101 from doingnz/Remove-UdpLogger-when-network-disconnects
Remove UdpLogger when network disconnects
2 parents aee0ba3 + 631224d commit 0c73757

File tree

1 file changed

+30
-4
lines changed

1 file changed

+30
-4
lines changed

Source/Meadow.Clima/Controllers/NetworkController.cs

Lines changed: 30 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,25 @@ public class NetworkController
3939
/// Gets the period for triggering network down events.
4040
/// </summary>
4141
public TimeSpan DownEventPeriod { get; } = TimeSpan.FromSeconds(30);
42-
42+
43+
44+
/// <summary>
45+
/// Port used for UdpLogging.
46+
/// </summary>
47+
/// <remarks>
48+
/// Default set in constructor is port 5100
49+
/// </remarks>
50+
private int UdpLoggingPort { get; set; }
51+
52+
/// <summary>
53+
/// Instance of UdpLogger. Use to remove UdpLogger if the network disconnects
54+
/// </summary>
55+
private UdpLogger? UdpLogger { get; set; }
56+
57+
private string WifiSsid { get; set; } = "SSID";
58+
private string WifiPassword { get; set; } = "PASSWORD";
59+
60+
4361
/// <summary>
4462
/// Initializes a new instance of the <see cref="NetworkController"/> class.
4563
/// </summary>
@@ -74,8 +92,8 @@ public async Task<bool> ConnectToCloud()
7492
{
7593
if (!wifi.IsConnected)
7694
{
77-
Resolver.Log.Info("Connecting to network...");
78-
await wifi.Connect("interwebs", "1234567890");
95+
Resolver.Log.Info($"Connecting to network: {WifiSsid}");
96+
await wifi.Connect(WifiSsid, WifiPassword);
7997
}
8098
}
8199

@@ -119,6 +137,14 @@ private void DownEventTimerProc(object _)
119137

120138
private void OnNetworkDisconnected(INetworkAdapter sender, NetworkDisconnectionEventArgs args)
121139
{
140+
// Remove the UdpLogger if it's in the LogProviderCollection.
141+
if (UdpLogger != null)
142+
{
143+
Resolver.Log.RemoveProvider(UdpLogger);
144+
UdpLogger.Dispose();
145+
UdpLogger = null;
146+
}
147+
122148
lastDown = DateTimeOffset.UtcNow;
123149
downEventTimer.Change(DownEventPeriod, TimeSpan.FromMilliseconds(-1));
124150
ConnectionStateChanged?.Invoke(this, false);
@@ -152,7 +178,7 @@ private async Task ReportWiFiScan(IWiFiNetworkAdapter wifi)
152178
private void OnNetworkConnected(INetworkAdapter sender, NetworkConnectionEventArgs args)
153179
{
154180
Resolver.Log.Info("Add UdpLogger");
155-
Resolver.Log.AddProvider(new UdpLogger(/*port = */5100));
181+
Resolver.Log.AddProvider(UdpLogger = new UdpLogger(UdpLoggingPort));
156182

157183
if (sender is IWiFiNetworkAdapter wifi)
158184
{

0 commit comments

Comments
 (0)