Error Handler



Runtime errors in the RXF or RTOS extentions are handled by the error handler RiCErrorHandler_error(), which is implemented as an endles loop. The C code is available in the source file RiCErrorHandler.c in the directory <your Rhapsody>\Share\WST_RXF_V5\<your product>\Source. You may change it according your needs.

The function RiCErrorHandler_error() uses enumerated constants, defined in RiCErrorHandler.h which are described below. When debugging, tracing the call stack will help you understand what went wrong:


OXF_INFINITE_NULL_TRANS The function RiCReactive_consumeEvent() has detected an infinit loop when executing your UML model.
Please read the section on "Null Transitions" in the Rhapsody in C User Guide by IBM Rational.
The constant OMDEFAULT_MAX_NULL_STEPS which defines the maximum is set in RiCReactive.c, its default value is 100.
OXF_TASK_CREATE_FAILED The function RiCOSTask_create() is passed a NULL pointer, or
the Framework is not capable of creating a new task, caused by either:
  • not enough dynamic memory. The RiCOSTask structure or the task stack needed  is allocated dynamically.
  • the RTOS has not enough resources, please verify your RTOS resource configuration 
OXF_TASK_INIT_FAILED
OXF_TASK_WAIT_FAILED The function RiCOSTask_resume() is passed a NULL pointer or the
OXF_TASK_START_FAILED The function RiCOSTask_suspend() is passed a NULL pointer or the task was started already
OXF_TASK_WAKE_FAILED The function RiCOSTask_resume() is passed a NULL pointer or the task was not started already
OXF_TASK_NAME_FAILED
OXF_TASK_PRIORITY_FAILED The function RiCOSTask_setPriority() is passed a NULL pointer
OXF_TASK_DELETE_FAILED The function RiCOSTask_destroy() is passed a NULL pointer
OXF_TASK_CLEANUP_FAILED The function RiCOSTask_cleanup() is passed a NULL pointer
OXF_TASK_SETSTACK_FAILED
OXF_TIMER_CREATE_FAILED The function RiCOSTimer_create() fails to allocate memory for the RiCOSTimer structure.
OXF_TIMER_START_FAILED The function RiCOSTask_start() was passed a NULL pointer, or the task was already started
OXF_TIMER_DELETE_FAILED
OXF_TIMER_DESTROY_FAILED
OXF_MBOX_FAILED
OXF_MBOX_SEND_FAILED
OXF_MBOX_WAIT_FAILED
OXF_MBOX_PEND_FAILED
OXF_EVENT_FAILED
OXF_SOCKET_FAILED
OXF_INTR_INIT_FAILED
OXF_RTOS_ERROR The function RiCOSTask_getOSHandle() was passed a NULL pointer
OXF_BRIDGE_TIMER_FAILED
OXF_BRIDGE_CREATE_FAILED
OXF_BRIDGE_START_FAILED
OXF_SEMA_CREATE_FAILED The function RiCOSSemaphore_create() fails to allocate a RiCOSSemaphore structure
OXF_SEMA_INIT_FAILED The function RiCOSSemaphore_init() was passed a NULL pointer
OXF_SEMA_DESTROY_FAILED The function RiCOSSemaphore_destroy() was passed a NULL pointer
OXF_SEMA_CLEANUP_FAILED The function RiCOSSemaphore_cleanup() was passed a NULL pointer
OXF_SEMA_SIGNAL_FAILED The function RiCOSSemaphore_signal() was passed a NULL pointer
OXF_SEMA_WAIT_FAILED The function RiCOSSemaphore_wait(0 was passed a NULL pointer or the RTOS returned a failure
OXF_MUTEX_CREATE_FAILED The function RiCOSMutex_create() fails to allocate a RiCOSMutex structure.
OXF_MUTEX_INIT_FAILED The function RiCOSMutex_init() is passed a NULL pointer or the RTOS adapter can not create a RiCOSMutex object.
OXF_MUTEX_DESTROY_FAILED The function RiCOSMutex_destroy() is passed a NULL pointer.
OXF_MUTEX_LOCK_FAILED The function RiCOSMutex_lock() is passed a NULL pointer
OXF_MUTEX_CLEANUP_FAILED The function RiCOSMutex_cleanup() is passed a NULL pointer
OXF_MUTEX_FREE_FAILED The function RiCOSMutex_free() is passed a NULL pointer
OXF_INVALID_MUTEX_ID
OXF_EVFLAG_CREATE_FAILED The function RiCOSEventFlag_create() fails to allocate a RiCOSEventFlag structure.
OXF_EVFLAG_INIT_FAILED The function RiCOSEventFlag_init() is passed a NULL pointer or the RTOS adapter can not create a RiCOSEventFlag object.
OXF_EVFLAG_DESTROY_FAILED The function RiCOSEventFlag_destroy() is passed a NULL pointer.
OXF_EVFLAG_CLEANUP_FAILED
OXF_EVFLAG_RESET_FAILED The function RiCOSEventFlag_reset() is passed a NULL pointer
OXF_EVFLAG_WAIT_FAILED The function RiCOSEventFlag_wait() is either passed a NULL pointer or teh RTOS returns a failure.
OXF_EVFLAG_SIGNAL_FAILED The function RiCOSEventFlag_signal() is passed a NULL pointer
OXF_MSGQ_CREATE_FAILED The function RiCOSMessageQueue_create() was passed a NULL pointer
OXF_MSGQ_DESTROY_FAILED The function RiCOSMessageQueue_destroy() was passed a NULL pointer
OXF_MSGQ_INIT_FAILED The function RiCOSMessageQueue_init() is passed a NULL pointer or fails to allocate a RicOSMessageQueue structure
OXF_MSGQ_GET_FAILED The function RiCOSMessageQueue_get() was passed a NULL pointer
OXF_MSGQ_PUT_FAILED The function RiCOSMessageQueue_put() was passed a NULL pointer or the RTOS returned a failure
OXF_MSGQ_FULL_FAILED The function RiCOSMessageQueue_isFull() was passed a NULL pointer
OXF_MSGQ_PEND_FAILED The function RiCOSMessageQueue_pend() was passed a NULL pointer
OXF_MSGQ_EMPTY_FAILED
OXF_MSGQ_LIST_FAILED The function RiCOSMessageQueue_getMessageList() was passed a NULL pointer
OXF_MSGQ_CLEANUP_FAILED The function RiCOSMessageQueue_cleanup() was passed a NULL pointer
OXF_EMPTY_ME_PTR The me pointer is NULL; this is considered an internal error
OXF_ALLOC_FAILED The function RiCMemoryAllocator_getMemory() or RiCOSMemoryAllocation_malloc() or RiCOSMemoryAllocation_realloc()  fails to allocate memory.
Please also look at the constant NO_MALLOC.
OXF_NOT_IMPLEMENTED A function calloc() which is protected against task switches, see RiCOSMemoryAllocation_calloc() in RiCOSDimMemoryAllocation.c is not implemented.
OXF_VERSION_ERROR Reserved for future use. We are working on a runtime check on different options set for library and the rest 





Copyright (c) Willert Software Tools GmbH. All rights reserved.