using RobotLib.Communication; using RobotLib.SplitFlap; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Text.Json; using System.Threading.Tasks; namespace RobotLib.Status { public class DevStatus: DevBase { private const string TOPIC_STATUS_MODE = "/mobile/status/mode/"; private const string TOPIC_STATUS_PRESENT = "/mobile/status/present/"; public event EventHandler StatusChanged; public event EventHandler PresentChanged; public DevStatus(IPublisherSubscriber com) : base(com, new List() { TOPIC_STATUS_MODE, TOPIC_STATUS_PRESENT }) { } protected override void ParseMessage(string fromTopic, string message) { if (fromTopic == TOPIC_STATUS_MODE) { StatusEventArgs eventArgs = new(message); StatusChanged?.Invoke(this, eventArgs); }else if(fromTopic == TOPIC_STATUS_PRESENT) { PresentEventArgs presentEventArgs = new(true); PresentChanged?.Invoke(this, presentEventArgs); } } private T GetValueFromMesage(string parameter, string message) { var data = JsonSerializer.Deserialize>(message); data.TryGetValue(parameter, out T value); return value; } } }