Skip to content

Commit

Permalink
Merge pull request OpenHD#91 from HD-Fpv/dev-IPUSBCamera
Browse files Browse the repository at this point in the history
Dev ipusb camera
  • Loading branch information
user1321 authored Jun 9, 2019
2 parents fe9a5b8 + 599685c commit 751df5e
Show file tree
Hide file tree
Showing 12 changed files with 343 additions and 13 deletions.
17 changes: 17 additions & 0 deletions RemoteSettings/Air/TxSecondaryCamera.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
#!/bin/bash

cd /home/pi/cameracontrol/IPCamera/svpcom_wifibroadcast/

NICS_LIST=`ls /sys/class/net/ | nice grep -v eth0 | nice grep -v lo | nice grep -v usb | nice grep -v intwifi | nice grep -v wlan | nice grep -v relay | nice grep -v wifihotspot`


while [ 1 ]
do
echo "start wfb_tx -u 9292 -p 91 -B 20 -M 0 $NICS_LIST \n"
./wfb_tx -u 5600 -t 2 -p 23 -B 20 -M 0 $NICS_LIST

NICS_LIST=`ls /sys/class/net/ | nice grep -v eth0 | nice grep -v lo | nice grep -v usb | nice grep -v intwifi | nice grep -v wlan | nice grep -v relay | nice grep -v wifihotspot`
echo "./wfb_tx -u 5600 -t 2 -p 23 -B 20 -M 0 Restating with: $NICS_LIST \n"
sleep 2
done

120 changes: 120 additions & 0 deletions RemoteSettings/BandSwitch.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,10 @@
PrimaryCardMAC = "Non"
ExitRecvThread = 0
ExitRCThread = 0
ExitRCThread2 = 0

RC_Value = 0
RC_Value2 = 0

parser = argparse.ArgumentParser()
parser.add_argument("-PrimaryCardMAC", help="")
Expand All @@ -37,6 +39,18 @@
parser.add_argument("-Band10ValueMax", type=int, help="")
parser.add_argument("-Band20After", type=int, help="")

parser.add_argument("-Camera1ValueMin", type=int, help="")
parser.add_argument("-Camera1ValueMax", type=int, help="")

parser.add_argument("-Camera2ValueMin", type=int, help="")
parser.add_argument("-Camera2ValueMax", type=int, help="")

parser.add_argument("-Camera3ValueMin", type=int, help="")
parser.add_argument("-Camera3ValueMax", type=int, help="")

parser.add_argument("-Camera4ValueMin", type=int, help="")
parser.add_argument("-Camera4ValueMax", type=int, help="")


args = parser.parse_args()

Expand All @@ -46,6 +60,25 @@
Band10ValueMax = args.Band10ValueMax
Band20After = args.Band20After

Camera1ValueMin = args.Camera1ValueMin
Camera1ValueMax = args.Camera1ValueMax
Camera2ValueMin = args.Camera2ValueMin
Camera2ValueMax = args.Camera2ValueMax
Camera3ValueMin = args.Camera3ValueMin
Camera3ValueMax = args.Camera3ValueMax
Camera4ValueMin = args.Camera4ValueMin
Camera4ValueMax = args.Camera4ValueMax


print("Camera1ValueMin: ",Camera1ValueMin )
print("Camera1ValueMax: ",Camera1ValueMax )
print("Camera2ValueMin: ",Camera2ValueMin )
print("Camera2ValueMax: ",Camera2ValueMax )
print("Camera3ValueMin: ",Camera3ValueMin )
print("Camera3ValueMax: ",Camera3ValueMax )
print("Camera4ValueMin: ",Camera4ValueMin)
print("Camera4ValueMax: ",Camera4ValueMax )



def SendDataToAir(MessageBuf):
Expand Down Expand Up @@ -78,6 +111,32 @@ def StartRCThreadIn():
RCSock.close()
ExitRCThread = 2

def StartRCThreadIn2():
global RC_Value2
global ExitRCThread2
UDP_IP = ""
UDP_PORT = 1259
RCSock = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
RCSock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
RCSock.settimeout(1)
RCSock.bind((UDP_IP, UDP_PORT))

while True:
try:
data, addr = RCSock.recvfrom(1024) # buffer size is 1024 bytes
byteArr = bytearray([data[1], data[0]])
lock.acquire()
RC_Value2 = int.from_bytes( byteArr, byteorder='big')
lock.release()
except:
if ExitRCThread2 == 1:
print("RC thread2 exiting...")
break

RCSock.close()
ExitRCThread2 = 2


