changed IDataConverter to IDataReceiver
This commit is contained in:
@@ -4,6 +4,7 @@ using System.Text;
|
||||
using Avans.TI.BLE;
|
||||
using System.Threading;
|
||||
using System.Security.Cryptography;
|
||||
using ProftaakRH;
|
||||
|
||||
namespace Hardware
|
||||
{
|
||||
@@ -12,7 +13,7 @@ namespace Hardware
|
||||
/// </summary>
|
||||
class BLEHandler
|
||||
{
|
||||
IDataConverter dataConverter;
|
||||
IDataReceiver dataReceiver;
|
||||
private BLE bleBike;
|
||||
private BLE bleHeart;
|
||||
public bool Running { get; set; }
|
||||
@@ -20,10 +21,10 @@ namespace Hardware
|
||||
/// <summary>
|
||||
/// Makes a new BLEHandler object
|
||||
/// </summary>
|
||||
/// <param name="dataConverter">the dataconverter object</param>
|
||||
public BLEHandler(IDataConverter dataConverter)
|
||||
/// <param name="dataReceiver">the dataconverter object</param>
|
||||
public BLEHandler(IDataReceiver dataReceiver)
|
||||
{
|
||||
this.dataConverter = dataConverter;
|
||||
this.dataReceiver = dataReceiver;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -119,16 +120,16 @@ namespace Hardware
|
||||
/// <param name="e">the value changed event</param>
|
||||
private void BleBike_SubscriptionValueChanged(object sender, BLESubscriptionValueChangedEventArgs e)
|
||||
{
|
||||
|
||||
|
||||
if (e.ServiceName == "6e40fec2-b5a3-f393-e0a9-e50e24dcca9e")
|
||||
{
|
||||
byte[] payload = new byte[8];
|
||||
Array.Copy(e.Data, 4, payload, 0, 8);
|
||||
this.dataConverter.Bike(payload);
|
||||
this.dataReceiver.Bike(payload);
|
||||
}
|
||||
else if (e.ServiceName == "00002a37-0000-1000-8000-00805f9b34fb")
|
||||
{
|
||||
this.dataConverter.BPM(e.Data);
|
||||
this.dataReceiver.BPM(e.Data);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -164,7 +165,7 @@ namespace Hardware
|
||||
antMessage[i] = 0xFF;
|
||||
}
|
||||
antMessage[11] = (byte)Math.Max(Math.Min(Math.Round(percentage / 0.5), 255), 0);
|
||||
|
||||
|
||||
|
||||
byte checksum = 0;
|
||||
for (int i = 0; i < 12; i++)
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using LibNoise.Primitive;
|
||||
using ProftaakRH;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
@@ -11,7 +12,7 @@ namespace Hardware.Simulators
|
||||
{
|
||||
class BikeSimulator : IHandler
|
||||
{
|
||||
IDataConverter dataConverter;
|
||||
IDataReceiver dataReceiver;
|
||||
private int elapsedTime = 0;
|
||||
private int eventCounter = 0;
|
||||
private double distanceTraveled = 0;
|
||||
@@ -29,9 +30,9 @@ namespace Hardware.Simulators
|
||||
|
||||
|
||||
|
||||
public BikeSimulator(IDataConverter dataConverter)
|
||||
public BikeSimulator(IDataReceiver dataReceiver)
|
||||
{
|
||||
this.dataConverter = dataConverter;
|
||||
this.dataReceiver = dataReceiver;
|
||||
}
|
||||
public void StartSimulation()
|
||||
{
|
||||
@@ -41,16 +42,16 @@ namespace Hardware.Simulators
|
||||
float x = 0.0f;
|
||||
|
||||
//Perlin for Random values
|
||||
ImprovedPerlin improvedPerlin = new ImprovedPerlin(0,LibNoise.NoiseQuality.Best);
|
||||
|
||||
ImprovedPerlin improvedPerlin = new ImprovedPerlin(0, LibNoise.NoiseQuality.Best);
|
||||
|
||||
while (true)
|
||||
{
|
||||
CalculateVariables(improvedPerlin.GetValue(x)+1);
|
||||
CalculateVariables(improvedPerlin.GetValue(x) + 1);
|
||||
|
||||
//Simulate sending data
|
||||
dataConverter.Bike(GenerateBike0x19());
|
||||
dataConverter.Bike(GenerateBike0x10());
|
||||
dataConverter.BPM(GenerateHeart());
|
||||
dataReceiver.Bike(GenerateBike0x19());
|
||||
dataReceiver.Bike(GenerateBike0x10());
|
||||
dataReceiver.BPM(GenerateHeart());
|
||||
|
||||
Thread.Sleep(1000);
|
||||
|
||||
@@ -65,21 +66,21 @@ namespace Hardware.Simulators
|
||||
private byte[] GenerateBike0x19()
|
||||
{
|
||||
byte statByte = (byte)(powerArray[1] >> 4);
|
||||
byte[] bikeByte = { 0x19, Convert.ToByte(eventCounter%256), Convert.ToByte(cadence%254), accPowerArray[0], accPowerArray[1], powerArray[0], statByte, 0x20 };
|
||||
byte[] bikeByte = { 0x19, Convert.ToByte(eventCounter % 256), Convert.ToByte(cadence % 254), accPowerArray[0], accPowerArray[1], powerArray[0], statByte, 0x20 };
|
||||
return bikeByte;
|
||||
}
|
||||
|
||||
//Generate an ANT message for page 0x10
|
||||
private byte[] GenerateBike0x10()
|
||||
{
|
||||
byte[] bikeByte = { 0x10, Convert.ToByte(equipmentType), Convert.ToByte(elapsedTime*4%64), Convert.ToByte(distanceTraveled), speedArray[0], speedArray[1], Convert.ToByte(BPM), 0xFF };
|
||||
byte[] bikeByte = { 0x10, Convert.ToByte(equipmentType), Convert.ToByte(elapsedTime * 4 % 64), Convert.ToByte(distanceTraveled), speedArray[0], speedArray[1], Convert.ToByte(BPM), 0xFF };
|
||||
return bikeByte;
|
||||
}
|
||||
|
||||
//Generate an ANT message for BPM
|
||||
private byte[] GenerateHeart()
|
||||
{
|
||||
byte[] hartByte = { 0x00, Convert.ToByte(BPM)};
|
||||
byte[] hartByte = { 0x00, Convert.ToByte(BPM) };
|
||||
return hartByte;
|
||||
}
|
||||
|
||||
@@ -114,13 +115,13 @@ namespace Hardware.Simulators
|
||||
//Input perlin value
|
||||
private void CalculateVariables(float perlin)
|
||||
{
|
||||
this.speed = perlin * 5 / 0.01 ;
|
||||
this.speed = perlin * 5 / 0.01;
|
||||
short sped = (short)speed;
|
||||
speedArray = BitConverter.GetBytes(sped);
|
||||
this.distanceTraveled = (distanceTraveled+(speed*0.01)) % 256;
|
||||
this.BPM = (int) (perlin * 80);
|
||||
this.cadence = (int)speed/6;
|
||||
this.power = ((1 + resistance) * speed)/14 % 4094;
|
||||
this.distanceTraveled = (distanceTraveled + (speed * 0.01)) % 256;
|
||||
this.BPM = (int)(perlin * 80);
|
||||
this.cadence = (int)speed / 6;
|
||||
this.power = ((1 + resistance) * speed) / 14 % 4094;
|
||||
this.accPower = (this.accPower + this.power) % 65536;
|
||||
// TO DO power to power LSB & MSN
|
||||
powerArray = BitConverter.GetBytes((short)this.power);
|
||||
@@ -131,9 +132,9 @@ namespace Hardware.Simulators
|
||||
public void setResistance(byte[] bytes)
|
||||
{
|
||||
//TODO check if message is correct
|
||||
if(bytes.Length == 13)
|
||||
if (bytes.Length == 13)
|
||||
{
|
||||
this.resistance = Convert.ToDouble(bytes[11])/2;
|
||||
this.resistance = Convert.ToDouble(bytes[11]) / 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using System;
|
||||
using ProftaakRH;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
@@ -7,7 +8,7 @@ namespace Hardware
|
||||
/// <summary>
|
||||
/// DataConverter class that handles all conversion of received data from the BLE bike.
|
||||
/// </summary>
|
||||
class DataConverter : IDataConverter
|
||||
class DataConverter : IDataReceiver
|
||||
{
|
||||
/// <summary>
|
||||
/// Receives, parses and displays any incoming data from the bike.
|
||||
@@ -22,7 +23,7 @@ namespace Hardware
|
||||
else
|
||||
if (bytes.Length == 8)
|
||||
{
|
||||
|
||||
|
||||
switch (bytes[0])
|
||||
{
|
||||
case 0x10:
|
||||
@@ -37,7 +38,7 @@ namespace Hardware
|
||||
Console.WriteLine($"Speed is : {input * 0.01}m/s (Range 65.534m/4)");
|
||||
if (bytes[6] != 0xFF)
|
||||
{
|
||||
Console.WriteLine("Heart rate byte: {0}", Convert.ToString(bytes[6],2));
|
||||
Console.WriteLine("Heart rate byte: {0}", Convert.ToString(bytes[6], 2));
|
||||
}
|
||||
break;
|
||||
case 0x19:
|
||||
@@ -45,17 +46,17 @@ namespace Hardware
|
||||
if (bytes[2] != 0xFF)
|
||||
{
|
||||
Console.WriteLine($"Instantaneous cadence: {bytes[2]} RPM (Range 0-254)");
|
||||
|
||||
|
||||
}
|
||||
int accumPower = bytes[3] | (bytes[4] << 8);
|
||||
|
||||
|
||||
Console.WriteLine($"Accumulated power: {accumPower} watt (Rollover 65536)");
|
||||
|
||||
int instantPower = (bytes[5]) | (bytes[6] & 0b00001111)<<8;
|
||||
|
||||
int instantPower = (bytes[5]) | (bytes[6] & 0b00001111) << 8;
|
||||
|
||||
|
||||
if (instantPower != 0xFFF)
|
||||
Console.WriteLine($"Instant power: {instantPower} watt (Range 0-4094)");
|
||||
Console.WriteLine($"Instant power: {instantPower} watt (Range 0-4094)");
|
||||
|
||||
int trainerStatus = bytes[6] & 0b11110000; // bit 4-7
|
||||
int flags = bytes[7] >> 4;
|
||||
@@ -103,13 +104,4 @@ namespace Hardware
|
||||
Console.WriteLine();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Dataconverter interface for handling data received from the bike
|
||||
/// </summary>
|
||||
interface IDataConverter
|
||||
{
|
||||
void BPM(byte[] bytes);
|
||||
void Bike(byte[] bytes);
|
||||
}
|
||||
}
|
||||
|
||||
12
ProftaakRH/IDataReceiver.cs
Normal file
12
ProftaakRH/IDataReceiver.cs
Normal file
@@ -0,0 +1,12 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace ProftaakRH
|
||||
{
|
||||
interface IDataReceiver
|
||||
{
|
||||
void BPM(byte[] bytes);
|
||||
void Bike(byte[] bytes);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user