60 lines
2.1 KiB
C#
60 lines
2.1 KiB
C#
// using System.Diagnostics;
|
|
// using System.Reactive.Linq;
|
|
// using InnovEnergy.Lib.Protocols.DBus;
|
|
// using InnovEnergy.Lib.Protocols.DBus.Protocol;
|
|
// using InnovEnergy.Lib.Protocols.DBus.Protocol.DataTypes;
|
|
// using InnovEnergy.Lib.Protocols.DBus.Protocol.Header;
|
|
//
|
|
// namespace InnovEnergy.Lib.Victron.VeDBus;
|
|
//
|
|
// public class VeDbusService : IDisposable
|
|
// {
|
|
// private DBusConnection DbusConnection { get; }
|
|
// public VeProperties Properties { get; }
|
|
//
|
|
// public VeDbusService(Bus bus, String busName, VeProperties properties)
|
|
// {
|
|
// DbusConnection = new DBusConnection(bus);
|
|
//
|
|
// DbusConnection.IncomingMessages
|
|
// .Where(m => m.Type == MessageType.MethodCall)
|
|
// .Do(m => Debug.WriteLine($"Got call from {m.Sender} : {m.Member} {m.ObjectPath}"))
|
|
// .Select(AnswerMethodCalls)
|
|
// .Subscribe(DbusConnection.OutgoingMessages.OnNext);
|
|
// }
|
|
//
|
|
//
|
|
// private Message AnswerMethodCalls(Message msg)
|
|
// {
|
|
// if (!msg.ObjectPath.HasValue)
|
|
// return msg.CreateErrorReply("Unknown ObjectPath");
|
|
//
|
|
//
|
|
// if (msg.ObjectPath == ObjectPath.Root)
|
|
// {
|
|
// return msg.Member switch
|
|
// {
|
|
// VeDBusApi.GetValue => msg.CreateMethodReturn(Properties.GetValueOfAllProperties()),
|
|
// VeDBusApi.GetText => msg.CreateMethodReturn(Properties.GetTextOfAllProperties()),
|
|
// _ => msg.CreateErrorReply("Unknown Member")
|
|
// };
|
|
// }
|
|
//
|
|
// var prop = Properties.Get(msg.ObjectPath.Value);
|
|
//
|
|
// if (prop.HasValue)
|
|
// {
|
|
// return msg.Member switch
|
|
// {
|
|
// VeDBusApi.GetValue => msg.CreateMethodReturn(prop.Value.Value),
|
|
// VeDBusApi.GetText => msg.CreateMethodReturn(prop.Value.Text),
|
|
// _ => msg.CreateErrorReply("Unknown Member")
|
|
// };
|
|
// }
|
|
//
|
|
// return msg.CreateErrorReply("Unknown ObjectPath");
|
|
// }
|
|
//
|
|
// public void Dispose() => DbusConnection.Dispose();
|
|
//
|
|
// } |