import os import sys DEBUG_FILE = False PACKAGE_PARENT = '..' SCRIPT_DIR = os.path.dirname(os.path.realpath(os.path.join(os.getcwd(), os.path.expanduser(__file__)))) sys.path.append(os.path.normpath(os.path.join(SCRIPT_DIR, PACKAGE_PARENT))) from utils.DeviceSim import DeviceSim from utils.StatusManager import StatusManager class DomeSimulator(DeviceSim, StatusManager): status = {"status": "VALID"} def __init__(self, argv): super().__init__(argv) self.setDevice("Dome") self.setStatusManager("domeSimulator", argv) def domePrint(self, string: str): if DEBUG_FILE: print("DomeSimulator : " + string) def handleConnections(self): for co in self.connections: data = self.readBytes(128, co) answer = "" cut_data = data.split(" ") if (len(cut_data) < 2): self.domePrint("Received invalid message on socket : " + data) continue cmd_type = cut_data[0] cmd = cut_data[1] args = cut_data[2:] if (cmd_type == "GET"): if (cmd == "STATUS"): answer = self.create_status() else: answer = "Invalid cmd for GET: " + cmd self.domePrint(answer) else: self.domePrint("Ignored message " + data) if (len(answer) > 0): self.sendMessage(answer, co) return (0) def loop(self): i = 0 if (self.ended == 0): self.domePrint("Not entry for telescope found in config file : " + self.config_file) return (0) while (True): self.updateStatus(i) if (self.isConnected()): self.handleConnections() i += 1 if (i > self.ended): return (0) return (1) def run(self): if DEBUG_FILE: print("Dome simulator running") self.parse() self.configSocket() self.loop() return (0) if __name__ == "__main__": sim = DomeSimulator(sys.argv) sim.run()