Add boilerplate method for board configuration at boot time
This commit is contained in:
parent
2ccad46e26
commit
20bcfcdbb9
60
kmk/bootcfg.py
Normal file
60
kmk/bootcfg.py
Normal file
@ -0,0 +1,60 @@
|
||||
import digitalio
|
||||
import microcontroller
|
||||
|
||||
|
||||
def bootcfg(
|
||||
sense,
|
||||
source=None,
|
||||
no_cdc=True,
|
||||
no_hid=False,
|
||||
no_midi=True,
|
||||
no_storage=True,
|
||||
usb_id=None,
|
||||
):
|
||||
|
||||
if isinstance(sense, microcontroller.Pin):
|
||||
sense = digitalio.DigitalInOut(sense)
|
||||
sense.direction = digitalio.Direction.INPUT
|
||||
sense.pull = digitalio.Pull.UP
|
||||
|
||||
if isinstance(source, microcontroller.Pin):
|
||||
source = digitalio.DigitalInOut(source)
|
||||
source.direction = digitalio.Direction.OUTPUT
|
||||
source.value = False
|
||||
else:
|
||||
return False
|
||||
|
||||
# sense pulled low -> skip boot configuration
|
||||
if not sense.value:
|
||||
return False
|
||||
|
||||
if no_cdc:
|
||||
import usb_cdc
|
||||
|
||||
usb_cdc.disable()
|
||||
|
||||
if no_hid:
|
||||
import usb_hid
|
||||
|
||||
usb_hid.disable()
|
||||
|
||||
if no_midi:
|
||||
import usb_midi
|
||||
|
||||
usb_midi.disable()
|
||||
|
||||
if isinstance(usb_id, tuple):
|
||||
import supervisor
|
||||
|
||||
if hasattr(supervisor, 'set_usb_identification'):
|
||||
supervisor.set_usb_identification(*usb_id)
|
||||
|
||||
# The no_storage entry is intentionally evaluated last to ensure the drive
|
||||
# is mountable and rescueable, in case any of the previous code throws an
|
||||
# exception.
|
||||
if no_storage:
|
||||
import storage
|
||||
|
||||
storage.disable_usb_drive()
|
||||
|
||||
return True
|
Loading…
Reference in New Issue
Block a user