class RPicSim::Mplab::MplabSimulator

This class is a wrapper for thecom.microchip.mplab.mdbcore.simulator.Simulator class, which helps manage running a simulation.

Public Class Methods

new(simulator) click to toggle source

Makes a new MplabSimulator object. @param simulator [com.microchip.mplab.mdbcore.simulator.Simulator]

# File lib/rpicsim/mplab/mplab_simulator.rb, line 10
def initialize(simulator)
  @simulator = simulator
end

Public Instance Methods

check_peripherals() click to toggle source
# File lib/rpicsim/mplab/mplab_simulator.rb, line 72
def check_peripherals
  check_peripherals_in_data_store
  check_peripheral_set
end
config_memory() click to toggle source
# File lib/rpicsim/mplab/mplab_simulator.rb, line 42
def config_memory
  @config_memory ||= MplabMemory.new data_store.getCFGMemory
end
eeprom_memory() click to toggle source
# File lib/rpicsim/mplab/mplab_simulator.rb, line 46
def eeprom_memory
  @eeprom_memory ||= MplabMemory.new data_store.getEEDataMemory
end
fr_memory() click to toggle source
# File lib/rpicsim/mplab/mplab_simulator.rb, line 18
def fr_memory
  @fr_memory ||= MplabMemory.new data_store.getFileMemory
end
nmmr_memory() click to toggle source
# File lib/rpicsim/mplab/mplab_simulator.rb, line 26
def nmmr_memory
  @nmmr_memory ||= MplabMemory.new data_store.getNMMRMemory
end
pins() click to toggle source
# File lib/rpicsim/mplab/mplab_simulator.rb, line 54
def pins
  pin_descs = (0...data_store.getNumPins).map { |i| data_store.getPinDesc(i) }

  pin_set = data_store.getProcessor.getPinSet

  # The PinSet class has strangely-implemented lazy loading.
  # We call getPin(String name) to force it to load pin data from
  # the SimulatorDataStore.
  pin_descs.each do |pin_desc|
    name = pin_desc.getSignal(0).name  # e.g. "RA0"
    pin_set.getPin name                # Trigger the lazy loading.
  end

  (0...pin_set.getNumPins).map do |i|
    MplabPin.new pin_set.getPin(i)
  end
end
processor() click to toggle source
# File lib/rpicsim/mplab/mplab_simulator.rb, line 50
def processor
  @processor ||= MplabProcessor.new data_store.getProcessor
end
program_memory() click to toggle source
# File lib/rpicsim/mplab/mplab_simulator.rb, line 30
def program_memory
  @program_memory ||= MplabMemory.new data_store.getProgMemory
end
sfr_memory() click to toggle source
# File lib/rpicsim/mplab/mplab_simulator.rb, line 22
def sfr_memory
  @sfr_memory ||= MplabMemory.new data_store.getSFRMemory
end
stack_memory() click to toggle source
# File lib/rpicsim/mplab/mplab_simulator.rb, line 34
def stack_memory
  @stack_memory ||= MplabMemory.new data_store.getStackMemory
end
stopwatch_value() click to toggle source
# File lib/rpicsim/mplab/mplab_simulator.rb, line 14
def stopwatch_value
  @simulator.GetStopwatchValue
end
test_memory() click to toggle source
# File lib/rpicsim/mplab/mplab_simulator.rb, line 38
def test_memory
  @test_memory ||= MplabMemory.new data_store.getTestMemory
end

Private Instance Methods

check_peripheral_set() click to toggle source
# File lib/rpicsim/mplab/mplab_simulator.rb, line 89
def check_peripheral_set
  peripherals = data_store.getProcessor.getPeripheralSet
  if peripherals.getNumPeripherals == 0
    raise 'MPLAB X failed to load any peripherals into the PeripheralSet.'
  end
end
check_peripherals_in_data_store() click to toggle source
# File lib/rpicsim/mplab/mplab_simulator.rb, line 83
def check_peripherals_in_data_store
  if data_store.getNumPeriphs == 0
    raise 'MPLAB X failed to load any peripheral descriptions into the data store.'
  end
end
data_store() click to toggle source
# File lib/rpicsim/mplab/mplab_simulator.rb, line 79
def data_store
  @simulator.getDataStore
end