BoSLOO/satsim/satsim.py
2021-05-01 09:36:26 -04:00

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