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

namespace Assets.Scripts.Devices.Ant.Pages
{
    public class CrankPowerPageHandler : IPageHandler
    {
        private readonly TorquePowerDataCalculator _torquePowerDataCalculator = new TorquePowerDataCalculator();

        public bool CanHandle(byte pageNumber)
        {
            return (int)pageNumber == 18;
        }

        public void Handle(byte[] dataPayload, AbstractAntDevice device)
        {
            var powerDevice = device as PowerDevice;
            if (powerDevice == null)
                return;
            byte eventCount = dataPayload[1];
            int num = (int)dataPayload[3];
            ushort period = (ushort)((uint)dataPayload[4] | (uint)dataPayload[5] << 8);
            ushort accumulatedTorque = (ushort)(dataPayload[6] | (uint)dataPayload[7] << 8);
            this._torquePowerDataCalculator.Update(eventCount, period, accumulatedTorque);
            //powerDevice.UpdateCadence(new int?(this._torquePowerDataCalculator.Rpm));
            //powerDevice.UpdatePower(new int?(this._torquePowerDataCalculator.Power));
            powerDevice.Cadence = this._torquePowerDataCalculator.Rpm;
            powerDevice.Power = this._torquePowerDataCalculator.Power;
        }
    }
}
