class RPicSim::Mplab::MplabMemory

Public Class Methods

new(memory) click to toggle source

@param memory Should implement the interface com.microchip.mplab.mdbcore.memory.Memory

# File lib/rpicsim/mplab/mplab_memory.rb, line 6
def initialize(memory)
  @memory = memory
end

Public Instance Methods

on_change() { |address_ranges| ... } click to toggle source
# File lib/rpicsim/mplab/mplab_memory.rb, line 36
def on_change(&callback)
  MplabObserver.new(@memory) do |event|
    next if event.EventType != Mdbcore.memory::MemoryEvent::EVENTS::MEMORY_CHANGED
    address_ranges = event.AffectedAddresses.map do |mr|
      mr.Address...(mr.Address + mr.Size)
    end
    yield address_ranges
  end
end
read_byte(address) click to toggle source
# File lib/rpicsim/mplab/mplab_memory.rb, line 10
def read_byte(address)
  array = [0].to_java(:byte)
  @memory.Read(address, 1, array)
  array.ubyte_get(0)
end
read_word(address) click to toggle source
# File lib/rpicsim/mplab/mplab_memory.rb, line 28
def read_word(address)
  @memory.ReadWord(address)
end
valid_address?(address) click to toggle source
# File lib/rpicsim/mplab/mplab_memory.rb, line 32
def valid_address?(address)
  @memory.IsValidAddress(address)
end
write_byte(address, byte) click to toggle source
# File lib/rpicsim/mplab/mplab_memory.rb, line 16
def write_byte(address, byte)
  array = Java.byte[1].new
  array.ubyte_set(0, byte)
  @memory.Write(address, 1, array)
  byte
end
write_word(address, value) click to toggle source
# File lib/rpicsim/mplab/mplab_memory.rb, line 23
def write_word(address, value)
  @memory.WriteWord(address, value)
  value
end