Releases: bxparks/AceUtils
Releases · bxparks/AceUtils
0.6 - buffered_eeprom_stm32; crc_eeprom; cli library
- 0.6.0 (2023-03-04)
AceUtils/buffered_eeprom_stm32- Rename
AceUtilsStm32BufferedEeprom.hto
buffered_eeprom_stm32/buffered_eeprom_stm32.h
- Rename
AceUtils/crc_eepromCrcEeprom: Recommend using a 32-bit random number for the
contextIdinstead of usingtoContextId()helper function.- Rename
IEepromAdaptertoEepromInterface;EspEepromAdapterto
EspStyleEeprom;AvrEepromAdaptertoAvrStyleEeprom. - Rename
EpoxyPromAvrtoEpoxyEepromAvr;EpoxyPromEspto
EpoxyEepromEsp; tracks the changes in EpoxyDuino library. - Convert
CrcEeprominto a template class, templatized on
EspStyleEepromandAvrStyleEeprom. Seems to save between 150-950
bytes of flash memory by avoiding virtual function calls and class
hierarchies.
AceUtils/freemem- Move
freeMemory()function fromexamples/CommandLineShell.ino
intofreemem/freemem.hso that it can be used elsewhere. - Add support for STM32, and clean up header imports.
- Move
AceUtils/cli- Move
AceUtilsCli.htocli/cli.h. - Split
CommandDispatcherfromChannelDispatcherso that it can be
used without using an AceRoutineChannel. - Rename
CommandManagertoChannelProcessorManager. - Rename
ChannelDispatchertoChannelProcessorCoroutine. - Rename
StreamLineReadertoStreamReaderCoroutine. - Add
StreamProcessorCoroutineandStreamProcessorManager. - Add
DirectProcessorandDirectProcessorManager. - Split
examples/CommandLineShell.inointo 3 versions:ChannelCommandLineShellStreamCommandLineShellDirectCommandLineShell
- Move
AceUtils/mode_group- Add
ModeRecordto keep the modeId and itsModeGroup*pointer
together in a single data structure. - Add some notes to mode_group/README.md
because I had a hard time understanding my own code. - Deprecated: This code is deprecated before it is released. See
notes at the top of src/mode_group. I'll
keep it around for historical reference.
- Add
v0.5 - add contextId to CrcEeprom, create IEepromAdapter, add BufferedEEPROM for STM32
- 0.5.0 (2021-03-08)
- Add unit tests for
CrcEepromusingEpoxyPromAvrandEpoxyPromEsp
libraries from EpoxyDuino. - Change default CRC32 calculator to
crc32_nibblemfor the ESP8266
only, since it is 2.7X faster thancrc32_nibbleon the ESP8266 platform. - Add an optional
contextIdtoCrcEeprom()constructor. This is an
application-provided identifier that is stored into EEPROM along with the
data and its CRC. When the data is read byCrcEeprom::readWithCrc(), the
contextIdmust match. This prevents data from a different application
that happen to have the same length from being marked as valid. - Add
CrcEeprom::toContextId()helper to generate thecontextId. - Add
CrcEeprom::toSavedSize()to calculate the minimum size to pass to
CrcEeprom::begin(). - Add
BufferedEEPROMglobal object for STM32 which implements the
ESP-flavored API, and uses the "buffered" versions of the low-level EEPROM
functions.- Accessed through
#include <AceUtilsStm32BufferedEeprom.h>. - The default
EEPROMis unbuffered, which means everyEEPROM.write()
operation causes the entire flash page to be wiped and rewritten.
- Accessed through
- Add
EspEepromAdapterandAvrEepromAdaptertemplate classes,
implementingIEepromAdapterinterface. These smooth over the API
differences between the AVR-flavored EEPROM API and the ESP-flavored
EEPROM API and allow theCrcEepromclass to support both API flavors. - Breaking Change: The constructor of
CrcEepromnow accepts an
instance ofIEepromAdapter, instead of using the globalEEPROM
object directly.- Creating the
BufferedEEPROMobject for the STM32 meant that there
can be 2EEPROMobjects active concurrently. So theCrcEeprom
needs to be told which one to use. - Add
contextIdto theCrcEepromconstructor, defaulting to 0x00.
- Creating the
- Breaking Change: Rename
CrcEeprom::writeWithCrc()and
readWithCrc()towriteDataWithCrc()andreadDataWithCrc().- Replace them with signatures which are easier to use:
writeWithCrc(size_t address, const T& data)readWithCrc(size_t address, T& data).
- The compiler compiler automatically figures out the
sizeof(T)then
calls the underlyingwriteDataWithCrc()andreadDataWithCrc().
- Replace them with signatures which are easier to use:
- Add unit tests for
v0.4.1 - Update UnixHostDuino 0.4 to EpoxyDuino 0.5
- 0.4.1 (2021-01-22)
- Convert
SHIFT_ARGC_ARGV()macro insrc/cli/CommandHandler.hto
an inlined static functionCommandHandler::shiftArgcArgv()using
references. I forgot that I was programming in C++ when I created the
macro. AddSHIFT_ARGC_ARGV()function for backwards compatibility. - Update UnixHostDuino 0.4 to EpoxyDuino 0.5.
- No functional change in this release.
- Convert
v0.4 - replace FastCRC, add ModeGroup, rename CommandLineInterface to AceUtilsCli
* update `AceUtilsCrcEeprom.h`
* Replace FastCRC with AceCRC library for a reduction of 4-5 kB of flash
memory. Allow alternate CRC calculators to be passed in as a
constructor argument to `CrcEeprom()`.
* Rename `CrcEeprom.h` to `AceUtilsCrcEeprom.h`, and move namespace to
`ace_utils::crc_eeprom`::CrcEeprom`.
* create `AceUtilsModeGroup.h`
* `ace_utils::mode_group::ModeGroup`
* `ace_utils::mode_group::GroupNavigator`
* a data-driven mechanism to encode and navigate the hierarchy of view
and change modes of the display of a clock controlled by 2 buttons.
* rename `CommandLineInterface.h` to `AceUtilsCli.h`
* move `cli/*` classes into `ace_utils::cli::` namespace
v0.3 - move self-contained code to AceCommon; move CrcEeprom and CommandLineInterface into here
- 0.3 (2020-11-01)
- Move
CrcEepromclass from AceTime library. - Move
CommandLineInterfacepackage from AceRoutine library. - Move all previous utlities (with no external dependencies) into the
AceCommon library.
- Move
0.2.1 - fix typos, minor formatting tweaks
- 0.2.1 (2020-09-17)
- Formatting tweaks and rewording in preparation for Library Manager
publication.
- Formatting tweaks and rewording in preparation for Library Manager
0.2 - add timing_stats, print_utils, benchmarks for url_encoding, rename PrintString to PrintStr
- v0.2 (2020-09-14)
- Add
timing_statsutility withTimingStatsclass. - Add
print_utilsutility withprintfTo()andprintPad{N}To()
functions. - Add
PrintStrNclass which allocates buffer on heap. - Rename
PrintStringtoPrintStrto avoid name conflict with an
existingPrintStringlibrary that does something similar. - Add
examples/url_encoding/AutoBenchmarkprogram to determine speed
offormUrlEncode()andformUrlDecode()functions, compared to the
original code. Determine that new code is 5-6X faster, which eliminates
need to callyield()on each iteration.
- Add
0.1 - print_string and url_encoding
- v0.1 (2020-08-27)
- Add
print_stringlibrary. - Add
url_encodinglibrary.
- Add