diff --git a/USBHost_t36.h b/USBHost_t36.h index 39217ce..cf23d17 100644 --- a/USBHost_t36.h +++ b/USBHost_t36.h @@ -877,12 +877,18 @@ public: user_onHeartRateMonitor = f; } void onSpeedCadence(void (*f)(float speed, float distance, float rpm), uint32_t devid=0) { + profileSetup_SPDCAD(&ant.dcfg[PROFILE_SPDCAD], devid); + memset(&spdcad, 0, sizeof(spdcad)); user_onSpeedCadence = f; } void onSpeed(void (*f)(float speed, float distance), uint32_t devid=0) { + profileSetup_SPEED(&ant.dcfg[PROFILE_SPEED], devid); + memset(&spd, 0, sizeof(spd)); user_onSpeed = f; } void onCadence(void (*f)(float rpm), uint32_t devid=0) { + profileSetup_CADENCE(&ant.dcfg[PROFILE_CADENCE], devid); + memset(&cad, 0, sizeof(cad)); user_onCadence = f; } void setWheelCircumference(float meters) { diff --git a/antplus.cpp b/antplus.cpp index eaee360..d5b8537 100644 --- a/antplus.cpp +++ b/antplus.cpp @@ -1130,9 +1130,9 @@ void AntPlus::payload_SPDCAD(TDCONFIG *cfg, const uint8_t *data, const size_t da uint16_t speedTime = data[5] | (data[6] << 8); uint16_t speedCt = data[7] | (data[8] << 8); if (cadenceTime == spdcad.previous.cadenceTime - && cadenceCt != spdcad.previous.cadenceCt - && speedTime != spdcad.previous.speedTime - && speedCt != spdcad.previous.speedCt) { + && cadenceCt == spdcad.previous.cadenceCt + && speedTime == spdcad.previous.speedTime + && speedCt == spdcad.previous.speedCt) { return; // no change } uint16_t cadence = (60 * (cadenceCt - spdcad.previous.cadenceCt) * 1024) / (cadenceTime - spdcad.previous.cadenceTime);