def StartRecvThread():
global AirBand
global ExitRecvThread
Expand Down Expand Up @@ -284,6 +343,9 @@ def ExitScript(ExitCode):
RC_UDP_IN_thread = threading.Thread(target=StartRCThreadIn)
RC_UDP_IN_thread.start()

RC_UDP_IN_thread2 = threading.Thread(target=StartRCThreadIn2)
RC_UDP_IN_thread2.start()

CurrentBandTmp = 0
CurrentBand = 0
try:
Expand All @@ -305,6 +367,8 @@ def ExitScript(ExitCode):
CurrentBand = 20
print("CurrentBand: ",CurrentBand)

CurrentCamera = 1

#Add command line in code
while True:
if RC_Value >= Band20After and CurrentBand != 20 and RC_Value != 0:
Expand All @@ -324,6 +388,62 @@ def ExitScript(ExitCode):
if SwitchRemoteLocalBandTo(5) == False:
ExitScript(2)
CurrentBand = 5


if RC_Value2 >= Camera1ValueMin and RC_Value2 <= Camera1ValueMax:
if CurrentCamera != 1:
CurrentCamera = 1
for i in range(5):
SendDataToAir("RPi")
print("Camera: RPi")

try:
if os.path.exists("/tmp/SecondaryCameraActive"):
os.remove("/tmp/SecondaryCameraActive")
except Exception as e:
print("Remove file error: " + str(e))

try:
os.system('/tmp/ForwardRTPMainCamera.sh &')
except Exception as e:
print("RTP forward. It is ok. File can be missing " + str(e))

if RC_Value2 >= Camera2ValueMin and RC_Value2 <= Camera2ValueMax:
if CurrentCamera != 2:
CurrentCamera = 2
print("Camera: RPiAndSecondary")
for i in range(5):
SendDataToAir("RPiAndSecondary")
try:
hfile = open("/tmp/SecondaryCameraActive", 'w+')
hfile.close()
except Exception as e:
print("Create file error: " + str(e))
try:
os.system('/home/pi/RemoteSettings/Ground/RxForwardSecondaryRTP.sh &')
except Exception as e:
print("RTP secondary forward exception: " + str(e))

if RC_Value2 >= Camera3ValueMin and RC_Value2 <= Camera3ValueMax:
if CurrentCamera != 3:
CurrentCamera = 3
print("Camera: Secondary")
for i in range(5):
SendDataToAir("Secondary")

try:
hfile = open("/tmp/SecondaryCameraActive", 'w+')
hfile.close()
except Exception as e:
print("Create file error: " + str(e))

try:
os.system('/home/pi/RemoteSettings/Ground/RxForwardSecondaryRTP.sh &')
except Exception as e:
print("RTP secondary forward exception: " + str(e))

if RC_Value2 >= Camera4ValueMin and RC_Value2 <= Camera4ValueMax:
print("Camera: non")
sleep(0.6)

else:
Expand Down
113 changes: 107 additions & 6 deletions RemoteSettings/BandSwitchAir.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,9 @@

parser = argparse.ArgumentParser()
parser.add_argument("-DefaultBandWidthAth9k", type=int, help="")
parser.add_argument("-SecondaryCamera", help="")
parser.add_argument("-BitrateMeasured", type=int, help="")

args = parser.parse_args()
tmp = args.DefaultBandWidthAth9k
CurrentBand = "0"
Expand All @@ -33,10 +36,18 @@
else:
CurrentBand = "0"

CameraType = "RPi"

SecondaryCamera = args.SecondaryCamera
BitrateMeasured = args.BitrateMeasured

InMsgBand5 = bytearray(b'5') #Air to 5
InMsgBand10 = bytearray(b'a') #Air to 10
InMsgBand20 = bytearray(b'0') #Air to 20
InMsgCameraTypeRPi = bytearray(b'RPi')
InMsgCameraTypeRPiAndSecondary = bytearray(b'RPiAndSecondary')
InMsgCameraTypeSecondary = bytearray(b'Secondary')

PrimaryCardPath = "Non"

def SendDataToGround(MessageBuf):
Expand Down Expand Up @@ -94,8 +105,82 @@ def AirToGroundRSSI():
sleep(0.5)


