Add test/web-protocol.test.js — runs the real protocol code from chat.html in Node (unit: crc/frame/ACK/HELLO codec, Hamming, Gray; integration: multi-level modem roundtrip + FEC recovery of off-by-one symbol errors; functional: full frame -> modem -> FEC -> assembler -> parse + ACK roundtrip). 3348 assertions. Wired as `make test-web` (also in test-all). Lets us QA the modem without two devices. Also: retransmit now uses exponential backoff so a lost ACK spaces out retries instead of hammering the channel.
63 lines
1.7 KiB
Makefile
63 lines
1.7 KiB
Makefile
CC = gcc
|
|
CFLAGS = -Wall -Wextra -O2 -Iinclude $(shell pkg-config --cflags libpulse)
|
|
LDFLAGS = $(shell pkg-config --libs libpulse) -lrt -lpthread
|
|
|
|
PULSE = src/pulse.c
|
|
|
|
.PHONY: all clean serve blog test test-all test-web zebrad
|
|
|
|
all: tx rx chat bt carrier zebrad
|
|
|
|
test: test/unit
|
|
@./test/unit
|
|
|
|
# web modem/protocol tests — pure Node, no browser or second device needed
|
|
test-web:
|
|
@node test/web-protocol.test.js
|
|
|
|
test-all: test/unit test/integration test/functional test-web
|
|
@echo "--- unit ---"
|
|
@./test/unit
|
|
@echo "--- integration ---"
|
|
@./test/integration
|
|
@echo "--- functional ---"
|
|
@./test/functional
|
|
@echo "--- web protocol ---"
|
|
@node test/web-protocol.test.js
|
|
|
|
test/unit: test/unit.c include/zebra.h include/modem.h test/test.h
|
|
$(CC) $(CFLAGS) -o $@ test/unit.c
|
|
|
|
test/integration: test/integration.c src/pulse.c include/zebra.h include/modem.h test/test.h
|
|
$(CC) $(CFLAGS) -o $@ test/integration.c src/pulse.c $(LDFLAGS)
|
|
|
|
test/functional: test/functional.c src/pulse.c include/zebra.h include/modem.h test/test.h
|
|
$(CC) $(CFLAGS) -o $@ test/functional.c src/pulse.c $(LDFLAGS)
|
|
|
|
tx: src/tx.c $(PULSE)
|
|
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
|
|
|
|
rx: src/rx.c $(PULSE)
|
|
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
|
|
|
|
chat: src/chat.c $(PULSE)
|
|
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
|
|
|
|
bt: src/bt.c $(PULSE)
|
|
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
|
|
|
|
carrier: src/carrier.c
|
|
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
|
|
|
|
zebrad: src/zebrad.c include/zebra.h
|
|
$(CC) $(CFLAGS) -o $@ src/zebrad.c $(LDFLAGS) -lm
|
|
|
|
blog:
|
|
python3 blog/build.py
|
|
|
|
serve: blog
|
|
cd web && python3 -m http.server 8765
|
|
|
|
clean:
|
|
rm -f tx rx chat bt carrier zebrad test/unit test/integration test/functional
|
|
rm -rf web/blog/001-volume-modem web/blog/002-sse-chatroom web/blog/index.html
|