@@ -162,6 +162,11 @@ void qfit::save(const QString &filename, QList<SessionLine> session, BLUETOOTH_T
162162 double watt_sum = 0 ;
163163 int watt_count = 0 ;
164164
165+ // Variables for jump rope cadence
166+ double cadence_sum = 0 ;
167+ int cadence_count = 0 ;
168+ uint8_t max_cadence = 0 ;
169+
165170 for (int i = firstRealIndex; i < session.length (); i++) {
166171 if (session.at (i).coordinate .isValid ()) {
167172 gps_data = true ;
@@ -204,6 +209,15 @@ void qfit::save(const QString &filename, QList<SessionLine> session, BLUETOOTH_T
204209 watt_sum += session.at (i).watt ;
205210 watt_count++;
206211 }
212+
213+ // Collect cadence data for jump rope
214+ if (type == JUMPROPE && session.at (i).cadence > 0 ) {
215+ cadence_sum += session.at (i).cadence ;
216+ cadence_count++;
217+ if (session.at (i).cadence > max_cadence) {
218+ max_cadence = session.at (i).cadence ;
219+ }
220+ }
207221 }
208222
209223 if (speed_count > 0 ) {
@@ -448,6 +462,15 @@ void qfit::save(const QString &filename, QList<SessionLine> session, BLUETOOTH_T
448462 sessionMesg.SetSubSport (FIT_SUB_SPORT_GENERIC );
449463 if (session.last ().stepCount )
450464 sessionMesg.SetJumpCount (session.last ().stepCount );
465+ // Total cycles
466+ if (session.last ().stepCount )
467+ sessionMesg.SetTotalCycles (session.last ().stepCount );
468+ // Avg cadence (jump rate)
469+ if (cadence_count > 0 )
470+ sessionMesg.SetAvgCadence ((uint8_t )(cadence_sum / cadence_count));
471+ // Max cadence (max jump rate)
472+ if (max_cadence > 0 )
473+ sessionMesg.SetMaxCadence (max_cadence);
451474 } else {
452475
453476 sessionMesg.SetSport (FIT_SPORT_CYCLING );
0 commit comments