89 lines
2.3 KiB
C#
89 lines
2.3 KiB
C#
using Assets.Scripts.Ble;
|
|
using Assets.Scripts.Devices.Ble.Interfaces;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using UnityEngine;
|
|
|
|
namespace Assets.Scripts.Devices.Ble.Characteristic
|
|
{
|
|
public class HeartRateMeasurement : ICharacteristic
|
|
{
|
|
public Guid Uuid
|
|
{
|
|
get
|
|
{
|
|
return ServiceUuids.Characteristics.HrMeasurement;
|
|
}
|
|
}
|
|
|
|
public Guid ServiceUuid
|
|
{
|
|
get
|
|
{
|
|
return ServiceUuids.Get(ServiceUuids.HeartRate).IdGuid;
|
|
}
|
|
}
|
|
|
|
public bool IsOptional
|
|
{
|
|
get
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
private HrmFormat Format { get; set; }
|
|
|
|
// Token: 0x170005EB RID: 1515
|
|
// (get) Token: 0x0600214D RID: 8525 RVA: 0x0008999B File Offset: 0x00087B9B
|
|
public int BeatsPerMinute { get; private set; }
|
|
|
|
public void HandleAttributeReceived(byte[] data)
|
|
{
|
|
HrmFlags hrmFlags = (HrmFlags)BitConvertHelper.ToUInt8(data, 0);
|
|
this.Format = (HrmFormat)(hrmFlags.HasFlag(HrmFlags.Format) ? 1 : 0);
|
|
if (this.Format == HrmFormat.Short)
|
|
{
|
|
this.BeatsPerMinute = BitConvertHelper.ToUInt8(data, 1);
|
|
//Debug.Log("心率:" + this.BeatsPerMinute);
|
|
return;
|
|
}
|
|
if (data.Length < 3)
|
|
{
|
|
throw new ArgumentException("数据出错");
|
|
}
|
|
this.BeatsPerMinute = BitConvertHelper.ToUInt16(data, 1);
|
|
}
|
|
|
|
public void SetUnavailable()
|
|
{
|
|
}
|
|
|
|
[Flags]
|
|
private enum HrmFlags
|
|
{
|
|
// Token: 0x040029D0 RID: 10704
|
|
Format = 1,
|
|
// Token: 0x040029D1 RID: 10705
|
|
SensorContactStatus1 = 2,
|
|
// Token: 0x040029D2 RID: 10706
|
|
SensorContactStatus2 = 4,
|
|
// Token: 0x040029D3 RID: 10707
|
|
Energy = 8,
|
|
// Token: 0x040029D4 RID: 10708
|
|
RR = 16
|
|
}
|
|
|
|
// Token: 0x02000921 RID: 2337
|
|
private enum HrmFormat
|
|
{
|
|
// Token: 0x040029D6 RID: 10710
|
|
Short,
|
|
// Token: 0x040029D7 RID: 10711
|
|
Long
|
|
}
|
|
}
|
|
}
|