/********************************************************************* * @fn GenericApp_ProcessRtosMessage * * @brief Receive message from RTOS queue, send response back. * * @param none * * @return none */ static void GenericApp_ProcessRtosMessage( void ) { osalQueue_t inMsg; if ( osal_queue_receive( OsalQueue, &inMsg, 0 ) == pdPASS ) { uint8 cmndId = inMsg.cmnd; uint32 counter = osal_build_uint32( inMsg.cbuf, 4 ); switch ( cmndId ) { case CMD_INCR: counter += 1; /* Increment the incoming counter */ /* Intentionally fall through next case */ case CMD_ECHO: { userQueue_t outMsg; outMsg.resp = RSP_CODE | cmndId; /* Response ID */ osal_buffer_uint32( outMsg.rbuf, counter ); /* Increment counter */ osal_queue_send( UserQueue1, &outMsg, 0 ); /* Send back to UserTask */ break; } default: break; /* Ignore unknown command */ } } }
int vam_add_event_queue(vam_envar_t *p_vam, uint16_t msg_id, uint16_t msg_len, uint32_t msg_argc, void *msg_argv) { int err = OSAL_STATUS_NOMEM; sys_msg_t *p_msg; p_msg = osal_malloc(sizeof(sys_msg_t)); if (p_msg) { p_msg->id = msg_id; p_msg->len = msg_len; p_msg->argc = msg_argc; p_msg->argv = msg_argv; err = osal_queue_send(p_vam->queue_vam, p_msg); } if (err != OSAL_STATUS_SUCCESS) { OSAL_MODULE_DBGPRT(MODULE_NAME, OSAL_DEBUG_WARN, "%s: failed=[%d], msg=%04x\n",\ __FUNCTION__, err, msg_id); osal_free(p_msg); } return err; }
int vam_add_event_queue_2(vam_envar_t *p_vam, void *p_msg) { int err; err = osal_queue_send(p_vam->queue_vam, p_msg); if (err != OSAL_STATUS_SUCCESS){ OSAL_MODULE_DBGPRT(MODULE_NAME, OSAL_DEBUG_WARN, "%s: failed=[%d], msg=%04x\n",\ __FUNCTION__, err, ((sys_msg_t *)p_msg)->id); } return err; }