def SwitchCamera():
print("CameraType: ", CameraType)
print("CurrentBand: ", CurrentBand )
if CameraType == "RPi":
try:
os.system('/home/pi/RemoteSettings/KillIPCamera.sh')
os.system('/home/pi/RemoteSettings/KillUSBCamera.sh')
os.system('/home/pi/RemoteSettings/KillRaspivid.sh')
if CurrentBand == "0":
os.system('/dev/shm/startReadCameraTransfer.sh &')
if CurrentBand == "a":
os.system('/dev/shm/startReadCameraTransfer_10.sh &')
if CurrentBand == "5":
os.system('/dev/shm/startReadCameraTransfer_5.sh &')
except Exception as e:
print(e)

if CameraType == "RPiAndSecondary":
try:
BitrateSecondaryCamera = 1000000
BitrateMainCamera = 1000000
if CurrentBand == "0":
BitrateSecondaryCamera = int(BitrateMeasured / 2)
BitrateMainCamera = int(BitrateMeasured / 2)
if CurrentBand == "a":
BitrateSecondaryCamera = int(BitrateMeasured / 4)
BitrateMainCamera = int(BitrateMeasured / 4)
if CurrentBand == "5":
BitrateSecondaryCamera = int(BitrateMeasured / 8)
BitrateMainCamera = int(BitrateMeasured / 8)


print("BitrateMainCamera: ", BitrateMainCamera )
print("BitrateUSBCamera: ", BitrateSecondaryCamera )
os.system('/home/pi/RemoteSettings/KillIPCamera.sh')
os.system('/home/pi/RemoteSettings/KillUSBCamera.sh')
os.system('/home/pi/RemoteSettings/KillRaspivid.sh')
subprocess.Popen( ['/dev/shm/startReadCameraTransferExteranlBitrate.sh', str(BitrateMainCamera) ] )

if SecondaryCamera == "IP":
os.system('/home/pi/RemoteSettings/KillIPCamera.sh')
os.system('/dev/shm/startReadIPCameraLowRes.sh &')
if SecondaryCamera == "USB":
os.system('/home/pi/RemoteSettings/KillUSBCamera.sh')
subprocess.Popen( ['/dev/shm/startReadUSBCamera.sh', str(BitrateSecondaryCamera) ] )
except Exception as e:
print(e)
if CameraType == "Secondary":
try:
BitrateSecondaryCamera = 1000000
if CurrentBand == "0":
BitrateSecondaryCamera = int(BitrateMeasured)
if CurrentBand == "a":
BitrateSecondaryCamera = int(BitrateMeasured / 2)
if CurrentBand == "5":
BitrateSecondaryCamera = int(BitrateMeasured / 4)

os.system('/home/pi/RemoteSettings/KillIPCamera.sh')
os.system('/home/pi/RemoteSettings/KillUSBCamera.sh')
os.system('/home/pi/RemoteSettings/KillRaspivid.sh')

if SecondaryCamera == "IP":
os.system('/home/pi/RemoteSettings/KillRaspivid.sh')
os.system('/home/pi/RemoteSettings/KillIPCamera.sh')
os.system('/dev/shm/startReadIPCameraHiRes.sh &')
if SecondaryCamera == "USB":
os.system('/home/pi/RemoteSettings/KillRaspivid.sh')
os.system('/home/pi/RemoteSettings/KillUSBCamera.sh')
subprocess.Popen( ['/dev/shm/startReadUSBCamera.sh', str(BitrateSecondaryCamera) ] )
except Exception as e:
print(e)


def StartRecv():
global CurrentBand
global CameraType
UDP_IP = ""
UDP_PORT = 4321 #3033 - UDP DownLink from Ground
sock = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
Expand All @@ -105,27 +190,43 @@ def StartRecv():
if data == InMsgBand5:
print("InMsgBand5\n")
if SwitchLocalBandTo(PrimaryCardPath,5) == True:
os.system('/home/pi/RemoteSettings/KillRaspivid.sh')
os.system('/dev/shm/startReadCameraTransfer_5.sh &')
print("InMsgBand5\n")
#os.system('/home/pi/RemoteSettings/KillRaspivid.sh')
#os.system('/dev/shm/startReadCameraTransfer_5.sh &')
lock.acquire()
CurrentBand = "5"
lock.release()
SwitchCamera()
if data == InMsgBand10:
print("InMsgBand10\n")
if SwitchLocalBandTo(PrimaryCardPath,10) == True:
os.system('/home/pi/RemoteSettings/KillRaspivid.sh')
os.system('/dev/shm/startReadCameraTransfer_10.sh &')
print("InMsgBand10\n")
#os.system('/home/pi/RemoteSettings/KillRaspivid.sh')
#os.system('/dev/shm/startReadCameraTransfer_10.sh &')
lock.acquire()
CurrentBand = "a"
lock.release()
SwitchCamera()
if data == InMsgBand20:
print("InMsgBand20\n")
if SwitchLocalBandTo(PrimaryCardPath,20) == True:
os.system('/home/pi/RemoteSettings/KillRaspivid.sh')
os.system('/dev/shm/startReadCameraTransfer.sh &')
print("InMsgBand20\n")
#os.system('/home/pi/RemoteSettings/KillRaspivid.sh')
#os.system('/dev/shm/startReadCameraTransfer.sh &')
lock.acquire()
CurrentBand = "0"
lock.release()
SwitchCamera()
if data == InMsgCameraTypeRPi and CameraType != "RPi":
CameraType = "RPi"
SwitchCamera()
if data == InMsgCameraTypeRPiAndSecondary and CameraType != "RPiAndSecondary":
CameraType = "RPiAndSecondary"
SwitchCamera()
if data == InMsgCameraTypeSecondary and CameraType != "Secondary":
CameraType = "Secondary"
SwitchCamera()
print(".")


