Explorer/RaspberryPi/Wifibroadcast/Integration

Wifibroadcast channels:
* channel 1: downlink camera live video
* channel 2: downlink autopilot telemetry 
* channel 3: uplink autopilot telemetry
* channel 4: uplink UDP tunnel
* channel 5: downlink UDP tunnel
 #Airpi
 /home/pi/wifibroadcast-svpcom/wfb_tx -K /home/pi/wifibroadcast-svpcom/drone.key -p 1 -u 5600 wlan1
 /home/pi/wifibroadcast-svpcom/wfb_tx -K /home/pi/wifibroadcast-svpcom/drone.key -p 2 -u 4242 -k 1 -n 2 wlan1
 /home/pi/wifibroadcast-svpcom/wfb_rx -K /home/pi/wifibroadcast-svpcom/drone.key -p 3 -u 4243 -c 127.0.0.1 -k 1 -n 2 wlan1
 /home/pi/wifibroadcast-svpcom/wfb_tx -K /home/pi/wifibroadcast-svpcom/drone.key -p 5 -u 14900 -k 1 -n 2 wlan1
 /home/pi/wifibroadcast-svpcom/wfb_rx -K /home/pi/wifibroadcast-svpcom/drone.key -p 4 -u 14901 -c 127.0.0.1 -k 1 -n 2 wlan1
 #Groundpi
 #Update GCS_IP with yours
 export GCS_IP=192.168.1.46
 /home/pi/wifibroadcast-svpcom/wfb_rx -K /home/pi/wifibroadcast-svpcom/drone.key -p 1 -c 127.0.0.1 -u 5600 wlan1
 /home/pi/wifibroadcast-svpcom/wfb_rx -K /home/pi/wifibroadcast-svpcom/drone.key -p 2 -u 4242 -c $GCS_IP wlan1
 /home/pi/wifibroadcast-svpcom/wfb_tx -K /home/pi/wifibroadcast-svpcom/drone.key -p 3 -u 4243 wlan1
 /home/pi/wifibroadcast-svpcom/wfb_tx -K /home/pi/wifibroadcast-svpcom/drone.key -p 4 -u 14800 -k 1 -n 2 wlan1
 /home/pi/wifibroadcast-svpcom/wfb_rx -K /home/pi/wifibroadcast-svpcom/drone.key -p 5 -u 14801 -c 127.0.0.1 -k 1 -n 2 wlan1
Camera stream:
 #Airpi: input camera, outputs: /tmp/camera1 (shmsrc), port 5600 (wfb_tx) 
 rm /tmp/camera*; \
 /usr/bin/raspivid -t 0 -w 640 -h 480 -fps 30/1 -b 3000000 -g 5 -cd H264 -n -fl -ih -pf high -if both -ex sports -mm average -awb horizon -a ENAC -ae 22 -o - \
 | gst-launch-1.0 fdsrc \
 ! h264parse \
 ! video/x-h264,stream-format=byte-stream,alignment=au \
 ! tee name=streams \
 ! queue max-size-buffers=0 max-size-time=0 max-size-bytes=0 \
 ! rtph264pay name=pay0 pt=96 config-interval=1 \
 ! udpsink host=127.0.0.1 port=5600 streams. \
 ! shmsink socket-path=/tmp/camera1 wait-for-connection=false sync=false
 #GroundPi: input: 5600, outputs: port 5610 (rtst server), fpv_video (displays HDMI)
 gst-launch-1.0 udpsrc port=5600 \
 ! tee name=streams \
 ! queue max-size-buffers=0 max-size-time=0 max-size-bytes=0 \
 ! udpsink host=127.0.0.1 port=5610 streams. \
 ! queue max-size-buffers=0 max-size-time=0 max-size-bytes=0 \
 ! application/x-rtp, encoding-name=H264,payload=96 \
 ! rtph264depay ! video/x-h264,stream-format=byte-stream \
 ! fdsink \
 | /home/pi/wifibroadcast_osd/fpv_video/fpv_video &
 /home/pi/gst-rtsp-server-1.14.4/examples/.libs/test-launch \
 "\"udpsrc port=5610 do-timestamp=true ! application/x-rtp, encoding-name=H264,payload=96 ! rtph264depay ! video/x-h264,stream-format=byte-stream,alignment=au ! rtph264pay name=pay0 pt=96 config-interval=1\"" "\" "
Telemetry stream:
 #Airpi: send to autopilot from port 4243, get from autopilot to port 4242 locally
 socat -u udp-listen:4243,reuseaddr,fork /dev/ttyAMA0,raw,echo=0,b115200 &
 socat -u /dev/ttyAMA0,raw,echo=0,b115200 udp-sendto:127.0.0.1:4242 &
 #GroundPi: inputs on port 4242, outputs on 4243
 #default pprlink ports
Tunnel stream: (ex: ssh 10.0.1.1)
 #Airpi: 
 socat TUN:10.0.1.2/24,tun-name=airpituntx,iff-no-pi,tun-type=tun,su=pi,iff-up udp-sendto:127.0.0.1:14900
 socat udp-listen:14901 TUN:10.0.1.2/24,tun-name=airpitunrx,iff-no-pi,tun-type=tun,su=pi,iff-up
 sleep 1
 ifconfig airpituntx mtu 1400 up &
 #GroundPi:
 socat -u TUN:10.0.1.1/24,tun-name=groundpituntx,iff-no-pi,tun-type=tun,iff-up udp-sendto:127.0.0.1:14800
 socat -u udp-listen:14801 TUN:10.0.1.1/24,tun-name=groundpitunrx,iff-no-pi,tun-type=tun,iff-up
 sleep 1
 ifconfig groundpituntx mtu 1400 up &
Explorer/RaspberryPi/Wifibroadcast/Run