Class: OpenC3::Accessor

Inherits:
Object show all
Defined in:
lib/openc3/accessors/accessor.rb,
ext/openc3/ext/structure/structure.c

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(packet = nil) ⇒ Accessor

Returns a new instance of Accessor.



23
24
25
26
# File 'lib/openc3/accessors/accessor.rb', line 23

def initialize(packet = nil)
  @packet = packet
  @args = []
end

Instance Attribute Details

#packetObject

Returns the value of attribute packet.



21
22
23
# File 'lib/openc3/accessors/accessor.rb', line 21

def packet
  @packet
end

Class Method Details

.convert_to_type(value, item) ⇒ Object



94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
# File 'lib/openc3/accessors/accessor.rb', line 94

def self.convert_to_type(value, item)
  data_type = item.data_type
  if (data_type == :STRING) || (data_type == :BLOCK)
    #######################################
    # Handle :STRING and :BLOCK data types
    #######################################
    value = value.to_s

  elsif (data_type == :INT) || (data_type == :UINT)
    ###################################
    # Handle :INT data type
    ###################################
    value = Integer(value)

  elsif data_type == :FLOAT
    ##########################
    # Handle :FLOAT data type
    ##########################
    value = Float(value)

  else
    ############################
    # Handle Unknown data types
    ############################

    raise(ArgumentError, "data_type #{data_type} is not recognized")
  end
  return value
end

.read_item(item, buffer) ⇒ Object



71
72
73
# File 'lib/openc3/accessors/accessor.rb', line 71

def self.read_item(item, buffer)
  raise "Must be defined by subclass"
end

.read_items(items, buffer) ⇒ Object



79
80
81
82
83
84
85
# File 'lib/openc3/accessors/accessor.rb', line 79

def self.read_items(items, buffer)
  result = {}
  items.each do |item|
    result[item.name] = read_item(item, buffer)
  end
  return result
end

.write_item(item, value, buffer) ⇒ Object



75
76
77
# File 'lib/openc3/accessors/accessor.rb', line 75

def self.write_item(item, value, buffer)
  raise "Must be defined by subclass"
end

.write_items(items, values, buffer) ⇒ Object



87
88
89
90
91
92
# File 'lib/openc3/accessors/accessor.rb', line 87

def self.write_items(items, values, buffer)
  items.each_with_index do |item, index|
    write_item(item, values[index], buffer)
  end
  return values
end

Instance Method Details

#argsObject



51
52
53
# File 'lib/openc3/accessors/accessor.rb', line 51

def args
  return @args
end

#enforce_derived_write_conversion(item) ⇒ Object



67
68
69
# File 'lib/openc3/accessors/accessor.rb', line 67

def enforce_derived_write_conversion(item)
  return true
end

#enforce_encodingObject



55
56
57
# File 'lib/openc3/accessors/accessor.rb', line 55

def enforce_encoding
  return 'ASCII-8BIT'.freeze
end

#enforce_lengthObject



59
60
61
# File 'lib/openc3/accessors/accessor.rb', line 59

def enforce_length
  return true
end

#enforce_short_buffer_allowedObject



63
64
65
# File 'lib/openc3/accessors/accessor.rb', line 63

def enforce_short_buffer_allowed
  return false
end

#read_item(item, buffer) ⇒ Object



28
29
30
# File 'lib/openc3/accessors/accessor.rb', line 28

def read_item(item, buffer)
  self.class.read_item(item, buffer)
end

#read_items(items, buffer) ⇒ Object



36
37
38
39
40
41
42
# File 'lib/openc3/accessors/accessor.rb', line 36

def read_items(items, buffer)
  result = {}
  items.each do |item|
    result[item.name] = read_item(item, buffer)
  end
  return result
end

#write_item(item, value, buffer) ⇒ Object



32
33
34
# File 'lib/openc3/accessors/accessor.rb', line 32

def write_item(item, value, buffer)
  self.class.write_item(item, value, buffer)
end

#write_items(items, values, buffer) ⇒ Object



44
45
46
47
48
49
# File 'lib/openc3/accessors/accessor.rb', line 44

def write_items(items, values, buffer)
  items.each_with_index do |item, index|
    write_item(item, values[index], buffer)
  end
  return values
end