if FindCardPhyInitPath() == True:
Expand Down
6 changes: 5 additions & 1 deletion RemoteSettings/BandSwitcherAir.sh
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,12 @@ if [ -e "/tmp/settings.sh" ]; then
sleep 365d
fi

#IP Camera don`t have DHCP, so, fixed IP. Must be moved to better place.
ifconfig eth0 192.168.0.215 netmask 255.255.0.0 up
service ssh start

/home/pi/RemoteSettings/Air/TxBandSwitcher.sh &
sleep 0.2
/home/pi/RemoteSettings/Air/RxBandSwitcher.sh &
sleep 0.2
python3.5 /home/pi/RemoteSettings/BandSwitchAir.py -DefaultBandWidthAth9k $Bandwidth &
python3.5 /home/pi/RemoteSettings/BandSwitchAir.py -DefaultBandWidthAth9k $Bandwidth -SecondaryCamera $1 -BitrateMeasured $2 &
2 changes: 1 addition & 1 deletion RemoteSettings/Ground/BandSwitcher.sh
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,6 @@ fi

while true
do
python3.5 /home/pi/RemoteSettings/BandSwitch.py -PrimaryCardMAC $PrimaryCardMAC -Band5Below $Band5Below -Band10ValueMin $Band10ValueMin -Band10ValueMax $Band10ValueMax -Band20After $Band20After
python3.5 /home/pi/RemoteSettings/BandSwitch.py -PrimaryCardMAC $PrimaryCardMAC -Band5Below $Band5Below -Band10ValueMin $Band10ValueMin -Band10ValueMax $Band10ValueMax -Band20After $Band20After -Camera1ValueMin $Camera1ValueMin -Camera1ValueMax $Camera1ValueMax -Camera2ValueMin $Camera2ValueMin -Camera2ValueMax $Camera2ValueMax -Camera3ValueMin $Camera3ValueMin -Camera3ValueMax $Camera3ValueMax -Camera4ValueMin $Camera4ValueMin -Camera4ValueMax $Camera4ValueMax
sleep 2
done
14 changes: 14 additions & 0 deletions RemoteSettings/Ground/RxForwardSecondaryRTP.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
#!/bin/bash

ps -ef | nice grep "cat /root/videofifo2" | nice grep -v grep | awk '{print $2}' | xargs kill -9
ps -ef | nice grep "gst-launch-1.0 fdsrc" | nice grep -v grep | awk '{print $2}' | xargs kill -9

ps -ef | nice grep "wfb_rx -u 5600 -p 23 -c" | nice grep -v grep | awk '{print $2}' | xargs kill -9

cd /home/pi/cameracontrol/IPCamera/svpcom_wifibroadcast/

NICS_LIST=`ls /sys/class/net/ | nice grep -v eth0 | nice grep -v lo | nice grep -v usb | nice grep -v intwifi | nice grep -v wlan | nice grep -v relay | nice grep -v wifihotspot`

./wfb_rx -u 5600 -p 23 -c 192.168.2.2 $NICS_LIST


1 change: 1 addition & 0 deletions RemoteSettings/KillIPCamera.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
ps -ef | nice grep "gst-launch-1.0 rtspsrc location=" | nice grep -v grep | awk '{print $2}' | xargs kill -9
1 change: 1 addition & 0 deletions RemoteSettings/KillUSBCamera.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
ps -ef | nice grep "gst-launch-1.0 uvch264src device=/dev/vid" | nice grep -v grep | awk '{print $2}' | xargs kill -9
Loading

0 comments on commit 751df5e

Please sign in to comment.