PGM_INDEX = 1
TENGB_ETH = eth4
TCL = none
PROJ_DIR = /home/cc3768/ES_Project/BlazePPS_v2/hardware
TESTPKT_DIR = /home/cc3769/ES_Project/csee4840_10gbe/BlazePPS_v2/hardware/test_packets/teste.pcap

# Open Quartus
open:
	/opt/altera/13.1/quartus/bin/quartus blazepps.qpf &
# Compile project
compile:
	map fit assemble timing
map:
	/opt/altera/13.1/quartus/bin/quartus_map blazepps --family="Cyclone V"
fit:
	/opt/altera/13.1/quartus/bin/quartus_fit blazepps --part=5CSXFC6D6F31C8ES #--pack_register=minimize_area
assemble:
	/opt/altera/13.1/quartus/bin/quartus_asm blazepps
timing:
	/opt/altera/13.1/quartus/bin/quartus_sta blazepps
	#set_global_assignment -name FAMILY Cyclone V
	#set_global_assignment -name DEVICE 5CSXFC6D6F31C8ES
	#set_global_assignment -name BDF_FILE filtref.bdf
	#set_global_assignment -name TOP_LEVEL_ENTITY ghrd_top.v

# Program FPGA
program:
	quartus_pgm --mode=jtag --cable="CV SoCKit" -o "P;output_files/blazepps.sof@$(PGM_INDEX)"
	#/opt/altera/13.1/quartus/bin/quartus_jli -aprogram blazepps.jbc

# Launches System Console
syscon: 
	/opt/altera/13.1/quartus/sopc_builder/bin/system-console --wrapper-load-jvm-in-process --re-ecex-jni-with-env-project-dir=$(PROJ_DIR) --project_dir=$(PROJ_DIR) -debug --script=$(TCL)

test_tx:# program
	sudo ifconfig eth4 192.168.1.2 up
	echo "Launching tcpdump to listen for sent packet"
	sudo pkill -9 tcpdump || true
	sudo rm -f eth_capture.cap 
	sudo tcpdump -i $(TENGB_ETH) -c 1 -XX -s0 -w eth_capture.cap &
	echo "Launching system console to output packet from SoCKIT to PC over 10Gb"
	/opt/altera/13.1/quartus/sopc_builder/bin/system-console --wrapper-load-jvm-in-process --re-ecex-jni-with-env-project-dir=$(PROJ_DIR) --project_dir=$(PROJ_DIR) --script=tx_stream.tcl
	sleep 1
	echo "Killing any remaining instances of tcpdump"
	sudo pkill -2 tcpdump || true
	sleep 1
	echo "Dumping captured packets from tcpdump"
	sudo tcpdump -r eth_capture.cap -XX

replay:
	sudo ifconfig eth4 192.168.1.2 up
	echo "Replaying data from PC into SoCKit over 10Gb"
	sudo /usr/local/bin/tcpreplay --intf1=$(TENGB_ETH) $(TESTPKT_DIR)


dump:
	sudo ifconfig eth4 192.168.1.2 up
	echo "Launching tcpdump to listen for sent packet"
	sudo pkill -9 tcpdump || true
	sudo tcpdump -i $(TENGB_ETH) -c 1 -XX -s0


test_rx:
	sudo ifconfig eth4 192.168.1.2 up
	echo "Replaying data from PC into SoCKit over 10Gb"
	sudo /usr/local/bin/tcpreplay --intf1=$(TENGB_ETH) $(TESTPKT_DIR)
	echo "Reading received data from sysconsole"
	/opt/altera/13.1/quartus/sopc_builder/bin/system-console --wrapper-load-jvm-in-process --re-ecex-jni-with-env-project-dir=$(PROJ_DIR) --project_dir=$(PROJ_DIR) -debug --script=rx_stream.tcl

test_lo:
	sudo ifconfig eth4 192.168.1.2 up
	echo "Basic loopback test"
	/opt/altera/13.1/quartus/sopc_builder/bin/system-console --wrapper-load-jvm-in-process --re-ecex-jni-with-env-project-dir=$(PROJ_DIR) --project_dir=$(PROJ_DIR) -debug --script=loopback_test.tcl

# Launches JTAG processes (necessary for debugging with system console)
jtag:
	/opt/altera/13.1/quartus/bin/jtagconfig
	/opt/altera/13.1/quartus/linux64/jtagd

# Launches wireshark
wireshark:
	sudo wireshark



