Merge pull request #69 from KMKfw/topic-circuitpy-over-msc
Address #52 almost entirely
This commit is contained in:
		@@ -16,38 +16,6 @@ jobs:
 | 
			
		||||
 | 
			
		||||
      - run: make test
 | 
			
		||||
 | 
			
		||||
  build_feather_m4_express:
 | 
			
		||||
    docker:
 | 
			
		||||
      - image: 'kmkfw/base'
 | 
			
		||||
 | 
			
		||||
    environment:
 | 
			
		||||
        KMK_TEST: 1
 | 
			
		||||
        PIPENV_VENV_IN_PROJECT: 1
 | 
			
		||||
 | 
			
		||||
    steps:
 | 
			
		||||
      - checkout
 | 
			
		||||
      - restore_cache:
 | 
			
		||||
          keys:
 | 
			
		||||
            - v2-kmk-venv-{{ checksum "Pipfile.lock" }}
 | 
			
		||||
 | 
			
		||||
      - run: make SKIP_KEYMAP_VALIDATION=1 USER_KEYMAP=user_keymaps/noop.py build-feather-m4-express
 | 
			
		||||
 | 
			
		||||
  build_itsybitsy_m4_express:
 | 
			
		||||
    docker:
 | 
			
		||||
      - image: 'kmkfw/base'
 | 
			
		||||
 | 
			
		||||
    environment:
 | 
			
		||||
        KMK_TEST: 1
 | 
			
		||||
        PIPENV_VENV_IN_PROJECT: 1
 | 
			
		||||
 | 
			
		||||
    steps:
 | 
			
		||||
      - checkout
 | 
			
		||||
      - restore_cache:
 | 
			
		||||
          keys:
 | 
			
		||||
            - v2-kmk-venv-{{ checksum "Pipfile.lock" }}
 | 
			
		||||
 | 
			
		||||
      - run: make SKIP_KEYMAP_VALIDATION=1 USER_KEYMAP=user_keymaps/noop.py build-itsybitsy-m4-express
 | 
			
		||||
 | 
			
		||||
  build_pyboard:
 | 
			
		||||
    docker:
 | 
			
		||||
      - image: 'kmkfw/base'
 | 
			
		||||
@@ -74,22 +42,6 @@ workflows:
 | 
			
		||||
              only: /.*/
 | 
			
		||||
            tags:
 | 
			
		||||
              only: /.*/
 | 
			
		||||
      - build_feather_m4_express:
 | 
			
		||||
          filters:
 | 
			
		||||
            branches:
 | 
			
		||||
              only: /.*/
 | 
			
		||||
            tags:
 | 
			
		||||
              only: /.*/
 | 
			
		||||
          requires:
 | 
			
		||||
            - test
 | 
			
		||||
      - build_itsybitsy_m4_express:
 | 
			
		||||
          filters:
 | 
			
		||||
            branches:
 | 
			
		||||
              only: /.*/
 | 
			
		||||
            tags:
 | 
			
		||||
              only: /.*/
 | 
			
		||||
          requires:
 | 
			
		||||
            - test
 | 
			
		||||
      - build_pyboard:
 | 
			
		||||
          filters:
 | 
			
		||||
            branches:
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										4
									
								
								.gitmodules
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								.gitmodules
									
									
									
									
										vendored
									
									
								
							@@ -1,7 +1,3 @@
 | 
			
		||||
[submodule "circuitpython"]
 | 
			
		||||
	path = vendor/circuitpython
 | 
			
		||||
	url = https://github.com/kmkfw/circuitpython.git
 | 
			
		||||
	ignore = dirty
 | 
			
		||||
[submodule "upy-lib"]
 | 
			
		||||
	path = vendor/upy-lib
 | 
			
		||||
	url = https://github.com/kmkfw/micropython-lib.git
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										210
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										210
									
								
								Makefile
									
									
									
									
									
								
							@@ -1,13 +1,11 @@
 | 
			
		||||
.SILENT:
 | 
			
		||||
 | 
			
		||||
.PHONY: \
 | 
			
		||||
	build-feather \
 | 
			
		||||
	circuitpy-deps \
 | 
			
		||||
	circuitpy-freeze-kmk-nrf \
 | 
			
		||||
	devdeps \
 | 
			
		||||
	freeze-nrf-build-deps \
 | 
			
		||||
	lint
 | 
			
		||||
 | 
			
		||||
.DEFAULT: all
 | 
			
		||||
 | 
			
		||||
DOCKER_BASE_TAG ?= latest
 | 
			
		||||
DOCKER_TAG ?= latest
 | 
			
		||||
 | 
			
		||||
@@ -17,6 +15,8 @@ AMPY_DELAY ?= 1.5
 | 
			
		||||
ARDUINO ?= /usr/share/arduino
 | 
			
		||||
PIPENV ?= $(shell which pipenv)
 | 
			
		||||
 | 
			
		||||
all: copy-kmk copy-keymap copy-main.py
 | 
			
		||||
 | 
			
		||||
