Method: OpenC3::LengthProtocol#initialize
- Defined in:
- lib/openc3/interfaces/protocols/length_protocol.rb
#initialize(length_bit_offset = 0, length_bit_size = 16, length_value_offset = 0, length_bytes_per_count = 1, length_endianness = 'BIG_ENDIAN', discard_leading_bytes = 0, sync_pattern = nil, max_length = nil, fill_length_and_sync_pattern = false, allow_empty_data = nil) ⇒ LengthProtocol
Returns a new instance of LengthProtocol.
49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
# File 'lib/openc3/interfaces/protocols/length_protocol.rb', line 49 def initialize( length_bit_offset = 0, length_bit_size = 16, length_value_offset = 0, length_bytes_per_count = 1, length_endianness = 'BIG_ENDIAN', discard_leading_bytes = 0, sync_pattern = nil, max_length = nil, fill_length_and_sync_pattern = false, allow_empty_data = nil ) super(discard_leading_bytes, sync_pattern, fill_length_and_sync_pattern, allow_empty_data) # Save length field attributes @length_bit_offset = Integer(length_bit_offset) @length_bit_size = Integer(length_bit_size) @length_value_offset = Integer(length_value_offset) @length_bytes_per_count = Integer(length_bytes_per_count) # Save endianness if length_endianness.to_s.upcase == 'LITTLE_ENDIAN' @length_endianness = :LITTLE_ENDIAN else @length_endianness = :BIG_ENDIAN end # Derive number of bytes required to contain entire length field if @length_endianness == :BIG_ENDIAN or ((@length_bit_offset % 8) == 0) length_bits_needed = @length_bit_offset + @length_bit_size length_bits_needed += 8 if (length_bits_needed % 8) != 0 @length_bytes_needed = ((length_bits_needed - 1) / 8) + 1 else @length_bytes_needed = (length_bit_offset / 8) + 1 end # Save max length setting @max_length = ConfigParser.handle_nil(max_length) @max_length = Integer(@max_length) if @max_length end |