powerfun-unity/Assets/Scripts/Devices/Ble/BleDeviceAdapter.cs
2021-06-04 13:22:59 +08:00

79 lines
2.6 KiB
C#

using Assets.Scripts.Ble;
using Assets.Scripts.Ble.Service;
using Assets.Scripts.Devices.Ble.Devices;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using UnityEngine;
namespace Assets.Scripts.Devices.Ble
{
public class BleDeviceAdapter : DeviceAdapter
{
public override ConnectionInterface Interface => ConnectionInterface.BLE;
private IDictionary<string, BleDevice> discoveredDevices = new Dictionary<string, BleDevice>();
private BleWinHwInterface hwInterface;
public BleDeviceAdapter()
{
hwInterface = BleWinHwInterface.GetInterface();
}
public override IEnumerable<AbstractDevice> GetDevices()
{
//throw new NotImplementedException();
return discoveredDevices.Select(d => d.Value);
}
public override DeviceAdapterState GetState()
{
if(hwInterface.BleState == BleState.On)
{
return DeviceAdapterState.On;
}
return DeviceAdapterState.Unavailable;
}
public override void StartScan()
{
hwInterface.StartScan((device) =>
{
if (!discoveredDevices.ContainsKey(device.Peripheral.Address))
{
Debug.Log("发现设备" + device.Peripheral.Address + device.Peripheral.Name + ", type:" + device.SensorType);
if(device.SensorType == Ant.SensorType.Trainer)
{
//var device1 = new Ftms(device.Peripheral, hwInterface);
//discoveredDevices.Add(device.Peripheral.Address, device1);
}
else if(device.SensorType == Ant.SensorType.HeartRate)
{
var device1 = new HeartRate(device.Peripheral, hwInterface);
discoveredDevices.Add(device.Peripheral.Address, device1);
}
else if(device.SensorType == Ant.SensorType.Power)
{
var device1 = new CyclingPower(device.Peripheral, hwInterface);
discoveredDevices.Add(device.Peripheral.Address, device1);
}
//discoveredDevices.Add(device.Peripheral.Address, new BleDevice(device.Peripheral, hwInterface, device.SensorType));
}
});
}
public override void StopScan()
{
}
public override void Dispose()
{
hwInterface.Dispose();
base.Dispose();
}
}
}