Class: OpenC3::GenericConversion

Inherits:
Conversion show all
Defined in:
lib/openc3/conversions/generic_conversion.rb

Overview

Performs a generic conversion by evaluating Ruby code

Instance Attribute Summary collapse

Attributes inherited from Conversion

#converted_array_size, #converted_bit_size, #converted_type, #params

Instance Method Summary collapse

Methods inherited from Conversion

#as_json

Constructor Details

#initialize(code_to_eval, converted_type = nil, converted_bit_size = nil, converted_array_size = nil) ⇒ GenericConversion



41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/openc3/conversions/generic_conversion.rb', line 41

def initialize(code_to_eval, converted_type = nil, converted_bit_size = nil, converted_array_size = nil)
  super()
  @code_to_eval = code_to_eval
  if ConfigParser.handle_nil(converted_type)
    converted_type = converted_type.to_s.upcase.intern
    raise "Invalid type #{converted_type}" unless BinaryAccessor::DATA_TYPES.include?(converted_type)

    @converted_type = converted_type
  end
  @converted_bit_size = Integer(converted_bit_size) if ConfigParser.handle_nil(converted_bit_size)
  @converted_array_size = Integer(converted_array_size) if ConfigParser.handle_nil(converted_array_size)
  @params = [@code_to_eval, @converted_type, @converted_bit_size, @converted_array_size]
end

Instance Attribute Details

#code_to_evalString



31
32
33
# File 'lib/openc3/conversions/generic_conversion.rb', line 31

def code_to_eval
  @code_to_eval
end

Instance Method Details

#call(value, packet, buffer) ⇒ Object

Perform the conversion on the value.



56
57
58
59
60
61
# File 'lib/openc3/conversions/generic_conversion.rb', line 56

def call(value, packet, buffer)
  myself = packet # For backwards compatibility
  if myself # Remove unused variable warning for myself
    return eval(@code_to_eval)
  end
end

#to_config(read_or_write) ⇒ String



70
71
72
73
74
75
76
77
78
79
# File 'lib/openc3/conversions/generic_conversion.rb', line 70

def to_config(read_or_write)
  config = "    GENERIC_#{read_or_write}_CONVERSION_START"
  config << " #{@converted_type}" if @converted_type
  config << " #{@converted_bit_size}" if @converted_bit_size
  config << " #{@converted_array_size}" if @converted_array_size
  config << "\n"
  config << @code_to_eval
  config << "    GENERIC_#{read_or_write}_CONVERSION_END\n"
  config
end

#to_sString



64
65
66
# File 'lib/openc3/conversions/generic_conversion.rb', line 64

def to_s
  "#{@code_to_eval}"
end