Beispiel #1
0
inline int Reaching::TargetReached(){
  cart_vec_t& dist;
  float d;
  v_sub(target,pos_cart,dist);
  d = v_length(dist);
  return d<tol && HasStopped();
}
Beispiel #2
0
ActivityAttributeType Activity::QueryActivityAttribute(const std::string& attributeName) const
{
	ActivityAttributeType result;

	result.startTime = 0;
	result.endTime = 0;
	result.unitSystem = UnitMgr::GetUnitSystem();

	if (attributeName.compare(ACTIVITY_ATTRIBUTE_START_TIME) == 0)
	{
		result.value.intVal = m_startTimeSecs;
		result.valueType = TYPE_INTEGER;
		result.measureType = MEASURE_TIME;
		result.startTime = m_startTimeSecs;
		result.endTime = 0;
		result.valid = m_startTimeSecs > 0;
	}
	else if (attributeName.compare(ACTIVITY_ATTRIBUTE_END_TIME) == 0)
	{
		result.value.intVal = m_endTimeSecs;
		result.valueType = TYPE_INTEGER;
		result.measureType = MEASURE_TIME;
		result.startTime = m_startTimeSecs;
		result.endTime = m_endTimeSecs;
		result.valid = m_endTimeSecs > 0;
	}
	else if (attributeName.compare(ACTIVITY_ATTRIBUTE_HEART_RATE) == 0)
	{
		uint64_t timeSinceLastUpdate = 0;
		if (!HasStopped())
			timeSinceLastUpdate = CurrentTimeInMs() - m_lastHeartRateUpdateTime;

		SegmentType hr = CurrentHeartRate();
		result.value.doubleVal = hr.value.doubleVal;
		result.valueType = TYPE_DOUBLE;
		result.measureType = MEASURE_BPM;
		result.startTime = hr.startTime;
		result.endTime = hr.endTime;
		result.valid = (m_numHeartRateReadings > 0) && (timeSinceLastUpdate < 3000);
	}
	else if (attributeName.compare(ACTIVITY_ATTRIBUTE_AVG_HEART_RATE) == 0)
	{
		result.value.doubleVal = AverageHeartRate();
		result.valueType = TYPE_DOUBLE;
		result.measureType = MEASURE_BPM;
		result.valid = m_numHeartRateReadings > 0;
	}
	else if (attributeName.compare(ACTIVITY_ATTRIBUTE_MAX_HEART_RATE) == 0)
	{
		SegmentType hr = MaxHeartRate();
		result.value.doubleVal = hr.value.doubleVal;
		result.valueType = TYPE_DOUBLE;
		result.measureType = MEASURE_BPM;
		result.startTime = hr.startTime;
		result.endTime = hr.endTime;
		result.valid = m_numHeartRateReadings > 0;
	}
	else if (attributeName.compare(ACTIVITY_ATTRIBUTE_HEART_RATE_ZONE) == 0)
	{
		result.value.doubleVal = HeartRateZone();
		result.valueType = TYPE_DOUBLE;
		result.measureType = MEASURE_PERCENTAGE;
		result.valid = m_numHeartRateReadings > 0;
	}
	else if (attributeName.compare(ACTIVITY_ATTRIBUTE_ELAPSED_TIME) == 0)
	{
		result.value.timeVal = ElapsedTimeInSeconds();
		result.valueType = TYPE_TIME;
		result.measureType = MEASURE_TIME;
		result.valid = true;
	}
	else if (attributeName.compare(ACTIVITY_ATTRIBUTE_CALORIES_BURNED) == 0)
	{
		result.value.doubleVal = CaloriesBurned();
		result.valueType = TYPE_DOUBLE;
		result.measureType = MEASURE_CALORIES;
		result.valid = true;
	}
	else if (attributeName.compare(ACTIVITY_ATTRIBUTE_X) == 0)
	{
		try
		{
			if (m_lastAccelReading.reading.count(AXIS_NAME_X) > 0)
			{
				result.value.doubleVal = m_lastAccelReading.reading.at(AXIS_NAME_X);
				result.valueType = TYPE_DOUBLE;
				result.measureType = MEASURE_G;
				result.valid = true;
			}
			else
			{
				result.valid = false;
			}
		}
		catch (...)
		{
			result.valid = false;
		}
	}
	else if (attributeName.compare(ACTIVITY_ATTRIBUTE_Y) == 0)
	{
		try
		{
			if (m_lastAccelReading.reading.count(AXIS_NAME_Y) > 0)
			{
				result.value.doubleVal = m_lastAccelReading.reading.at(AXIS_NAME_Y);
				result.valueType = TYPE_DOUBLE;
				result.measureType = MEASURE_G;
				result.valid = true;
			}
			else
			{
				result.valid = false;
			}
		}
		catch (...)
		{
			result.valid = false;
		}
	}
	else if (attributeName.compare(ACTIVITY_ATTRIBUTE_Z) == 0)
	{
		try
		{
			if (m_lastAccelReading.reading.count(AXIS_NAME_Z) > 0)
			{
				result.value.doubleVal = m_lastAccelReading.reading.at(AXIS_NAME_Z);
				result.valueType = TYPE_DOUBLE;
				result.measureType = MEASURE_G;
				result.valid = true;
			}
			else
			{
				result.valid = false;
			}
		}
		catch (...)
		{
			result.valid = false;
		}
	}
	else if (attributeName.compare(ACTIVITY_ATTRIBUTE_ADDITIONAL_WEIGHT) == 0)
	{
		result.value.doubleVal = AdditionalWeightUsedKg();
		result.valueType = TYPE_DOUBLE;
		result.measureType = MEASURE_WEIGHT;
		result.valid = true;
	}
	else
	{
		result.valueType = TYPE_NOT_SET;
		result.valid = false;
	}
	return result;
}