#!/bin/sh # B10B-1 series: N samples, P s apart. Reads VADC (IIO), BMS-VM power_supply properties, BMS FIFO/OCV raw and charger status (reads only). N=${1:-12}; P=${2:-20} grep -q " /sys/kernel/debug " /proc/mounts || mount -t debugfs debugfs /sys/kernel/debug R=/sys/kernel/debug/regmap/0-00/registers rd() { dd if=$R bs=9 skip=$(($1)) count=$2 2>/dev/null | cut -d' ' -f2 | tr '\n' ' '; } D=/sys/bus/iio/devices/iio:device0; B=$(ls -d /sys/class/power_supply/*bms* 2>/dev/null | head -1) echo "CAL-START iio=$(cat $D/name) bms=$B props: $(ls $B | tr '\n' ' ')" i=1 while [ $i -le $N ]; do printf '\033[2J\033[H\n\n B10B-1\n\n SAMPLE %d / %d\n' $i $N > /dev/tty1 echo "S $i $(date -u +%T) up=$(cut -d' ' -f1 /proc/uptime) r6=$(cat $D/in_voltage6_raw) r9=$(cat $D/in_voltage9_raw) r10=$(cat $D/in_voltage10_raw) vph=$(cat $D/in_voltage7_input) bms_v=$(cat $B/voltage_now 2>&1) bms_ocv=$(cat $B/voltage_ocv 2>&1) bms_st=$(cat $B/status 2>&1) bms_h=$(cat $B/health 2>&1) fifo=$(rd 0x40c0 4) ocv=$(rd 0x406a 2) st1009=$(rd 0x1009 1) usb1308=$(rd 0x1308 1) irq=$(grep -i vm_bms /proc/interrupts | awk '{print $2+$3+$4+$5}') pmt=$(cat $D/in_temp8_input)" i=$((i + 1)); [ $i -le $N ] && sleep $P done printf '\033[2J\033[H\n\n B10B-1\n\n DONE\n' > /dev/tty1 echo CAL-END