Skip to content

v0.0.20

Choose a tag to compare

@RAR RAR released this 20 Aug 14:23
· 7 commits to OpenEVSE9 since this release

Heap and robustness fixes for the RAPI layer, plus a wider $G0/state surface.

Heap

  • The RAPI command queue no longer fragments the heap (#6). queue.h::pop()
    copied the item out but never cleared the slot, so the ten-element static
    CommandItem array kept ten Strings and ten std::functions alive for the
    life of the process. Each new command allocated fresh and freed nothing, and
    the surviving allocations migrated steadily deeper into the heap.

    On an ESP32 running the OpenEVSE WiFi firmware, the largest contiguous block
    fell from ~51 KB to under 10 KB over 14 hours at roughly 1.3 commands/second.
    With this fix, the same unit held 36,852 bytes flat over 10 hours and 41,898
    commands
    .

  • Inline handler storage is now sized by pointer width (sizeof(void *) * 10)
    rather than a fixed byte count, so 64-bit host and native-test builds no
    longer trip the capacity static_assert.

Robustness

  • The async event handler is guarded against short frames.
  • Assorted audit follow-ups in RapiSender and OpenEVSEClass.

API

  • Additional state and flag accessors on OpenEVSEClass, including the $G0
    path — the reliable source for vehicle-connected state, as opposed to the
    cached EV_CONNECTED vflag.

Maintenance

  • Repository metadata corrected; CI actions bumped.

Full changelog: v0.0.19...v0.0.20