58 lines
1.9 KiB
Python
58 lines
1.9 KiB
Python
# (c) Copyright 2018 by Coinkite Inc. This file is covered by license found in COPYING-CC.
|
|
#
|
|
# Code for the simulator to run, to get it to the point where main.py is called
|
|
# on real system. Equivilent to a few lines of code found in stm32/COLDCARD/initfs.c
|
|
#
|
|
|
|
import machine, pyb, sys
|
|
|
|
socket_path = sys.argv.pop() # last arg must be a socket path - remove
|
|
assert ("ckcc-simulator" in socket_path) and (".sock" in socket_path)
|
|
pyb.SOCKET_FILE_PATH = socket_path
|
|
print("socket:", pyb.SOCKET_FILE_PATH)
|
|
|
|
if '--metal' in sys.argv:
|
|
# next in argv will be two open file descriptors to use for serial I/O to a real Coldcard
|
|
import bare_metal
|
|
_n = sys.argv.index('--metal')+1
|
|
bare_metal.start(*(int(sys.argv[a]) for a in [_n, _n+1]))
|
|
del _n, bare_metal
|
|
|
|
if '--sflash' not in sys.argv:
|
|
import nvstore
|
|
from sim_settings import sim_defaults
|
|
nvstore.SettingsObject.default_values = lambda _: dict(sim_defaults)
|
|
|
|
# not best place for this
|
|
nvstore.MK4_WORKDIR = './settings/'
|
|
nvstore.SettingsObject._deny_slot = lambda *a:None
|
|
|
|
if '--eff' in sys.argv:
|
|
# ignore files ondisk from previous runs, and also dont write any
|
|
# - but do track settings during this run
|
|
NVSTORE_FAKE = {bytes(32): dict(sim_defaults)} # prelogin values
|
|
|
|
def _monkey_load(self, *a):
|
|
self.current = dict(NVSTORE_FAKE.get(self.nvram_key, False) or sim_defaults)
|
|
def _monkey_save(self, *a):
|
|
NVSTORE_FAKE[self.nvram_key] = dict(self.current)
|
|
|
|
nvstore.SettingsObject.load = _monkey_load
|
|
nvstore.SettingsObject.save = _monkey_save
|
|
|
|
if '--early-usb' in sys.argv:
|
|
from usb import enable_usb
|
|
enable_usb()
|
|
|
|
# Install various hacks and workarounds
|
|
import mk4
|
|
import sim_mk4
|
|
import sim_battery
|
|
import sim_psram
|
|
import sim_vdisk
|
|
|
|
if sys.argv[-1] != '-q':
|
|
import main # must be last, does not return
|
|
|
|
# EOF
|