static void Handle_TriggerTestA ( le_msg_MessageRef_t _msgRef ) { // Get the message buffer pointer __attribute__((unused)) uint8_t* _msgBufPtr = ((_Message_t*)le_msg_GetPayloadPtr(_msgRef))->buffer; // Unpack the input parameters from the message // Call the function TriggerTestA ( (ServerCmdRef_t)_msgRef ); }
void test2(void) { HandlerRef = AddTestAHandler(HandleTestA, &SomeData); LE_PRINT_VALUE("%p", HandlerRef); // Try removing the handler and registering again, to ensure that allocated data objects // have been released, i.e. the associated client and server pools should not increase. RemoveTestAHandler(HandlerRef); HandlerRef = AddTestAHandler(HandleTestA, &SomeData); LE_PRINT_VALUE("%p", HandlerRef); LE_DEBUG("Triggering TestA\n"); TriggerTestA(); // Need to allow the event loop to process the trigger. // The rest of the test will be continued in the handler. }
static void Handle_TriggerTestA ( le_msg_MessageRef_t _msgRef ) { // Get the message buffer pointer uint8_t* _msgBufPtr = ((_Message_t*)le_msg_GetPayloadPtr(_msgRef))->buffer; // Needed if we are returning a result or output values uint8_t* _msgBufStartPtr = _msgBufPtr; // Unpack the input parameters from the message // Define storage for output parameters // Call the function TriggerTestA ( ); // Re-use the message buffer for the response _msgBufPtr = _msgBufStartPtr; // Pack any "out" parameters // Return the response LE_DEBUG("Sending response to client session %p : %ti bytes sent", le_msg_GetSession(_msgRef), _msgBufPtr-_msgBufStartPtr); le_msg_Respond(_msgRef); }