PxMsgGetData_Hnd()

Get data area of a message (handler service).

APPLIES TO

8.2.0

SYNOPSIS
PxMsgData_t PxMsgGetData_Hnd (PxMsg_t msgid);
ARGUMENTS
msgid

Message object

ERROR CODES

PXERR_MSG_ILLMSG

msgid is not a valid message object

PXERR_MSG_ILLUSER

The calling task is not user of this message

PXERR_PROT_NOFREE_ENTRY

No free protection entry

PXERR_PROT_ILL_HANDLE

The associated protection handle is not valid

PXERR_REQUEST_INVALID_PARAMETER

Invalid pair parameter

PXERR_MSG_NOT_IMPLEMENTED

The function is called by a system interrupt handler

DESCRIPTION

PxMsgGetData_Hnd returns a C-pointer to the data area corresponding to message msgid. If an invalid message is given a null pointer is returned. PxMsgGetData_Hnd should only be used from handlers running in a task’s context.

IMPLEMENTATION GUIDELINES
Before call
  • msgid must be a valid message object, requested via PxMsgRequest…​ or PxMsgEnvelop…​ or received by a PxMsgReceive…​ call (V). This id may be checked with one of the following macros:

    • PxMsgIdIsValid() must be true.

    • PxMsgIdGet() must not be _PXIllegalObjId.

    • PxMsgIdError() must be PXERR_NOERROR otherwise the returned error code has to be interpreted (C).

After call
  • PxMsgGetData_Hnd returns a null pointer on failure (C).

Best Practice
  • This function should be called from handlers only. (V)

SEE ALSO
USAGE
#include "pxdef.h"

PxMsgData_t DataArea = PxMsgGetData_Hnd(msgid)

if (DataArea != NULL) {
    // Handle data
}
else {
    // Report error
}