msg += self.hdr.encode() # MO DirectIP Header msg += self.location.encode() # MO DirectIP Location msg += self.payload.encode() # MO DirectIP GPS Payload msg[1:3] = (len(msg) - 3).to_bytes(2, "big") # Fill in the length self.logger.debug("n=%s msg=%s", len(msg), bytes(msg)) return bytes(msg) if __name__ == "__main__": parser = argparse.ArgumentParser( description="Drifter calculation from GPS fixes") parser.add_argument("--dt", type=int, default=15 * 60, metavar="seconds", help="Time between packets") FauxDrifter.addArgs(parser) Forwarder.addArgs(parser) MyLogger.addArgs(parser) args = parser.parse_args() logger = MyLogger.mkLogger(args) faux = FauxDrifter(args, logger) forwarder = Forwarder(args, logger) forwarder.start() while True: msg = faux.mkMessage() forwarder.put(msg) time.sleep(args.dt)
type=float, default=60, help='How long to wait until the first scheduler run in seconds') grp = parser.add_argument_group('Database related options') grp.add_argument('--db', type=str, required=True, help='database name') grp.add_argument('--group', type=str, default='SCHED', help='Parameter group name to use') grp.add_argument('--channel', type=str, default='run_scheduler', help='DB channel to listen for notifications on') MyLogger.addArgs(parser) # Add logger related options args = parser.parse_args() logger = MyLogger.mkLogger(args, __name__, fmt='%(asctime)s: %(levelname)s - %(message)s') logger.info('Args=%s', args) if not args.single: # Check single only options are not specified if args.minCleanTime is not None: parser.error( 'You can only specifiy --minCleanTime with the --single option!') if args.sDate is not None: parser.error('You can only specifiy --sDate with the --single option!')