changed IDataConverter to IDataReceiver

This commit is contained in:
shinichi
2020-09-23 13:22:14 +02:00
parent e315e1cf3f
commit fd36e420d1
4 changed files with 51 additions and 45 deletions

View File

@@ -4,6 +4,7 @@ using System.Text;
using Avans.TI.BLE; using Avans.TI.BLE;
using System.Threading; using System.Threading;
using System.Security.Cryptography; using System.Security.Cryptography;
using ProftaakRH;
namespace Hardware namespace Hardware
{ {
@@ -12,7 +13,7 @@ namespace Hardware
/// </summary> /// </summary>
class BLEHandler class BLEHandler
{ {
IDataConverter dataConverter; IDataReceiver dataReceiver;
private BLE bleBike; private BLE bleBike;
private BLE bleHeart; private BLE bleHeart;
public bool Running { get; set; } public bool Running { get; set; }
@@ -20,10 +21,10 @@ namespace Hardware
/// <summary> /// <summary>
/// Makes a new BLEHandler object /// Makes a new BLEHandler object
/// </summary> /// </summary>
/// <param name="dataConverter">the dataconverter object</param> /// <param name="dataReceiver">the dataconverter object</param>
public BLEHandler(IDataConverter dataConverter) public BLEHandler(IDataReceiver dataReceiver)
{ {
this.dataConverter = dataConverter; this.dataReceiver = dataReceiver;
} }
/// <summary> /// <summary>
@@ -124,11 +125,11 @@ namespace Hardware
{ {
byte[] payload = new byte[8]; byte[] payload = new byte[8];
Array.Copy(e.Data, 4, payload, 0, 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") else if (e.ServiceName == "00002a37-0000-1000-8000-00805f9b34fb")
{ {
this.dataConverter.BPM(e.Data); this.dataReceiver.BPM(e.Data);
} }
else else
{ {

View File

@@ -1,4 +1,5 @@
using LibNoise.Primitive; using LibNoise.Primitive;
using ProftaakRH;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
@@ -11,7 +12,7 @@ namespace Hardware.Simulators
{ {
class BikeSimulator : IHandler class BikeSimulator : IHandler
{ {
IDataConverter dataConverter; IDataReceiver dataReceiver;
private int elapsedTime = 0; private int elapsedTime = 0;
private int eventCounter = 0; private int eventCounter = 0;
private double distanceTraveled = 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() public void StartSimulation()
{ {
@@ -41,16 +42,16 @@ namespace Hardware.Simulators
float x = 0.0f; float x = 0.0f;
//Perlin for Random values //Perlin for Random values
ImprovedPerlin improvedPerlin = new ImprovedPerlin(0,LibNoise.NoiseQuality.Best); ImprovedPerlin improvedPerlin = new ImprovedPerlin(0, LibNoise.NoiseQuality.Best);
while (true) while (true)
{ {
CalculateVariables(improvedPerlin.GetValue(x)+1); CalculateVariables(improvedPerlin.GetValue(x) + 1);
//Simulate sending data //Simulate sending data
dataConverter.Bike(GenerateBike0x19()); dataReceiver.Bike(GenerateBike0x19());
dataConverter.Bike(GenerateBike0x10()); dataReceiver.Bike(GenerateBike0x10());
dataConverter.BPM(GenerateHeart()); dataReceiver.BPM(GenerateHeart());
Thread.Sleep(1000); Thread.Sleep(1000);
@@ -65,21 +66,21 @@ namespace Hardware.Simulators
private byte[] GenerateBike0x19() private byte[] GenerateBike0x19()
{ {
byte statByte = (byte)(powerArray[1] >> 4); 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; return bikeByte;
} }
//Generate an ANT message for page 0x10 //Generate an ANT message for page 0x10
private byte[] GenerateBike0x10() 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; return bikeByte;
} }
//Generate an ANT message for BPM //Generate an ANT message for BPM
private byte[] GenerateHeart() private byte[] GenerateHeart()
{ {
byte[] hartByte = { 0x00, Convert.ToByte(BPM)}; byte[] hartByte = { 0x00, Convert.ToByte(BPM) };
return hartByte; return hartByte;
} }
@@ -114,13 +115,13 @@ namespace Hardware.Simulators
//Input perlin value //Input perlin value
private void CalculateVariables(float perlin) private void CalculateVariables(float perlin)
{ {
this.speed = perlin * 5 / 0.01 ; this.speed = perlin * 5 / 0.01;
short sped = (short)speed; short sped = (short)speed;
speedArray = BitConverter.GetBytes(sped); speedArray = BitConverter.GetBytes(sped);
this.distanceTraveled = (distanceTraveled+(speed*0.01)) % 256; this.distanceTraveled = (distanceTraveled + (speed * 0.01)) % 256;
this.BPM = (int) (perlin * 80); this.BPM = (int)(perlin * 80);
this.cadence = (int)speed/6; this.cadence = (int)speed / 6;
this.power = ((1 + resistance) * speed)/14 % 4094; this.power = ((1 + resistance) * speed) / 14 % 4094;
this.accPower = (this.accPower + this.power) % 65536; this.accPower = (this.accPower + this.power) % 65536;
// TO DO power to power LSB & MSN // TO DO power to power LSB & MSN
powerArray = BitConverter.GetBytes((short)this.power); powerArray = BitConverter.GetBytes((short)this.power);
@@ -131,9 +132,9 @@ namespace Hardware.Simulators
public void setResistance(byte[] bytes) public void setResistance(byte[] bytes)
{ {
//TODO check if message is correct //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;
} }
} }
} }

View File

@@ -1,4 +1,5 @@
using System; using ProftaakRH;
using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Text; using System.Text;
@@ -7,7 +8,7 @@ namespace Hardware
/// <summary> /// <summary>
/// DataConverter class that handles all conversion of received data from the BLE bike. /// DataConverter class that handles all conversion of received data from the BLE bike.
/// </summary> /// </summary>
class DataConverter : IDataConverter class DataConverter : IDataReceiver
{ {
/// <summary> /// <summary>
/// Receives, parses and displays any incoming data from the bike. /// Receives, parses and displays any incoming data from the bike.
@@ -37,7 +38,7 @@ namespace Hardware
Console.WriteLine($"Speed is : {input * 0.01}m/s (Range 65.534m/4)"); Console.WriteLine($"Speed is : {input * 0.01}m/s (Range 65.534m/4)");
if (bytes[6] != 0xFF) 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; break;
case 0x19: case 0x19:
@@ -51,7 +52,7 @@ namespace Hardware
Console.WriteLine($"Accumulated power: {accumPower} watt (Rollover 65536)"); 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) if (instantPower != 0xFFF)
@@ -103,13 +104,4 @@ namespace Hardware
Console.WriteLine(); Console.WriteLine();
} }
} }
/// <summary>
/// Dataconverter interface for handling data received from the bike
/// </summary>
interface IDataConverter
{
void BPM(byte[] bytes);
void Bike(byte[] bytes);
}
} }

View 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);
}
}