xMessageBufferCreateStatic

message_buffer.h

    MessageBufferHandle_t xMessageBufferCreateStatic( size_t xBufferSizeBytes,
                                                      uint8_t *pucMessageBufferStorageArea,
                                                      StaticMessageBuffer_t *pxStaticMessageBuffer );

Creates a new message buffer using statically allocated memory. See xMessageBufferCreate() for a version that uses dynamically allocated memory.

Parameters

  xBufferSizeBytes

  The size, in bytes, of the buffer pointed to by the pucMessageBufferStorageArea parameter. When a message is written to the message buffer an additional sizeof( size_t ) bytes are also written to store the message's length. sizeof( size_t ) is typically 4 bytes on a 32-bit architecture, so on most 32-bit architecture a 10 byte message will take up 14 bytes of message buffer space. The maximum number of bytes that can be stored in the message buffer is actually (xBufferSizeBytes - 1).

  pucMessageBufferStorageArea | Must point to a uint8_t array that is at least xBufferSizeBytes + 1 big. This is the array to which messages are copied when they are written to the message buffer.
  pxStaticMessageBuffer | Must point to a variable of type StaticMessageBuffer_t, which will be used to hold the message buffer's data structure.

Returns
  If the message buffer is created successfully then a handle to the created message buffer is returned. If either pucMessageBufferStorageArea or pxStaticmessageBuffer are NULL then NULL is returned.

Example use:

    // Used to dimension the array used to hold the messages.  The available space
    // will actually be one less than this, so 999.
    #define STORAGE_SIZE_BYTES 1000

    // Defines the memory that will actually hold the messages within the message
    // buffer.
    static uint8_t ucStorageBuffer[ STORAGE_SIZE_BYTES ];

    // The variable used to hold the message buffer structure.
    StaticMessageBuffer_t xMessageBufferStruct;

    void MyFunction( void )
    {
    MessageBufferHandle_t xMessageBuffer;

        xMessageBuffer = xMessageBufferCreateStatic( sizeof( ucBufferStorage ),
                                                     ucBufferStorage,
                                                     &xMessageBufferStruct );

        // As neither the pucMessageBufferStorageArea or pxStaticMessageBuffer
        // parameters were NULL, xMessageBuffer will not be NULL, and can be used to
        // reference the created message buffer in other message buffer API calls.

        // Other code that uses the message buffer can go here.
    }