Skip to content

Commit 075588a

Browse files
committed
Power: Add torque barycenter angle measurement
1 parent beae13f commit 075588a

1 file changed

Lines changed: 61 additions & 7 deletions

File tree

src/me/danielschaefer/sensorwrangler/sensors/AntPowerSensor.kt

Lines changed: 61 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,13 @@ import be.glever.ant.constants.AntPlusDeviceType
55
import be.glever.ant.message.AntMessage
66
import be.glever.ant.message.data.BroadcastDataMessage
77
import be.glever.ant.usb.AntUsbDevice
8+
import be.glever.antplus.common.datapage.AbstractAntPlusDataPage
89
import be.glever.antplus.common.datapage.registry.AbstractDataPageRegistry
910
import be.glever.antplus.power.PowerChannel
1011
import be.glever.antplus.power.datapage.PowerDataPageRegistry
12+
import be.glever.antplus.power.datapage.background.*
1113
import be.glever.antplus.power.datapage.main.PowerDataPage10PowerOnly
14+
import javafx.application.Platform
1215
import me.danielschaefer.sensorwrangler.Measurement
1316
import kotlin.random.Random
1417

@@ -21,10 +24,17 @@ class AntPowerSensor: AntPlusSensor<PowerChannel>() {
2124
private val cadenceMeasurement = Measurement(this, 0, Measurement.Unit.RPM).apply{
2225
description = "Cadence " + Random.nextInt(0, 100)
2326
}
24-
private val powerDistributionMeasurment = Measurement(this, 0, Measurement.Unit.PERCENTAGE).apply{
27+
private val powerDistributionMeasurement = Measurement(this, 0, Measurement.Unit.PERCENTAGE).apply{
2528
description = "Power distribution" + Random.nextInt(0, 100)
2629
}
27-
override val measurements: List<Measurement> = listOf(powerMeasurement, cadenceMeasurement, powerDistributionMeasurment)
30+
private val torqueBarycenterAngleMeasurement = Measurement(this, 0, Measurement.Unit.DEGREE).apply{
31+
description = "Torque Barycenter Angle" + Random.nextInt(0, 100)
32+
}
33+
override val measurements: List<Measurement> = listOf(
34+
powerMeasurement,
35+
cadenceMeasurement,
36+
powerDistributionMeasurement,
37+
torqueBarycenterAngleMeasurement)
2838

2939
override val registry: AbstractDataPageRegistry = PowerDataPageRegistry()
3040

@@ -38,12 +48,56 @@ class AntPowerSensor: AntPlusSensor<PowerChannel>() {
3848
removeToggleBit(payLoad)
3949

4050
val dataPage = registry.constructDataPage(payLoad)
41-
if (dataPage is PowerDataPage10PowerOnly) {
42-
powerMeasurement.addDataPoint(dataPage.instantaneousPower)
43-
cadenceMeasurement.addDataPoint(dataPage.instantaneousCadence.toDouble())
51+
Platform.runLater { addMeasurement(dataPage) }
52+
}
53+
54+
private fun addMeasurement(dataPage: AbstractAntPlusDataPage) {
55+
// TODO: Check which measurements are supported
56+
when (dataPage) {
57+
is PowerDataPage3MeasurementOutput -> {
58+
// TODO: Handle this data page
59+
dataPage.numberOfDataTypes
60+
dataPage.dataType
61+
dataPage.scaledMeasurement
62+
dataPage.timeStamp
63+
dataPage.measurement
64+
dataPage.scaleFactor
65+
}
66+
is PowerDataPage14TorqueBarycenter -> {
67+
torqueBarycenterAngleMeasurement.addDataPoint(dataPage.torqueBarycenterAngle)
68+
}
69+
is PowerDataPageE0RightForceAngle -> {
70+
// TODO: Handle this data page
71+
dataPage.torque
72+
dataPage.startAngle
73+
dataPage.endAngle
74+
dataPage.startPeakAngle
75+
dataPage.endPeakAngle
76+
}
77+
is PowerDataPageE1LeftForceAngle -> {
78+
// TODO: Handle this data page
79+
dataPage.torque
80+
dataPage.startAngle
81+
dataPage.endAngle
82+
dataPage.startPeakAngle
83+
dataPage.endPeakAngle
84+
}
85+
is PowerDataPageE2PedalPosition -> {
86+
// TODO: Handle this data page
87+
dataPage.cadence
88+
dataPage.leftPco
89+
dataPage.rightPco
90+
dataPage.riderPosition
91+
}
92+
is PowerDataPage10PowerOnly -> {
93+
powerMeasurement.addDataPoint(dataPage.instantaneousPower.toDouble())
94+
cadenceMeasurement.addDataPoint(dataPage.instantaneousCadence.toDouble())
4495

45-
if (dataPage.pedalPowerDistribution.percentage != 127)
46-
powerDistributionMeasurment.addDataPoint(dataPage.pedalPowerDistribution.percentage.toDouble())
96+
dataPage.pedalPowerDistribution?.let {
97+
if (it.percentage != 127)
98+
powerDistributionMeasurement.addDataPoint(it.percentage.toDouble())
99+
}
100+
}
47101
}
48102
}
49103

0 commit comments

Comments
 (0)