#eeprom_data = ['\xFF'] * eeprom_size
eeprom_data = bytearray('\xFF') * eeprom_size

# Add command line options based on EEPROM settings
for k in sorted(eeprom.keys()):
    parser.add_argument('--' + k.replace('_','-'), 
                        type=eeprom[k].get('type'),
                        choices=eeprom[k].get('choices'),
                        help=eeprom[k].get('help'),
                        metavar=eeprom[k].get('metavar'))

# Process the command line arguments
args = parser.parse_args()

# Calculate key length from the pattern, not the size reserved for it
hmac_key_length = AWEeprom.parse_unpack_format(eeprom['hmac_key']['format'])[1]
generated_key = None
if args.hmac_key is None:
    # Create a random key
    generated_key = []
    for i in range(hmac_key_length):
        generated_key.append(random.randint(0, 255))
    args.hmac_key = ','.join(map(hex, generated_key))
elif args.hmac_key == 'blank':
    args.hmac_key = ','.join(['0xFF'] * hmac_key_length)
                            


# Apply settings defined from command line arguments, else use the
# default setting if defined.
for k in eeprom:
Beispiel #2
0
for k in aw_cmds:
    s = getattr(args, k)
    if s is None:
        continue

    cmd = { }
    # If the argparse type conversion was employed then convert
    # back to a string
    s = str(s)

    m = re.match('^eeprom_(.*)', k)
    if m:
        cmd['name'] = 'write_eeprom'
        eeprom_setting = m.group(1)
        # Parse struct format string into order, quantity, type
        pfmt = AWEeprom.parse_unpack_format(eeprom[eeprom_setting]['format'])
        if pfmt[2] in ('c', 's', 'p'):
            # String data
            data = s
        else:
            # Convert into numeric data
            data = AWEeprom.safe_eval(s)

        # Pack data into suitable bytearrays matching the EEPROM layout
        if pfmt[1] > 1:
            # Multiple values required
            eeprom_data = struct.pack(eeprom[eeprom_setting]['format'],
                                      *data)
        else:
            # struct.pack_into(eeprom[eeprom_setting]['format'], eeprom_data,
            eeprom_data = struct.pack(eeprom[eeprom_setting]['format'],