Skip to content

Commit

Permalink
Merge pull request #220 from WildernessLabs/feature/net-events
Browse files Browse the repository at this point in the history
added network connection related events
  • Loading branch information
adrianstevens committed May 1, 2024
2 parents d599279 + 462d845 commit b134ba1
Show file tree
Hide file tree
Showing 6 changed files with 114 additions and 92 deletions.
10 changes: 10 additions & 0 deletions Source/Meadow.Contracts/Cloud/MeadowCommand.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,16 @@ namespace Meadow.Cloud;
/// </summary>
public class MeadowCommand
{
/// <summary>
/// Initializes a new instance of the <see cref="MeadowCommand"/> class.
/// </summary>
/// <remarks>Needed for serialization</remarks>
public MeadowCommand()
{
CommandName = string.Empty;
Arguments = new Dictionary<string, object>();
}

/// <summary>
/// Initializes a new instance of the <see cref="MeadowCommand"/> class.
/// </summary>
Expand Down
52 changes: 0 additions & 52 deletions Source/Meadow.Contracts/Enums/WiFiDisconnectedReason.cs

This file was deleted.

18 changes: 17 additions & 1 deletion Source/Meadow.Contracts/Hardware/Networking/INetworkAdapter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,12 @@

namespace Meadow.Hardware;

/// <summary>
/// Delegate containing information about a change in network state event
/// </summary>
/// <param name="sender"></param>
public delegate void NetworkStateHandler(INetworkAdapter sender);

/// <summary>
/// Delegate containing information about a network connection event
/// </summary>
Expand All @@ -29,6 +35,11 @@ namespace Meadow.Hardware;
/// </summary>
public interface INetworkAdapter
{
/// <summary>
/// Event raised when a network is connecting
/// </summary>
event NetworkStateHandler NetworkConnecting;

/// <summary>
/// Event raised when a network is connected
/// </summary>
Expand All @@ -39,6 +50,11 @@ public interface INetworkAdapter
/// </summary>
event NetworkDisconnectionHandler NetworkDisconnected;

/// <summary>
/// Event raised when a auto-reconnecting to a network has terminaled
/// </summary>
event NetworkStateHandler NetworkConnectFailed;

/// <summary>
/// Event raised on an unexpected network error.
/// </summary>
Expand Down Expand Up @@ -77,5 +93,5 @@ public interface INetworkAdapter
/// <summary>
/// DNS Addresses of the network adapter.
/// </summary>
IPAddressCollection DnsAddresses{ get; }
IPAddressCollection DnsAddresses { get; }
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
namespace Meadow.Hardware;

/// <summary>
/// Extension methods for NetworkDisconnectReason
/// </summary>
public static class NetworkDisconnectReasonExtensions
{
/// <summary>
/// Gets a string representation of a NetworkDisconnectReason
/// </summary>
/// <param name="reason"></param>
/// <returns></returns>
public static string ToString(this NetworkDisconnectReason reason)
{
return reason switch
{
NetworkDisconnectReason.Unspecified => "Unspecified",
NetworkDisconnectReason.Inactivity => "Disconnected due to inactivity",
NetworkDisconnectReason.TooManyDevicesConnected => "Too many devices already connected to the Access Point",
NetworkDisconnectReason.ManualDisconnect => "Adapter was commanded to disconnect",
NetworkDisconnectReason.IncorrectPasscode => "Incorrect passcode provided",
NetworkDisconnectReason.InsufficientSignal => "Insufficient signal to connect",
NetworkDisconnectReason.AccessPointDisconnected => "Access point dropped the connection",
NetworkDisconnectReason.AccessPointNotFound => "Access point not found",
NetworkDisconnectReason.CableDisconnected => "Cable disconnected",
_ => $"Undefined Reason ({reason})",
};
}
}

/// <summary>
/// Reasons for network interface disconnection
/// </summary>
public enum NetworkDisconnectReason
{
/// <summary>
/// Unspecified reason for disconnection
/// </summary>
Unspecified = 1,

/// <summary>
/// Disconnection due to authenticated leave
/// </summary>
AuthenticatedLeave = 3,

/// <summary>
/// Disconnection due to inactivity
/// </summary>
Inactivity = 4,

/// <summary>
/// Disconnection because too many devices are connected
/// </summary>
TooManyDevicesConnected = 5,

/// <summary>
/// Disconnection initiated manually
/// </summary>
ManualDisconnect = 8,

/// <summary>
/// Disconnection due to incorrect passcode
/// </summary>
IncorrectPasscode = 15,

/// <summary>
/// Disconnection due to insufficient signal
/// </summary>
InsufficientSignal = 33,

/// <summary>
/// The network cable was disconnected
/// </summary>
CableDisconnected = 100,

/// <summary>
/// Disconnection because the access point was disconnected
/// </summary>
AccessPointDisconnected = 200,

/// <summary>
/// Disconnection because the access point was not found
/// </summary>
AccessPointNotFound = 201,
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,12 @@ public class NetworkDisconnectionEventArgs : EventArgs
/// <summary>
/// Disconnect reason
/// </summary>
public string Reason { get; }
public NetworkDisconnectReason Reason { get; }

/// <summary>
/// Construct a NetworkDisconnectionEventArgs object.
/// </summary>
public NetworkDisconnectionEventArgs(string reason)
public NetworkDisconnectionEventArgs(NetworkDisconnectReason reason)
{
When = DateTime.UtcNow;
Reason = reason;
Expand Down

This file was deleted.

0 comments on commit b134ba1

Please sign in to comment.