def run(self): logging.basicConfig(level=logging.INFO) self.dsn = DSN() self.dsn.data_callback = self.data_callback try: with open("./state.pickle", "r") as f: self.state, self.last_updates = pickle.load(f) except IOError: self.log.exception("Failure loading state file, resetting") self.log.info("Running") try: self.dsn.run() finally: self.log.info("Saving state...") with open("./state.pickle", "w") as f: pickle.dump((self.state, self.last_updates), f, pickle.HIGHEST_PROTOCOL) self.log.info("Shut down.")
def main(self): self.dsn = DSN() self.dsn.data_callback = self.data_callback self.dsn.run()
def to_GHz(freq): if freq is None: return None return str(round(float(freq) / 10**9, 4)) def update_callback(antenna, old, new): if len(new['down_signal']) == 0: return for i in range(0, len(new['down_signal'])): signal = new['down_signal'][i] if len(old['down_signal']) > i: old_signal = old['down_signal'][i] if (to_GHz(signal['frequency']) == to_GHz(old_signal['frequency']) and signal['debug'] == old_signal['debug'] and signal['spacecraft'] == old_signal['spacecraft']): # No change, don't print anything return print( "%s channel %s\ttracking %s\tstatus: %s\tinfo: %s\tfrequency: %sGHz" % (antenna, i, signal['spacecraft'], signal['type'], signal['debug'], to_GHz(signal['frequency']))) logging.basicConfig() dsn = DSN() dsn.update_callback = update_callback dsn.run()