Makefile 4.59 KB
Newer Older
1 2
PYVER := 3
VENV := .venv
3
INO_DIR := .ino
4

5 6
USE := ino
ARDUINO :=#~/Downloads/arduino-1.6.5
7

8 9 10
all: help

help:
11
	@ echo "USAGE: make <command>"
12
	@ echo ""
13
	@ echo "COMMANDS:"
14
	@ echo ""
15 16
	@ echo "  install          --  Install required tools, build and upload firmware, and"
	@ echo "                       deploy logger daemon (background process)"
17
	@ echo ""
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
	@ echo "  uninstall        --  Remove daemon process (if present) and clean this folder"
	@ echo ""
	@ echo "  tail-log         --  Exibits and follow last modified execution log file"
	@ echo "  tail-data        --  Exibits and follow last modified datalog file"
	@ echo ""
	@ echo "  plot-data col=<C>  --  Uses Gnuplot to plot last modified datalog file"
	@ echo ""
	@ echo "  help             --  Shows the full help"

help-full:
	@ echo "USAGE: make <command>"
	@ echo ""
	@ echo "COMMANDS:"	
	@ echo ""	
	@ echo "  install          --  setup & bu & deploy-logger"
	@ echo "  uninstall        --  undeploy-logger & clean-venv & clean-ino"
	@ echo ""	
35 36 37
	@ echo "  apt-install      --  Uses Debian's apt to install required system tools"
	@ echo "  venv             --  Creates a Python local virtual environment at ${VENV}"
	@ echo "  setup            --  apt-install & venv"
38
	@ echo ""
39
	@ echo "  serial         --  Enter IPython session with serial opened"
40
	@ echo "  bu             --  build & upload firmware (with Arturo)"
41
	@ echo "  bus            --  build & upload & serial"
42
	@ echo ""
43 44
	@ echo "  sync-rtc       --  Synchronizes the board's clock with the system's"
	@ echo ""
45 46 47
	@ echo "  run            --  Starts the logger. Keep log at logger/logs"
	@ echo "  deploy         --  Activate logger daemon. Keep log at logger/logs/"
	@ echo "  undeploy       --  Deactivate logger daemon"
48 49 50 51 52 53 54 55 56 57 58
	@ echo ""
	@ echo "  tail-log       --  Exibits and follow last modified execution log file"
	@ echo "  tail-data      --  Exibits and follow last modified datalog file"
	@ echo ""
	@ echo "  plot-data col=<C>  --  Uses Gnuplot to plot last modified datalog file"
	@ echo "                         Replace <C> with the column number to plot as y axis"
	@ echo "  clean-venv     --  Remove Python's virtual environment directory"
	@ echo "  clean-ino      --  Remove Ino folder"
	@ echo "  clean-data     --  !!! CAUTION !!! Remove all datalog files"
	@ echo "  clean-logs     --  !!! CAUTION !!! Remove all execution log files"
	@ echo "  clean-all      --  Performs all the above cleans" 
59 60 61
	@ echo ""

apt-install:
62 63
	chmod +x scripts/apt-install.sh
	./scripts/apt-install.sh
64

65
ano-install:
66 67
	chmod +x scripts/ano-install.sh
	./scripts/ano-install.sh
68

69
ino-install:
70 71
	chmod +x scripts/ino-install.sh
	./scripts/ino-install.sh
72

Nelso Jost's avatar
Nelso Jost committed
73
setup: clean-venv create-venv
74
	
Nelso Jost's avatar
Nelso Jost committed
75
create-venv:
76 77 78 79 80 81
	@ echo "-------------------------------------------------------"
	virtualenv -v --python='python${PYVER}' ${VENV}
	@ echo "Virtualenv with 'python${PYVER}' interpreter was created at ${VENV}"
	@ echo "-------------------------------------------------------"
	${VENV}/bin/pip install --upgrade pip
	@ echo "-------------------------------------------------------"
Nelso Jost's avatar
Nelso Jost committed
82
	${VENV}/bin/pip install -r logger/requirements.pip
83 84
	@ echo "-------------------------------------------------------"
	@ echo "Virtualenv is ready at ${VENV}!"
85
	@ echo " "~/Downloads/arduino-1.0.1
86 87 88 89 90 91
	@ echo "TOTAL SIZE: "
	@ du -sh ${VENV}

clean-venv:
	rm -rf ${VENV}

Nelso Jost's avatar
Nelso Jost committed
92 93
serial: 
	${VENV}/bin/python -i logger/init_serial.py
94

Nelso Jost's avatar
Nelso Jost committed
95
firmware: ${USE}-install
96 97
	chmod +x scripts/ino-build.sh
	./scripts/ino-build.sh ${USE} ${INO_DIR} ${ARDUINO}
98 99

sync-rtc:
Nelso Jost's avatar
Nelso Jost committed
100
	${VENV}/bin/python${PYVER} logger/run.py --syncrtc
101
 
102
run:
103 104
	${VENV}/bin/python logger/run.py

105
deploy: undeploy
106 107 108
	mkdir -p logger/logs
	sudo ${VENV}/bin/python${PYVER} logger/deploy.py

109
undeploy:
110 111
	sudo ${VENV}/bin/python${PYVER} logger/deploy.py -u

Nelso Jost's avatar
Nelso Jost committed
112
tail-log:
labfis's avatar
labfis committed
113
	$(eval TMP := $(shell ls -t -I "pid*|stdout*" logger/logs | head -n 1))
114 115 116 117 118 119 120 121 122 123 124 125 126 127 128
	@ echo "Last log file updated: logger/logs/$(TMP)"
	@ echo "File size: `du -h logger/logs/$(TMP) | cut -f1`"
	@ echo ""
	@ tail -F logger/logs/$(TMP)

tail-data:
	$(eval TMP := $(shell ls -t -I outgoing* data/ | head -n 1))
	@ echo "Last datalog file updated: data/$(TMP)"
	@ echo "Number of lines/points: `cat data/$(TMP) | wc -l`"
	@ echo "File size: `du -h data/$(TMP) | cut -f1`"
	@ echo ""
	@ head -1 data/$(TMP)
	@ echo ""
	@ tail -F data/$(TMP)

129 130 131 132
plot-data:
	@ echo "Quit by closing the window with Q and hitting Ctrl+C here to end the process"
	@ cd tools && gnuplot -persist -e "config='config.plt'; col=${col}" loop.plt

133 134 135 136 137 138 139 140 141 142 143
clean-data:
	rm -rfv data/*.csv data/outgoing/*.json

clean-logs:
	rm -rfv logger/logs/*

clean-ino:
	rm -rf ${INODIR}

clean-all: clean-data clean-logs clean-ino clean-venv
	cd logger && sudo py3clean app