示例#1
0
FIT_UINT8 Mesg::GetFieldNumValues(const FIT_UINT8 fieldNum, const FIT_UINT16 subFieldIndex) const
{
   const Field *field = GetField(fieldNum);

   if ((field == FIT_NULL) || (!CanSupportSubField(fieldNum, subFieldIndex)))
      return 0;

   return field->GetNumValues();
}
示例#2
0
FIT_WSTRING Mesg::GetFieldSTRINGValue(const FIT_UINT8 fieldNum, const FIT_UINT8 fieldArrayIndex, const FIT_UINT16 subFieldIndex) const
{
   const Field *field = GetField(fieldNum);

   if ((field == FIT_NULL) || (!CanSupportSubField(fieldNum, subFieldIndex)))
      return FIT_WSTRING_INVALID;

   if (subFieldIndex == FIT_SUBFIELD_INDEX_ACTIVE_SUBFIELD)
      return field->GetSTRINGValue(fieldArrayIndex, GetActiveSubFieldIndex(fieldNum));
   else
      return field->GetSTRINGValue(fieldArrayIndex, subFieldIndex);
}
示例#3
0
void Mesg::SetFieldSTRINGValue(const FIT_UINT8 fieldNum, const FIT_WSTRING& value, const FIT_UINT8 fieldArrayIndex, const FIT_UINT16 subFieldIndex)
{
   if (!CanSupportSubField(fieldNum, subFieldIndex))
      return;

   Field *field = AddField(fieldNum);

   if (field == FIT_NULL)
      return;

   if (subFieldIndex == FIT_SUBFIELD_INDEX_ACTIVE_SUBFIELD)
      return field->SetSTRINGValue(value, fieldArrayIndex, GetActiveSubFieldIndex(fieldNum));
   else
      return field->SetSTRINGValue(value, fieldArrayIndex, subFieldIndex);
}
    ///////////////////////////////////////////////////////////////////////
    // Checks the validity of analog_layout field
    // Returns FIT_TRUE if field is valid
    ///////////////////////////////////////////////////////////////////////
    FIT_BOOL IsAnalogLayoutValid() const
    {
        const Field* field = GetField(1);
        if( FIT_NULL == field )
        {
            return FIT_FALSE;
        }

        if( !CanSupportSubField( field, (FIT_UINT16) Profile::WATCHFACE_SETTINGS_MESG_LAYOUT_FIELD_ANALOG_LAYOUT ) )
        {
            return FIT_FALSE;
        }

        return field->IsValueValid(0, (FIT_UINT16) Profile::WATCHFACE_SETTINGS_MESG_LAYOUT_FIELD_ANALOG_LAYOUT);
    }
    ///////////////////////////////////////////////////////////////////////
    // Checks the validity of heart_rate_local_device_type field
    // Returns FIT_TRUE if field is valid
    ///////////////////////////////////////////////////////////////////////
    FIT_BOOL IsHeartRateLocalDeviceTypeValid() const
    {
        const Field* field = GetField(20);
        if( FIT_NULL == field )
        {
            return FIT_FALSE;
        }

        if( !CanSupportSubField( field, (FIT_UINT16) Profile::DIVE_SETTINGS_MESG_HEART_RATE_SOURCE_FIELD_HEART_RATE_LOCAL_DEVICE_TYPE ) )
        {
            return FIT_FALSE;
        }

        return field->IsValueValid(0, (FIT_UINT16) Profile::DIVE_SETTINGS_MESG_HEART_RATE_SOURCE_FIELD_HEART_RATE_LOCAL_DEVICE_TYPE);
    }
示例#6
0
const Field* Mesg::GetField(const std::string& name) const
{
   for (int i = 0; i < (int)fields.size(); i++)
   {
      if (fields[i].GetName().compare(name) == 0)
         return &fields[i];

      for (int j = 0; j < (int)fields[i].GetNumSubFields(); j++)
      {
         if ((fields[i].GetName(j).compare(name) == 0) && CanSupportSubField(&(fields[i]),j))
            return &fields[i];
      }
   }

   return FIT_NULL;
}