48 Commits

Author SHA1 Message Date
b2bf7984b0
add SPDX-License-Identifier: MIT to all source
Signed-off-by: Brian S. Stephan <bss@incorporeal.org>
2023-12-18 10:17:35 -06:00
fc022452f5
replace most references to pico with RP2040 2023-11-07 00:26:51 -06:00
fcb1297139
test with 0.7.5 files, which has an expanded config section 2023-11-06 23:55:01 -06:00
d2ef3efa3b
trivial reordering of command line flags 2023-07-12 18:32:05 -05:00
cce165f012
add flag to have concatenate write direct to USB 2023-07-12 17:50:43 -05:00
fb1729a957
write in 4096 byte chunks 2023-07-12 17:33:12 -05:00
8c5bd4397f
allow edit-config to fallback to new config if old doesn't exist 2023-07-12 00:08:55 -05:00
6a147aa1d8
attempt to address USB corruption by padding more 2023-07-11 23:28:34 -05:00
a7b8309b33
--replace-extra to overwrite config area when concatenating 2023-07-11 18:36:17 -05:00
baa3959e8a
dump-config's filename argument is not optional 2023-07-11 16:32:46 -05:00
b7bb437ae8
command to dump whole GP2040-CE image from USB 2023-07-11 16:27:01 -05:00
2f5a99b695
use proper field descriptor when checking missing children 2023-07-10 16:00:26 -05:00
853283e69c
edit-config over USB 2023-07-09 10:47:27 -05:00
5bcb3dba3f
method to write the config over USB at the proper alignment 2023-07-09 10:03:44 -05:00
2d024c5b34
pico.write must happen at 256 byte boundaries
there's no good way to tell if the payload should be padded or if it
should just be realigned, so raise an exception and make the caller
figure it out
2023-07-09 09:16:55 -05:00
c25f6f4fd3
add command for writing to the BOOTSEL Pico 2023-07-08 23:48:47 -05:00
a1e3955a1f
add command to erase a section of flash
used by picotool as part of the write, so we'll do the same
2023-07-08 23:25:38 -05:00
7a9d5ad1d1
dump-config tool to easily backup a board's config section
doesn't require picotool, doesn't include padding, does include the
footer
2023-07-07 20:09:00 -05:00
e2ad75371e
DRY: convenience method to get config from USB 2023-07-07 20:03:41 -05:00
0378269a00
--usb flag to edit-config direct off the board 2023-07-07 18:58:25 -05:00
70d3ce8be0
--usb flag to visualize-storage direct off the board 2023-07-07 18:31:13 -05:00
10dcd149cc
add methods to read directly off the board over USB 2023-07-07 16:45:07 -05:00
772ae953f0
add method to reboot a pico (in BOOTSEL) 2023-07-06 16:07:06 -05:00
221f45557e
support the adding of new repeated elements
take for instance:
repeated AlternativePinMappings alternativePinMappings = 1 [(nanopb).max_count = 3];

this, in C, creates a three-struct-sized array alternativePinMappings[].
in python, this is the same idea, where profileOptions' field is a
special container to which AlternativePinMappings can be added. this
allows adding elements via the UI. it does *NOT* implement limits (yet?)
so you can add more (and I think the board will just ignore them and
drop them on write)
2023-07-01 17:05:19 -05:00
c60a5e784d
refactor to retain field_value in case it is a message
we can save some config lookups in this case (in particular in the case
where we are working with repeateds and the lookup against an iterable
won't work)
2023-07-01 13:00:48 -05:00
71f6af624e
refactor to add a node outside of the main tree builder 2023-07-01 12:24:31 -05:00
7aee99ef4f
allow for "opening" an empty config from file 2023-06-30 23:12:53 -05:00
7d5052e811
add edit-config, a Textual TUI for editing a configuration
this tree UI allows for viewing and basic editing of a configuration
section from a board. it does a decent job of displaying most of the
settings, and editing is equally convenient, as in it tries to handle
enums correctly, but doesn't validate pins or handle long binary strings
well.

saving is done in place --- if a config/storage section was opened, a
config section (no padding) is what results. if a whole board was
opened, the whole binary is rewritten with the new offset config
section. this way, a whole board dump can be changed in place, or a new
config can be made for use in e.g. concatenate to build an image

many enhancements to come over time
2023-06-30 02:01:01 -05:00
9b43ac824d
add more methods for writing a config to file
these allow for adding a config to the proper section of an existing
binary file, or writing a config to a new config-only binary file
2023-06-29 14:43:46 -05:00
cbf0f52841
add method to generate a serialized + footer config 2023-06-28 19:21:27 -05:00
1345e8b18d
add length info to exceptions complaining about length 2023-06-28 14:38:13 -05:00
39fa558741
check the config's CRC32 checksum while reading 2023-06-28 14:38:10 -05:00
095fac19f1
properly account for combining config section with firmware
prior to this, the concatenate assumed it was concatenating a firmware
with a full *storage section*, e.g. the already-padded 8192 bytes, but
it's equally valuable now that I'm creating configs to have just a
config section + footer, which needs to be padded 8192. now concatenate
supports both
2023-06-28 12:52:49 -05:00
85d84144fc
concatenate command: combine firmware and storage into one file 2023-06-26 15:32:32 -05:00
229092dd66
custom config validation exceptions
might be useful when allowing for ignoring specific sanity checks
2023-06-22 00:08:12 -05:00
1b02e458e2
visualize-storage flag to print as JSON
closes #3
2023-06-21 18:21:22 -05:00
88ca5c5152
more tests for command invocations 2023-06-21 17:54:27 -05:00
5b8dc456f1
option to get the config out of a whole board dump
now you don't need to fiddle with specific byte ranges of a dump, you
can just dump the whole board if that's more convenient, and
visualize-storage will parse that

also more testing in general
2023-06-21 15:20:21 -05:00
d31c451d0c
tox for local CI, with coverage and bandit checks added 2023-06-21 12:31:58 -05:00
54035de00a
add pytest, test creation/import of config_pb2 module 2023-06-20 19:57:38 -05:00
0c7ed1fcea
improve storage parsing by using footer for sanity
magic is checked for sanity, and then the size is used for reading the
whole section rather than simply ignoring null bytes

closes #2
2023-06-20 19:57:28 -05:00
a55bea087c
add help text to the --version flag 2023-06-20 18:19:50 -05:00
dbd392cade
set up some sane-ish logging defaults 2023-06-20 18:17:46 -05:00
518aae359d
provide shortcut for the proto file path option 2023-06-20 15:45:31 -05:00
35abad327e
dynamically generate version number based on git 2023-06-20 15:43:21 -05:00
1302cb914c
correct wording of what get_config_pb2 is doing 2023-06-20 13:30:48 -05:00
8891dcc2f4
minor documentation cleanups 2023-06-20 12:59:47 -05:00
24617bf920
visualize-storage tool --- read GP2040-CE config
this also comes with a lot of project scaffolding for (IMO) a
well-organized python project. this should get the ball rolling for
other devs
2023-06-20 12:52:22 -05:00