Merge remote-tracking branch 'origin/dev' into dev

This commit is contained in:
2015-11-01 17:17:16 +01:00
@@ -11,38 +11,74 @@ namespace ErgometerApplication
private int weight;
private int length;
private int age;
private char gender;
private enum state {WARMUP, WORKLOAD1, WORKLOAD2, WORKLOAD3, WORKLOAD4, COOLINGDOWN};
private enum state {WARMUP, WORKLOAD, COOLINGDOWN};
private state currentstate;
private int stateStarted;
private int stateHearthbeat;
public ErgometerTest(int weight, int length , int age)
public ErgometerTest(int weight, int length , int age, char gender)
{
this.weight = weight;
this.length = length;
this.age = age;
this.currentstate = state.WARMUP;
this.gender = gender;
currentstate = state.WARMUP;
stateStarted = 0;
}
private double CalculateMaximumHeartRate()
{
return 208 - (0.7 * age);
}
public void timerTick()
{
if(currentstate == state.WARMUP)
switch(currentstate)
{
if (MainClient.Metingen.Last().Seconds > 30)
{
List<ErgometerLibrary.Meting> last10 = MainClient.Metingen.GetRange(MainClient.Metingen.Count - 10, 10);
int max = FindMaxValue(MainClient.Metingen, x => x.HeartBeat);
int min = FindMaxValue(MainClient.Metingen, x => x.HeartBeat);
};
case state.WARMUP:
if (MainClient.Metingen.Last().Seconds > 30)
{
List<ErgometerLibrary.Meting> last10 = MainClient.Metingen.GetRange(MainClient.Metingen.Count - 10, 10);
int max = FindMaxValue(MainClient.Metingen, x => x.HeartBeat);
int min = FindMaxValue(MainClient.Metingen, x => x.HeartBeat);
MainClient.ComPort.Write("SET PW 25");
if(max - min > 20) //Hartslag niet stabiel
{
return;
}
else
{
currentstate = state.WORKLOAD;
stateStarted = MainClient.Metingen.Last().Seconds;
}
}
break;
case state.WORKLOAD:
if (stateStarted - MainClient.Metingen.Last().Seconds > 180)
{
//Bereken nieuwe kracht
//Zet nieuwe kracht
//State started weer op de huidige tijd zetten
//Checken of het niet groter dan 75% is
//stateHeartbeat weer op 0 zetten
}
else if (stateStarted - MainClient.Metingen.Last().Seconds > 160 && stateHearthbeat != 0)
{
List<ErgometerLibrary.Meting> last80 = MainClient.Metingen.GetRange(MainClient.Metingen.Count - 80, 80);
stateHearthbeat = FindAvergeValue(MainClient.Metingen, x => x.HeartBeat);
}
break;
case state.COOLINGDOWN:
break;
}
}
// HELPER FUNCTIONS //
private double CalculateMaximumHeartRate()
{
return 208 - (0.7 * age);
}
public int FindMaxValue<T>(List<T> list, Converter<T, int> projection)
{
if (list.Count == 0)
@@ -78,5 +114,19 @@ namespace ErgometerApplication
}
return minValue;
}
public int FindAvergeValue<T>(List<T> list, Converter<T, int> projection)
{
if (list.Count == 0)
{
throw new InvalidOperationException("Empty list");
}
int totalvalue = 0;
foreach (T item in list)
{
totalvalue += projection(item);
}
return totalvalue / list.Count;
}
}
}