Skip to content

demo_buffer

Buffer allocation and usage

This demo shows how to use dtbuffer to allocate space on the heap and refer to its intrinsic length.

You also get to see how a log line is emitted using dtlog.

The output you'd expect to see when running this demo is:

[INFO ] dtcore_demo_buffer: buffered payload is: I'm in the dtcore buffer!  My total size is 128 bytes.

The demo_basics app runs this demo automatically.

Related modules: dtbuffer, dtlog

Source

#include <stdio.h>

#include <dtcore/dtbuffer.h>
#include <dtcore/dtlog.h>

#define TAG "dtcore_demo_buffer"

// ------------------------------------------------------------------------
void
dtcore_demo_buffer(void)
{
    dterr_t* dterr = NULL;
    dtbuffer_t* buffer = NULL;

    // allocate a buffer of 128 bytes
    DTERR_C(dtbuffer_create(&buffer, 128));

    // fill the buffer with some data
    snprintf(buffer->payload, buffer->length, "I'm in the dtcore buffer!  My total size is %" PRId32 " bytes.", buffer->length);

    dtlog_info(TAG, "buffered payload is: %s", (char*)buffer->payload);

cleanup:
    // free the buffer
    dtbuffer_dispose(buffer);

    if (dterr != NULL)
    {
        dtlog_dterr(TAG, dterr);
        dterr->dispose(dterr);
        dterr = NULL;
    }
}