Sha256: 05c4dabc2c98ce51e9fb28216c6c54eaf3cae6327061c9bacfe29624f9b4966f

Contents?: true

Size: 1.78 KB

Versions: 2

Compression:

Stored size: 1.78 KB

Contents

#!/usr/bin/env ruby -w
# encoding: UTF-8
#
# = FitDeveloperDataFieldDefinition.rb -- Fit4Ruby - FIT file processing library for Ruby
#
# Copyright (c) 2017, 2018 by Chris Schlaeger <cs@taskjuggler.org>
#
# 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.
#

require 'bindata'
require 'fit4ruby/FitDefinitionFieldBase'
require 'fit4ruby/FitTypeDefs'

module Fit4Ruby

  class FitDeveloperDataFieldDefinition < BinData::Record

    include FitDefinitionFieldBase

    uint8 :field_number
    uint8 :size_in_bytes
    uint8 :developer_data_index

    def name
      "developer_field_#{developer_data_index.snapshot}_" +
        "#{field_number.snapshot}"
    end

    def type
      FIT_TYPE_DEFS[checked_base_type_number][1]
    end

    def base_type_bytes
      FIT_TYPE_DEFS[checked_base_type_number][3]
    end

    def byte_count
      size_in_bytes
    end

    private

    def find_field_definition
      tlr = parent.parent.fit_entity.top_level_record
      field = tlr.field_descriptions.find do |fd|
        fd.field_definition_number == field_number.snapshot &&
          fd.developer_data_index == developer_data_index.snapshot
      end
      unless field
        Log.error "Unknown developer field #{field_number.snapshot} " +
          "for developer #{developer_data_index.snapshot}"
      end

      field
    end

    def checked_base_type_number
      field = find_field_definition
      base_type_number = field.fit_base_type_id & 0x7F
      if FIT_TYPE_DEFS.length <= base_type_number
        Log.error "Unknown FIT Base type #{base_type_number} in " +
          "Global FIT Message #{name}"
        return 0
      end

      base_type_number
    end

  end

end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
fit4ruby-3.1.0 lib/fit4ruby/FitDeveloperDataFieldDefinition.rb
fit4ruby-3.0.0 lib/fit4ruby/FitDeveloperDataFieldDefinition.rb