Module: Fit4Ruby
- Defined in:
- lib/fit4ruby/Lap.rb,
lib/fit4ruby.rb,
lib/fit4ruby/Log.rb,
lib/fit4ruby/Record.rb,
lib/fit4ruby/FitFile.rb,
lib/fit4ruby/Session.rb,
lib/fit4ruby/version.rb,
lib/fit4ruby/Activity.rb,
lib/fit4ruby/FitFileId.rb,
lib/fit4ruby/FitFilter.rb,
lib/fit4ruby/FitHeader.rb,
lib/fit4ruby/FitRecord.rb,
lib/fit4ruby/Converters.rb,
lib/fit4ruby/FitDataRecord.rb,
lib/fit4ruby/FitDefinition.rb,
lib/fit4ruby/FitRecordHeader.rb,
lib/fit4ruby/FitMessageRecord.rb,
lib/fit4ruby/GlobalFitMessage.rb,
lib/fit4ruby/GlobalFitDictList.rb,
lib/fit4ruby/GlobalFitMessages.rb,
lib/fit4ruby/FitDefinitionField.rb,
lib/fit4ruby/FitMessageIdMapper.rb,
lib/fit4ruby/GlobalFitDictionaries.rb
Overview
FitMessageIdMapper.rb – Fit4Ruby - FIT file processing library for Ruby
Copyright © 2014 by Chris Schlaeger <[email protected]>
This program is free software; you can redistribute it and/or modify it under the terms of version 2 of the GNU General Public License as published by the Free Software Foundation.
Defined Under Namespace
Modules: Converters Classes: Activity, Error, FitDataRecord, FitDefinition, FitDefinitionField, FitFile, FitFileId, FitFilter, FitHeader, FitMessageIdMapper, FitMessageRecord, FitRecord, FitRecordHeader, GlobalFitDict, GlobalFitDictList, GlobalFitMessage, GlobalFitMessageList, ILogger, Lap, Record, Session
Constant Summary collapse
- Log =
ILogger.new(STDOUT)
- VERSION =
'0.0.1'- GlobalFitMessages =
GlobalFitMessageList.new do 0, 'file_id' field 0, 'enum', 'type', :dict => 'file' field 1, 'uint16', 'manufacturer', :dict => 'manufacturer' field 2, 'uint16', 'product', :dict => 'product' field 3, 'uint32z', 'serial_number' field 4, 'uint32', 'time_created', :type => 'date_time' field 5, 'uint16', 'number' 18, 'session' field 0, 'enum', 'event', :dict => 'event' field 1, 'enum', 'event_type', :dict => 'event_type' field 2, 'uint32', 'start_time', :type => 'date_time' field 3, 'sint32', 'start_position_lat', :type => 'coordinate' field 4, 'sint32', 'start_position_long', :type => 'coordinate' field 5, 'enum', 'sport', :dict => 'sport' field 6, 'enum', 'sub_sport', :dict => 'sub_sport' field 7, 'uint32', 'total_elapsed_time', :type => 'duration', :scale => 1000 field 8, 'uint32', 'total_timer_time', :type => 'duration', :scale => 1000 field 9, 'uint32', 'total_distance', :scale => 100, :unit => 'm' field 10, 'uint32', 'total_strides', :unit => 'strides' field 11, 'uint16', 'total_calories', :unit => 'kcal' field 13, 'uint16', 'total_fat_calories', :unit => 'kcal' field 14, 'uint16', 'avg_speed', :scale => 1000, :unit => 'm/s' field 15, 'uint16', 'max_speed', :scale => 1000, :unit => 'm/s' field 16, 'uint8', 'avg_heart_rate', :unit => 'bpm' field 17, 'uint8', 'max_heart_rate', :unit => 'bpm' field 18, 'uint8', 'avg_running_cadence', :unit => 'strides/min' field 19, 'uint8', 'max_running_cadence', :unit => 'strides/min' field 22, 'uint16', 'total_ascent', :unit => 'm' field 23, 'uint16', 'total_descent', :unit => 'm' field 24, 'uint8', 'total_training_effect', :scale => 10 field 25, 'uint16', 'first_lap_index' field 26, 'uint16', 'num_laps' field 27, 'uint8', 'event_group' field 28, 'enum', 'trigger', :dict => 'session_trigger' field 29, 'sint32', 'nec_lat', :type => 'coordinate' field 30, 'sint32', 'nec_long', :type => 'coordinate' field 31, 'sint32', 'swc_lat', :type => 'coordinate' field 32, 'sint32', 'swc_long', :type => 'coordinate' field 81, 'enum', 'undocumented_field_81' field 89, 'uint16', 'avg_vertical_oscillation', :scale => 10, :unit => 'mm' field 90, 'uint16', 'avg_stance_time_percent', :scale => 100, :unit => 'percent' field 91, 'uint16', 'avg_stance_time', :scale => 10, :unit => 'ms' field 92, 'uint8', 'avg_fraction_cadence', :scale => 128 field 93, 'uint8', 'max_fractional_cadence', :scale => 128 field 94, 'uint8', 'total_fractional_cycles', :scale => 128 field 253, 'uint32', 'timestamp', :type => 'date_time' field 254, 'uint16', 'message_index' 19, 'lap' field 0, 'enum', 'event', :dict => 'event' field 1, 'enum', 'event_type', :dict => 'event_type' field 2, 'uint32', 'start_time', :type => 'date_time' field 3, 'sint32', 'start_position_lat', :type => 'coordinate' field 4, 'sint32', 'start_position_long', :type => 'coordinate' field 5, 'sint32', 'end_position_lat', :type => 'coordinate' field 6, 'sint32', 'end_position_long', :type => 'coordinate' field 7, 'uint32', 'total_elapsed_time', :type => 'duration', :scale => 1000 field 8, 'uint32', 'total_timer_time', :type => 'duration', :scale => 1000 field 9, 'uint32', 'total_distance', :scale => 100, :unit => 'm' field 10, 'uint32', 'total_strides', :unit => 'strides' field 11, 'uint16', 'total_calories', :unit => 'kcal' field 12, 'uint16', 'total_fat_calories', :unit => 'kcal' field 13, 'uint16', 'avg_speed', :scale => 1000, :unit => 'm/s' field 14, 'uint16', 'max_speed', :scale => 1000, :unit => 'm/s' field 15, 'uint8', 'avg_heart_rate', :unit => 'bpm' field 16, 'uint8', 'max_heart_rate', :unit => 'bpm' field 17, 'uint8', 'avg_running_cadence', :unit => 'strides' field 18, 'uint8', 'max_running_cadence', :unit => 'strides' field 21, 'uint16', 'total_ascent', :unit => 'm' field 22, 'uint16', 'total_descent', :unit => 'm' field 23, 'enum', 'intensity', :dict => 'intensity' field 24, 'enum', 'lap_trigger', :dict => 'lap_trigger' field 25, 'enum', 'sport', :dict => 'sport' field 26, 'uint8', 'event_group' field 27, 'sint32', 'nec_lat', :type => 'coordinate' field 28, 'sint32', 'nec_long', :type => 'coordinate' field 29, 'sint32', 'swc_lat', :type => 'coordinate' field 30, 'sint32', 'swc_long', :type => 'coordinate' field 39, 'enum', 'sub_sport', :dict => 'sub_sport' field 71, 'uint16', 'wkt_step_index' field 72, 'enum', 'undocumented_field_72' field 77, 'uint16', 'avg_vertical_oscillation', :scale => 10, :unit => 'mm' field 78, 'uint16', 'avg_stance_time_percent', :scale => 100, :unit => 'percent' field 79, 'uint16', 'avg_stance_time', :scale => 10, :unit => 'ms' field 80, 'uint8', 'avg_fractional_cadence', :scale => 128 field 81, 'uint8', 'max_fractional_cadence', :scale => 128 field 82, 'uint8', 'total_fractional_cycles', :scale => 128 field 253, 'uint32', 'timestamp', :type => 'date_time' field 254, 'uint16', 'message_index' 20, 'record' field 0, 'sint32', 'position_lat', :type => 'coordinate' field 1, 'sint32', 'position_long', :type => 'coordinate' field 2, 'uint16', 'altitude', :scale => 5, :offset => 500, :unit => 'm' field 3, 'uint8', 'heart_rate', :unit => 'bpm' field 4, 'uint8', 'cadence', :unit => 'rpm' field 5, 'uint32', 'distance', :scale => 100, :unit => 'm' field 6, 'uint16', 'speed', :scale => 1000, :unit => 'm/s' field 39, 'uint16', 'vertical_oscillation', :scale => 10, :unit => 'mm' field 40, 'uint16', 'stance_time_percent', :scale => 100, :unit => 'percent' field 41, 'uint16', 'stance_time', :scale => 10, :unit => 'ms' field 42, 'enum', 'activity_type', :dict => 'activity_type' field 53, 'uint8', 'fractional_cadence', :scale => 128 # Just a guess field 253, 'uint32', 'timestamp', :type => 'date_time' 21, 'event' field 0, 'enum', 'event', :dict => 'event' field 1, 'enum', 'event_type', :dict => 'event_type' field 2, 'uint16', 'data16' field 3, 'uint32', 'data' field 4, 'uint8', 'event_group' field 253, 'uint32', 'timestamp', :type => 'date_time' # Possibly the signal quality of the best 6 satellites; Not documented in # FIT SDK 22, 'gps_signals' field 0, 'uint8', 'Satellite 1' field 1, 'uint8', 'Satellite 2' field 2, 'uint8', 'Satellite 3' field 3, 'uint8', 'Satellite 4' field 4, 'uint8', 'Satellite 5' field 5, 'enum', 'lock_status' field 253, 'uint32', 'timestamp', :type => 'date_time' 23, 'device_info' field 0, 'uint8', 'device_index' field 1, 'uint8', 'device_type', :dict => 'device_type' field 2, 'uint16', 'manufacturer', :dict => 'manufacturer' field 3, 'uint32z', 'serial_number' field 4, 'uint16', 'product', :dict => 'product' field 5, 'uint16', 'software_version', :scale => 100 field 6, 'uint8', 'hardware_version' field 7, 'uint32', 'cum_operating_time', :type => 'duration' field 8, 'uint32', 'undocumented_field_8' field 9, 'uint8', 'undocumented_field_9' field 10, 'uint16', 'battery_voltage', :scale => 256, :unit => 'V' field 11, 'uint8', 'battery_status', :dict => 'battery_status' field 15, 'uint32', 'rx_packets_ok' # just a guess field 16, 'uint32', 'rx_packets_err' # just a guess field 20, 'uint8z', 'undocumented_field_20' field 21, 'uint16z', 'undocumented_field_21' field 22, 'enum', 'undocumented_field_22' field 23, 'uint8', 'undocumented_field_23' field 25, 'enum', 'undocumented_field_25' field 253, 'uint32', 'timestamp', :type => 'date_time' 34, 'activity' field 0, 'uint32', 'total_timer_time', :type => 'duration', :scale => 1000 field 1, 'uint16', 'num_sessions' field 2, 'enum', 'type', :dict => 'activity_type' field 3, 'enum', 'event', :dict => 'event' field 4, 'enum', 'event_type', :dict => 'event_type' field 5, 'uint32', 'local_timestamp', :type => 'date_time' field 6, 'uint8', 'event_group' field 253, 'uint32', 'timestamp', :type => 'date_time' 49, 'file_creator' field 0, 'uint16', 'software_version' field 1, 'uint8', 'hardware_version' # Not part of the official ANT SDK doc 79, 'user_profile' field 0, 'uint16', 'undocumented_field_0' # seems to strongly correlate with vo2max field 1, 'uint8', 'age', :unit => 'years' field 2, 'uint8', 'height', :scale => 100, :unit => 'm' field 3, 'uint16', 'weight', :scale => 10, :unit => 'kg' field 4, 'enum', 'gender', :dict => 'gender' field 5, 'enum', 'activity_class', :scale => 10 field 6, 'uint8', 'max_hr', :unit => 'bpm' field 7, 'sint8', 'undocumented_field_7' # seems to be always 1 field 8, 'uint16', 'recovery_time', :scale => 60, :unit => 'hours' field 9, 'uint16', 'undocumented_field_9' # maybe activity measurement field 253, 'uint32', 'timestamp', :type => 'date_time' # Not part of the official ANT SDK doc 113, 'personal_records' field 0, 'uint16', 'longest_distance' field 1, 'enum', 'undocumented_field_1' # Seems to be always 1 field 2, 'uint32', 'distance', :scale => 100, :unit => 'm' # If longest_distance is 1, field 3 is the distance, not a duration! field 3, 'uint32', 'duration', :scale => 1000, :type => 'duration' field 4, 'uint32', 'start_time', :type => 'date_time' field 5, 'enum', 'new_record' field 253, 'uint32', 'timestamp', :type => 'date_time' # Not part of the official ANT SDK doc # The values in this message seem to be related to the activity history. # If no HRM is used, most of them are 0. Fields 4, 7, 9 and 10 always have # non-zero values. 140, 'undocumented_140' field 0, 'uint8', 'max_heart_rate', :unit => 'bpm' field 1, 'uint8', 'undocumented_field_1' field 2, 'sint32', 'undocumented_field_2' field 3, 'sint32', 'undocumented_field_3' field 4, 'uint8', 'total_training_effect', :scale => 10 field 5, 'sint32', 'undocumented_field_5' field 6, 'sint32', 'undocumented_field_6' field 7, 'sint32', 'undocumented_field_7' field 8, 'uint8', 'undocumented_field_8' field 9, 'uint16', 'recovery_time', :scale => 60, :unit => 'hours' field 10, 'uint16', 'undocumented_field_10' # always seems to be 340 field 253, 'uint32', 'timestamp', :type => 'date_time' # Not part of the official ANT SDK doc 141, 'gps_ephemeris' field 0, 'enum', 'valid' # 0 if no data cached, 1 else field 1, 'uint32', 'interval_start', :type => 'date_time' field 2, 'uint32', 'interval_end', :type => 'date_time' field 3, 'uint32', 'undocumented_field_3' field 4, 'sint32', 'undocumented_field_4' field 5, 'sint32', 'undocumented_field_5' field 253, 'uint32', 'timestamp', :type => 'date_time' end
- GlobalFitDictionaries =
GlobalFitDictList.new do dict 'activity_type' entry 0, 'generic' entry 1, 'running' entry 2, 'cycling' entry 3, 'transition' entry 4, 'fitness_equipment' entry 5, 'swimming' entry 6, 'walking' entry 254, 'all' dict 'battery_status' entry 1, 'new' entry 2, 'good' entry 3, 'ok' entry 4, 'low' entry 5, 'critical' dict 'device_type' entry 1, 'antfs' entry 11, 'bike_power' entry 12, 'environment_sensor_legacy' entry 13, 'multi_sport_speed_distance' entry 14, 'control' entry 17, 'fitness_equipment' entry 18, 'blood_pressure' entry 19, 'geocache_node' entry 20, 'light_electric_vehicle' entry 25, 'env_sensor' entry 26, 'racquet' entry 30, 'running_dynamics' # Just a guess entry 119, 'weight_scale' entry 120, 'heart_rate' entry 121, 'bike_speed_cadence' entry 122, 'bike_cadence' entry 123, 'bike_speed' entry 124, 'stride_speed_distance' dict 'event' entry 0, 'timer' entry 3, 'workout' entry 4, 'workout_step' entry 5, 'power_down' entry 6, 'power_up' entry 7, 'off_course' entry 8, 'session' entry 9, 'lap' entry 10, 'course_point' entry 11, 'battery' entry 12, 'virtual_partner_pace' entry 13, 'hr_high_alert' entry 14, 'hr_low_alert' entry 15, 'speed_high_alert' entry 16, 'speed_low_alert' entry 17, 'cad_high_alert' entry 18, 'cad_low_alert' entry 19, 'power_high_alert' entry 20, 'power_low_alert' entry 21, 'recovery_hr' entry 22, 'battery_low' entry 23, 'time_duration_alert' entry 24, 'distance_duration_alert' entry 25, 'calorie_duration_alert' entry 26, 'activity' entry 27, 'fitness_equipment' entry 28, 'length' entry 32, 'user_marker' entry 33, 'sport_point' entry 36, 'calibration' entry 37, 'vo2max' # guess entry 38, 'recovery_time' # guess (in minutes) entry 42, 'front_gear_change' entry 43, 'rear_gear_change' dict 'event_type' entry 0, 'start_time' entry 1, 'stop' entry 2, 'consecutive_depreciated' entry 3, 'marker' entry 4, 'stop_all' entry 5, 'begin_depreciated' entry 6, 'end_depreciated' entry 7, 'end_all_depreciated' entry 8, 'stop_disable' entry 9, 'stop_disable_all' dict 'file' entry 1, 'device' entry 2, 'settings' entry 3, 'sport' entry 4, 'activity' entry 5, 'workout' entry 6, 'course_point' entry 7, 'schedules' entry 9, 'weight_scale' entry 10, 'totals' entry 11, 'goals' entry 14, 'blood_pressure' entry 15, 'monitoring_a' entry 20, 'activity_summary' entry 28, 'monitoring_daily' entry 32, 'monitoring_b' dict 'gender' entry 0, 'female' entry 1, 'male' dict 'intensity' entry 0, 'active' entry 1, 'rest' entry 2, 'warmup' entry 3, 'cooldown' dict 'lap_trigger' entry 0, 'manual' entry 1, 'time' entry 2, 'distance' entry 3, 'position_start' entry 4, 'position_lap' entry 5, 'position_waypoint' entry 6, 'position_marked' entry 7, 'session_end' entry 8, 'fitness_equipment' dict 'manufacturer' entry 1, 'Garmin' entry 2, 'garmin_fr405_antfs' entry 3, 'zephyr' entry 4, 'dayton' entry 5, 'idt' entry 6, 'srm' entry 7, 'quarq' entry 8, 'ibike' entry 9, 'saris' entry 10, 'spark_hk' entry 11, 'tanita' entry 12, 'echowell' entry 13, 'dynastream_oem' entry 14, 'nautilus' entry 15, 'dynastream' entry 16, 'timex' entry 17, 'metrigear' entry 18, 'xelic' entry 19, 'beurer' entry 20, 'cardiosport' entry 21, 'a_and_d' entry 22, 'hmm' entry 23, 'suunto' entry 24, 'thita_elektronik' entry 25, 'gpulse' entry 26, 'clean_mobile' entry 27, 'pedal_brain' entry 28, 'peaksware' entry 29, 'saxonar' entry 30, 'lemond_fitness' entry 31, 'dexcom' entry 32, 'wahoo_fitness' entry 33, 'octane_fitness' entry 34, 'archinoetics' entry 35, 'the_hurt_box' entry 36, 'citizen_systems' entry 37, 'magellan' entry 38, 'osynce' entry 39, 'holux' entry 40, 'concept2' entry 42, 'one_giant_leap' entry 43, 'ace_sensor' entry 44, 'brim_brothers' entry 45, 'xplova' entry 46, 'perception_digital' entry 47, 'bf1systems' entry 48, 'pioneer' entry 49, 'spantec' entry 50, 'metalogics' entry 51, '4iiiis' entry 52, 'seiko_epson' entry 53, 'seiko_epson_oem' entry 54, 'ifor_powell' entry 55, 'maxwell_guider' entry 56, 'star_trac' entry 57, 'breakaway' entry 58, 'alatech_technology_ltd' entry 59, 'mio_technology_europe' entry 60, 'rotor' entry 61, 'geonaute' entry 62, 'id_bike' entry 63, 'specialized' entry 64, 'wtek' entry 65, 'physical_enterprises' entry 66, 'north_pole_engineering' entry 67, 'bkool' entry 68, 'cateye' entry 69, 'stages_cycling' entry 70, 'sigmasport' entry 71, 'tomtom' entry 72, 'peripedal' entry 73, 'wattbike' entry 74, 'moxy' entry 77, 'ciclosport' entry 78, 'powerbahn' entry 79, 'acorn_projects_aps' entry 80, 'lifebeam' entry 81, 'bontrager' entry 82, 'wellgo' entry 83, 'scosche' entry 84, 'magura' entry 85, 'woodway' entry 86, 'elite' entry 255, 'development' entry 5759, 'actigraphcorp' dict 'session_trigger' entry 0, 'activity_end' entry 1, 'manual' entry 2, 'auto_multi_sport' entry 3, 'fitness_equipment' dict 'sport' entry 0, 'generic' entry 1, 'running' entry 2, 'cycling' entry 3, 'transition' entry 4, 'fitness_equipment' entry 5, 'swimming' entry 6, 'basketball' entry 7, 'soccer' entry 8, 'tennis' entry 9, 'american_football' entry 10, 'training' entry 11, 'walking' entry 12, 'cross_country_skiing' entry 13, 'alpine_skiing' entry 14, 'snowboarding' entry 15, 'rowing' entry 16, 'mountaineering' entry 17, 'hiking' entry 18, 'multisport' entry 19, 'paddling' entry 254, 'all' dict 'sub_sport' entry 0, 'generic' entry 1, 'treadmill' entry 2, 'street' entry 3, 'trail' entry 4, 'track' entry 5, 'spin' entry 6, 'indoor_cycling' entry 7, 'road' entry 8, 'mountain' entry 9, 'downhill' entry 10, 'recumbent' entry 11, 'cyclocross' entry 12, 'hand_cycling' entry 13, 'track_cycling' entry 14, 'indoor_rowing' entry 15, 'elliptical' entry 16, 'stair_climbing' entry 17, 'lap_swimming' entry 18, 'open_water' entry 19, 'flexibility_training' entry 20, 'strength_training' entry 21, 'warm_up' entry 22, 'match' entry 23, 'exercise' entry 24, 'challenge' entry 25, 'indoor_skiing' entry 26, 'cardio_training' entry 254, 'all' dict 'product' entry 8, 'hrm_run_single_byte_product_id' entry 1623, 'fr620' entry 1632, 'fr220' entry 1752, 'hrm_run' entry 1928, 'fr620_japan' entry 1929, 'fr620_china' entry 1930, 'fr220_japan' entry 1931 , 'fr220_china' entry 10007, 'sdm4' end
Class Method Summary collapse
Class Method Details
.read(file, dump = false) ⇒ Object
17 18 19 |
# File 'lib/fit4ruby.rb', line 17 def self.read(file, dump = false) FitFile.new.read(file, dump) end |
.write(file, activity) ⇒ Object
21 22 23 |
# File 'lib/fit4ruby.rb', line 21 def self.write(file, activity) FitFile.new.write(file, activity) end |