class Ecu::Festwert
def bytesize
def bytesize BYTESIZE[:number] end
def equality_properties
def equality_properties [:name, :value] end
def initialize(name:,
def initialize(name:, value:, unit: nil, function: nil, description: nil) @name = name @value = value.is_a?(Array) ? value.first : value @unit = unit @function = function @description = description end
def properties
def properties [:name, :value, :unit, :function, :description] end
def round_to(n)
def round_to(n) return self unless value.is_a?(Numeric) self.with \ value: value.round(n) end
def to_dcm(indented=false)
def to_dcm(indented=false) fmtstr = indented ? "%-25s%s\n" : "%s %s\n" sprintf(fmtstr, type.upcase, name).tap do |str| str << " LANGNAME #{description.enquote}\n" if description str << " FUNKTION #{function}\n" if function str << " EINHEIT_W #{unit.enquote}\n" if unit str << case value when Numeric then " WERT #{value}\n" when String then " TEXT #{value.enquote}\n" end str << "END\n" end end
def to_mfile
def to_mfile case value when Numeric then "#{name} = #{value};\n" when String then "#{name} = '#{value}';\n" end end
def to_s(detail: false)
def to_s(detail: false) if detail == :justvalue value.to_s elsif detail == :value "#{name}: #{value}" elsif detail == :onelinefull "#{name}: #{to_s(detail: :oneline)}" elsif detail == :oneline "#{value}" elsif detail <<~EOS #{name}: #{type} Value: #{value} Unit: "#{unit}" EOS else "#{name}: #{type}" end end