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(); }
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); }
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); }
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; }