Merge remote-tracking branch 'origin/fit_speed_device' into dev_mobile_ble
# Conflicts: # Assets/Scripts/Devices/Ble/Devices/SpeedCadence.cs
This commit is contained in:
commit
a67602b00b
@ -4,6 +4,7 @@ using System.Linq;
|
|||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using ANT_Managed_Library;
|
using ANT_Managed_Library;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
namespace Assets.Scripts.Devices.Ant
|
namespace Assets.Scripts.Devices.Ant
|
||||||
{
|
{
|
||||||
@ -86,6 +87,7 @@ namespace Assets.Scripts.Devices.Ant
|
|||||||
deviceList.Add(new CadenceDevice(""));
|
deviceList.Add(new CadenceDevice(""));
|
||||||
deviceList.Add(new HeartRateDevice(""));
|
deviceList.Add(new HeartRateDevice(""));
|
||||||
deviceList.Add(new BikeSpdCadDevice(""));
|
deviceList.Add(new BikeSpdCadDevice(""));
|
||||||
|
deviceList.Add(new SpeedDevice(""));
|
||||||
|
|
||||||
var timer = new System.Timers.Timer(1000);
|
var timer = new System.Timers.Timer(1000);
|
||||||
timer.AutoReset = true;
|
timer.AutoReset = true;
|
||||||
@ -343,6 +345,7 @@ namespace Assets.Scripts.Devices.Ant
|
|||||||
case SensorType.None:
|
case SensorType.None:
|
||||||
break;
|
break;
|
||||||
case SensorType.Cadence:
|
case SensorType.Cadence:
|
||||||
|
Debug.LogError("发现踏频设备"+id);
|
||||||
device = new CadenceDevice(id);
|
device = new CadenceDevice(id);
|
||||||
break;
|
break;
|
||||||
case SensorType.HeartRate:
|
case SensorType.HeartRate:
|
||||||
@ -352,6 +355,7 @@ namespace Assets.Scripts.Devices.Ant
|
|||||||
device = new PowerDevice(id);
|
device = new PowerDevice(id);
|
||||||
break;
|
break;
|
||||||
case SensorType.Speed:
|
case SensorType.Speed:
|
||||||
|
device = new SpeedDevice(id);
|
||||||
break;
|
break;
|
||||||
case SensorType.SpeedCadence:
|
case SensorType.SpeedCadence:
|
||||||
device = new BikeSpdCadDevice(id);
|
device = new BikeSpdCadDevice(id);
|
||||||
|
|||||||
@ -29,7 +29,7 @@ namespace Assets.Scripts.Devices.Ant
|
|||||||
private RotationData _rotationData = new RotationData();
|
private RotationData _rotationData = new RotationData();
|
||||||
|
|
||||||
public CadenceDevice(string id)
|
public CadenceDevice(string id)
|
||||||
: base(id, "Ant+ Cadence", racerSportType.Biking, SensorType.Cadence)
|
: base(id, "Ant+ Cadence", racerSportType.Unknown, SensorType.Cadence)
|
||||||
{
|
{
|
||||||
Priority = 2;
|
Priority = 2;
|
||||||
//if (speedSensor.isInUse)
|
//if (speedSensor.isInUse)
|
||||||
|
|||||||
59
Assets/Scripts/Devices/Ant/SpeedDevice.cs
Normal file
59
Assets/Scripts/Devices/Ant/SpeedDevice.cs
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
using ANT_Managed_Library;
|
||||||
|
using Assets.Scripts.Devices.Ant.Interfaces;
|
||||||
|
using Assets.Scripts.Devices.Ant.LegacyPages;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Assets.Scripts.Devices.Ant
|
||||||
|
{
|
||||||
|
public class SpeedDevice : AbstractAntDevice, ISpeedDevice
|
||||||
|
{
|
||||||
|
public double Speed { get; set; }
|
||||||
|
private DateTime now = DateTime.Now;
|
||||||
|
public const double DEFAULT_WHEEL_CIRCUMFERENCE_m = 2096; //Average 700cx23mm road tire
|
||||||
|
public readonly double wheelCircumfrence_m;
|
||||||
|
|
||||||
|
|
||||||
|
private RotationData _rotationData = new RotationData();
|
||||||
|
public SpeedDevice(string id, double wheelCircumfrence_m = DEFAULT_WHEEL_CIRCUMFERENCE_m)
|
||||||
|
: base(id, "Ant+ Speed", racerSportType.Unknown, SensorType.Speed)
|
||||||
|
{
|
||||||
|
Priority = 2;
|
||||||
|
this.wheelCircumfrence_m = wheelCircumfrence_m;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void handleChannelResponse(ANT_Response response)
|
||||||
|
{
|
||||||
|
//throw new NotImplementedException();
|
||||||
|
var page = response.messageContents.Skip(1).ToArray();
|
||||||
|
int? value = _rotationData.CalculateRpm(now, page[4] | page[5] << 8, page[6] | page[7] << 8);
|
||||||
|
if (value.HasValue)
|
||||||
|
{
|
||||||
|
Speed = DoubleExtensions.CalculateSpeed(value.Value, wheelCircumfrence_m);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Speed = 0;
|
||||||
|
}
|
||||||
|
Console.WriteLine(Math.Round(Speed, 1));
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override AntChannelProfile getDefaultSearchProfile()
|
||||||
|
{
|
||||||
|
//throw new NotImplementedException();
|
||||||
|
|
||||||
|
return new AntChannelProfile()
|
||||||
|
{
|
||||||
|
rfOffset = 57,
|
||||||
|
transType = 0,
|
||||||
|
deviceType = 123,
|
||||||
|
deviceNumber = 0,
|
||||||
|
messagePeriod = 8118,
|
||||||
|
pairingEnabled = false
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -128,7 +128,7 @@ namespace Assets.Scripts.Devices.Ble.Win
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public override bool Stop()
|
public void StopGattThreads()
|
||||||
{
|
{
|
||||||
Debug.Log("停止thread");
|
Debug.Log("停止thread");
|
||||||
foreach (var item in this.gattClients.Values)
|
foreach (var item in this.gattClients.Values)
|
||||||
@ -136,9 +136,8 @@ namespace Assets.Scripts.Devices.Ble.Win
|
|||||||
item.Stop();
|
item.Stop();
|
||||||
}
|
}
|
||||||
|
|
||||||
wclBleManager.Dispose();
|
//wclBleManager.Dispose();
|
||||||
|
//return true;
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public string Test()
|
public string Test()
|
||||||
|
|||||||
@ -157,7 +157,7 @@ namespace Assets.Scripts.Ble
|
|||||||
// manager,
|
// manager,
|
||||||
// status
|
// status
|
||||||
//}, WclBleManager.log);
|
//}, WclBleManager.log);
|
||||||
callback(manager, status);
|
callback?.Invoke(manager, status);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Token: 0x04001390 RID: 5008
|
// Token: 0x04001390 RID: 5008
|
||||||
|
|||||||
@ -163,7 +163,7 @@ public class ConnectDeviceModal : PFUIPanel
|
|||||||
{
|
{
|
||||||
case SensorType.SpeedCadence:
|
case SensorType.SpeedCadence:
|
||||||
case SensorType.Cadence:
|
case SensorType.Cadence:
|
||||||
devices = App.MainDeviceAdapter.GetDevices().Where(d => d.Sensor == SensorType || (d is ICadenceDevice && d.State == DeviceState.Connected)).OrderBy(d=>d.Priority).ToList();
|
devices = App.MainDeviceAdapter.GetDevices().Where(d => (d.Sensor == SensorType.Cadence || d.Sensor == SensorType.SpeedCadence) || (d is ICadenceDevice && d.State == DeviceState.Connected)).OrderBy(d=>d.Priority).ToList();
|
||||||
break;
|
break;
|
||||||
case SensorType.HeartRate:
|
case SensorType.HeartRate:
|
||||||
devices = App.MainDeviceAdapter.GetDevices().Where(d => d.Sensor == SensorType || (d is IHeartRateDevice && d.State == DeviceState.Connected)).OrderBy(d => d.Priority).ToList();
|
devices = App.MainDeviceAdapter.GetDevices().Where(d => d.Sensor == SensorType || (d is IHeartRateDevice && d.State == DeviceState.Connected)).OrderBy(d => d.Priority).ToList();
|
||||||
|
|||||||
@ -236,9 +236,15 @@ public class DeviceView : MonoBehaviour
|
|||||||
|
|
||||||
logo.sprite = sprite0;
|
logo.sprite = sprite0;
|
||||||
noDevice.text = "NO DEVICE";
|
noDevice.text = "NO DEVICE";
|
||||||
searchState.text = "Searching...";
|
searchState.text = "Searching...";
|
||||||
|
|
||||||
var hasDevice = App.MainDeviceAdapter.GetDevices().Any(d => d.Sensor == SensorType);
|
var hasDevice = false;
|
||||||
|
if (SensorType == SensorType.SpeedCadence) {
|
||||||
|
hasDevice = App.MainDeviceAdapter.GetDevices().Any(d => d.Sensor == SensorType.SpeedCadence || d.Sensor == SensorType.Cadence);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
hasDevice = App.MainDeviceAdapter.GetDevices().Any(d => d.Sensor == SensorType);
|
||||||
|
}
|
||||||
if (hasDevice)
|
if (hasDevice)
|
||||||
{
|
{
|
||||||
mSearchButton.SetActive(false);
|
mSearchButton.SetActive(false);
|
||||||
@ -385,6 +391,10 @@ public class DeviceView : MonoBehaviour
|
|||||||
AbstractDevice GetCurrentDevice()
|
AbstractDevice GetCurrentDevice()
|
||||||
{
|
{
|
||||||
//return AntConnector.Instance().discoveredDevices.FirstOrDefault(d => (d.State == DeviceState.Connected || d.State == DeviceState.Connecting) && d.Sensor == SensorType);
|
//return AntConnector.Instance().discoveredDevices.FirstOrDefault(d => (d.State == DeviceState.Connected || d.State == DeviceState.Connecting) && d.Sensor == SensorType);
|
||||||
|
if(SensorType == SensorType.SpeedCadence || SensorType == SensorType.Cadence)
|
||||||
|
{
|
||||||
|
return App.MainDeviceAdapter.GetDevices().FirstOrDefault(d => (d.State == DeviceState.Connected || d.State == DeviceState.Connecting) && (d.Sensor == SensorType.SpeedCadence || d.Sensor == SensorType.Cadence));
|
||||||
|
}
|
||||||
return App.MainDeviceAdapter.GetDevices().FirstOrDefault(d => (d.State == DeviceState.Connected || d.State == DeviceState.Connecting) && d.Sensor == SensorType);
|
return App.MainDeviceAdapter.GetDevices().FirstOrDefault(d => (d.State == DeviceState.Connected || d.State == DeviceState.Connecting) && d.Sensor == SensorType);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user