.docker_base: Dockerfile_base
 | 
			
		||||
	@echo "===> Building Docker base image kmkfw/base:${DOCKER_BASE_TAG}"
 | 
			
		||||
	@docker build -f Dockerfile_base -t kmkfw/base:${DOCKER_BASE_TAG} .
 | 
			
		||||
@@ -75,15 +75,6 @@ test: lint micropython-build-unix
 | 
			
		||||
	@rsync -ah vendor/ build/
 | 
			
		||||
	@touch .submodules
 | 
			
		||||
 | 
			
		||||
.circuitpy-deps: .submodules
 | 
			
		||||
	@echo "===> Building circuitpython/mpy-cross"
 | 
			
		||||
	@echo "===> Building circuitpython/mpy-cross" >> .build.log
 | 
			
		||||
	@pipenv run $(MAKE) -C build/circuitpython/mpy-cross 2>&1 >> .build.log
 | 
			
		||||
	@echo "===> Pulling Nordic BLE stack"
 | 
			
		||||
	@echo "===> Pulling Nordic BLE stack" >> .build.log
 | 
			
		||||
	@cd build/circuitpython/ports/nrf && ./drivers/bluetooth/download_ble_stack.sh 2>/dev/null >/dev/null
 | 
			
		||||
	@touch .circuitpy-deps
 | 
			
		||||
 | 
			
		||||
.micropython-deps: .submodules
 | 
			
		||||
	@echo "===> Building micropython/mpy-cross"
 | 
			
		||||
	@echo "===> Building micropython/mpy-cross" >> .build.log
 | 
			
		||||
@@ -91,7 +82,6 @@ test: lint micropython-build-unix
 | 
			
		||||
	@touch .micropython-deps
 | 
			
		||||
 | 
			
		||||
submodules: .submodules
 | 
			
		||||
circuitpy-deps: .circuitpy-deps
 | 
			
		||||
micropython-deps: .micropython-deps
 | 
			
		||||
 | 
			
		||||
build/micropython/ports/unix/micropython: micropython-deps build/micropython/ports/unix/modules/.kmk_frozen
 | 
			
		||||
@@ -101,10 +91,6 @@ build/micropython/ports/unix/micropython: micropython-deps build/micropython/por
 | 
			
		||||
 | 
			
		||||
micropython-build-unix: build/micropython/ports/unix/micropython
 | 
			
		||||
 | 
			
		||||
freeze-atmel-samd-build-deps: build/circuitpython/ports/atmel-samd/modules/.kmk_frozen
 | 
			
		||||
freeze-nrf-build-deps: build/circuitpython/ports/nrf/freeze/.kmk_frozen
 | 
			
		||||
freeze-stm32-build-deps: build/micropython/ports/stm32/freeze/.kmk_frozen
 | 
			
		||||
 | 
			
		||||
build/micropython/ports/unix/modules/.kmk_frozen: upy-freeze.txt submodules.toml
 | 
			
		||||
	@echo "===> Preparing vendored dependencies for bundling into MicroPython for Unix"
 | 
			
		||||
	@echo "===> Preparing vendored dependencies for bundling into MicroPython for Unix" >> .build.log
 | 
			
		||||
@@ -113,21 +99,7 @@ build/micropython/ports/unix/modules/.kmk_frozen: upy-freeze.txt submodules.toml
 | 
			
		||||
		xargs -I '{}' rsync -ah {} build/micropython/ports/unix/modules/
 | 
			
		||||
	@touch $@
 | 
			
		||||
 | 
			
		||||
