#!/bin/sh
set -eu
cd "$(dirname "$0")"
T=firmware/固件/lamp_target
C=firmware/固件/lamp_control
F="-std=c11 -g -O1 -Wall -Wextra -Werror -fsanitize=address,undefined -fno-omit-frame-pointer"
I="-Ihost -I$T/include -I$C"
cc $F $I test_frame.c "$T/src/lamp_i2c_owner.c" "$T/src/lamp_i2c_clock.c" "$T/src/lamp_i2c_read.c" "$T/src/lamp_i2c_write.c" "$T/src/lamp_frame_stage.c" -o host/frame
./host/frame
./host/frame 1
for scenario in 2 3 4; do
 n=0; while [ "$n" -lt 174 ]; do ./host/frame "$scenario" "$n"; n=$((n+1)); done
done
n=0; while [ "$n" -lt 20 ]; do ./host/frame 5 "$n"; n=$((n+1)); done
n=0; while [ "$n" -lt 25 ]; do ./host/frame 6 "$n"; n=$((n+1)); done
./host/frame 7
./host/frame 8
./host/frame 9
./host/frame 10
./host/frame 11
./host/frame 12
printf '%s\n' 'PASS 575 frame stage scenarios: normal/wrap, 174 write NACKs, 174 read NACKs, 174 mismatches, 20 initial authorization rejections, 25 mid-transaction revocations, terminal latch, nonzero PWM with zero IREF rejected, stale guard, total deadline, poll gap, clock loss.'
