using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace RobotLib
{
    public abstract class DevBase
    {
        protected NLog.Logger log { get; private set; }

        public DevBase(Com com) : this(com, string.Empty) { }
        public DevBase(Com com, string keyword)
        {
            log = NLog.LogManager.GetLogger(GetType().ToString());

            Keyword = keyword;
            Com = com;
            com.MessageReveived += MessageReveived;
        }

        protected string Keyword { get; }
        protected Com Com { get; }

        protected virtual void MessageReveived(object sender, MessageEventArgs e)
        {
            if (e.Message.StartsWith(Keyword))
            {
                ParseMessage(e.Message);
            }
        }

        protected void SendMessage(string message)
        {
            if (Com.IsConnected)
            {
                log.Trace("Esp32> " + message);
                Com.SendMsg(message);
            }
            else
            {
                log.Warn("Not connected! Could not send message: " + message);
            }
        }
        protected virtual void ParseMessage(string message) { }

        public virtual void Refresh() { }

    }
}
