PxMsgSend_Hnd()
Send normal message (handler service).
- APPLIES TO
-
8.2.0
- SYNOPSIS
-
PxMsg_t PxMsgSend_Hnd (PxMsg_t msg, PxMbx_t mbx); - ARGUMENTS
|
|
|
- RETURN VALUES
-
-
Invalid message handle on success
-
Msgincluding PXROS error code on failure
-
- ERROR CODES
-
PXERR_MBX_ILLMBXThe mailbox handle is invalid
PXERR_MSG_ILLMSGThe message handle is invalid
PXERR_MSG_ILLUSERThe sending task is not user of the message
PXERR_PROT_ILL_HANDLEThe associated protection handle is not valid
PXERR_REQUEST_INVALID_PARAMETERRequest with invalid parameter
PXERR_TASK_ILLTASKThe task is not a valid task object
- DESCRIPTION
-
The
PxMsgSend_Hndfunction sends the messagemsginto the mailboxmbxid. The calling task must be the user ofmsg. The handler service requires thatmsghas a user. After the message is sent, it does not have a user (temporarily).
- IMPLEMENTATION GUIDELINES
-
- Before call
-
-
Msgmust be a valid message object, requested viaPxMsgRequest…orPxMsgEnvelop…or received by aPxMsgReceive…call (V). This id may be checked with one of the following macros:-
PxMsgIdIsValid()must be true. -
PxMsgIdGet()must not be_PXIllegalObjId. -
PxMsgIdError()must bePXERR_NOERRORotherwise the returned error code has to be interpreted (C).
-
-
The parameter
mbxidmust be a valid mailbox object id. This id may be-
the calling task’s own mailbox (V)
-
the return value of a
PxTaskGetMbx()call (V) -
the result of a
nameserverquery (V) -
part of a message sent by another task (V)
-
-
The mailbox may be checked with the macros
-
PxMbxIdIsValid()must be true. -
PxMbxIdGet()must not be_PXIllegalObjId. -
PxMbxIdError()must bePXERR_NOERRORotherwise the returned error code has to be interpreted (C).
-
-
or with a call of
PxMbxCheck()(C).
-
- After call
-
-
On success
PxMsgSend_Hndreturns the invalidated message object. This may be checked with one of the following macros:-
PxMsgIdIsValid()must be false. -
PxMsgIdGet()must be_PXIllegalObjId. -
PxMsgIdError()must bePXERR_NOERRORotherwise the returned error code has to be interpreted (C).
-
-
- Best Practice
-
-
This function should be called from handlers only. (V)
-
As handlers are not allowed to request PXROS-HR objects, the message to be sent has to be requested by a PXROS-HR task and then passed to the handler.
-
- SEE ALSO
- USAGE
-
#include "pxdef.h" PxMsg_t Msg = PxMsgSend_Hnd(msg, mbx); if ((PxMsgIdError(Msg) != PXERR_NOERROR) || PxMsgIdIsValid(Msg)) { // Report error }