Sha256: e0313f2acf515ad76bc52ff6403a959fff1cd3c15a600e5024059b3435506367

Contents?: true

Size: 1.25 KB

Versions: 1

Compression:

Stored size: 1.25 KB

Contents

require 'origen'
require_relative '../config/application.rb'

module OrigenMemoryImage
  autoload :Base, 'origen_memory_image/base'
  autoload :SRecord, 'origen_memory_image/s_record'
  autoload :Hex, 'origen_memory_image/hex'
  autoload :Binary, 'origen_memory_image/binary'

  def self.new(file, options = {})
    unless options[:source] == String
      file = Origen.file_handler.clean_path_to(file)
    end
    find_type(file, options).new(file, options)
  end

  # Returns the class of the image manager for the given file
  def self.find_type(file, options = {})
    # Read first 10 lines
    if options[:source] == String
      snippet = file.split("\n")
    else
      snippet = File.foreach(file.to_s).first(1)
    end
    case
    # Always do the binary first since the others won't be able to process
    # a binary snippet
    when options[:type] == :binary || (options[:source] != String && Binary.match?(file))
      Binary
    when options[:source] == String && Binary.match?(snippet, true)
      Binary
    when options[:type] == :srecord || SRecord.match?(snippet)
      SRecord
    when options[:type] == :hex || Hex.match?(snippet)
      Hex
    else
      fail "Unknown format for image file: #{file}"
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
origen_memory_image-0.7.0 lib/origen_memory_image.rb