class GdbFlasher::IHex::Segment
Attributes
base[RW]
data[RW]
Public Class Methods
new()
click to toggle source
# File lib/gdbflasher/ihex.rb, line 52 def initialize @base = 0 @data = "" end
Public Instance Methods
intersect(region_base, region_end)
click to toggle source
# File lib/gdbflasher/ihex.rb, line 61 def intersect(region_base, region_end) if region_base == region_end raise ArgumentError, "Region is empty" end segment_range = @base...@base + size region_range = region_base..region_end intersection_base = nil, intersection_end = nil if segment_range.cover? region_range.min intersection_base = region_range.min elsif region_range.cover? segment_range.min intersection_base = segment_range.min else return Segment.new end if segment_range.cover? region_range.max intersection_end = region_range.max elsif region_range.cover? segment_range.max intersection_end = segment_range.max else return Segment.new end segment = Segment.new segment.base = intersection_base segment.data = @data[intersection_base - @base..intersection_end - @base] segment end
pad_segment!(psize, fill_byte = 0x00)
click to toggle source
# File lib/gdbflasher/ihex.rb, line 94 def pad_segment!(psize, fill_byte = 0x00) if @base % size != 0 padding = size - (@base % size) @base -= padding @data = ([ fill_byte ] * padding).pack("C*") + @data end if @data.size % size != 0 padding = size - (@data.size % size) @data += ([ fill_byte ] * padding).pack "C*" end end
size()
click to toggle source
# File lib/gdbflasher/ihex.rb, line 57 def size @data.length end