all: duplex-ctab.h duplex.plg duplex.img \
	duplex-aec-ctab.h duplex-aec.plg duplex-aec.img \

rom1053.o: rom1053.txt
	mkabs -o $@ -f $<

VCC = vcc
INCDIR = -Ilibc16 -I. -Iaec1063
LIBDIR = -Llibc16 -L. -Laec1063 -laec
#VCCFLAGS = -P130 -g -O -fsmall-code -D STANDALONE
VCCFLAGS = -P130 -O -fsmall-code -D STANDALONE
ASMDEFS  = 

.c.o:
	$(VCC) $(VCCFLAGS) $(INCDIR) -o $@ $<

.s.o:
	vsa $(ASMDEFS) -o $@ $<

duplex.o: duplex.c Makefile
	$(VCC) $(VCCFLAGS) $(INCDIR) -D VS1053 -o $@ duplex.c

duplex-aec.o: duplex.c Makefile
	$(VCC) $(VCCFLAGS) $(INCDIR) -D VS1053 -D AEC_LIB -o $@ duplex.c

####
# Startup codes
####

c.o: c.s Makefile
	#3.5x 12.288MHz (3.5x WMA)
	vsa -D VS1033 -D CLOCKF_VAL=0xa000 -D PLL3_5 $(ASMDEFS) -o $@ c.s

duplex.bin: c.o duplex.o rom1053.o
	vslink -m mem_desc.vs1053 -k -o $@ c.o duplex.o rom1053.o $(LIBDIR) -lc

duplex-aec.bin: c.o duplex-aec.o rom1053.o
	vslink -m mem_desc.vs1053 -k -o $@ c.o duplex-aec.o rom1053.o $(LIBDIR) -lc
#	vslink -m mem_desc.vs1053 -k -o $@ c.o duplex.o rom1053.o $(LIBDIR) -lsim

coff2boot: coff2boot.c
	gcc -Wall -O -o coff2boot coff2boot.c


duplex.img: duplex.bin coff2boot
	./coff2boot -x 0x50 duplex.bin duplex.img
	echo >>duplex.img

duplex-aec.img: duplex-aec.bin coff2boot
	./coff2boot -x 0x50 duplex-aec.bin duplex-aec.img
	echo >>duplex-aec.img

duplex.cmd: duplex.bin
	perl coff2cmd.pl duplex.bin >duplex.cmd
#	echo "W 2 A 0050" >>duplex.cmd

duplex-aec.cmd: duplex.bin
	perl coff2cmd.pl duplex-aec.bin >duplex-aec.cmd
#	echo "W 2 A 0050" >>duplex-aec.cmd

duplex.plg: duplex.cmd cmdtoplg
	./cmdtoplg < $< > $@

duplex-aec.plg: duplex-aec.cmd cmdtoplg
	./cmdtoplg < $< > $@

duplex-ctab.h: duplex.cmd
	echo "/* VS1053b duplex communication application */" >duplex-ctab.h
	perl cmdtotab.pl duplex.cmd >>duplex-ctab.h

duplex-aec-ctab.h: duplex-aec.cmd
	echo "/* VS1053b duplex with AEC communication application */" >duplex-aec-ctab.h
	perl cmdtotab.pl duplex-aec.cmd >>duplex-aec-ctab.h

sim: duplex.bin
	vss -m sim_desc.vs1053 -l duplex.bin -c run.cmd -prof prof.txt

imabintowav: imabintowav.c
	gcc -o imabintowav imabintowav.c

ima:
	imabintowav -r 8000 <sci.dat >/tmp/sci.wav
	play16 /tmp/sci.wav
ima16:
	imabintowav -r 16000 <sci.dat >/tmp/sci.wav
	play16 /tmp/sci.wav
dac:
	dectowav -s 44100 <dac.dat >/tmp/dac.wav
	play16 /tmp/dac.wav

playlin:
	sox -r 8000 -x -ws -c 1 /tmp/ima.raw /tmp/ima3.wav
	play16 /tmp/ima3.wav

playima:
	imabintowav -b 256 < /tmp/ima.raw > /tmp/ima3.wav
	sox /tmp/ima3.wav -sw /tmp/lin3.wav
	play16 /tmp/ima3.wav

dist: all
	zip vs1053-duplex.zip README.txt Makefile *.cmd *.[chs] *.pl *desc* *.txt libc16/* aec1063/libaec.a aec1063/aec.h