build/circuitpython/ports/atmel-samd/modules/.kmk_frozen: upy-freeze.txt submodules.toml
 | 
			
		||||
	@echo "===> Preparing vendored dependencies for bundling into CircuitPython for atmel-samd"
 | 
			
		||||
	@echo "===> Preparing vendored dependencies for bundling into CircuitPython for atmel-samd" >> .build.log
 | 
			
		||||
	@rm -rf build/circuitpython/ports/atmel-samd/modules/*
 | 
			
		||||
	@cat upy-freeze.txt | egrep -v '(^#|^\s*$|^\s*\t*#)' | grep CIRCUITPY | cut -d'|' -f2- | \
 | 
			
		||||
		xargs -I '{}' rsync -ah {} build/circuitpython/ports/atmel-samd/modules/
 | 
			
		||||
	@touch $@
 | 
			
		||||
 | 
			
		||||
build/circuitpython/ports/nrf/freeze/.kmk_frozen: upy-freeze.txt submodules.toml
 | 
			
		||||
	@echo "===> Preparing vendored dependencies for bundling into CircuitPython for NRF"
 | 
			
		||||
	@echo "===> Preparing vendored dependencies for bundling into CircuitPython for NRF" >> .build.log
 | 
			
		||||
	@rm -rf build/circuitpython/ports/nrf/freeze/*
 | 
			
		||||
	@cat upy-freeze.txt | egrep -v '(^#|^\s*$|^\s*\t*#)' | grep CIRCUITPY | cut -d'|' -f2- | \
 | 
			
		||||
		xargs -I '{}' rsync -ah {} build/circuitpython/ports/nrf/freeze/
 | 
			
		||||
	@touch $@
 | 
			
		||||
freeze-stm32-build-deps: build/micropython/ports/stm32/freeze/.kmk_frozen
 | 
			
		||||
 | 
			
		||||
build/micropython/ports/stm32/freeze/.kmk_frozen: upy-freeze.txt submodules.toml
 | 
			
		||||
	@echo "===> Preparing vendored dependencies for bundling into MicroPython for STM32"
 | 
			
		||||
@@ -138,66 +110,12 @@ build/micropython/ports/stm32/freeze/.kmk_frozen: upy-freeze.txt submodules.toml
 | 
			
		||||
		xargs -I '{}' rsync -ah {} build/micropython/ports/stm32/freeze/
 | 
			
		||||
	@touch $@
 | 
			
		||||
 | 
			
		||||
circuitpy-freeze-kmk-atmel-samd: freeze-atmel-samd-build-deps
 | 
			
		||||
	@echo "===> Preparing KMK source for bundling into CircuitPython for atmel-samd"
 | 
			
		||||
	@echo "===> Preparing KMK source for bundling into CircuitPython for atmel-samd" >> .build.log
 | 
			
		||||
	@rm -rf build/circuitpython/ports/atmel-samd/modules/kmk*
 | 
			
		||||
	@rsync -ah kmk build/circuitpython/ports/atmel-samd/modules/ --exclude kmk/micropython
 | 
			
		||||
 | 
			
		||||
circuitpy-freeze-kmk-nrf: freeze-nrf-build-deps
 | 
			
		||||
	@echo "===> Preparing KMK source for bundling into CircuitPython for NRF"
 | 
			
		||||
	@echo "===> Preparing KMK source for bundling into CircuitPython for NRF" >> .build.log
 | 
			
		||||
	@rm -rf build/circuitpython/ports/nrf/kmk*
 | 
			
		||||
	@rsync -ah kmk build/circuitpython/ports/nrf/freeze/ --exclude kmk/micropython
 | 
			
		||||
 | 
			
		||||
micropython-freeze-kmk-stm32: freeze-stm32-build-deps
 | 
			
		||||
	@echo "===> Preparing KMK source for bundling into MicroPython for STM32"
 | 
			
		||||
	@echo "===> Preparing KMK source for bundling into MicroPython for STM32" >> .build.log
 | 
			
		||||
	@rm -rf build/micropython/ports/stm32/freeze/kmk*
 | 
			
		||||
	@rsync -ah kmk build/micropython/ports/stm32/freeze/ --exclude kmk/circuitpython
 | 
			
		||||
 | 
			
		||||
circuitpy-build-feather-m4-express:
 | 
			
		||||
	@echo "===> Building CircuitPython for atmel-samd - Feather M4 Express"
 | 
			
		||||
	@echo "===> Building CircuitPython for atmel-samd - Feather M4 Express" >> .build.log
 | 
			
		||||
	@pipenv run $(MAKE) -C build/circuitpython/ports/atmel-samd BOARD=feather_m4_express FROZEN_MPY_DIRS="modules" clean all 2>&1 >> .build.log
 | 
			
		||||
 | 
			
		||||
circuitpy-build-itsybitsy-m4-express:
 | 
			
		||||
	@echo "===> Building CircuitPython for atmel-samd - ItsyBitsy M4 Express"
 | 
			
		||||
	@echo "===> Building CircuitPython for atmel-samd - ItsyBitsy M4 Express" >> .build.log
 | 
			
		||||
	@pipenv run $(MAKE) -C build/circuitpython/ports/atmel-samd BOARD=itsybitsy_m4_express FROZEN_MPY_DIRS="modules" clean all 2>&1 >> .build.log
 | 
			
		||||
 | 
			
		||||
circuitpy-build-nrf:
 | 
			
		||||
	@echo "===> Building CircuitPython for NRF - Feather NRF52832"
 | 
			
		||||
	@echo "===> Building CircuitPython for NRF - Feather NRF52832" >> .build.log
 | 
			
		||||
	@pipenv run $(MAKE) -C build/circuitpython/ports/nrf BOARD=feather_nrf52832 SERIAL=${AMPY_PORT} SD=s132 FROZEN_MPY_DIR=freeze clean all 2>&1 >> .build.log
 | 
			
		||||
 | 
			
		||||
circuitpy-flash-feather-m4-express:
 | 
			
		||||
	@echo
 | 
			
		||||
	@echo "!!!!!!!!!!!!!!!!!!!!"
 | 
			
		||||
	@echo "Flashing not available for Feather M4 Express over bossa right now"
 | 
			
		||||
	@echo "First, double tap the reset button on the Feather. You should see a red light near the USB port"
 | 
			
		||||
	@echo "Then, find and (if necessary) mount the USB drive that will show up (should be about 4MB)"
 | 
			
		||||
	@echo "Copy build/circuitpython/ports/atmel-samd/build-feather_m4_express/firmware.uf2 to this device"
 | 
			
		||||
	@echo "The device will auto-reboot. You may need to forcibly unmount the drive on Linuxes, with umount -f path/to/mountpoint"
 | 
			
		||||
	@echo "!!!!!!!!!!!!!!!!!!!!"
 | 
			
		||||
	@echo
 | 
			
		||||
 | 
			
		||||
circuitpy-flash-itsybitsy-m4-express:
 | 
			
		||||
	@echo
 | 
			
		||||
	@echo "!!!!!!!!!!!!!!!!!!!!"
 | 
			
		||||
	@echo "Flashing not available for ItsyBitsy M4 Express over bossa right now"
 | 
			
		||||
	@echo "First, double tap the reset button on the ItsyBitsy. You should see a red light near the USB port"
 | 
			
		||||
	@echo "Then, find and (if necessary) mount the USB drive that will show up (should be about 4MB)"
 | 
			
		||||
	@echo "Copy build/circuitpython/ports/atmel-samd/build-itsybitsy_m4_express/firmware.uf2 to this device"
 | 
			
		||||
	@echo "The device will auto-reboot. You may need to forcibly unmount the drive on Linuxes, with umount -f path/to/mountpoint"
 | 
			
		||||
	@echo "!!!!!!!!!!!!!!!!!!!!"
 | 
			
		||||
	@echo
 | 
			
		||||
 | 
			
		||||
circuitpy-flash-nrf: circuitpy-build-nrf
 | 
			
		||||
	@echo "===> Flashing CircuitPython with KMK and your keymap"
 | 
			
		||||
	@echo "===> Flashing CircuitPython with KMK and your keymap" >> .build.log
 | 
			
		||||
	@pipenv run $(MAKE) -C build/circuitpython/ports/nrf BOARD=feather_nrf52832 SERIAL=${AMPY_PORT} SD=s132 FROZEN_MPY_DIR=freeze dfu-gen dfu-flash 2>&1 >> .build.log
 | 
			
		||||
 | 
			
		||||
micropython-build-pyboard:
 | 
			
		||||
	@echo "===> Building MicroPython for STM32 - PYBV11"
 | 
			
		||||
	@echo "===> Building MicroPython for STM32 - PYBV11" >> .build.log
 | 
			
		||||
@@ -208,74 +126,6 @@ micropython-flash-pyboard: micropython-build-pyboard
 | 
			
		||||
	@echo "===> Flashing MicroPython with KMK and your keymap" >> .build.log
 | 
			
		||||
	@pipenv run $(MAKE) -j4 -C build/micropython/ports/stm32/ BOARD=PYBV11 FROZEN_MPY_DIR=freeze deploy 2>&1 >> .build.log
 | 
			
		||||
 | 
			
		||||
circuitpy-flash-nrf-entrypoint:
 | 
			
		||||
	@echo "===> Flashing entrypoint if it doesn't already exist"
 | 
			
		||||
	@sleep 2
 | 
			
		||||
	@-timeout -k 5s 10s $(PIPENV) run ampy -p ${AMPY_PORT} -d ${AMPY_DELAY} -b ${AMPY_BAUD} rm main.py 2>/dev/null
 | 
			
		||||
	@-timeout -k 5s 10s $(PIPENV) run ampy -p ${AMPY_PORT} -d ${AMPY_DELAY} -b ${AMPY_BAUD} put entrypoints/feather_nrf52832.py main.py
 | 
			
		||||
	@echo "===> Flashed keyboard successfully!"
 | 
			
		||||
 | 
			
		||||
ifndef USER_KEYMAP
 | 
			
		||||
build-feather-m4-express:
 | 
			
		||||
	@echo "===> Must provide a USER_KEYMAP (usually from user_keymaps/...) to build!" && exit 1
 | 
			
		||||
 | 
			
		||||
flash-feather-m4-express:
 | 
			
		||||
	@echo "===> Must provide a USER_KEYMAP (usually from user_keymaps/...) to build!" && exit 1
 | 
			
		||||
else
 | 
			
		||||
ifndef SKIP_KEYMAP_VALIDATION
 | 
			
		||||
build-feather-m4-express: clean-build-log lint circuitpy-deps circuitpy-freeze-kmk-atmel-samd micropython-build-unix
 | 
			
		||||
else
 | 
			
		||||
build-feather-m4-express: clean-build-log lint circuitpy-deps circuitpy-freeze-kmk-atmel-samd
 | 
			
		||||
endif
 | 
			
		||||
	@echo "===> Preparing keyboard script for bundling into CircuitPython for atmel-samd"
 | 
			
		||||
ifndef SKIP_KEYMAP_VALIDATION
 | 
			
		||||
	@MICROPYPATH=./ ./bin/micropython.sh bin/keymap_sanity_check.py ${USER_KEYMAP}
 | 
			
		||||
endif
 | 
			
		||||
	@rsync -ah ${USER_KEYMAP} build/circuitpython/ports/atmel-samd/modules/kmk_keyboard_user.py
 | 
			
		||||
	@rsync -ah kmk/entrypoints/global.py build/circuitpython/ports/atmel-samd/modules/_main.py
 | 
			
		||||
	@$(MAKE) circuitpy-build-feather-m4-express
 | 
			
		||||
 | 
			
		||||
flash-feather-m4-express: build-feather-m4-express circuitpy-flash-feather-m4-express
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
ifndef USER_KEYMAP
 | 
			
		||||
build-feather-nrf52832:
 | 
			
		||||
	@echo "===> Must provide a USER_KEYMAP (usually from user_keymaps/...) to build!" && exit 1
 | 
			
		||||
 | 
			
		||||
flash-feather-nrf52832:
 | 
			
		||||
	@echo "===> Must provide a USER_KEYMAP (usually from user_keymaps/...) to build!" && exit 1
 | 
			
		||||
else
 | 
			
		||||
build-feather-nrf52832: clean-build-log lint circuitpy-deps circuitpy-freeze-kmk-nrf
 | 
			
		||||
	@echo "===> Preparing keyboard script for bundling into CircuitPython for NRF"
 | 
			
		||||
	@rsync -ah ${USER_KEYMAP} build/circuitpython/ports/nrf/freeze/kmk_keyboard_user.py
 | 
			
		||||
	@$(MAKE) circuitpy-build-nrf
 | 
			
		||||
 | 
			
		||||
flash-feather-nrf52832: clean-build-log build-feather-nrf52832 circuitpy-flash-nrf circuitpy-flash-nrf-endpoint
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
ifndef USER_KEYMAP
 | 
			
		||||
build-itsybitsy-m4-express:
 | 
			
		||||
	@echo "===> Must provide a USER_KEYMAP (usually from user_keymaps/...) to build!" && exit 1
 | 
			
		||||
 | 
			
		||||
flash-itsybitsy-m4-express:
 | 
			
		||||
	@echo "===> Must provide a USER_KEYMAP (usually from user_keymaps/...) to build!" && exit 1
 | 
			
		||||
else
 | 
			
		||||
ifndef SKIP_KEYMAP_VALIDATION
 | 
			
		||||
build-itsybitsy-m4-express: clean-build-log lint circuitpy-deps circuitpy-freeze-kmk-atmel-samd micropython-build-unix
 | 
			
		||||
else
 | 
			
		||||
build-itsybitsy-m4-express: clean-build-log lint circuitpy-deps circuitpy-freeze-kmk-atmel-samd
 | 
			
		||||
endif
 | 
			
		||||
	@echo "===> Preparing keyboard script for bundling into CircuitPython for atmel-samd"
 | 
			
		||||
ifndef SKIP_KEYMAP_VALIDATION
 | 
			
		||||
	@MICROPYPATH=./ ./bin/micropython.sh bin/keymap_sanity_check.py ${USER_KEYMAP}
 | 
			
		||||
endif
 | 
			
		||||
	@rsync -ah ${USER_KEYMAP} build/circuitpython/ports/atmel-samd/modules/kmk_keyboard_user.py
 | 
			
		||||
	@rsync -ah kmk/entrypoints/global.py build/circuitpython/ports/atmel-samd/modules/_main.py
 | 
			
		||||
	@$(MAKE) circuitpy-build-itsybitsy-m4-express
 | 
			
		||||
 | 
			
		||||
flash-itsybitsy-m4-express: build-itsybitsy-m4-express circuitpy-flash-itsybitsy-m4-express
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
ifndef USER_KEYMAP
 | 
			
		||||
build-pyboard:
 | 
			
		||||
	@echo "===> Must provide a USER_KEYMAP (usually from user_keymaps/...) to build!" && exit 1
 | 
			
		||||
@@ -292,8 +142,8 @@ endif
 | 
			
		||||
ifndef SKIP_KEYMAP_VALIDATION
 | 
			
		||||
	@MICROPYPATH=./ ./bin/micropython.sh bin/keymap_sanity_check.py ${USER_KEYMAP}
 | 
			
		||||
endif
 | 
			
		||||
	@rsync -ah ${USER_KEYMAP} build/micropython/ports/stm32/freeze/kmk_keyboard_user.py
 | 
			
		||||
	@rsync -ah kmk/entrypoints/global.py build/micropython/ports/stm32/freeze/_main.py
 | 
			
		||||
	@rsync -ah ${USER_KEYMAP} build/micropython/ports/stm32/freeze/main.py
 | 
			
		||||
	@rsync -ah main.py build/micropython/ports/stm32/freeze/_main.py
 | 
			
		||||
	@rsync -ah kmk/entrypoints/handwire/pyboard_boot.py build/micropython/ports/stm32/freeze/_boot.py
 | 
			
		||||
	@$(MAKE) AMPY_PORT=/dev/ttyACM0 AMPY_BAUD=115200 micropython-build-pyboard
 | 
			
		||||
 | 
			
		||||
@@ -301,7 +151,53 @@ flash-pyboard: build-pyboard micropython-flash-pyboard
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
reset-bootloader:
 | 
			
		||||
	@echo "===> Rebooting your board to bootloader (safe to ignore file not found errors)"
 | 
			
		||||
	@-timeout -k 5s 10s $(PIPENV) run ampy -p /dev/ttyACM0 -d ${AMPY_DELAY} -b ${AMPY_BAUD} run util/bootloader.py
 | 
			
		||||
 | 
			
		||||
reset-board:
 | 
			
		||||
	@echo "===> Rebooting your board (safe to ignore file not found errors)"
 | 
			
		||||
	@-timeout -k 5s 10s $(PIPENV) run ampy -p /dev/ttyACM0 -d ${AMPY_DELAY} -b ${AMPY_BAUD} run util/reset.py
 | 
			
		||||
 | 
			
		||||
ifdef MOUNTPOINT
 | 
			
		||||
$(MOUNTPOINT)/kmk/.copied: $(shell find kmk/ -name "*.py" | xargs -0)
 | 
			
		||||
	@echo "===> Copying KMK source folder"
 | 
			
		||||
	@rsync -rh kmk $(MOUNTPOINT)/
 | 
			
		||||
	@cat upy-freeze.txt | egrep -v '(^#|^\s*$|^\s*\t*#)' | grep CIRCUITPY | cut -d'|' -f2- | \
 | 
			
		||||
		xargs -I '{}' rsync -h {} $(MOUNTPOINT)/
 | 
			
		||||
	@touch $(MOUNTPOINT)/kmk/.copied
 | 
			
		||||
	@sync
 | 
			
		||||
 | 
			
		||||
copy-kmk: $(MOUNTPOINT)/kmk/.copied
 | 
			
		||||
else
 | 
			
		||||
copy-kmk:
 | 
			
		||||
	echo "**** MOUNTPOINT must be defined (wherever your CIRCUITPY drive is mounted) ****" && exit 1
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
ifdef MOUNTPOINT
 | 
			
		||||
$(MOUNTPOINT)/main.py: main.py
 | 
			
		||||
	@echo "===> Copying a basic main.py"
 | 
			
		||||
	@rsync -rh main.py $@
 | 
			
		||||
	@sync
 | 
			
		||||
 | 
			
		||||
copy-main.py: $(MOUNTPOINT)/main.py
 | 
			
		||||
else
 | 
			
		||||
copy-main.py:
 | 
			
		||||
	echo "**** MOUNTPOINT must be defined (wherever your CIRCUITPY drive is mounted) ****" && exit 1
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
ifdef MOUNTPOINT
 | 
			
		||||
ifndef USER_KEYMAP
 | 
			
		||||
$(MOUNTPOINT)/kmk_keyboard.py:
 | 
			
		||||
	@echo "**** USER_KEYMAP must be defined (ex. USER_KEYMAP=user_keymaps/noop.py) ****" && exit 1
 | 
			
		||||
else
 | 
			
		||||
$(MOUNTPOINT)/kmk_keyboard.py: $(USER_KEYMAP)
 | 
			
		||||
	@echo "===> Copying your keymap to kmk_keyboard.py"
 | 
			
		||||
	@rsync -rh $(USER_KEYMAP) $@
 | 
			
		||||
	@sync
 | 
			
		||||
endif # USER_KEYMAP
 | 
			
		||||
 | 
			
		||||
copy-keymap: $(MOUNTPOINT)/kmk_keyboard.py
 | 
			
		||||
else
 | 
			
		||||
copy-keymap:
 | 
			
		||||
	echo "**** MOUNTPOINT must be defined (wherever your CIRCUITPY drive is mounted) ****" && exit 1
 | 
			
		||||
endif # MOUNTPOINT
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,4 @@
 | 
			
		||||
#Debugging
 | 
			
		||||
# Debugging
 | 
			
		||||
Debug will output most of the useful state to the console. This can be enable in your firmware
 | 
			
		||||
by setting this in your keymap. NOTE that it will be MUCH slower, so only enable this when you
 | 
			
		||||
need debugging.
 | 
			
		||||
@@ -8,4 +8,4 @@ DEBUG_ENABLE = True
 | 
			
		||||
 | 
			
		||||
The output can be viewed by connecting to the serial port of the keybord. Please refer to [THIS](https://learn.adafruit.com/welcome-to-circuitpython/kattni-connecting-to-the-serial-console) for
 | 
			
		||||
more information when connecting to serial console. For Linux users, we recommend [picocom](https://github.com/npat-efault/picocom) or
 | 
			
		||||
[screen](https://www.gnu.org/software/screen/manual/screen.html)
 | 
			
		||||
[screen](https://www.gnu.org/software/screen/manual/screen.html)
 | 
			
		||||
 
 | 
			
		||||
@@ -1,18 +1,26 @@
 | 
			
		||||
# Flashing Instructions
 | 
			
		||||
 | 
			
		||||
Flashing sequence:
 | 
			
		||||
KMK sits on top of an existing CircuitPython install, flash that for your board
 | 
			
		||||
as appropriate (see [Adafruit's
 | 
			
		||||
documentation](https://learn.adafruit.com/welcome-to-circuitpython/installing-circuitpython),
 | 
			
		||||
though it doesn't cover all CircuitPython boards - you may need to glance around
 | 
			
		||||
the CircuitPython source or ask on Discord). We primarily target CircuitPython
 | 
			
		||||
4.0-alpha1 and above, though many features should work on 3.x. You'll only need
 | 
			
		||||
to flash CircuitPython once (unless we update our baseline supported version).
 | 
			
		||||
 | 
			
		||||
1. Press the `KC.RESET` keycode, or tap the RESET button.
 | 
			
		||||
2. Wait for the OS to detect the device
 | 
			
		||||
3. Flash a .hex file (May be done automatically)
 | 
			
		||||
4. Reset the device into application mode (May be done automatically)
 | 
			
		||||
 | 
			
		||||
or:
 | 
			
		||||
 | 
			
		||||
    make flash-<board> USER_KEYMAP=user_keymaps/...
 | 
			
		||||
 | 
			
		||||
Example:
 | 
			
		||||
 | 
			
		||||
	make flash-feather-m4-express USER_KEYMAP=user_keymaps/kdb424/handwire_planck_featherm4.py
 | 
			
		||||
After CircuitPython has been flashed, a `CIRCUITPY` drive should show up on your
 | 
			
		||||
computer (some Linux/BSD users without drive automounting will want to poke
 | 
			
		||||
around `dmesg` to find the drive identifier and mount this drive manually
 | 
			
		||||
somewhere - ex. `mkdir -p ~/mnt && sudo mount -o uid=1000,gid=1000 /dev/sdf1
 | 
			
		||||
~/mnt`, where `uid` and `gid` are your user ID and primary group ID, as found in
 | 
			
		||||
`id -u` and `id -g`). Take note of the path that this is mounted to (for MacOS
 | 
			
		||||
users, this will probably look something like `/Volumes/CIRCUITPY`).
 | 
			
		||||
 | 
			
		||||
To "flash" all of KMK, your keymap, and a basic `main.py` that will start
 | 
			
		||||
everything up, run `make MOUNTPOINT=/path/to/wherever
 | 
			
		||||
USER_KEYMAP=path/to/keymap.py`. For example, if my `CIRCUITPY` volume is mounted
 | 
			
		||||
to `~/mnt`, I might flash my development breadboard with the following:
 | 
			
		||||
 | 
			
		||||
```sh
 | 
			
		||||
make MOUNTPOINT=~/mnt USER_KEYMAP=user_keymaps/klardotsh/itsybitsy_m4_express/threethree.py
 | 
			
		||||
```
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +0,0 @@
 | 
			
		||||
from kmk_keyboard_user import main
 | 
			
		||||
 | 
			
		||||
if __name__ == '__main__':
 | 
			
		||||
    main()
 | 
			
		||||
@@ -5,14 +5,14 @@ def main():
 | 
			
		||||
    from kmk.firmware import Firmware
 | 
			
		||||
    from kmk.matrix import MatrixScanner
 | 
			
		||||
 | 
			
		||||
    import kmk_keyboard_user
 | 
			
		||||
    import kmk_keyboard
 | 
			
		||||
 | 
			
		||||
    cols = getattr(kmk_keyboard_user, 'cols')
 | 
			
		||||
    diode_orientation = getattr(kmk_keyboard_user, 'diode_orientation')
 | 
			
		||||
    keymap = getattr(kmk_keyboard_user, 'keymap')
 | 
			
		||||
    rows = getattr(kmk_keyboard_user, 'rows')
 | 
			
		||||
    cols = getattr(kmk_keyboard, 'cols')
 | 
			
		||||
    diode_orientation = getattr(kmk_keyboard, 'diode_orientation')
 | 
			
		||||
    keymap = getattr(kmk_keyboard, 'keymap')
 | 
			
		||||
    rows = getattr(kmk_keyboard, 'rows')
 | 
			
		||||
 | 
			
		||||
    debug_enable = getattr(kmk_keyboard_user, 'debug_enable', False)
 | 
			
		||||
    debug_enable = getattr(kmk_keyboard, 'debug_enable', False)
 | 
			
		||||
 | 
			
		||||
    if debug_enable:
 | 
			
		||||
        from logging import DEBUG as log_level
 | 
			
		||||
 
 | 
			
		||||
@@ -8,13 +8,13 @@ from kmk.micropython.pyb_hid import HIDHelper
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def main():
 | 
			
		||||
    import kmk_keyboard_user
 | 
			
		||||
    cols = getattr(kmk_keyboard_user, 'cols')
 | 
			
		||||
    diode_orientation = getattr(kmk_keyboard_user, 'diode_orientation')
 | 
			
		||||
    keymap = getattr(kmk_keyboard_user, 'keymap')
 | 
			
		||||
    rows = getattr(kmk_keyboard_user, 'rows')
 | 
			
		||||
    import kmk_keyboard
 | 
			
		||||
    cols = getattr(kmk_keyboard, 'cols')
 | 
			
		||||
    diode_orientation = getattr(kmk_keyboard, 'diode_orientation')
 | 
			
		||||
    keymap = getattr(kmk_keyboard, 'keymap')
 | 
			
		||||
    rows = getattr(kmk_keyboard, 'rows')
 | 
			
		||||
 | 
			
		||||
    debug_enable = getattr(kmk_keyboard_user, 'debug_enable', False)
 | 
			
		||||
    debug_enable = getattr(kmk_keyboard, 'debug_enable', False)
 | 
			
		||||
 | 
			
		||||
    if debug_enable:
 | 
			
		||||
        from logging import DEBUG as log_level
 | 
			
		||||
 
 | 
			
		||||
@@ -19,8 +19,8 @@ class Firmware:
 | 
			
		||||
        logger = logging.getLogger(__name__)
 | 
			
		||||
        logger.setLevel(log_level)
 | 
			
		||||
 | 
			
		||||
        import kmk_keyboard_user
 | 
			
		||||
        self.encoders = getattr(kmk_keyboard_user, 'encoders', [])
 | 
			
		||||
        import kmk_keyboard
 | 
			
		||||
        self.encoders = getattr(kmk_keyboard, 'encoders', [])
 | 
			
		||||
 | 
			
		||||
        self.hydrated = False
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -90,11 +90,11 @@ class InternalState:
 | 
			
		||||
    _oldstates = []
 | 
			
		||||
 | 
			
		||||
    def __init__(self, preserve_intermediate_states=False):
 | 
			
		||||
        import kmk_keyboard_user
 | 
			
		||||
        self.unicode_mode = getattr(kmk_keyboard_user, 'unicode_mode', UnicodeModes.NOOP)
 | 
			
		||||
        self.tap_time = getattr(kmk_keyboard_user, 'tap_time', 300)
 | 
			
		||||
        self.leader_mode = getattr(kmk_keyboard_user, 'leader_mode', LeaderMode.ENTER)
 | 
			
		||||
        self.leader_dictionary = getattr(kmk_keyboard_user, 'leader_dictionary', {})
 | 
			
		||||
        import kmk_keyboard
 | 
			
		||||
        self.unicode_mode = getattr(kmk_keyboard, 'unicode_mode', UnicodeModes.NOOP)
 | 
			
		||||
        self.tap_time = getattr(kmk_keyboard, 'tap_time', 300)
 | 
			
		||||
        self.leader_mode = getattr(kmk_keyboard, 'leader_mode', LeaderMode.ENTER)
 | 
			
		||||
        self.leader_dictionary = getattr(kmk_keyboard, 'leader_dictionary', {})
 | 
			
		||||
        self.preserve_intermediate_states = preserve_intermediate_states
 | 
			
		||||
 | 
			
		||||
    def __enter__(self):
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,3 @@
 | 
			
		||||
[submodules]
 | 
			
		||||
"vendor/circuitpython" = "2cec23c"
 | 
			
		||||
"vendor/micropython" = "65a49fa"
 | 
			
		||||
"vendor/upy-lib" = "451b1c0"
 | 
			
		||||
 
 | 
			
		||||
@@ -86,3 +86,6 @@ keymap = [
 | 
			
		||||
        [KC.DF(0), KC.DF(1), KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.TRNS, KC.F1, KC.F2, KC.F3, KC.NO],
 | 
			
		||||
    ],
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
if __name__ == '__main__':
 | 
			
		||||
    main()
 | 
			
		||||
 
 | 
			
		||||
@@ -71,3 +71,6 @@ keymap = [
 | 
			
		||||
        [KC.O,    KC.P,             KC.Q],
 | 
			
		||||
    ],
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
if __name__ == '__main__':
 | 
			
		||||
    main()
 | 
			
		||||
 
 | 
			
		||||
@@ -87,3 +87,6 @@ keymap = [
 | 
			
		||||
        [KC.TRNS,                       KC.P,               MACRO_HELLO_WORLD],
 | 
			
		||||
    ],
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
if __name__ == '__main__':
 | 
			
		||||
    main()
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										1
									
								
								vendor/circuitpython
									
									
									
									
										vendored
									
									
								
							
							
								
								
								
								
								
							
						
						
									
										1
									
								
								vendor/circuitpython
									
									
									
									
										vendored
									
									
								
							 Submodule vendor/circuitpython deleted from 2cec23cb63
									
								
							
		Reference in New Issue
	
	Block a user