Changing frequency dynamically in benchmark_rx.py

Hi,

I am working on a cognitive radio system. the transmitter side senses
the
spectrum and then transmits on a carrier frequency which it finds free.
The receiver should be kept synchronized with the transmitter. The
transmitter is for now tx_voice.py and receiver is rx_voice.py.
Assumptions:
The trasmitter is only using 3 freqs: 460e6 461e6 462e6 Hz
The receiver also knows this set of frequencies

Till now:
I have implemented the power detector module in the transmitter.

Problem:
I am failing to implement the required changes in rx_voice.py
I don’t know where to implement the following logic in rx_voice.py:
If no packet is received on freq1
check freq2
else
stay
(also keep checking if data is being received,If packets
are
not being received then move to another frequency)

and so on

2nd Approach:
I tried a new approach with same logic by using the concept of
subprocesses
;
i wrote the following code:

#####################################################################################
import time
import subprocess

while(True):
output=open(“tempdata”, “w”)
process=subprocess.Popen(["./rx_voice.py", “-f”, “460e6”, “-r”,
“500000”
]], stdout=output)
time.sleep(1) ### Just so that rx_voice initial output is ingored
check_size_1=subprocess.Popen([“du”, “-b”, “tempdata”],
stdout=subprocess.PIPE).communicate()[0]
time.sleep(2)
check_size_2=subprocess.Popen([“du”, “-b”, “tempdata”],
stdout=subprocess.PIPE).communicate()[0]
check_size_1=check_size_1.split(" “)[0];
check_size_2=check_size_2.split(” “)[0];
if(check_size_1!=check_size_2):
while(True):
check_size_1=subprocess.Popen([“du”, “-b”, “tempdata”],
stdout=subprocess.PIPE).communicate()[0]
time.sleep(2)
check_size_2=subprocess.Popen([“du”, “-b”, “tempdata”],
stdout=subprocess.PIPE).communicate()[0]
check_size_1=check_size_1.split(” “)[0];
check_size_2=check_size_2.split(” ")[0];
if(check_size_1!=check_size_2):
pass
else:
process.kill()
output.close()
break;

else:
    process.kill()
    output.close()


output=open("tempdata", "w")
process=subprocess.Popen(*["./rx_voice.py", "-f", "461e6", "-r",

“500000”*], stdout=output)
time.sleep(1) ### Just so that rx_voice initial output is ingored
check_size_1=subprocess.Popen([“du”, “-b”, “tempdata”],
stdout=subprocess.PIPE).communicate()[0]
time.sleep(2)
check_size_2=subprocess.Popen([“du”, “-b”, “tempdata”],
stdout=subprocess.PIPE).communicate()[0]
check_size_1=check_size_1.split(" “)[0];
check_size_2=check_size_2.split(” “)[0];
if(check_size_1!=check_size_2):
while(True):
check_size_1=subprocess.Popen([“du”, “-b”, “tempdata”],
stdout=subprocess.PIPE).communicate()[0]
time.sleep(2)
check_size_2=subprocess.Popen([“du”, “-b”, “tempdata”],
stdout=subprocess.PIPE).communicate()[0]
check_size_1=check_size_1.split(” “)[0];
check_size_2=check_size_2.split(” ")[0];
if(check_size_1!=check_size_2):
pass
else:
process.kill()
output.close()
break;

else:
    process.kill()

output=open("tempdata", "w")
process=subprocess.Popen(*["./rx_voice.py", "-f", "462e6", "-r",

“500000”*], stdout=output)
time.sleep(1) ### Just so that rx_voice initial output is ingored
check_size_1=subprocess.Popen([“du”, “-b”, “tempdata”],
stdout=subprocess.PIPE).communicate()[0]
time.sleep(2)
check_size_2=subprocess.Popen([“du”, “-b”, “tempdata”],
stdout=subprocess.PIPE).communicate()[0]
check_size_1=check_size_1.split(" “)[0];
check_size_2=check_size_2.split(” “)[0];
if(check_size_1!=check_size_2):
while(True):
check_size_1=subprocess.Popen([“du”, “-b”, “tempdata”],
stdout=subprocess.PIPE).communicate()[0]
time.sleep(2)
check_size_2=subprocess.Popen([“du”, “-b”, “tempdata”],
stdout=subprocess.PIPE).communicate()[0]
check_size_1=check_size_1.split(” “)[0];
check_size_2=check_size_2.split(” ")[0];
if(check_size_1!=check_size_2):
pass
else:
process.kill()
output.close()
break;
else:
process.kill()
#############################################################################################END

But the problem arises because the opening of a process (rx_voice.py)
takes
some time (maybe because of some messages which are displayed everytime
when
rx_voice.py is started) *
*
NOTE: kill() only runs in python 2.6 and maybe higher versions

Can someone please help me in my initial approach (editing rx_voice.py
or
receive_path.py) OR my subprocess approach??
time is not on my side :slight_smile:

Regards
Ali