From 05951e1b7736a1dad64af36f8e78a5eaa58a4890 Mon Sep 17 00:00:00 2001 From: Joakim Hulthe Date: Wed, 26 Apr 2023 18:38:54 +0200 Subject: [PATCH] Add serial-logs script --- run | 37 ++++++++++++++++++++++--------------- serial-logs | 37 +++++++++++++++++++++++++++++++++++++ 2 files changed, 59 insertions(+), 15 deletions(-) create mode 100755 serial-logs diff --git a/run b/run index 4f100a9..4455b3b 100755 --- a/run +++ b/run @@ -1,19 +1,26 @@ -#!/bin/sh +#!/usr/bin/env nu -set -e +# Build, flash, and run the firmware. +# +# Will also attach to serial logs +def main [ + bin: string # Which firmware to run, 'left' or 'right'. + --serial (-s): string # The serial device to get logs from. + --probe (-p): bool # Flash & run using probe-run instead of elf2uf2 +] { + if $probe { + cargo build --bin $bin + probe-run --chip RP2040 --speed 4000 ("./target/thumbv6m-none-eabi/debug/" + $bin) + } else { + cargo run --bin $bin + } -cargo run --bin $1 + let log_script = ($env.FILE_PWD | path join "serial-logs") -printf "waiting for serial log" + if $serial == null { + nu $log_script + } else { + nu $log_script --serial $serial + } +} -SERIAL=/dev/ttyACM0 -while [ ! -e $SERIAL ] -do - printf "." - sleep 1 -done -echo - -sleep 1 - -cat $SERIAL diff --git a/serial-logs b/serial-logs new file mode 100755 index 0000000..0d52243 --- /dev/null +++ b/serial-logs @@ -0,0 +1,37 @@ +#!/usr/bin/env nu + +let level_colors = { + TRACE: (ansi m) + DEBUG: (ansi c) + INFO: (ansi g) + WARN: (ansi y) + ERROR: (ansi rb) +} + +# Attach to serial logs of a running firmware +def main [ + --serial (-s): string # The serial device to get logs from. +] { + let serial = if $serial == null { + "/dev/serial/by-id/usb-Tux_Tangentbord1_42069-if00" + } else { + $serial + } + + print -n ("waiting for serial log " + $serial) + + while not ($serial | path exists) { + print -n "." + sleep 500ms + } + echo + + cat $serial | + parse -r '\[(?[0-9\.]*)\] \((?\w*)\) (?.*)' | + each { |it| + print -n "[" (ansi d) $it.timestamp (ansi reset) "] " + print -n "(" ($level_colors | get $it.level) $it.level (ansi reset) ") " + print $it.message + } +} +