dump-config's filename argument is not optional
This commit is contained in:
parent
b7bb437ae8
commit
baa3959e8a
|
@ -73,7 +73,7 @@ This could be used with the other tools, or just to keep a backup.
|
||||||
Sample usage:
|
Sample usage:
|
||||||
|
|
||||||
```
|
```
|
||||||
% dump-config -P ~/proj/GP2040-CE/proto -P ~/proj/GP2040-CE/lib/nanopb/generator/proto --filename `date +%Y%m%d`-config-backup.bin
|
% dump-config -P ~/proj/GP2040-CE/proto -P ~/proj/GP2040-CE/lib/nanopb/generator/proto `date +%Y%m%d`-config-backup.bin
|
||||||
```
|
```
|
||||||
|
|
||||||
### dump-gp2040ce
|
### dump-gp2040ce
|
||||||
|
|
|
@ -65,6 +65,7 @@ def get_config_footer(content: bytes) -> tuple[int, int, str]:
|
||||||
"""
|
"""
|
||||||
# last 12 bytes are the footer
|
# last 12 bytes are the footer
|
||||||
logger.debug("length of content to look for footer in: %s", len(content))
|
logger.debug("length of content to look for footer in: %s", len(content))
|
||||||
|
logger.debug("content searching in for a footer: %s", content)
|
||||||
if len(content) < FOOTER_SIZE:
|
if len(content) < FOOTER_SIZE:
|
||||||
raise ConfigLengthError(f"provided content ({len(content)} bytes) is not large enough to have a config footer!")
|
raise ConfigLengthError(f"provided content ({len(content)} bytes) is not large enough to have a config footer!")
|
||||||
|
|
||||||
|
@ -78,11 +79,18 @@ def get_config_footer(content: bytes) -> tuple[int, int, str]:
|
||||||
config_magic = f'0x{footer[8:12].hex()}'
|
config_magic = f'0x{footer[8:12].hex()}'
|
||||||
|
|
||||||
# more sanity checks
|
# more sanity checks
|
||||||
|
logger.debug("length of content + footer: %s", len(content))
|
||||||
if len(content) < config_size + FOOTER_SIZE:
|
if len(content) < config_size + FOOTER_SIZE:
|
||||||
raise ConfigLengthError(f"provided content ({len(content)} bytes) is not large enough according to the "
|
raise ConfigLengthError(f"provided content ({len(content)} bytes) is not large enough according to the "
|
||||||
f"config footer!")
|
f"config footer!")
|
||||||
|
|
||||||
content_crc = binascii.crc32(content[-(config_size + 12):-12])
|
logger.debug("config size according to footer: %s", config_size)
|
||||||
|
|
||||||
|
content_config = content[-(config_size + 12):-12]
|
||||||
|
content_crc = binascii.crc32(content_config)
|
||||||
|
logger.debug("content used to calculate CRC: %s", content_config)
|
||||||
|
logger.debug("calculated config CRC: %s", content_crc)
|
||||||
|
logger.debug("expected config CRC: %s", config_crc)
|
||||||
if config_crc != content_crc:
|
if config_crc != content_crc:
|
||||||
raise ConfigCrcError(f"provided content CRC checksum {content_crc} does not match footer's expected CRC "
|
raise ConfigCrcError(f"provided content CRC checksum {content_crc} does not match footer's expected CRC "
|
||||||
f"checksum {config_crc}!")
|
f"checksum {config_crc}!")
|
||||||
|
@ -190,10 +198,10 @@ def dump_config():
|
||||||
description="Read the configuration section from a USB device and save it to a binary file.",
|
description="Read the configuration section from a USB device and save it to a binary file.",
|
||||||
parents=[core_parser],
|
parents=[core_parser],
|
||||||
)
|
)
|
||||||
parser.add_argument('--filename', help=".bin file to save the GP2040-CE board's config section to")
|
parser.add_argument('binary_filename', help=".bin file to save the GP2040-CE board's config section to")
|
||||||
args, _ = parser.parse_known_args()
|
args, _ = parser.parse_known_args()
|
||||||
config, _, _ = get_config_from_usb()
|
config, _, _ = get_config_from_usb()
|
||||||
with open(args.filename, 'wb') as out_file:
|
with open(args.binary_filename, 'wb') as out_file:
|
||||||
out_file.write(serialize_config_with_footer(config))
|
out_file.write(serialize_config_with_footer(config))
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue