diff --git a/HomegearLib.NET/Homegear.cs b/HomegearLib.NET/Homegear.cs index c7f0d17..34cfa92 100644 --- a/HomegearLib.NET/Homegear.cs +++ b/HomegearLib.NET/Homegear.cs @@ -109,6 +109,7 @@ public class Homegear : IDisposable public delegate void HomegearErrorEventHandler(Homegear sender, Int32 level, String message); public delegate void DataReloadEventHandler(Homegear sender); public delegate void SystemVariableUpdatedEventHandler(Homegear sender, SystemVariable variable); + public delegate void PongEventHandler(Homegear sender, String id); public delegate void MetadataUpdatedEventHandler(Homegear sender, Device device, MetadataVariable variable); public delegate void DeviceVariableUpdatedEventHandler(Homegear sender, Device device, Channel channel, Variable variable); public delegate void DeviceConfigParameterUpdatedEventHandler(Homegear sender, Device device, Channel channel, ConfigParameter parameter); @@ -138,6 +139,11 @@ public class Homegear : IDisposable /// public event SystemVariableUpdatedEventHandler SystemVariableUpdated; + /// + /// Raised when a pong packet is received. + /// + public event PongEventHandler Pong; + /// /// Raised when the value of a metadata variable has changed. /// @@ -270,6 +276,7 @@ public Homegear(RPCController rpc, bool events) _rpc.HomegearError += _rpc_HomegearError; _rpc.DeviceVariableUpdated += _rpc_OnDeviceVariableUpdated; _rpc.SystemVariableUpdated += _rpc_OnSystemVariableUpdated; + _rpc.Pong += _rpc_Pong; _rpc.SystemVariableDeleted += _rpc_OnSystemVariableDeleted; _rpc.MetadataUpdated += _rpc_OnMetadataUpdated; _rpc.MetadataDeleted += _rpc_OnMetadataDeleted; @@ -424,6 +431,12 @@ private void _rpc_OnSystemVariableUpdated(RPCController sender, SystemVariable v if (SystemVariableUpdated != null) SystemVariableUpdated(this, variable); } + private void _rpc_Pong(RPCController sender, string id) + { + if (_disposing) return; + if (Pong != null) Pong(this, id); + } + private void _rpc_OnSystemVariableDeleted(RPCController sender) { if (_disposing) return; diff --git a/HomegearLib.NET/Properties/AssemblyInfo.cs b/HomegearLib.NET/Properties/AssemblyInfo.cs index ddcd6a4..275e95b 100644 --- a/HomegearLib.NET/Properties/AssemblyInfo.cs +++ b/HomegearLib.NET/Properties/AssemblyInfo.cs @@ -32,5 +32,5 @@ // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("0.1.5.0")] -[assembly: AssemblyFileVersion("0.1.5.0")] +[assembly: AssemblyVersion("0.1.5.1")] +[assembly: AssemblyFileVersion("0.1.5.1")] diff --git a/HomegearLib.NET/RPC/RPC.cs b/HomegearLib.NET/RPC/RPC.cs index 06d8067..2b0d553 100644 --- a/HomegearLib.NET/RPC/RPC.cs +++ b/HomegearLib.NET/RPC/RPC.cs @@ -33,6 +33,7 @@ public class RPCController : IDisposable { internal delegate void DeviceVariableUpdatedEventHandler(RPCController sender, Variable value); internal delegate void SystemVariableUpdatedEventHandler(RPCController sender, SystemVariable value); + internal delegate void PongEventHandler(RPCController sender, String id); internal delegate void SystemVariableDeletedEventHandler(RPCController sender); internal delegate void MetadataUpdatedEventHandler(RPCController sender, Int32 peerID, MetadataVariable value); internal delegate void MetadataDeletedEventHandler(RPCController sender, Int32 peerID); @@ -52,6 +53,7 @@ public class RPCController : IDisposable #region "Events" internal event DeviceVariableUpdatedEventHandler DeviceVariableUpdated; internal event SystemVariableUpdatedEventHandler SystemVariableUpdated; + internal event PongEventHandler Pong; internal event SystemVariableDeletedEventHandler SystemVariableDeleted; internal event MetadataUpdatedEventHandler MetadataUpdated; internal event MetadataDeletedEventHandler MetadataDeleted; @@ -250,6 +252,10 @@ private void _server_OnRPCEvent(RPCServer sender, Int32 peerID, Int32 channel, S { if (SystemVariableDeleted != null) SystemVariableDeleted(this); } + else if(parameterName == "PONG") + { + if (Pong != null) Pong(this, value.StringValue); + } else { if (SystemVariableUpdated != null) SystemVariableUpdated(this, new SystemVariable(null, parameterName, value)); diff --git a/HomegearLibTest/frmMain.cs b/HomegearLibTest/frmMain.cs index 8f3e1a6..8a6f35d 100644 --- a/HomegearLibTest/frmMain.cs +++ b/HomegearLibTest/frmMain.cs @@ -285,6 +285,11 @@ void _homegear_OnSystemVariableUpdated(Homegear sender, SystemVariable variable) } } + void _homegear_Pong(Homegear sender, string id) + { + WriteLog("Pong received: ID: " + id); + } + void _homegear_OnMetadataUpdated(Homegear sender, Device device, MetadataVariable variable) { WriteLog("Metadata updated: Device: " + device.ID.ToString() + ", Value: " + variable.ToString()); @@ -476,6 +481,7 @@ private void bnConnect_Click(object sender, EventArgs e) _homegear.ConnectError += _homegear_OnConnectError; _homegear.HomegearError += _homegear_HomegearError; _homegear.SystemVariableUpdated += _homegear_OnSystemVariableUpdated; + _homegear.Pong += _homegear_Pong; _homegear.MetadataUpdated += _homegear_OnMetadataUpdated; _homegear.DeviceVariableUpdated += _homegear_OnDeviceVariableUpdated; _homegear.DeviceConfigParameterUpdated += _homegear_OnDeviceConfigParameterUpdated;