136 lines
3.8 KiB
Python
136 lines
3.8 KiB
Python
import numpy as np
|
|
import threading
|
|
from astropy.coordinates import SkyCoord as sc
|
|
from os import system
|
|
|
|
#debugg to rebuild the file every test
|
|
system('cp command_q test_q')
|
|
|
|
|
|
class Sat:
|
|
def __init__(self):
|
|
self.location = self.get_loc()
|
|
self.attitude = sc(0,0, unit='deg', frame='icrs')
|
|
self.battery = 10000
|
|
self.MTE = 0
|
|
self.kill = False
|
|
self.system_modes = {
|
|
"opt_read": False,
|
|
"opt_cool": False,
|
|
"rad_mode": False,
|
|
"grv_mode": False,
|
|
"HGA_mode": "off", #off/rx/tx
|
|
"LGA_mode": "idle", #idle/dup/tx, for power these modes will be automatic
|
|
"torquers": False,
|
|
"gyro_del": False,
|
|
}
|
|
self.maneuver_q = []
|
|
self.maneuver_TTC = 0 #time to completion
|
|
self.gyro_saturation = 0
|
|
|
|
self.lens_temp =
|
|
|
|
def get_loc(self):
|
|
"""
|
|
retrieve location from orbit sim
|
|
"""
|
|
pass
|
|
|
|
def get_status(self, command="null"):
|
|
print("BoSLOO STATUS:")
|
|
print("Feelin Fine <3")
|
|
|
|
def inst_optical(self, command="null"):
|
|
"""
|
|
Main Telescope
|
|
"""
|
|
pass
|
|
|
|
def inst_ultraviolet(self, command="null"):
|
|
"""
|
|
UV band Telescope
|
|
"""
|
|
pass
|
|
|
|
def inst_hydrogen_line(self, command="null"):
|
|
"""
|
|
hydrogen line radio telescope
|
|
"""
|
|
|
|
|
|
def inst_radiation(self, command="null"):
|
|
"""
|
|
beta/gamma detector
|
|
"""
|
|
pass
|
|
|
|
def inst_gravitometer(self, command="null"):
|
|
"""
|
|
local gravity and potential gravity waves (rare)
|
|
"""
|
|
pass
|
|
|
|
def inst_hg_antenna(self, command="null"):
|
|
"""
|
|
tight beam antenna for high speed up/downlink
|
|
has to point at your ground station.
|
|
"""
|
|
pass
|
|
|
|
def check_command_q(self):
|
|
with open('test_q', 'r+') as q:
|
|
commands = q.read().splitlines()
|
|
remainder = ""
|
|
for com in commands:
|
|
if int(com.split(":")[0]) == self.MTE:
|
|
print("got com -> ", com)
|
|
|
|
com_type = com.split(":")[1]
|
|
if com_type.strip() == "status":
|
|
self.get_status(com)
|
|
elif com_type.strip() == "point":
|
|
self.set_target(com)
|
|
elif com_type.strip() == "uload":
|
|
self.upload(com)
|
|
elif com_type.strip() == "dload":
|
|
self.download()
|
|
elif com_type.strip() == "list":
|
|
self.list_drive()
|
|
elif com_type.strip() == "status":
|
|
elif com_type.strip() == "status":
|
|
elif com_type.strip() == "status":
|
|
elif com_type.strip() == "status":
|
|
elif com_type.strip() == "status":
|
|
elif com_type.strip() == "status":
|
|
elif com_type.strip() == "status":
|
|
elif com_type.strip() == "status":
|
|
elif com_type.strip() == "status":
|
|
elif com_type.strip() == "status":
|
|
|
|
else:
|
|
remainder += com + '\n'
|
|
q.truncate(0)
|
|
q.seek(0)
|
|
q.write(remainder)
|
|
|
|
def update(self):
|
|
self.check_command_q()
|
|
if not self.kill:
|
|
threading.Timer(1, self.update).start()
|
|
else:
|
|
print("heading to bed")
|
|
self.MTE += 1
|
|
|
|
|
|
if __name__ == "__main__":
|
|
BoSLOO = Sat()
|
|
BoSLOO.update()
|
|
#while True:
|
|
# try:
|
|
# pass
|
|
# except KeyboardInterrupt:
|
|
# BoSLOO.kill = True
|
|
# print("Good night!")
|
|
# break
|
|
|