aboutsummaryrefslogtreecommitdiffstats
path: root/.scripts/flash
blob: 1c5f99ea941b5f3f6a8812331e2864ba37d5a844 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
#!/bin/sh

MOUNT=/mnt/sd
REPO=$(realpath ..)
CPY=
CONFIG=
TTY=

UF2_DISK=
CPY_DISK=

set -e

while test $# -gt 0
do
    case "$1" in
        --cpy)
            CPY=1
            ;;
        --config=*)
            CONFIG="${1#*=}"
            ;;
        --uf2-disk=*)
            UF2_DISK="${1#*=}"
            ;;
        --cpy-disk=*)
            CPY_DISK="${1#*=}"
            ;;
        --help)
            echo "USAGE:"
            echo "  --cpy                       (also) flash circuitpython"
            echo "  --uf2-disk=/dev/sda1        path to UF2 bootloader disk for flashing CPy"
            echo "  --cpy-disk=/dev/sda1        path to CircuitPython code disk for flashing firmware"
            echo "  --config=config.testing.py  copy a different config"
            echo "  --tty                       open tty in tio"
            exit
            ;;
    esac
    shift
done

wait_disk() {
  echo "Waiting for disk(s) $@..." >&2
  while true; do
    for disk in "$@"; do
      if [ -e "$disk" ]; then
        echo "found $disk" >&2
        echo "$disk"
        return
      fi
    done

    sleep 1
  done
}

if [ -n "$CPY" ]; then
  [ -z "$UF2_DISK"] && UF2_DISK=$(wait_disk /dev/disk/by-label/RPI-RP2)
  sudo mount "$UF2_DISK" $MOUNT -o sync,rw,uid=$(id -u),gid=$(id -g)
  echo -n "flashing CircuitPython..."
  cp adafruit-circuitpython-solderparty_rp2040_stamp-en_US-*.uf2 $MOUNT/
  echo " done"
  echo
fi

[ -z "$CPY_DISK" ] && CPY_DISK=$(wait_disk /dev/disk/by-label/{CIRCUITPY,HEX33BOARD})
sudo mount "$CPY_DISK" $MOUNT -o sync,rw,uid=$(id -u),gid=$(id -g)
echo -n "copying Code..."
rsync -r $REPO/* $MOUNT/
echo " done"
echo

if [ -n "$CONFIG" ]; then
  echo "copying config $CONFIG..."
  cp $CONFIG $MOUNT/config.py
  echo " done"
  echo
fi

echo -n "installing libs..."
circup --path $MOUNT install -r $MOUNT/requirements.txt
echo " done"
echo

if [ -n "$TTY" ]; then
  echo "opening" /dev/ttyACM*
  exec tio /dev/ttyACM*
fi