Commit ca6e908f authored by a's avatar a
Browse files

cleanup, better logging (also printing what is sent)

parent a2eb4218
Loading
Loading
Loading
Loading
+31 −55
Original line number Diff line number Diff line
@@ -13,17 +13,10 @@ set -o pipefail # fail if any command in pipeline fails
[ -p data_to_camera ] || mkfifo data_to_camera


#{ for f in commands/*; do cat "$f"; sleep 4; done } | nc 192.168.42.1 7878

#{
#	for i in $(seq 1 110); do
#		echo -n '{"rval":0,"msg_id":257,"param":2}{"rval":0,"msg_id":261,"param":"b6291d832eb3cbd92c724f32437e95c3","update":0}' | cut -c $i
#		sleep 0.05;
#	done
#	
#} | {
	
get_JSON() {
	RESPONSE=''
	OPEN_BRACKETS=0

	while read -n1 char; do
		#echo -n $char >&2
	
@@ -36,9 +29,12 @@ get_JSON() {
			OPEN_BRACKETS=$(expr $OPEN_BRACKETS - 1 || true)
			if [ $OPEN_BRACKETS -eq 0 ]; then
				echo "Received JSON: $RESPONSE" >&2
				# TODO: assert contains '"rval":0'
				echo "$RESPONSE"
				RESPONSE=''

				# Assert the response contains '"rval":0'
				echo "$RESPONSE" | grep '"rval":0' >/dev/null || {
					echo 'Error: non-zero return value' >&2
					false
				}
				break
			fi
		fi
@@ -48,98 +44,78 @@ get_JSON() {


commander() {
	RESPONSE=''
	OPEN_BRACKETS=0

	
	# 01 Request a token/session id
	echo '{"msg_id":257,"token":0}'
	TOKEN="$(get_JSON | sed 's/.*"param":\([0-9][0-9]*\).*/\1/')"
	echo '{"msg_id":257,"token":0}' && get_JSON
	TOKEN="$(echo \"$RESPONSE\" | sed 's/.*"param":\([0-9][0-9]*\).*/\1/')"
	# TODO: assert is numeric
	
	# 02 get SN
	#echo '{"msg_id":4097,"token":'$TOKEN'}'
	#DUMMY="$(get_JSON)"
	#echo '{"msg_id":4097,"token":'$TOKEN'}' && get_JSON

	# 03 Get network config
	#echo '{"msg_id":1539,"token":'$TOKEN'}'
	#DUMMY="$(get_JSON)"
	#echo '{"msg_id":1539,"token":'$TOKEN'}' && get_JSON

	# 04 maybe start streaming? or sth with SW update?
	# result: {"rval":0,"msg_id":261,"param":"b6291d832eb3cbd92c724f32437e95c3","update":0}
	#echo '{"param":"192.168.42.3","type":"TCP","msg_id":261,"token":'$TOKEN'}'
	#DUMMY="$(get_JSON)"
	#echo '{"param":"192.168.42.3","type":"TCP","msg_id":261,"token":'$TOKEN'}' && get_JSON

	# 05 Get camera settings
	#echo '{"msg_id":4365,"token":'$TOKEN'}'
	#DUMMY="$(get_JSON)"
	#echo '{"msg_id":4365,"token":'$TOKEN'}' && get_JSON

	# 06 set time? mkdir+cd?
	#echo '{"param":"2019-04-17-16-42-19-3","msg_id":6147,"token":'$TOKEN'}'
	#DUMMY="$(get_JSON)"
	#echo '{"param":"2019-04-17-16-42-19-3","msg_id":6147,"token":'$TOKEN'}' && get_JSON

	# 07 get sd status
	#echo '{"msg_id":4358,"token":'$TOKEN'}'
	#DUMMY="$(get_JSON)"
	#echo '{"msg_id":4358,"token":'$TOKEN'}' && get_JSON

	# 08 get camera settings + SW/HW info
	# result: {"rval":0,"msg_id":4364,"v_res":0,"loop":0,"p_res":3,"video_wb":0,"video_ev":0,"video_iso":0,"video_shutter":0,"still_wb":1,"still_ev":0,"still_iso":50,"still_shutter":33008,"buzzer":0,"standby_en":1,"standby_time":2,"poweroff_en":1,"poweroff_time":10,"cam_jpg":524,"cam_mp4":1,"battery":4,"led":1,"sn":"15908/00014363","product":"MJXJ-014363","ver":"1.3.104.110.5.17151;0.7.0.3.0.0.0.3;1.43.1.10.17012;1","md5":"b6291d832eb3cbd92c724f32437e95c3"}
	#echo '{"msg_id":4364,"token":'$TOKEN'}'
	#DUMMY="$(get_JSON)"
	#echo '{"msg_id":4364,"token":'$TOKEN'}' && get_JSON

	# 09 set path
	#echo '{"param":"/tmp/SD0/DCIM/","msg_id":1283,"token":'$TOKEN'}'
	#DUMMY="$(get_JSON)"
	#echo '{"param":"/tmp/SD0/DCIM/","msg_id":1283,"token":'$TOKEN'}' && get_JSON

	# 10 set path (again?)
	#echo '{"param":"/tmp/SD0/DCIM/","msg_id":1283,"token":'$TOKEN'}'
	#DUMMY="$(get_JSON)"
	#echo '{"param":"/tmp/SD0/DCIM/","msg_id":1283,"token":'$TOKEN'}' && get_JSON

	# 11 set path 2
	# result: {"rval":0,"msg_id":1283,"pwd":"/tmp/SD0/DCIM/20190417"}
	#echo '{"param":"/tmp/SD0/DCIM/20190417/","msg_id":1283,"token":'$TOKEN'}'
	#DUMMY="$(get_JSON)"
	#echo '{"param":"/tmp/SD0/DCIM/20190417/","msg_id":1283,"token":'$TOKEN'}' && get_JSON

	# 12 get files in current directory
	# result: {"rval":0,"msg_id":1282,"listing":[{"IMG_20190417_164222.JPG":"2019-04-1716:42:26"},{"IMG_20190417_164222.DNG":"2019-04-1716:42:26"},{"IMG_20190417_164224.JPG":"2019-04-1716:42:28"},{"IMG_20190417_164224.DNG":"2019-04-1716:42:28"}]}
	#echo '{"msg_id":1282,"token":'$TOKEN'}'
	#DUMMY="$(get_JSON)"
	#echo '{"msg_id":1282,"token":'$TOKEN'}' && get_JSON

	# 13 set path
#echo '{"param":"/tmp/SD0/DCIM/20190417/","msg_id":1283,"token":'$TOKEN'}'
#DUMMY="$(get_JSON)"
	#echo '{"param":"/tmp/SD0/DCIM/20190417/","msg_id":1283,"token":'$TOKEN'}' && get_JSON
	
	# 14 get files
#echo '{"msg_id":1282,"token":'$TOKEN'}'
#DUMMY="$(get_JSON)"
	#echo '{"msg_id":1282,"token":'$TOKEN'}' && get_JSON
	
	# 15 SHOOT!
	# result: {"rval":0,"msg_id":4864}
#echo '{"msg_id":4864,"token":'$TOKEN'}'
#DUMMY="$(get_JSON)"
	echo '{"msg_id":4864,"token":'$TOKEN'}' && get_JSON

	# 16 get file properties (size, resolution, ...)
	# result: {"rval":0,"msg_id":1026,"size":2158173,"date":"2019-04-1716:50:11","resolution":"6912x3456","media_type":"img","scene_type":22868,"gyro":"0de17fbf09b532b922b9fbbc09b532b9f8fb7fbfe7b1353c22b9fbbce7b1353c05dd7f3f"}
#echo '{"param":"/tmp/SD0/DCIM/20190417/IMG_20190417_165017.JPG","msg_id":1026,"token":'$TOKEN'}'
#DUMMY="$(get_JSON)"
	#echo '{"param":"/tmp/SD0/DCIM/20190417/IMG_20190417_165017.JPG","msg_id":1026,"token":'$TOKEN'}' && get_JSON

	# 17 give me or generate thumbnail (hangs)
#echo '{"param":"/tmp/SD0/DCIM/20190417/IMG_20190417_165017.JPG","type":"thumb","msg_id":1025,"token":'$TOKEN'}'
#DUMMY="$(get_JSON)"
	#echo '{"param":"/tmp/SD0/DCIM/20190417/IMG_20190417_165017.JPG","type":"thumb","msg_id":1025,"token":'$TOKEN'}' && get_JSON

	# 18 ???
	# result: {"rval":0,"msg_id":6154}
	echo '{"msg_id":6154,"token":'$TOKEN'}'
	DUMMY="$(get_JSON)"
exit
	#echo '{"msg_id":6154,"token":'$TOKEN'}' && get_JSON

	# 19 ???
	echo '{"msg_id":6154,"token":'$TOKEN'}'
	DUMMY="$(get_JSON)"
	#echo '{"msg_id":6154,"token":'$TOKEN'}' && get_JSON
	
}

# Do it...
nc -v "$HOSTNAME" "$PORT" 0<data_to_camera | commander 1>data_to_camera  || (
nc -v "$HOSTNAME" "$PORT" 0<data_to_camera | commander | tee data_to_camera || (
	# TODO: handle known errors? (e.g. connection refused)
	echo Error $?; false
)