1
0
mirror of https://codeberg.org/Freeyourgadget/Gadgetbridge synced 2024-06-09 22:57:54 +02:00
Gadgetbridge/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/vivomovehr/fit/FitMessageDefinitions.java
Mormegil 3a58314db6 Garmin Vivomove HR support
- communication protocols
- device support implementation
- download FIT file storage

Features:
- basic connectivity: time sync, battery status, HW/FW version info
- real-time activity tracking
- fitness data sync
- find the device, find the phone
- factory reset

Features implemented but not working:
- notifications: fully implemented, seem to communicate correctly, but not shown on watch

Features implemented partially (not expected to work now):
- weather information (and in future possibly weather alerts)
- music info
- firmware update: only the initial file upload implemented, not used

Things to improve/change:
- Device name hardcoded in `VivomoveHrCoordinator.getSupportedType`, service UUIDs not available
- Download FIT file storage: Should be store (and offer the user to export?) the FIT data forever?
- Obviously, various code improvements, cleanup, etc.
2023-07-20 20:30:14 +00:00

647 lines
56 KiB
Java

package nodomain.freeyourgadget.gadgetbridge.service.devices.vivomovehr.fit;
import java.util.Arrays;
import java.util.List;
public class FitMessageDefinitions {
public static final int MESSAGE_ID_CONNECTIVITY = 0;
public static final int MESSAGE_ID_WEATHER_ALERT = 5;
public static final int MESSAGE_ID_WEATHER_CONDITIONS = 6;
public static final int MESSAGE_ID_DEVICE_SETTINGS = 7;
public static final String FIT_MESSAGE_NAME_FILE_ID = "file_id";
public static final String FIT_MESSAGE_NAME_CAPABILITIES = "capabilities";
public static final String FIT_MESSAGE_NAME_DEVICE_SETTINGS = "device_settings";
public static final String FIT_MESSAGE_NAME_USER_PROFILE = "user_profile";
public static final String FIT_MESSAGE_NAME_EVENT = "event";
public static final String FIT_MESSAGE_NAME_DEVICE_INFO = "device_info";
public static final String FIT_MESSAGE_NAME_DEBUG = "debug";
public static final String FIT_MESSAGE_NAME_SOFTWARE = "software";
public static final String FIT_MESSAGE_NAME_FILE_CAPABILITIES = "file_capabilities";
public static final String FIT_MESSAGE_NAME_FILE_CREATOR = "file_creator";
public static final String FIT_MESSAGE_NAME_MONITORING = "monitoring";
public static final String FIT_MESSAGE_NAME_MONITORING_INFO = "monitoring_info";
public static final String FIT_MESSAGE_NAME_CONNECTIVITY = "connectivity";
public static final String FIT_MESSAGE_NAME_WEATHER_CONDITIONS = "weather_conditions";
public static final String FIT_MESSAGE_NAME_WEATHER_ALERT = "weather_alert";
public static final String FIT_MESSAGE_NAME_FILE_DESCRIPTION = "file_description";
public static final String FIT_MESSAGE_NAME_OHR_SETTINGS = "ohr_settings";
public static final String FIT_MESSAGE_NAME_EXD_SCREEN_CONFIGURATION = "exd_screen_configuration";
public static final String FIT_MESSAGE_NAME_EXD_DATA_FIELD_CONFIGURATION = "exd_data_field_configuration";
public static final String FIT_MESSAGE_NAME_EXD_DATA_CONCEPT_CONFIGURATION = "exd_data_concept_configuration";
public static final String FIT_MESSAGE_NAME_MONITORING_HR_DATA = "monitoring_hr_data";
public static final String FIT_MESSAGE_NAME_ALARM_SETTINGS = "alarm_settings";
public static final String FIT_MESSAGE_NAME_STRESS_LEVEL = "stress_level";
public static final String FIT_MESSAGE_NAME_MANUAL_STRESS_LEVEL = "manual_stress_level";
public static final String FIT_MESSAGE_NAME_MAX_MET_DATA = "max_met_data";
public static final String FIT_MESSAGE_NAME_WHR_DIAG = "whr_diag";
public static final String FIT_MESSAGE_NAME_METRICS_INFO = "metrics_info";
public static final String FIT_MESSAGE_NAME_PAGES_MAP = "pages_map";
public static final String FIT_MESSAGE_NAME_NEURAL_NETWORK_INFO = "neural_network_info";
public static final String FIT_MESSAGE_NAME_NEURAL_NETWORK_DATA = "neural_network_data";
public static final String FIT_MESSAGE_NAME_SLEEP_LEVEL = "sleep_level";
public static final String FIT_MESSAGE_NAME_END_OF_FILE = "end_of_file";
public static final int FIT_MESSAGE_NUMBER_FILE_ID = 0;
public static final int FIT_MESSAGE_NUMBER_CAPABILITIES = 1;
public static final int FIT_MESSAGE_NUMBER_DEVICE_SETTINGS = 2;
public static final int FIT_MESSAGE_NUMBER_USER_PROFILE = 3;
public static final int FIT_MESSAGE_NUMBER_EVENT = 21;
public static final int FIT_MESSAGE_NUMBER_DEVICE_INFO = 23;
public static final int FIT_MESSAGE_NUMBER_DEBUG = 24;
public static final int FIT_MESSAGE_NUMBER_SOFTWARE = 35;
public static final int FIT_MESSAGE_NUMBER_FILE_CAPABILITIES = 37;
public static final int FIT_MESSAGE_NUMBER_FILE_CREATOR = 49;
public static final int FIT_MESSAGE_NUMBER_MONITORING = 55;
public static final int FIT_MESSAGE_NUMBER_MONITORING_INFO = 103;
public static final int FIT_MESSAGE_NUMBER_CONNECTIVITY = 127;
public static final int FIT_MESSAGE_NUMBER_WEATHER_CONDITIONS = 128;
public static final int FIT_MESSAGE_NUMBER_WEATHER_ALERT = 129;
public static final int FIT_MESSAGE_NUMBER_FILE_DESCRIPTION = 138;
public static final int FIT_MESSAGE_NUMBER_OHR_SETTINGS = 188;
public static final int FIT_MESSAGE_NUMBER_EXD_SCREEN_CONFIGURATION = 200;
public static final int FIT_MESSAGE_NUMBER_EXD_DATA_FIELD_CONFIGURATION = 201;
public static final int FIT_MESSAGE_NUMBER_EXD_DATA_CONCEPT_CONFIGURATION = 202;
public static final int FIT_MESSAGE_NUMBER_MONITORING_HR_DATA = 211;
public static final int FIT_MESSAGE_NUMBER_ALARM_SETTINGS = 222;
public static final int FIT_MESSAGE_NUMBER_STRESS_LEVEL = 227;
public static final int FIT_MESSAGE_NUMBER_MANUAL_STRESS_LEVEL = 228;
public static final int FIT_MESSAGE_NUMBER_MAX_MET_DATA = 229;
public static final int FIT_MESSAGE_NUMBER_WHR_DIAG = 233;
public static final int FIT_MESSAGE_NUMBER_METRICS_INFO = 241;
public static final int FIT_MESSAGE_NUMBER_PAGES_MAP = 254;
public static final int FIT_MESSAGE_NUMBER_NEURAL_NETWORK_INFO = 273;
public static final int FIT_MESSAGE_NUMBER_NEURAL_NETWORK_DATA = 274;
public static final int FIT_MESSAGE_NUMBER_SLEEP_LEVEL = 275;
public static final int FIT_MESSAGE_NUMBER_END_OF_FILE = 276;
public static final FitMessageDefinition DEFINITION_FILE_ID = new FitMessageDefinition(FIT_MESSAGE_NAME_FILE_ID, FIT_MESSAGE_NUMBER_FILE_ID, -1,
new FitMessageFieldDefinition("type", 0, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("manufacturer", 1, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("product", 2, 2, FitFieldBaseType.UINT16, null),
new FitMessageFieldDefinition("serial_number", 3, 4, FitFieldBaseType.UINT32Z, null),
new FitMessageFieldDefinition("time_created", 4, 4, FitFieldBaseType.UINT32, null),
new FitMessageFieldDefinition("number", 5, 2, FitFieldBaseType.UINT16, null),
new FitMessageFieldDefinition("manufacturer_partner", 6, 2, FitFieldBaseType.UINT16, null),
new FitMessageFieldDefinition("product_name", 8, 20, FitFieldBaseType.STRING, null)
);
public static final FitMessageDefinition DEFINITION_CAPABILITIES = new FitMessageDefinition(FIT_MESSAGE_NAME_CAPABILITIES, FIT_MESSAGE_NUMBER_CAPABILITIES, -1,
new FitMessageFieldDefinition("languages", 0, 1, FitFieldBaseType.UINT8Z, null),
new FitMessageFieldDefinition("sports", 1, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("workouts_supported", 21, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("activity_profile_supported", 22, 1, FitFieldBaseType.ENUM, FitBool.FALSE),
new FitMessageFieldDefinition("connectivity_supported", 23, 4, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("wifi_supported", 24, 1, FitFieldBaseType.ENUM, FitBool.FALSE),
new FitMessageFieldDefinition("segments_supported", 25, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("audio_prompts_supported", 26, 1, FitFieldBaseType.ENUM, null)
);
public static final FitMessageDefinition DEFINITION_DEVICE_SETTINGS = new FitMessageDefinition(FIT_MESSAGE_NAME_DEVICE_SETTINGS, FIT_MESSAGE_NUMBER_DEVICE_SETTINGS, MESSAGE_ID_DEVICE_SETTINGS,
new FitMessageFieldDefinition("active_time_zone", 0, 1, FitFieldBaseType.UINT8, null),
new FitMessageFieldDefinition("utc_offset", 1, 4, FitFieldBaseType.UINT32, null),
new FitMessageFieldDefinition("time_offset", 2, 4, FitFieldBaseType.UINT32, 1, 0, "s", null),
new FitMessageFieldDefinition("time_daylight_savings", 3, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("time_mode", 4, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("time_zone_offset", 5, 1, FitFieldBaseType.SINT8, 1, 0, "hr", null),
new FitMessageFieldDefinition("alarm_time", 8, 2, FitFieldBaseType.UINT16, null),
new FitMessageFieldDefinition("alarm_mode", 9, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("key_tones_enabled", 10, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("message_tones_enabled", 11, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("backlight_mode", 12, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("backlight_timeout", 13, 1, FitFieldBaseType.UINT8, 1, 0, "s", null),
new FitMessageFieldDefinition("backlight_brightness", 14, 1, FitFieldBaseType.UINT8, 1, 0, "%", null),
new FitMessageFieldDefinition("display_contrast", 15, 1, FitFieldBaseType.UINT8, 1, 0, "%", null),
new FitMessageFieldDefinition("computer_beacon", 16, 1, FitFieldBaseType.ENUM, FitBool.FALSE),
new FitMessageFieldDefinition("computer_pairing", 17, 1, FitFieldBaseType.ENUM, FitBool.FALSE),
new FitMessageFieldDefinition("fitness_equipment_pairing", 18, 1, FitFieldBaseType.ENUM, FitBool.FALSE),
new FitMessageFieldDefinition("bezel_sensitivity", 19, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("gps_enabled", 21, 1, FitFieldBaseType.ENUM, FitBool.FALSE),
new FitMessageFieldDefinition("weight_scale_enabled", 22, 1, FitFieldBaseType.ENUM, FitBool.FALSE),
new FitMessageFieldDefinition("map_orientation", 23, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("map_show", 24, 1, FitFieldBaseType.ENUM, FitBool.FALSE),
new FitMessageFieldDefinition("map_show_locations", 25, 1, FitFieldBaseType.ENUM, FitBool.FALSE),
new FitMessageFieldDefinition("time_zone", 26, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("auto_shutdown", 27, 1, FitFieldBaseType.ENUM, FitBool.FALSE),
new FitMessageFieldDefinition("alarm_tone", 28, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("data_storage", 29, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("map_auto_zoom", 30, 1, FitFieldBaseType.ENUM, FitBool.FALSE),
new FitMessageFieldDefinition("map_guidance", 31, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("current_map_profile", 32, 1, FitFieldBaseType.UINT8, null),
new FitMessageFieldDefinition("current_routing_profile", 33, 1, FitFieldBaseType.UINT8, null),
new FitMessageFieldDefinition("display_mode", 34, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("first_day_of_week", 35, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("activity_tracker_enabled", 36, 1, FitFieldBaseType.ENUM, FitBool.FALSE),
new FitMessageFieldDefinition("sleep_enabled", 37, 1, FitFieldBaseType.ENUM, FitBool.FALSE),
new FitMessageFieldDefinition("wifi_auto_upload_enabled", 38, 1, FitFieldBaseType.ENUM, FitBool.FALSE),
new FitMessageFieldDefinition("clock_time", 39, 4, FitFieldBaseType.UINT32, null),
new FitMessageFieldDefinition("pages_enabled", 40, 2, FitFieldBaseType.UINT16, null),
new FitMessageFieldDefinition("recovery_advisor_enabled", 41, 1, FitFieldBaseType.ENUM, FitBool.FALSE),
new FitMessageFieldDefinition("auto_max_hr_enabled", 42, 1, FitFieldBaseType.ENUM, FitBool.FALSE),
new FitMessageFieldDefinition("clock_profile_color_enabled", 43, 1, FitFieldBaseType.ENUM, FitBool.FALSE),
new FitMessageFieldDefinition("clock_background_inverted", 44, 1, FitFieldBaseType.ENUM, FitBool.FALSE),
new FitMessageFieldDefinition("auto_goal_enabled", 45, 1, FitFieldBaseType.ENUM, FitBool.FALSE),
new FitMessageFieldDefinition("move_alert_enabled", 46, 1, FitFieldBaseType.ENUM, FitBool.FALSE),
new FitMessageFieldDefinition("date_mode", 47, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("data_recording_interval", 48, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("data_recording_value", 49, 2, FitFieldBaseType.UINT16, null),
new FitMessageFieldDefinition("vivohub_settings", 50, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("display_steps_goal_enabled", 51, 1, FitFieldBaseType.ENUM, FitBool.FALSE),
new FitMessageFieldDefinition("course_navigation_enabled", 52, 1, FitFieldBaseType.ENUM, FitBool.FALSE),
new FitMessageFieldDefinition("course_off_course_warnings_enabled", 53, 1, FitFieldBaseType.ENUM, FitBool.FALSE),
new FitMessageFieldDefinition("segment_navigation_enabled", 54, 1, FitFieldBaseType.ENUM, FitBool.FALSE),
new FitMessageFieldDefinition("display_orientation", 55, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("mounting_side", 56, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("default_page", 57, 2, FitFieldBaseType.UINT16, null),
new FitMessageFieldDefinition("autosync_min_steps", 58, 2, FitFieldBaseType.UINT16, 1, 0, "steps", null),
new FitMessageFieldDefinition("autosync_min_time", 59, 2, FitFieldBaseType.UINT16, 1, 0, "minutes", null),
new FitMessageFieldDefinition("smart_sleep_window", 60, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("gesture_detection_mode", 61, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("glonass_enabled", 62, 1, FitFieldBaseType.ENUM, FitBool.FALSE),
new FitMessageFieldDefinition("display_pace", 63, 1, FitFieldBaseType.ENUM, FitBool.FALSE),
new FitMessageFieldDefinition("display_activity_tracker_enabled", 64, 1, FitFieldBaseType.ENUM, FitBool.FALSE),
new FitMessageFieldDefinition("phone_notification_enabled", 65, 1, FitFieldBaseType.ENUM, FitBool.FALSE),
new FitMessageFieldDefinition("phone_notification_tone", 66, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("phone_notification_default_filter", 67, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("phone_notification_activity_filter", 68, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("phone_notification_activity_tone", 69, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("user_notices_enabled", 70, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("lap_key_enabled", 71, 1, FitFieldBaseType.ENUM, FitBool.FALSE),
new FitMessageFieldDefinition("features", 72, 1, FitFieldBaseType.UINT8Z, null),
new FitMessageFieldDefinition("features_mask", 73, 1, FitFieldBaseType.UINT8Z, null),
new FitMessageFieldDefinition("course_points_enabled", 74, 1, FitFieldBaseType.ENUM, FitBool.FALSE),
new FitMessageFieldDefinition("course_segments_enabled", 75, 1, FitFieldBaseType.ENUM, FitBool.FALSE),
new FitMessageFieldDefinition("map_show_track", 76, 1, FitFieldBaseType.ENUM, FitBool.FALSE),
new FitMessageFieldDefinition("map_track_color", 77, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("next_dst_change", 78, 4, FitFieldBaseType.UINT32, null),
new FitMessageFieldDefinition("dst_change_value", 79, 1, FitFieldBaseType.SINT8, 1, 0, "hours", null),
new FitMessageFieldDefinition("lactate_threshold_autodetect_enabled", 80, 1, FitFieldBaseType.ENUM, FitBool.FALSE),
new FitMessageFieldDefinition("backlight_keys", 81, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("backlight_alerts", 82, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("backlight_gesture", 83, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("bluetooth_connection_alerts_enabled", 84, 1, FitFieldBaseType.ENUM, FitBool.FALSE),
new FitMessageFieldDefinition("ftp_auto_calc_enabled", 85, 1, FitFieldBaseType.ENUM, FitBool.FALSE),
new FitMessageFieldDefinition("ble_auto_upload_enabled", 86, 1, FitFieldBaseType.ENUM, FitBool.FALSE),
new FitMessageFieldDefinition("sleep_do_not_disturb_enabled", 87, 1, FitFieldBaseType.ENUM, FitBool.FALSE),
new FitMessageFieldDefinition("backlight_smart_notifications", 88, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("auto_sync_frequency", 89, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("auto_activity_detect", 90, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("phone_notification_filters", 91, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("alarm_days", 92, 1, FitFieldBaseType.BYTE, null),
new FitMessageFieldDefinition("auto_update_app_enabled", 93, 1, FitFieldBaseType.ENUM, FitBool.FALSE),
new FitMessageFieldDefinition("number_of_screens", 94, 1, FitFieldBaseType.UINT8, null),
new FitMessageFieldDefinition("smart_notification_display_orientation", 95, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("auto_lock_enabled", 96, 1, FitFieldBaseType.ENUM, FitBool.FALSE),
new FitMessageFieldDefinition("grouptrack_activity_type", 97, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("wifi_enabled", 98, 1, FitFieldBaseType.ENUM, FitBool.FALSE),
new FitMessageFieldDefinition("smart_notification_enabled", 99, 1, FitFieldBaseType.ENUM, FitBool.FALSE),
new FitMessageFieldDefinition("beeper_enabled", 100, 1, FitFieldBaseType.ENUM, FitBool.FALSE),
new FitMessageFieldDefinition("goal_notification", 101, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("product_category", 102, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("touch_sensitivity", 103, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("power_controls_items", 104, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("selected_watchface_index", 105, 1, FitFieldBaseType.UINT8, null),
new FitMessageFieldDefinition("livetrack_message_notification_enabled", 106, 1, FitFieldBaseType.ENUM, FitBool.FALSE),
new FitMessageFieldDefinition("alert_tones_app_only", 107, 1, FitFieldBaseType.ENUM, FitBool.FALSE),
new FitMessageFieldDefinition("auto_detect_max_hr", 108, 1, FitFieldBaseType.ENUM, FitBool.FALSE),
new FitMessageFieldDefinition("perf_cond_ntfctn_enabled", 109, 1, FitFieldBaseType.ENUM, FitBool.FALSE),
new FitMessageFieldDefinition("new_vo2_ntfctn_enabled", 110, 1, FitFieldBaseType.ENUM, FitBool.FALSE),
new FitMessageFieldDefinition("training_effect_ntfctn_enabled", 111, 1, FitFieldBaseType.ENUM, FitBool.FALSE),
new FitMessageFieldDefinition("recovery_time_ntfctn_enabled", 112, 1, FitFieldBaseType.ENUM, FitBool.FALSE),
new FitMessageFieldDefinition("auto_activity_start_enabled", 113, 1, FitFieldBaseType.ENUM, FitBool.FALSE),
new FitMessageFieldDefinition("move_bar_enabled", 114, 1, FitFieldBaseType.ENUM, FitBool.FALSE),
new FitMessageFieldDefinition("vibration_intensity", 115, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("lock_on_road", 116, 1, FitFieldBaseType.ENUM, FitBool.FALSE),
new FitMessageFieldDefinition("map_detail", 117, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("screen_timeout", 119, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("display_theme", 120, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("popularity_routing_enabled", 121, 1, FitFieldBaseType.ENUM, FitBool.FALSE),
new FitMessageFieldDefinition("glance_mode_layout", 122, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("user_text", 123, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("backlight_brightness_current_activity", 124, 1, FitFieldBaseType.UINT8, 1, 0, "%", null),
new FitMessageFieldDefinition("backlight_timeout_current_activity", 125, 1, FitFieldBaseType.UINT8, 1, 0, "s", null),
new FitMessageFieldDefinition("backlight_keys_current_activity", 126, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("backlight_alerts_current_activity", 127, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("backlight_gesture_current_activity", 128, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("marine_chart_mode", 129, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("spot_soundings", 130, 1, FitFieldBaseType.ENUM, FitBool.FALSE),
new FitMessageFieldDefinition("light_sectors", 131, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("marine_symbol_set", 132, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("auto_update_software_enabled", 133, 1, FitFieldBaseType.ENUM, FitBool.FALSE),
new FitMessageFieldDefinition("tap_interface", 134, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("auto_lock_mode", 135, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("simplified_backlight_timeout", 136, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("draw_segments", 137, 1, FitFieldBaseType.ENUM, FitBool.FALSE),
new FitMessageFieldDefinition("hourly_alert", 138, 1, FitFieldBaseType.ENUM, FitBool.FALSE),
new FitMessageFieldDefinition("turn_guidance_popup", 139, 1, FitFieldBaseType.ENUM, FitBool.FALSE),
new FitMessageFieldDefinition("stress_alert_enabled", 140, 1, FitFieldBaseType.ENUM, FitBool.FALSE),
new FitMessageFieldDefinition("spo2_mode", 141, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("low_spo2_threshold", 142, 1, FitFieldBaseType.UINT8, 1, 0, "percent", null),
new FitMessageFieldDefinition("sedentary_hr_alert_threshold", 143, 1, FitFieldBaseType.UINT8, 1, 0, "bpm", null),
new FitMessageFieldDefinition("activity_physio_true_up_enabled", 144, 1, FitFieldBaseType.ENUM, FitBool.FALSE),
new FitMessageFieldDefinition("smart_notification_timeout", 145, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("sideswipe_enabled", 146, 1, FitFieldBaseType.ENUM, FitBool.FALSE),
new FitMessageFieldDefinition("sideswipe_direction_inverted", 147, 1, FitFieldBaseType.ENUM, FitBool.FALSE),
new FitMessageFieldDefinition("draw_contour_lines", 148, 1, FitFieldBaseType.ENUM, FitBool.FALSE),
new FitMessageFieldDefinition("sedentary_hr_alert_state", 149, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("autosync_max_steps", 150, 2, FitFieldBaseType.UINT16, null),
new FitMessageFieldDefinition("low_spo2_alert_enabled", 151, 1, FitFieldBaseType.ENUM, FitBool.FALSE),
new FitMessageFieldDefinition("cda_auto_calc_enabled", 152, 1, FitFieldBaseType.ENUM, FitBool.FALSE),
new FitMessageFieldDefinition("hydration_system_units", 153, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("hydration_containers", 154, 2, FitFieldBaseType.UINT16, null),
new FitMessageFieldDefinition("hydration_alert_enabled", 155, 1, FitFieldBaseType.ENUM, FitBool.FALSE),
new FitMessageFieldDefinition("hydration_alert_frequency", 156, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("hydration_containers_units", 157, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("hydration_auto_goal_enabled", 158, 1, FitFieldBaseType.ENUM, FitBool.FALSE),
new FitMessageFieldDefinition("user_phone_verified", 159, 1, FitFieldBaseType.ENUM, FitBool.FALSE),
new FitMessageFieldDefinition("primary_tracker_enabled", 160, 1, FitFieldBaseType.ENUM, FitBool.FALSE),
new FitMessageFieldDefinition("phone_notification_default_privacy", 161, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("phone_notification_activity_privacy", 162, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("abnormal_low_hr_alert_state", 163, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("abnormal_low_hr_alert_threshold", 164, 1, FitFieldBaseType.UINT8, 1, 0, "bpm", null)
);
public static final FitMessageDefinition DEFINITION_USER_PROFILE = new FitMessageDefinition(FIT_MESSAGE_NAME_USER_PROFILE, FIT_MESSAGE_NUMBER_USER_PROFILE, -1,
new FitMessageFieldDefinition("friendly_name", 0, 16, FitFieldBaseType.STRING, null),
new FitMessageFieldDefinition("gender", 1, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("age", 2, 1, FitFieldBaseType.UINT8, 1, 0, "years", null),
new FitMessageFieldDefinition("height", 3, 1, FitFieldBaseType.UINT8, 1, 0, "cm", null),
new FitMessageFieldDefinition("weight", 4, 2, FitFieldBaseType.UINT16, 10, 0, "kg", null),
new FitMessageFieldDefinition("language", 5, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("elev_setting", 6, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("weight_setting", 7, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("resting_heart_rate", 8, 1, FitFieldBaseType.UINT8, 1, 0, "bpm", null),
new FitMessageFieldDefinition("default_max_running_heart_rate", 9, 1, FitFieldBaseType.UINT8, 1, 0, "bpm", null),
new FitMessageFieldDefinition("default_max_biking_heart_rate", 10, 1, FitFieldBaseType.UINT8, 1, 0, "bpm", null),
new FitMessageFieldDefinition("default_max_heart_rate", 11, 1, FitFieldBaseType.UINT8, 1, 0, "bpm", null),
new FitMessageFieldDefinition("hr_setting", 12, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("speed_setting", 13, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("dist_setting", 14, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("power_setting", 16, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("activity_class", 17, 1, FitFieldBaseType.UINT8, null),
new FitMessageFieldDefinition("position_setting", 18, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("rmr", 19, 2, FitFieldBaseType.UINT16, 1, 0, "kcal/d", null),
new FitMessageFieldDefinition("active_time", 20, 1, FitFieldBaseType.UINT8, 1, 0, "min", null),
new FitMessageFieldDefinition("temperature_setting", 21, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("local_id", 22, 2, FitFieldBaseType.UINT16, null),
new FitMessageFieldDefinition("global_id", 23, 6, FitFieldBaseType.BYTE, null),
new FitMessageFieldDefinition("birth_year", 24, 1, FitFieldBaseType.UINT8, 1, 1900, "", null),
new FitMessageFieldDefinition("avg_cycle_length", 25, 2, FitFieldBaseType.UINT16, 10000, 0, "m", null),
new FitMessageFieldDefinition("pressure_setting", 26, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("handedness", 27, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("wake_time", 28, 4, FitFieldBaseType.UINT32, null),
new FitMessageFieldDefinition("sleep_time", 29, 4, FitFieldBaseType.UINT32, null),
new FitMessageFieldDefinition("height_setting", 30, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("user_running_step_length", 31, 2, FitFieldBaseType.UINT16, 1, 0, "mm", null),
new FitMessageFieldDefinition("user_walking_step_length", 32, 2, FitFieldBaseType.UINT16, 1, 0, "mm", null),
new FitMessageFieldDefinition("firstbeat_monthly_load", 33, 2, FitFieldBaseType.UINT16, null),
new FitMessageFieldDefinition("firstbeat_recovery_time", 34, 2, FitFieldBaseType.UINT16, null),
new FitMessageFieldDefinition("firstbeat_recovery_time_start", 35, 4, FitFieldBaseType.UINT32, null),
new FitMessageFieldDefinition("firstbeat_max_stress_score", 36, 1, FitFieldBaseType.UINT8, null),
new FitMessageFieldDefinition("firstbeat_running_lt_kmh", 37, 2, FitFieldBaseType.UINT16, 10, 0, "km/h", null),
new FitMessageFieldDefinition("firstbeat_cycling_lt_watts", 38, 2, FitFieldBaseType.UINT16, null),
new FitMessageFieldDefinition("firstbeat_running_maxMET", 39, 4, FitFieldBaseType.FLOAT32, null),
new FitMessageFieldDefinition("firstbeat_cycling_maxMET", 40, 4, FitFieldBaseType.FLOAT32, null),
new FitMessageFieldDefinition("firstbeat_running_lt_timestamp", 41, 4, FitFieldBaseType.UINT32, null),
new FitMessageFieldDefinition("firstbeat_cycling_lt_timestamp", 42, 4, FitFieldBaseType.UINT32, null),
new FitMessageFieldDefinition("resting_hr_auto_update_enabled", 43, 1, FitFieldBaseType.ENUM, FitBool.FALSE),
new FitMessageFieldDefinition("birth_day", 44, 1, FitFieldBaseType.UINT8, null),
new FitMessageFieldDefinition("birth_month", 45, 1, FitFieldBaseType.UINT8, null),
new FitMessageFieldDefinition("avatar", 46, 1, FitFieldBaseType.UINT8, null),
new FitMessageFieldDefinition("depth_setting", 47, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("dive_count", 49, 4, FitFieldBaseType.UINT32, null),
new FitMessageFieldDefinition("phone_number", 50, 20, FitFieldBaseType.STRING, null),
new FitMessageFieldDefinition("keep_user_name_private", 51, 1, FitFieldBaseType.ENUM, FitBool.FALSE),
new FitMessageFieldDefinition("active_minutes_calc_method", 52, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("active_minutes_moderate_zone", 53, 1, FitFieldBaseType.UINT8, null),
new FitMessageFieldDefinition("active_minutes_vigorous_zone", 54, 1, FitFieldBaseType.UINT8, null),
new FitMessageFieldDefinition("swim_skill_level", 55, 1, FitFieldBaseType.UINT8, null)
);
public static final FitMessageDefinition DEFINITION_EVENT = new FitMessageDefinition(FIT_MESSAGE_NAME_EVENT, FIT_MESSAGE_NUMBER_EVENT, -1,
new FitMessageFieldDefinition("timestamp", 253, 4, FitFieldBaseType.UINT32, null),
new FitMessageFieldDefinition("event", 0, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("event_type", 1, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("data16", 2, 2, FitFieldBaseType.UINT16, null),
new FitMessageFieldDefinition("data", 3, 4, FitFieldBaseType.UINT32, null),
new FitMessageFieldDefinition("event_group", 4, 1, FitFieldBaseType.UINT8, null),
new FitMessageFieldDefinition("device_index", 13, 1, FitFieldBaseType.UINT8, null),
new FitMessageFieldDefinition("activity_type", 14, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("start_timestamp", 15, 4, FitFieldBaseType.UINT32, null),
new FitMessageFieldDefinition("activity_subtype", 16, 1, FitFieldBaseType.ENUM, null)
);
public static final FitMessageDefinition DEFINITION_DEVICE_INFO = new FitMessageDefinition(FIT_MESSAGE_NAME_DEVICE_INFO, FIT_MESSAGE_NUMBER_DEVICE_INFO, -1,
new FitMessageFieldDefinition("timestamp", 253, 4, FitFieldBaseType.UINT32, null),
new FitMessageFieldDefinition("device_index", 0, 1, FitFieldBaseType.UINT8, null),
new FitMessageFieldDefinition("device_type", 1, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("manufacturer", 2, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("serial_number", 3, 4, FitFieldBaseType.UINT32Z, null),
new FitMessageFieldDefinition("product", 4, 2, FitFieldBaseType.UINT16, null),
new FitMessageFieldDefinition("software_version", 5, 2, FitFieldBaseType.UINT16, null),
new FitMessageFieldDefinition("hardware_version", 6, 1, FitFieldBaseType.UINT8, null),
new FitMessageFieldDefinition("cum_operating_time", 7, 4, FitFieldBaseType.UINT32, 1, 0, "s", null),
new FitMessageFieldDefinition("cum_training_time", 8, 4, FitFieldBaseType.UINT32, 1, 0, "s", null),
new FitMessageFieldDefinition("reception", 9, 4, FitFieldBaseType.UINT8, 1, 0, "%", null),
new FitMessageFieldDefinition("battery_voltage", 10, 2, FitFieldBaseType.UINT16, 256, 0, "V", null),
new FitMessageFieldDefinition("battery_status", 11, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("rx_pass_count", 15, 4, FitFieldBaseType.UINT32, null),
new FitMessageFieldDefinition("rx_fail_count", 16, 4, FitFieldBaseType.UINT32, null),
new FitMessageFieldDefinition("software_version_string", 17, 20, FitFieldBaseType.STRING, null),
new FitMessageFieldDefinition("sensor_position", 18, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("descriptor", 19, 20, FitFieldBaseType.STRING, null),
new FitMessageFieldDefinition("ant_transmission_type", 20, 1, FitFieldBaseType.UINT8Z, null),
new FitMessageFieldDefinition("ant_device_number", 21, 2, FitFieldBaseType.UINT16Z, null),
new FitMessageFieldDefinition("ant_network", 22, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("source_type", 25, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("product_name", 27, 20, FitFieldBaseType.STRING, null)
);
public static final FitMessageDefinition DEFINITION_DEBUG = new FitMessageDefinition(FIT_MESSAGE_NAME_DEBUG, FIT_MESSAGE_NUMBER_DEBUG, -1,
new FitMessageFieldDefinition("timestamp", 253, 4, FitFieldBaseType.UINT32, null),
new FitMessageFieldDefinition("id", 0, 1, FitFieldBaseType.UINT8, null),
new FitMessageFieldDefinition("string", 1, 20, FitFieldBaseType.STRING, null),
new FitMessageFieldDefinition("data", 2, 20, FitFieldBaseType.BYTE, null),
new FitMessageFieldDefinition("time256", 3, 20, FitFieldBaseType.UINT8, 256, 0, "s", null),
new FitMessageFieldDefinition("fractional_timestamp", 4, 2, FitFieldBaseType.UINT16, 32768.0, 0, "s", null)
);
public static final FitMessageDefinition DEFINITION_SOFTWARE = new FitMessageDefinition(FIT_MESSAGE_NAME_SOFTWARE, FIT_MESSAGE_NUMBER_SOFTWARE, -1,
new FitMessageFieldDefinition("message_index", 254, 2, FitFieldBaseType.UINT16, null),
new FitMessageFieldDefinition("version", 3, 2, FitFieldBaseType.UINT16, null),
new FitMessageFieldDefinition("part_number", 5, 20, FitFieldBaseType.STRING, null),
new FitMessageFieldDefinition("version_string", 6, 20, FitFieldBaseType.STRING, null)
);
public static final FitMessageDefinition DEFINITION_FILE_CAPABILITIES = new FitMessageDefinition(FIT_MESSAGE_NAME_FILE_CAPABILITIES, FIT_MESSAGE_NUMBER_FILE_CAPABILITIES, -1,
new FitMessageFieldDefinition("type", 0, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("flags", 1, 1, FitFieldBaseType.UINT8Z, null),
new FitMessageFieldDefinition("directory", 2, 16, FitFieldBaseType.STRING, null),
new FitMessageFieldDefinition("max_count", 3, 2, FitFieldBaseType.UINT16, null),
new FitMessageFieldDefinition("max_size", 4, 4, FitFieldBaseType.UINT32, null)
);
public static final FitMessageDefinition DEFINITION_FILE_CREATOR = new FitMessageDefinition(FIT_MESSAGE_NAME_FILE_CREATOR, FIT_MESSAGE_NUMBER_FILE_CREATOR, -1,
new FitMessageFieldDefinition("software_version", 0, 2, FitFieldBaseType.UINT16, null),
new FitMessageFieldDefinition("hardware_version", 1, 2, FitFieldBaseType.UINT8, null),
new FitMessageFieldDefinition("creator_name", 2, 2, FitFieldBaseType.STRING, null)
);
public static final FitMessageDefinition DEFINITION_MONITORING = new FitMessageDefinition(FIT_MESSAGE_NAME_MONITORING, FIT_MESSAGE_NUMBER_MONITORING, -1,
new FitMessageFieldDefinition("timestamp", 253, 4, FitFieldBaseType.UINT32, null),
new FitMessageFieldDefinition("device_index", 0, 1, FitFieldBaseType.UINT8, null),
new FitMessageFieldDefinition("calories", 1, 2, FitFieldBaseType.UINT16, null),
new FitMessageFieldDefinition("distance", 2, 4, FitFieldBaseType.UINT32, 100, 0, "m", null),
// TODO: Scale depends on activity type
new FitMessageFieldDefinition("cycles", 3, 4, FitFieldBaseType.UINT32, null),
new FitMessageFieldDefinition("active_time", 4, 1, FitFieldBaseType.UINT32, 1000, 0, "s", null),
new FitMessageFieldDefinition("activity_type", 5, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("activity_subtype", 6, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("activity_level", 7, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("distance_16", 8, 2, FitFieldBaseType.UINT16, 0.01, 0, "m", null),
new FitMessageFieldDefinition("cycles_16", 9, 2, FitFieldBaseType.UINT16, 0.5, 0, "cycles", null),
new FitMessageFieldDefinition("active_time_16", 10, 2, FitFieldBaseType.UINT16, 1, 0, "s", null),
new FitMessageFieldDefinition("local_timestamp", 11, 4, FitFieldBaseType.UINT32, null),
new FitMessageFieldDefinition("temperature", 12, 2, FitFieldBaseType.SINT16, 100, 0, "°C", null),
new FitMessageFieldDefinition("temperature_min", 14, 2, FitFieldBaseType.SINT16, 100, 0, "°C", null),
new FitMessageFieldDefinition("temperature_max", 15, 2, FitFieldBaseType.SINT16, 100, 0, "°C", null),
// TODO: Array
new FitMessageFieldDefinition("activity_time", 16, 2, FitFieldBaseType.UINT16, 1, 0, "min", null),
new FitMessageFieldDefinition("active_calories", 19, 2, FitFieldBaseType.UINT16, 1, 0, "kcal", null),
new FitMessageFieldDefinition("current_activity_type_intensity", 24, 1, FitFieldBaseType.BYTE, null),
new FitMessageFieldDefinition("timestamp_min_8", 25, 1, FitFieldBaseType.UINT8, null),
new FitMessageFieldDefinition("timestamp_16", 26, 2, FitFieldBaseType.UINT16, null),
new FitMessageFieldDefinition("heart_rate", 27, 1, FitFieldBaseType.UINT8, 1, 0, "bpm", null),
new FitMessageFieldDefinition("intensity", 28, 1, FitFieldBaseType.UINT8, null),
new FitMessageFieldDefinition("duration_min", 29, 2, FitFieldBaseType.UINT16, 1, 0, "min", null),
new FitMessageFieldDefinition("duration", 30, 4, FitFieldBaseType.UINT32, 1, 0, "s", null),
new FitMessageFieldDefinition("ascent", 31, 4, FitFieldBaseType.UINT32, 1000, 0, "m", null),
new FitMessageFieldDefinition("descent", 32, 4, FitFieldBaseType.UINT32, 1000, 0, "m", null),
new FitMessageFieldDefinition("moderate_activity_minutes", 33, 2, FitFieldBaseType.UINT16, 1, 0, "min", null),
new FitMessageFieldDefinition("vigorous_activity_minutes", 34, 2, FitFieldBaseType.UINT16, 1, 0, "min", null),
new FitMessageFieldDefinition("ascent_total", 35, 4, FitFieldBaseType.UINT32, 1000, 0, "m", null),
new FitMessageFieldDefinition("descent_total", 36, 4, FitFieldBaseType.UINT32, 1000, 0, "m", null),
new FitMessageFieldDefinition("moderate_activity_minutes_total", 37, 2, FitFieldBaseType.UINT16, 1, 0, "min", null),
new FitMessageFieldDefinition("vigorous_activity_minutes_total", 38, 2, FitFieldBaseType.UINT16, 1, 0, "min", null)
);
public static final FitMessageDefinition DEFINITION_MONITORING_INFO = new FitMessageDefinition(FIT_MESSAGE_NAME_MONITORING_INFO, FIT_MESSAGE_NUMBER_MONITORING_INFO, -1,
new FitMessageFieldDefinition("timestamp", 253, 4, FitFieldBaseType.UINT32, null),
new FitMessageFieldDefinition("local_timestamp", 0, 4, FitFieldBaseType.UINT32, null),
// TODO: Arrays
new FitMessageFieldDefinition("activity_type", 1, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("cycles_to_distance", 3, 2, FitFieldBaseType.UINT16, null),
new FitMessageFieldDefinition("cycles_to_calories", 4, 2, FitFieldBaseType.UINT16, null),
new FitMessageFieldDefinition("resting_metabolic_rate", 5, 2, FitFieldBaseType.UINT16, null),
new FitMessageFieldDefinition("cycles_goal", 7, 4, FitFieldBaseType.UINT32, 2, 0, "cycles", null),
new FitMessageFieldDefinition("monitoring_time_source", 8, 1, FitFieldBaseType.ENUM, null)
);
public static final FitMessageDefinition DEFINITION_CONNECTIVITY = new FitMessageDefinition(FIT_MESSAGE_NAME_CONNECTIVITY, FIT_MESSAGE_NUMBER_CONNECTIVITY, MESSAGE_ID_CONNECTIVITY,
new FitMessageFieldDefinition("bluetooth_enabled", 0, 1, FitFieldBaseType.ENUM, FitBool.FALSE),
new FitMessageFieldDefinition("bluetooth_le_enabled", 1, 1, FitFieldBaseType.ENUM, FitBool.FALSE),
new FitMessageFieldDefinition("ant_enabled", 2, 1, FitFieldBaseType.ENUM, FitBool.FALSE),
new FitMessageFieldDefinition("name", 3, 16, FitFieldBaseType.STRING, null),
new FitMessageFieldDefinition("live_tracking_enabled", 4, 1, FitFieldBaseType.ENUM, FitBool.FALSE),
new FitMessageFieldDefinition("weather_conditions_enabled", 5, 1, FitFieldBaseType.ENUM, FitBool.FALSE),
new FitMessageFieldDefinition("weather_alerts_enabled", 6, 1, FitFieldBaseType.ENUM, FitBool.FALSE),
new FitMessageFieldDefinition("auto_activity_upload_enabled", 7, 1, FitFieldBaseType.ENUM, FitBool.FALSE),
new FitMessageFieldDefinition("course_download_enabled", 8, 1, FitFieldBaseType.ENUM, FitBool.FALSE),
new FitMessageFieldDefinition("workout_download_enabled", 9, 1, FitFieldBaseType.ENUM, FitBool.FALSE),
new FitMessageFieldDefinition("gps_ephemeris_download_enabled", 10, 1, FitFieldBaseType.ENUM, FitBool.FALSE),
new FitMessageFieldDefinition("live_track_auto_start_enabled", 13, 1, FitFieldBaseType.ENUM, FitBool.FALSE)
);
public static final FitMessageDefinition DEFINITION_WEATHER_CONDITIONS = new FitMessageDefinition(FIT_MESSAGE_NAME_WEATHER_CONDITIONS, FIT_MESSAGE_NUMBER_WEATHER_CONDITIONS, MESSAGE_ID_WEATHER_CONDITIONS,
new FitMessageFieldDefinition("timestamp", 253, 4, FitFieldBaseType.UINT32, null),
new FitMessageFieldDefinition("weather_report", 0, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("temperature", 1, 1, FitFieldBaseType.SINT8, 1, 0, "°C", null),
new FitMessageFieldDefinition("condition", 2, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("wind_direction", 3, 2, FitFieldBaseType.UINT16, 1, 0, "°", null),
new FitMessageFieldDefinition("wind_speed", 4, 2, FitFieldBaseType.UINT16, 1000, 0, "m/s", null),
new FitMessageFieldDefinition("precipitation_probability", 5, 1, FitFieldBaseType.UINT8, 1, 0, "%", null),
new FitMessageFieldDefinition("temperature_feels_like", 6, 1, FitFieldBaseType.SINT8, 1, 0, "°C", null),
new FitMessageFieldDefinition("relative_humidity", 7, 1, FitFieldBaseType.UINT8, 1, 0, "%", null),
new FitMessageFieldDefinition("location", 8, 16, FitFieldBaseType.STRING, null),
new FitMessageFieldDefinition("observed_at_time", 9, 4, FitFieldBaseType.UINT32, null),
new FitMessageFieldDefinition("observed_location_lat", 10, 4, FitFieldBaseType.SINT32, 1, 0, "semicircles", null),
new FitMessageFieldDefinition("observed_location_long", 11, 4, FitFieldBaseType.SINT32, 1, 0, "semicircles", null),
new FitMessageFieldDefinition("day_of_week", 12, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("high_temperature", 13, 1, FitFieldBaseType.SINT8, 1, 0, "°C", null),
new FitMessageFieldDefinition("low_temperature", 14, 1, FitFieldBaseType.SINT8, 1, 0, "°C", null)
);
public static final FitMessageDefinition DEFINITION_WEATHER_ALERT = new FitMessageDefinition(FIT_MESSAGE_NAME_WEATHER_ALERT, FIT_MESSAGE_NUMBER_WEATHER_ALERT, MESSAGE_ID_WEATHER_ALERT,
new FitMessageFieldDefinition("timestamp", 253, 4, FitFieldBaseType.UINT32, null),
new FitMessageFieldDefinition("report_id", 0, 10, FitFieldBaseType.STRING, null),
new FitMessageFieldDefinition("issue_time", 1, 4, FitFieldBaseType.UINT32, null),
new FitMessageFieldDefinition("expire_time", 2, 4, FitFieldBaseType.UINT32, null),
new FitMessageFieldDefinition("severity", 3, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("type", 4, 1, FitFieldBaseType.ENUM, null)
);
public static final FitMessageDefinition DEFINITION_FILE_DESCRIPTION = new FitMessageDefinition(FIT_MESSAGE_NAME_FILE_DESCRIPTION, FIT_MESSAGE_NUMBER_FILE_DESCRIPTION, -1,
new FitMessageFieldDefinition("message_index", 254, 4, FitFieldBaseType.UINT32, null),
new FitMessageFieldDefinition("manufacturer", 0, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("directory", 1, 16, FitFieldBaseType.STRING, null),
new FitMessageFieldDefinition("name", 2, 20, FitFieldBaseType.STRING, null),
new FitMessageFieldDefinition("flags", 3, 1, FitFieldBaseType.UINT8Z, null),
new FitMessageFieldDefinition("purpose", 4, 1, FitFieldBaseType.UINT8, null),
new FitMessageFieldDefinition("garmin_file_purpose", 5, 1, FitFieldBaseType.UINT8, null)
);
public static final FitMessageDefinition DEFINITION_OHR_SETTINGS = new FitMessageDefinition(FIT_MESSAGE_NAME_OHR_SETTINGS, FIT_MESSAGE_NUMBER_OHR_SETTINGS, -1,
new FitMessageFieldDefinition("timestamp", 253, 4, FitFieldBaseType.UINT32, null),
new FitMessageFieldDefinition("enabled", 0, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("sample_rate", 1, 2, FitFieldBaseType.UINT16, null),
new FitMessageFieldDefinition("transmit_hr_enabled", 2, 1, FitFieldBaseType.ENUM, FitBool.FALSE)
);
public static final FitMessageDefinition DEFINITION_EXD_SCREEN_CONFIGURATION = new FitMessageDefinition(FIT_MESSAGE_NAME_EXD_SCREEN_CONFIGURATION, FIT_MESSAGE_NUMBER_EXD_SCREEN_CONFIGURATION, -1,
new FitMessageFieldDefinition("screen_index", 0, 1, FitFieldBaseType.UINT8, null),
new FitMessageFieldDefinition("field_count", 1, 1, FitFieldBaseType.UINT8, null),
new FitMessageFieldDefinition("layout", 2, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("screen_enabled", 3, 1, FitFieldBaseType.ENUM, null)
);
public static final FitMessageDefinition DEFINITION_EXD_DATA_FIELD_CONFIGURATION = new FitMessageDefinition(FIT_MESSAGE_NAME_EXD_DATA_FIELD_CONFIGURATION, FIT_MESSAGE_NUMBER_EXD_DATA_FIELD_CONFIGURATION, -1,
new FitMessageFieldDefinition("screen_index", 0, 1, FitFieldBaseType.UINT8, null),
new FitMessageFieldDefinition("concept_field", 1, 1, FitFieldBaseType.BYTE, null),
new FitMessageFieldDefinition("field_id", 2, 1, FitFieldBaseType.UINT8, null),
new FitMessageFieldDefinition("concept_count", 3, 1, FitFieldBaseType.UINT8, null),
new FitMessageFieldDefinition("display_type", 4, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("title", 5, 32, FitFieldBaseType.STRING, null)
);
public static final FitMessageDefinition DEFINITION_EXD_DATA_CONCEPT_CONFIGURATION = new FitMessageDefinition(FIT_MESSAGE_NAME_EXD_DATA_CONCEPT_CONFIGURATION, FIT_MESSAGE_NUMBER_EXD_DATA_CONCEPT_CONFIGURATION, -1,
new FitMessageFieldDefinition("screen_index", 0, 1, FitFieldBaseType.UINT8, null),
new FitMessageFieldDefinition("concept_field", 1, 1, FitFieldBaseType.BYTE, null),
new FitMessageFieldDefinition("field_id", 2, 1, FitFieldBaseType.UINT8, null),
new FitMessageFieldDefinition("concept_index", 3, 1, FitFieldBaseType.UINT8, null),
new FitMessageFieldDefinition("data_page", 4, 1, FitFieldBaseType.UINT8, null),
new FitMessageFieldDefinition("concept_key", 5, 1, FitFieldBaseType.UINT8, null),
new FitMessageFieldDefinition("scaling", 6, 1, FitFieldBaseType.UINT8, null),
new FitMessageFieldDefinition("offset", 7, 1, FitFieldBaseType.UINT8, null),
new FitMessageFieldDefinition("data_units", 8, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("qualifier", 9, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("descriptor", 10, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("is_signed", 11, 1, FitFieldBaseType.ENUM, FitBool.FALSE)
);
public static final FitMessageDefinition DEFINITION_MONITORING_HR_DATA = new FitMessageDefinition(FIT_MESSAGE_NAME_MONITORING_HR_DATA, FIT_MESSAGE_NUMBER_MONITORING_HR_DATA, -1,
new FitMessageFieldDefinition("timestamp", 253, 4, FitFieldBaseType.UINT32, null),
new FitMessageFieldDefinition("resting_heart_rate", 0, 1, FitFieldBaseType.UINT8, 1, 0, "bpm", null),
new FitMessageFieldDefinition("current_day_resting_heart_rate", 1, 1, FitFieldBaseType.UINT8, 1, 0, "bpm", null)
);
public static final FitMessageDefinition DEFINITION_ALARM_SETTINGS = new FitMessageDefinition(FIT_MESSAGE_NAME_ALARM_SETTINGS, FIT_MESSAGE_NUMBER_ALARM_SETTINGS, -1,
new FitMessageFieldDefinition("message_index", 254, 2, FitFieldBaseType.UINT16, null),
new FitMessageFieldDefinition("time", 0, 2, FitFieldBaseType.UINT16, null),
new FitMessageFieldDefinition("days", 1, 1, FitFieldBaseType.BYTE, null),
new FitMessageFieldDefinition("enabled", 2, 1, FitFieldBaseType.ENUM, FitBool.FALSE),
new FitMessageFieldDefinition("sound", 3, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("backlight", 4, 1, FitFieldBaseType.ENUM, FitBool.FALSE),
new FitMessageFieldDefinition("id", 5, 4, FitFieldBaseType.UINT32, null),
new FitMessageFieldDefinition("alarm_mesg", 6, 20, FitFieldBaseType.STRING, null),
new FitMessageFieldDefinition("snooze_count", 7, 1, FitFieldBaseType.UINT8, null)
);
public static final FitMessageDefinition DEFINITION_STRESS_LEVEL = new FitMessageDefinition(FIT_MESSAGE_NAME_STRESS_LEVEL, FIT_MESSAGE_NUMBER_STRESS_LEVEL, -1,
new FitMessageFieldDefinition("stress_level_value", 0, 2, FitFieldBaseType.SINT16, null),
new FitMessageFieldDefinition("stress_level_time", 1, 4, FitFieldBaseType.UINT32, null),
new FitMessageFieldDefinition("average_stress_intensity", 2, 1, FitFieldBaseType.SINT8, null)
);
public static final FitMessageDefinition DEFINITION_MANUAL_STRESS_LEVEL = new FitMessageDefinition(FIT_MESSAGE_NAME_MANUAL_STRESS_LEVEL, FIT_MESSAGE_NUMBER_MANUAL_STRESS_LEVEL, -1,
new FitMessageFieldDefinition("stress_level_value", 0, 2, FitFieldBaseType.SINT16, null),
new FitMessageFieldDefinition("stress_level_time", 1, 4, FitFieldBaseType.UINT32, null)
);
public static final FitMessageDefinition DEFINITION_MAX_MET_DATA = new FitMessageDefinition(FIT_MESSAGE_NAME_MAX_MET_DATA, FIT_MESSAGE_NUMBER_MAX_MET_DATA, -1,
new FitMessageFieldDefinition("update_time", 0, 4, FitFieldBaseType.UINT32, null),
new FitMessageFieldDefinition("max_met", 1, 4, FitFieldBaseType.SINT32, null),
new FitMessageFieldDefinition("vo2_max", 2, 2, FitFieldBaseType.UINT16, 10, 0, "mL/kg/min", null),
new FitMessageFieldDefinition("fitness_age", 3, 1, FitFieldBaseType.SINT8, null),
new FitMessageFieldDefinition("fitness_age_desc", 4, 1, FitFieldBaseType.SINT8, null),
new FitMessageFieldDefinition("sport", 5, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("sub_sport", 6, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("analyzer_method", 7, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("max_met_category", 8, 1, FitFieldBaseType.ENUM, null),
new FitMessageFieldDefinition("calibrated_data", 9, 1, FitFieldBaseType.ENUM, null)
);
public static final FitMessageDefinition DEFINITION_WHR_DIAG = new FitMessageDefinition(FIT_MESSAGE_NAME_WHR_DIAG, FIT_MESSAGE_NUMBER_WHR_DIAG, -1,
new FitMessageFieldDefinition("timestamp", 253, 4, FitFieldBaseType.UINT32, null),
new FitMessageFieldDefinition("fractional_timestamp", 1, 2, FitFieldBaseType.UINT16, 32768.0, 0, "s", null),
new FitMessageFieldDefinition("page_data", 2, 1, FitFieldBaseType.BYTE, null)
);
public static final FitMessageDefinition DEFINITION_METRICS_INFO = new FitMessageDefinition(FIT_MESSAGE_NAME_METRICS_INFO, FIT_MESSAGE_NUMBER_METRICS_INFO, -1,
new FitMessageFieldDefinition("timestamp", 253, 4, FitFieldBaseType.UINT32, null),
new FitMessageFieldDefinition("local_timestamp", 0, 4, FitFieldBaseType.UINT32, null)
);
public static final FitMessageDefinition DEFINITION_PAGES_MAP = new FitMessageDefinition(FIT_MESSAGE_NAME_PAGES_MAP, FIT_MESSAGE_NUMBER_PAGES_MAP, -1,
new FitMessageFieldDefinition("message_index", 254, 2, FitFieldBaseType.UINT16, null),
new FitMessageFieldDefinition("map", 0, 10, FitFieldBaseType.BYTE, null),
new FitMessageFieldDefinition("default_to_last", 1, 1, FitFieldBaseType.ENUM, FitBool.FALSE)
);
public static final FitMessageDefinition DEFINITION_NEURAL_NETWORK_INFO = new FitMessageDefinition(FIT_MESSAGE_NAME_NEURAL_NETWORK_INFO, FIT_MESSAGE_NUMBER_NEURAL_NETWORK_INFO, -1,
new FitMessageFieldDefinition("timestamp", 253, 4, FitFieldBaseType.UINT32, null),
new FitMessageFieldDefinition("network_version", 0, 1, FitFieldBaseType.UINT8, null),
new FitMessageFieldDefinition("implicit_message_duration", 1, 2, FitFieldBaseType.UINT16, 1, 0, "s", null),
new FitMessageFieldDefinition("local_timestamp", 2, 4, FitFieldBaseType.UINT32, null)
);
public static final FitMessageDefinition DEFINITION_NEURAL_NETWORK_DATA = new FitMessageDefinition(FIT_MESSAGE_NAME_NEURAL_NETWORK_DATA, FIT_MESSAGE_NUMBER_NEURAL_NETWORK_DATA, -1,
new FitMessageFieldDefinition("network_data", 0, 20, FitFieldBaseType.BYTE, null)
);
public static final FitMessageDefinition DEFINITION_SLEEP_LEVEL = new FitMessageDefinition(FIT_MESSAGE_NAME_SLEEP_LEVEL, FIT_MESSAGE_NUMBER_SLEEP_LEVEL, -1,
new FitMessageFieldDefinition("timestamp", 253, 4, FitFieldBaseType.UINT32, null),
new FitMessageFieldDefinition("sleep_level", 0, 1, FitFieldBaseType.ENUM, null)
);
public static final FitMessageDefinition DEFINITION_END_OF_FILE = new FitMessageDefinition(FIT_MESSAGE_NAME_END_OF_FILE, FIT_MESSAGE_NUMBER_END_OF_FILE, -1,
new FitMessageFieldDefinition("timestamp", 253, 4, FitFieldBaseType.UINT32, null)
);
public static final List<FitMessageDefinition> ALL_DEFINITIONS = Arrays.asList(
DEFINITION_FILE_ID,
DEFINITION_CAPABILITIES,
DEFINITION_DEVICE_SETTINGS,
DEFINITION_USER_PROFILE,
DEFINITION_EVENT,
DEFINITION_DEVICE_INFO,
DEFINITION_DEBUG,
DEFINITION_SOFTWARE,
DEFINITION_FILE_CAPABILITIES,
DEFINITION_FILE_CREATOR,
DEFINITION_MONITORING,
DEFINITION_MONITORING_INFO,
DEFINITION_CONNECTIVITY,
DEFINITION_WEATHER_CONDITIONS,
DEFINITION_WEATHER_ALERT,
DEFINITION_FILE_DESCRIPTION,
DEFINITION_EXD_SCREEN_CONFIGURATION,
DEFINITION_EXD_DATA_FIELD_CONFIGURATION,
DEFINITION_EXD_DATA_CONCEPT_CONFIGURATION,
DEFINITION_OHR_SETTINGS,
DEFINITION_MONITORING_HR_DATA,
DEFINITION_ALARM_SETTINGS,
DEFINITION_STRESS_LEVEL,
DEFINITION_MANUAL_STRESS_LEVEL,
DEFINITION_MAX_MET_DATA,
DEFINITION_WHR_DIAG,
DEFINITION_METRICS_INFO,
DEFINITION_PAGES_MAP,
DEFINITION_NEURAL_NETWORK_INFO,
DEFINITION_NEURAL_NETWORK_DATA,
DEFINITION_SLEEP_LEVEL,
DEFINITION_END_OF_FILE
);
}