Class: Escalator::IntelHex
- Inherits:
-
Object
- Object
- Escalator::IntelHex
- Defined in:
- lib/escalator/intel_hex.rb
Instance Attribute Summary collapse
-
#codes ⇒ Object
readonly
Returns the value of attribute codes.
-
#offset ⇒ Object
readonly
Returns the value of attribute offset.
Class Method Summary collapse
Instance Method Summary collapse
- #dump ⇒ Object
-
#initialize(codes, offset = 0) ⇒ IntelHex
constructor
A new instance of IntelHex.
- #write_to(path) ⇒ Object
Constructor Details
#initialize(codes, offset = 0) ⇒ IntelHex
Returns a new instance of IntelHex.
46 47 48 49 |
# File 'lib/escalator/intel_hex.rb', line 46 def initialize codes, offset = 0 @offset = offset @codes = codes end |
Instance Attribute Details
#codes ⇒ Object (readonly)
Returns the value of attribute codes.
28 29 30 |
# File 'lib/escalator/intel_hex.rb', line 28 def codes @codes end |
#offset ⇒ Object (readonly)
Returns the value of attribute offset.
28 29 30 |
# File 'lib/escalator/intel_hex.rb', line 28 def offset @offset end |
Class Method Details
.load(path) ⇒ Object
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/escalator/intel_hex.rb', line 30 def self.load path offset = 0 codes = [] File.read(path).lines.each do |l| case l[7,2] when "00" address = l[3,4].to_i(16) offset ||= address l.chomp[9..-3].each_char.each_slice(2).each_with_index do |pair, i| codes[address - offset + i] = pair.join("").to_i(16) end end end new codes, offset end |
Instance Method Details
#dump ⇒ Object
55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
# File 'lib/escalator/intel_hex.rb', line 55 def dump addr = offset lines = [] @codes.each_slice(16) do |line_codes| c = line_codes.size s = ":#{c.to_s(16).rjust(2, '0')}" s << "#{addr.to_s(16).rjust(4, '0')}" s << "00" line_codes.each do |code| s << "#{code.to_s(16).rjust(2, '0')}" end check_sum = 256 - (s[1..-1].scan(/.{2}/).inject(0){|sum, code| sum += code.to_i(16)} & 0xff) s << "#{check_sum.to_s(16).rjust(2, '0')}" lines << s addr += c end lines << ":00000001FF" lines << "" lines.join("\n") end |
#write_to(path) ⇒ Object
51 52 53 |
# File 'lib/escalator/intel_hex.rb', line 51 def write_to path File.write(path, dump) end |