def load_configuration(configuration_file): """Generates a dict of JSON command messages for each movement.""" configuration = json.loads(configuration_file.read()) dead = dead_frequency(configuration['frequency']) sync_command = { 'frequency': configuration['frequency'], 'dead_frequency': dead, 'burst_us': configuration['synchronization_burst_us'], 'spacing_us': configuration['synchronization_spacing_us'], 'repeats': configuration['total_synchronizations'], } base_command = { 'frequency': configuration['frequency'], 'dead_frequency': dead, 'burst_us': configuration['signal_burst_us'], 'spacing_us': configuration['signal_spacing_us'], } movement_to_command = {} for key in ( 'forward', 'forward_left', 'forward_right', 'left', 'reverse', 'reverse_left', 'reverse_right', 'right', ): command_dict = base_command.copy() command_dict['repeats'] = configuration[key] movement_to_command[key] = command_dict direct_commands = { key: json.dumps([sync_command, movement_to_command[key]]) for key in movement_to_command } # We also need to add an idle command; just broadcast at the dead frequency command_dict = [base_command.copy()] command_dict[0]['frequency'] = dead command_dict[0]['repeats'] = 20 # Doesn't matter direct_commands['idle'] = json.dumps(command_dict) return direct_commands
def main(): """Parses command line arguments and runs the simple controller.""" parser = make_parser() args = parser.parse_args() if args.frequency is not None: frequency = dead_frequency(args.frequency) else: frequency = 49.830 if not server_up(args.server, args.port, frequency): print('Server does not appear to be listening for messages, aborting') return command_array = get_command_array(parser) print('Sending commands to ' + args.server + ':' + str(args.port)) send_signal_repeats(args.server, args.port, command_array)