TcxLap * Edge305Device::getLapHeader(D1011 * lapData) { TcxLap * singleLap = new TcxLap(); //TODO: Think about letting TcxLap calculate that itself uint32 dur = lapData->total_time; stringstream ss; int hun = dur % 100; dur -= hun; dur /= 100; ss << dur << "." << hun ; singleLap->setTotalTimeSeconds(ss.str()); ss.str(""); ss << lapData->total_dist; singleLap->setDistanceMeters(ss.str()); ss.str(""); ss << lapData->max_speed; singleLap->setMaximumSpeed(ss.str()); ss.str(""); ss << lapData->calories; singleLap->setCalories(ss.str()); if ( lapData->avg_heart_rate != 0 ) { ss.str(""); ss << (unsigned int)(lapData->avg_heart_rate); singleLap->setAverageHeartRateBpm(ss.str()); } if ( lapData->max_heart_rate != 0 ) { ss.str(""); ss << (unsigned int)(lapData->max_heart_rate); singleLap->setMaximumHeartRateBpm(ss.str()); } if (lapData->intensity == D1001_active) { singleLap->setIntensity(TrainingCenterDatabase::Active); } else { singleLap->setIntensity(TrainingCenterDatabase::Resting); } if (this->runType == 1) { singleLap->setCadenceSensorType(TrainingCenterDatabase::Footpod); } else { singleLap->setCadenceSensorType(TrainingCenterDatabase::Bike); } if ( lapData->avg_cadence != 0xff ) { ss.str(""); ss << (unsigned int)(lapData->avg_cadence); singleLap->setCadence(ss.str()); } switch (lapData->intensity) { case D1011_manual: singleLap->setTriggerMethod(TrainingCenterDatabase::Manual); break; case D1011_distance: singleLap->setTriggerMethod(TrainingCenterDatabase::Distance); break; case D1011_location: singleLap->setTriggerMethod(TrainingCenterDatabase::Location); break; case D1011_time: singleLap->setTriggerMethod(TrainingCenterDatabase::Time); break; case D1011_heart_rate: singleLap->setTriggerMethod(TrainingCenterDatabase::HeartRate); break; } return singleLap; }