51 lines
1.7 KiB
C#
51 lines
1.7 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace Assets.Scripts.Devices.Ant.Pages
|
|
{
|
|
public class PowerOnlyPageHandler : IPageHandler
|
|
{
|
|
private DateTime _lastEventChange = DateTime.UtcNow;
|
|
private byte _previousEventCount;
|
|
|
|
public bool CanHandle(byte pageNumber)
|
|
{
|
|
return (int)pageNumber == 16;
|
|
}
|
|
|
|
public void Handle(byte[] dataPayload, AbstractAntDevice device)
|
|
{
|
|
var powerDevice = device as PowerDevice;
|
|
if (powerDevice == null)
|
|
{
|
|
return;
|
|
}
|
|
|
|
//var dataPayload = response.messageContents.Skip(1).ToArray();
|
|
byte currentVal = dataPayload[1];
|
|
if ((int)ByteExtensions.GetDifference(currentVal, this._previousEventCount) > 0) //ByteExtensions
|
|
this._lastEventChange = DateTime.UtcNow;
|
|
this._previousEventCount = currentVal;
|
|
powerDevice.Power = this.IsNotMovingDueToNoEventChanges() ? 0 : (ushort)((uint)dataPayload[6] | (uint)dataPayload[7] << 8);
|
|
if ((int)dataPayload[3] != (int)byte.MaxValue)
|
|
powerDevice.Cadence = (this.IsNotMovingDueToNoEventChanges() ? 0 : (int)dataPayload[3]);
|
|
else
|
|
powerDevice.Cadence = 0;
|
|
//int num1 = (int)dataPayload[2];
|
|
//int num2 = 128;
|
|
//bool flag = (uint)(num1 & num2) > 0U;
|
|
//int num3 = (int)sbyte.MaxValue;
|
|
//int num4 = num1 & num3;
|
|
//int num5 = (int)byte.MaxValue;
|
|
}
|
|
|
|
private bool IsNotMovingDueToNoEventChanges()
|
|
{
|
|
return this._lastEventChange.AddSeconds(3.0) <= DateTime.UtcNow;
|
|
}
|
|
}
|
|
}
|