diff --git a/ADIS_Csharp/RobotClientWpf/ChallengeFactory.cs b/ADIS_Csharp/RobotClientWpf/ChallengeFactory.cs index 004b29b..a1675a6 100644 --- a/ADIS_Csharp/RobotClientWpf/ChallengeFactory.cs +++ b/ADIS_Csharp/RobotClientWpf/ChallengeFactory.cs @@ -12,8 +12,8 @@ namespace RobotClientWpf public ChallengeFactory() { this.PublisherSubscriber = MqttPublisherSubscriber.Instance; - this.RobotStationary = new Robot(this.PublisherSubscriber); - this.RobotMobile = new Robot(this.PublisherSubscriber); + this.RobotStationary = new Robot(this.PublisherSubscriber, RobotTypes.Stationary); + this.RobotMobile = new Robot(this.PublisherSubscriber, RobotTypes.Mobile); } } } diff --git a/ADIS_Csharp/RobotClientWpf/NLog.config b/ADIS_Csharp/RobotClientWpf/NLog.config index 7483624..6cef1f2 100644 --- a/ADIS_Csharp/RobotClientWpf/NLog.config +++ b/ADIS_Csharp/RobotClientWpf/NLog.config @@ -10,9 +10,15 @@ + + \ No newline at end of file diff --git a/ADIS_Csharp/RobotLib/Battery/DevBattery.cs b/ADIS_Csharp/RobotLib/Battery/DevBattery.cs index 80aa885..cceecdf 100644 --- a/ADIS_Csharp/RobotLib/Battery/DevBattery.cs +++ b/ADIS_Csharp/RobotLib/Battery/DevBattery.cs @@ -31,11 +31,6 @@ namespace RobotLib.Battery public DevBattery(IPublisherSubscriber com) : base(com, new List() { TOPIC_ROBO_RESP_BATTERY }) { } - public override void Refresh() - { - this.RequestBatteryVoltage(); - } - public void RequestBatteryVoltage() { base.SendMessage(TOPIC_ROBO_REQ_BATTERY, true.ToString()); diff --git a/ADIS_Csharp/RobotLib/Communication/MqttPublisherSubscriber.cs b/ADIS_Csharp/RobotLib/Communication/MqttPublisherSubscriber.cs index e0246fa..5e00ad8 100644 --- a/ADIS_Csharp/RobotLib/Communication/MqttPublisherSubscriber.cs +++ b/ADIS_Csharp/RobotLib/Communication/MqttPublisherSubscriber.cs @@ -159,7 +159,7 @@ namespace RobotLib.Communication } lock (clientLock) { - var msgId = client.Publish(topic, Encoding.ASCII.GetBytes(message)); + var msgId = client.Publish(topic, Encoding.ASCII.GetBytes(message), 0, false); log.Trace($"Published to topic '{topic}'. MessageId = {msgId}"); } } diff --git a/ADIS_Csharp/RobotLib/Robot.cs b/ADIS_Csharp/RobotLib/Robot.cs index 1ebe3b3..1cf4fc0 100644 --- a/ADIS_Csharp/RobotLib/Robot.cs +++ b/ADIS_Csharp/RobotLib/Robot.cs @@ -2,26 +2,43 @@ using RobotLib.SplitFlap; using RobotLib.Movement; using RobotLib.Battery; -using System.Threading; +using System.Timers; namespace RobotLib { public class Robot { - public Robot(IPublisherSubscriber com) + public Robot(IPublisherSubscriber com, RobotTypes type) { Com = com; - //Buzzer = new DevBuzzer(Com); - Battery = new DevBattery(Com); - SplitFlap = new DevSplitFlap(com); - LineSensor = new DevLineSensor(com); - Movement = new DevMovement(com); - - Timer timer = new Timer(TimerCallback); - timer.Change(2000, 10000); + Type = type; + if(type == RobotTypes.Undefined) + { + throw new System.ArgumentException("Undefined robot type, must define type!"); + } + + if(type == RobotTypes.Mobile) + { + //Buzzer = new DevBuzzer(Com); + Battery = new DevBattery(Com); + LineSensor = new DevLineSensor(com); + Movement = new DevMovement(com); + } + else if(type == RobotTypes.Stationary) + { + SplitFlap = new DevSplitFlap(com); + } + + Timer timer = new Timer + { + Interval = 10000 + }; + timer.Enabled= true; + timer.Elapsed += Timer_Elapsed; } public IPublisherSubscriber Com { get; } + public RobotTypes Type { get; } //public DevBuzzer Buzzer { get; } public DevBattery Battery { get; } @@ -39,13 +56,12 @@ namespace RobotLib //Com.Disconnect(); } - private void TimerCallback(object state) + private void Timer_Elapsed(object sender, ElapsedEventArgs e) { if (Com.IsConnected) { - Battery.Refresh(); + Battery?.RequestBatteryVoltage(); } } - } } \ No newline at end of file diff --git a/ADIS_Csharp/RobotLib/RobotTypes.cs b/ADIS_Csharp/RobotLib/RobotTypes.cs new file mode 100644 index 0000000..2f8aa8a --- /dev/null +++ b/ADIS_Csharp/RobotLib/RobotTypes.cs @@ -0,0 +1,9 @@ +namespace RobotLib +{ + public enum RobotTypes + { + Undefined = 0, + Mobile = 1, + Stationary + } +}