Skip to content

Commit

Permalink
Switch factory setup script to use wintertools
Browse files Browse the repository at this point in the history
  • Loading branch information
theacodes committed Feb 13, 2021
1 parent ed682e5 commit e22ebc5
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 721 deletions.
45 changes: 22 additions & 23 deletions factory/factory_setup.py
Original file line number Diff line number Diff line change
@@ -1,14 +1,12 @@
import io
import time
import os
import subprocess
import shutil
import zipfile
import sys

import requests
import wintertools.fs
import wintertools.jlink
import wintertools.circuitpython
import wintertools.fw_fetch
import wintertools.uf2_to_bin

from libwinter import utils

DEVICE_NAME = "winterbloom_big_honking_button"
USB_DEVICE_ID = "239A:6005"
Expand All @@ -25,7 +23,7 @@
}

FILES_TO_DEPLOY = {
utils.get_cache_path("winterbloom_voltageio.py"): "lib",
wintertools.fs.cache_path("winterbloom_voltageio.py"): "lib",
os.path.join(FIRMWARE_DIR, "winterbloom_bhb"): "lib",
os.path.join(ROOT_DIR, "samples"): ".",
os.path.join(ROOT_DIR, "examples"): ".",
Expand All @@ -38,36 +36,37 @@
def program_firmware():
print("========== PROGRAMMING FIRMWARE ==========")

bootloader_url = utils.find_latest_bootloader(DEVICE_NAME)
circuitpython_url = utils.find_latest_circuitpython(DEVICE_NAME)
print("Checking for latest bootloader & firmware...")

utils.download_file_to_cache(bootloader_url, "bootloader.bin")
firmware_path = utils.download_file_to_cache(circuitpython_url, "firmware.uf2")
utils.convert_uf2_to_bin(firmware_path)
wintertools.fw_fetch.latest_bootloader(DEVICE_NAME)
firmware_path = wintertools.fw_fetch.latest_circuitpython(DEVICE_NAME)

utils.run_jlink(JLINK_DEVICE, JLINK_SCRIPT)
wintertools.uf2_to_bin(firmware_path)

wintertools.jlink.run(JLINK_DEVICE, JLINK_SCRIPT)


def deploy_circuitpython_code(destination=None):
print("========== DEPLOYING CODE ==========")

if not destination:
print("Waiting for CIRCUITPY drive...")
destination = utils.wait_for_drive("CIRCUITPY")
destination = wintertools.fs.wait_for_drive("CIRCUITPY")

print("Forcing BHB into repl (workaround for CircuitPython issue #3986)")
utils.force_into_repl(USB_DEVICE_ID)
wintertools.circuitpython.force_into_repl(USB_DEVICE_ID)

print("Cleaning temporary files from src directories...")
utils.clean_pycache(FIRMWARE_DIR)
utils.clean_pycache(EXAMPLES_DIR)
wintertools.fs.clean_pycache(FIRMWARE_DIR)
wintertools.fs.clean_pycache(EXAMPLES_DIR)

print("Downloading files to cache...")
utils.download_files_to_cache(FILES_TO_DOWNLOAD)
wintertools.fs.download_files_to_cache(FILES_TO_DOWNLOAD)
print("Copying files...")
utils.deploy_files(FILES_TO_DEPLOY, destination)
wintertools.fs.deploy_files(FILES_TO_DEPLOY, destination)

print("Done copying files, resetting...")
utils.reset_via_serial(USB_DEVICE_ID)
wintertools.circuitpython.reset_via_serial(USB_DEVICE_ID)
print("Done!")


Expand All @@ -77,8 +76,8 @@ def main():
return

try:
circuitpython_drive = utils.find_drive_by_name("CIRCUITPY")
except:
circuitpython_drive = wintertools.fs.find_drive_by_name("CIRCUITPY")
except EnvironmentError:
circuitpython_drive = None

if not circuitpython_drive:
Expand Down
Binary file removed factory/libwinter/sync.exe
Binary file not shown.
Loading

0 comments on commit e22ebc5

Please sign in to comment.