 // as assumed supplied by security layer to remote recipent.
 static void bareStatsTX()
 {
-    // Capture heavy stack usage from local allocations here.
-    OTV0P2BASE::MemoryChecks::recordIfMinSP();
-
     // Note if radio/comms channel is itself framed.
     const bool neededWaking = OTV0P2BASE::powerUpSerialIfDisabled<>();
 


        // Buffer to write JSON to before encryption.
        // Size for JSON in 'O' frame is:
        const uint8_t maxSecureJSONSize = OTRadioLink::ENC_BODY_SMALL_FIXED_PTEXT_MAX_SIZE - 2 + 1;
        // writeJSON() requires two further bytes including one for the trailing '\0'.
        uint8_t ptextBuf[maxSecureJSONSize + 2];

        // Redirect JSON output appropriately.
        uint8_t *const bufJSON = ptextBuf;
        const uint8_t bufJSONlen = sizeof(ptextBuf);

        // Number of bytes written for body.
        // For non-secure, this is the size of the JSON text.

// MAIN LOOP
//========================================

inline void stackCheck()
{
    // Force restart if SPAM/heap/stack likely corrupt.
    // Complain and keep complaining when getting near stack overflow.
    // TODO: make DEBUG-only when confident all configs OK.
    const int16_t minsp = OTV0P2BASE::MemoryChecks::getMinSPSpaceBelowStackToEnd();
    const uint8_t location = OTV0P2BASE::MemoryChecks::getLocation();
    OTV0P2BASE::serialPrintAndFlush(F("minsp: "));
    OTV0P2BASE::serialPrintAndFlush(minsp, HEX);
    OTV0P2BASE::serialPrintAndFlush(F(" loc:"));
    OTV0P2BASE::serialPrintAndFlush(location);
    OTV0P2BASE::serialPrintlnAndFlush();

    OTV0P2BASE::MemoryChecks::forceResetIfStackOverflow();

    OTV0P2BASE::MemoryChecks::resetMinSP();
}

void loop()
{
    stackCheck();

        // Sensor readings are taken late in each minute (where they are taken)
    // and if possible noise and heat and light should be minimised in this part of each minute to improve readings.
