HOME = os.path.expanduser('~')
TODAY = dt.now().strftime('%Y.%m.%d')
+# Examples for CardputerAdv
+DEVICE = 'Espressif'
+PORT='/dev/ttyACM0' # Linux
+CHIP='ESP32-S3'
+# PORT='COM0' # Windows
+MICROPYTHON=f'$HOME/Downloads/ESP32_GENERIC_S3-20260406-v1.28.0.bin'
+# MicroPython version
+# from
+# https://micropython.org/download/ESP32_GENERIC_S3/
+
+@task
+def help(c):
+ '''
+ On using this tasks file
+
+ - Set the Cardputer Adv power to 'off' state
+ - Plugging in to USB will cause it to boot
+ - Hold 'Go' while booting
+ - Hold 'Go' and press 'Reset' to try again.
+ - On success, the usual screen content still shows up
+ > Tip: Be sure to use a cable that can carry data, not just power.
+
+ Consider burnin
+ https://github.com/echo-lalia/MicroHydra
+
+ '''
+ print(help.__doc__)
+
+@task
+def groups(c):
+ '''Check that the current user is a member of dialout'''
+ result = c.run(f'groups {os.getlogin()}')
+ assert 'dialout' in result.stdout
+ print('ok')
+
@task
def usbdiff(c):
+ '''Use lsusb to try to find the new device.'''
input('Un-plug in the device...')
c.run('lsusb > /tmp/before.txt')
input('Plug in the device...')
print(result.stdout)
# breakpoint()
+# Maybe https://thelastoutpostworkshop.github.io/ESPConnect/ in Chromium?
-# Set power to 'off' state
-# Hold 'Go' while booting
-# Maybe https://thelastoutpostworkshop.github.io/ESPConnect/ in Chromium?
+@task
+def check_conn(c):
+ result = c.run(f'lsusb | grep {DEVICE}')
+ assert DEVICE in result.stdout
+ print('[ok]')
@task
def listusb(c):
- c.run('ls /dev/ttyUSB*')
- c.run('ls /dev/ttyACM*')
+ # result = c.run('ls /dev/ttyACM*')
+ result = c.run(f'ls {PORT}')
+ assert result.ok
+ print('[ok]')
+ # c.run('ls /dev/ttyUSB*')
+
+@task
+def chip_id(c):
+ result = c.run(f'esptool --port {PORT} chip-id')
+ assert CHIP in result.stdout
+ print('[ok]')
+
+@task
+def check_all(c):
+ listusb(c)
+ check_conn(c)
+ chip_id(c)
+
+@task
+def erase_flash(c):
+ '''Erasing flash is recommended before flashing fresh.'''
+ c.run(f'esptool --port {PORT} erase-flash')
+
+@task
+def write_flash(c, filepath=MICROPYTHON):
+ '''Write flash - defaults to MicroPython
+
+ Requires .bin file from micropython.org
+ '''
+ c.run(f'esptool --chip {CHIP} --port {PORT} --baud 460800 write-flash -z 0x1000 {filepath}')
-@task()
-def status(c):
- c.run('esptool --port /dev/ttyUSB0 chip-id')