mirror of
https://github.com/Lukas0025/YAGS.git
synced 2025-04-10 17:32:17 +01:00
89 lines
2.5 KiB
Python
89 lines
2.5 KiB
Python
import os
|
|
import puller
|
|
import threading
|
|
from rotator import rotator
|
|
from simplecom import simplecom
|
|
from pathlib import Path
|
|
import config
|
|
import time
|
|
|
|
# A recursive function to remove the folder
|
|
def del_folder(path):
|
|
for sub in path.iterdir():
|
|
if sub.is_dir():
|
|
# Delete directory if it's a subdirectory
|
|
del_folder(sub)
|
|
else :
|
|
# Delete file if it is a file:
|
|
sub.unlink()
|
|
|
|
# This removes the top-level folder:
|
|
path.rmdir()
|
|
|
|
class recorder(threading.Thread):
|
|
def __init__(self, job):
|
|
threading.Thread.__init__(self)
|
|
self.job = job
|
|
|
|
def run(self):
|
|
print(f"Recorder for job {self.job['target']['name']} started")
|
|
|
|
recordTime = (self.job["end"] - self.job["start"]).total_seconds()
|
|
|
|
#init rotator
|
|
rotatorDriver = simplecom("/dev/ttyUSB0")
|
|
rotatorCTR = rotator(rotatorDriver, self.job, config.station)
|
|
rotatorCTR.start()
|
|
|
|
baseband = f"records/{self.job['id']}"
|
|
|
|
fs = max(self.job["receiver"]["params"]["fs"])
|
|
|
|
# find supported FS
|
|
for sample in self.job["receiver"]["params"]["fs"]:
|
|
if (sample > int(self.job['transmitter']['bandwidth'])) and (sample < fs):
|
|
fs = sample
|
|
|
|
time.sleep(50)
|
|
|
|
os.system(f"satdump record {baseband} --source {self.job['receiver']['params']['radio']} --samplerate {fs} --frequency {self.job['transmitter']['centerFrequency']} --gain {self.job['receiver']['params']['gain']} --baseband_format s8 --timeout {recordTime}")
|
|
|
|
|
|
print(f"Recorder for job {self.job['target']['name']} stoped")
|
|
|
|
puller.setRecorded(self.job["id"])
|
|
rotatorCTR.kill()
|
|
|
|
if self.job["proccessPipe"] == []:
|
|
return
|
|
|
|
puller.setDecoding(self.job["id"])
|
|
|
|
pipe = " && ".join(self.job["proccessPipe"])
|
|
|
|
#create artecats dir
|
|
adir = f"artefacts/{self.job['id']}"
|
|
os.makedirs(adir)
|
|
|
|
#ok now replace
|
|
pipe = pipe.replace("{baseband}", str(baseband) + ".s8").replace("{fs}", str(fs)).replace("{artefactDir}", str(adir))
|
|
|
|
os.system(pipe)
|
|
|
|
puller.setSuccess(self.job["id"])
|
|
|
|
puller.setArtefacts(adir, self.job["id"])
|
|
|
|
# remove basband record
|
|
os.remove(str(baseband) + ".s8")
|
|
|
|
# remove artefacts
|
|
path = Path(adir)
|
|
try:
|
|
del_folder(path)
|
|
print("Directory removed successfully")
|
|
except OSError as o:
|
|
print(f"Error, {o.strerror}: {path}")
|
|
|
|
|