/*=======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1====*/ /** \page os2Migration Migration from API v1 to API v2 To use the API version 2 functions follow the steps described in: - \subpage os2MigrationGuide - Steps to migrate from API version 1 to API version 2 - \subpage os2MigrationFunctions - List of function differences \if NEVER_ENABLE =======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1==== Functions \endif \page os2MigrationFunctions Detailed API Function Differences This section lists the CMSIS-RTOS API v1 and API v2 functions along with the differences in functionality. The list is sorted alphabetically by API v2 function names and is structured the following way: - RTOS API v2 function prototype - RTOS API v1 function prototype that is equivalent or provides similar functionality - Brief description of the RTOS v2 function. - Description of the difference. The background color indicates: -
Green: New functions in API v2 that are not available in API v1
-
Amber: Functions that are modified or replaced in API v2 compared to API v1
-
Red: Functions in API v1 that are deprecated in API v2
\if NEVER_ENABLE =======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1==== Kernel Information and Control \endif \section mig_kernel Kernel Information and Control \div{new} \func{osStatus_t #osKernelGetInfo (osVersion_t* version, char* id_buf, uint32_t id_size)} \none \copybrief{osKernelGetInfo} New function #osKernelGetInfo. \enddiv \div{mod} \func{osKernelState_t #osKernelGetState (void)} \func{int32_t         osKernelRunning (void)} \copybrief{osKernelGetState} - The function \b osKernelGetState replaces the RTOS v1 function \b osKernelRunning. - Return type changed to \ref osKernelState_t. \enddiv \div{new} \func{uint32_t #osKernelGetTickCount (void)} \none \copybrief{osKernelGetTickCount} New function. \enddiv \div{new} \func{uint32_t #osKernelGetTickFreq (void)} \none \copybrief{osKernelGetTickFreq} - The function \b osKernelGetTickFreq replaces the RTOS v1 macro \b osKernelTickMicroSec. \enddiv \div{mod} \func{uint32_t #osKernelGetSysTimerCount (void)} \func{uint32_t osKernelSysTick (void)} \copybrief{osKernelGetSysTimerCount} - The function \b osKernelGetSysTimerCount replaces the RTOS v1 function \b osKernelSysTick. \enddiv \div{new} \func{uint64_t #osKernelGetSysTimerFreq (void)} \none \copybrief{osKernelGetSysTimerFreq} New function. \enddiv \div{mod} \func{osStatus_t #osKernelInitialize (void)} \func{osStatus   osKernelInitialize (void)} \copybrief{osKernelInitialize} - Return type changed to \ref osStatus_t. \enddiv \div{new} \func{int32_t #osKernelLock (void)} \none \copybrief{osKernelLock} New function. \enddiv \div{new} \func{int32_t #osKernelUnlock (void)} \none \copybrief{osKernelUnlock} New function. \enddiv \div{new} \func{void #osKernelRestoreLock (void)} \none \copybrief{osKernelRestoreLock} New function. \enddiv \div{mod} \func{osStatus_t #osKernelStart (void)} \func{osStatus   osKernelStart (void)} \copybrief{osKernelStart} - Return type changed to \ref osStatus_t. \enddiv \div{new} \func{uint32_t #osKernelSuspend (void)} \none \copybrief{osKernelSuspend} New function. \enddiv \div{new} \func{void #osKernelResume (uint32_t sleep_time)} \none \copybrief{osKernelResume} New function. \enddiv \if NEVER_ENABLE =======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1==== ====== Thread Management ======= \endif \section mig_threadMgmt Thread Management \div{new} \func{osStatus_t #osThreadDetach (osThreadId_t thread_id)} \none \copybrief{osThreadDetach} New function. \enddiv \div{new} \func{uint32_t #osThreadEnumerate (osThreadId_t *thread_array, uint32_t array_items)} \none \copybrief{osThreadEnumerate} New function. \enddiv \div{new} \func{__NO_RETURN void #osThreadExit (void)} \none \copybrief{osThreadExit} New function. \enddiv \div{new} \func{uint32_t #osThreadGetCount (osThreadId_t thread_id)} \none \copybrief{osThreadGetCount} New function. \enddiv \div{new} \func{const char *#osThreadGetName (osThreadId_t thread_id)} \none \copybrief{osThreadGetName} New function. \enddiv \div{mod} \func{osThreadId_t #osThreadGetId (void)} \func{osThreadId   osThreadGetId (void)} \copybrief{osThreadGetId} - Return type changed to #osThreadId_t. \enddiv \div{mod} \func{osPriority_t #osThreadGetPriority (osThreadId_t thread_id)} \func{osPriority   osThreadGetPriority (osThreadId thread_id)} \copybrief{osThreadGetPriority} - Return type changed to #osPriority_t. - Parameter type changed to #osThreadId_t. \enddiv \div{new} \func{uint32_t #osThreadGetStackSize (osThreadId_t thread_id)} \none \copybrief{osThreadGetStackSize} New function. \enddiv \div{new} \func{uint32_t #osThreadGetStackSpace (osThreadId_t thread_id)} \none \copybrief{osThreadGetStackSpace} New function. \enddiv \div{new} \func{osThreadState_t #osThreadGetState (osThreadId_t thread_id)} \none \copybrief{osThreadGetState} New function. \enddiv \div{new} \func{osStatus_t #osThreadJoin (osThreadId_t thread_id)} \none \copybrief{osThreadJoin} New function. \enddiv \div{mod} \func{osThreadId_t #osThreadNew (osThreadFunc_t function, void *argument, const osThreadAttr_t *attr)} \func{osThreadId   osThreadCreate (const osThreadDef_t *thread_def, void *argument)} \copybrief{osThreadNew} - The function \b osThreadNew replaces the RTOS v1 function \b osThreadCreate. - Options are now passed using a \ref osThreadAttr_t struct, replacing the \b osThreadDef macro. - New function prototype is void func (void *arg), before: void func (const void *arg). \enddiv \div{new} \func{osStatus_t #osThreadResume (osThreadId_t thread_id)} \none \copybrief{osThreadResume} New function. \enddiv \div{mod} \func{osStatus_t #osThreadSetPriority (osThreadId_t thread_id, osPriority_t priority)} \func{osStatus   osThreadSetPriority (osThreadId thread_id, osPriority priority)} \copybrief{osThreadSetPriority} - Return type changed to #osStatus_t. - Parameter types changed to #osThreadId_t and #osPriority_t. \enddiv \div{new} \func{osStatus_t #osThreadSuspend (osThreadId_t thread_id)} \none \copybrief{osThreadSuspend} New function. \enddiv \div{mod} \func{osStatus_t #osThreadTerminate (osThreadId_t thread_id)} \func{osStatus   osThreadTerminate (osThreadId thread_id)} \copybrief{osThreadTerminate} - Return type changed to #osStatus_t. - Parameter type changed to #osThreadId_t. \enddiv \div{mod} \func{osStatus_t #osThreadYield (void)} \func{osStatus   osThreadYield (void)} \copybrief{osThreadYield} - Return type changed to #osStatus_t. \enddiv \if NEVER_ENABLE =======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1==== ====== Thread Flags ======= \endif \section mig_threadFlags Thread Flags \details New section to synchronize threads using flags. Thread flags and the more flexible \ref mig_eventFlags are replacing the RTOS v1 Signal Events. Refer to \ref mig_signalEvents for a list of deprecated functions. Refer to \ref CMSIS_RTOS_ThreadFlagsMgmt for details. \div{new} \func{uint32_t #osThreadFlagsSet (osThreadId_t thread_id, uint32_t flags)} \none \copybrief{osThreadFlagsSet} New function. \enddiv \div{new} \func{uint32_t #osThreadFlagsClear (uint32_t flags)} \none \copybrief{osThreadFlagsClear} New function. \enddiv \div{new} \func{uint32_t #osThreadFlagsGet (void)} \none \copybrief{osThreadFlagsGet} New function. \enddiv \div{new} \func{uint32_t #osThreadFlagsWait (uint32_t flags, uint32_t options, uint32_t timeout)} \none \copybrief{osThreadFlagsWait} New function. \enddiv \if NEVER_ENABLE =======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1==== ====== Event Flags ======= \endif \section mig_eventFlags Event Flags \details New section to synchronize events using flags. Event flags and thread flags are replacing the RTOS v1 Signal Events. All functions listed in the RTOS v1 Signal Events have been deprecated. Refer to \ref mig_signalEvents for a list of deprecated functions. Refer to \ref CMSIS_RTOS_EventFlags for details about the new function. \div{new} \func{uint32_t #osEventFlagsClear (osEventFlagsId_t ef_id, uint32_t flags)} \none \copybrief{osEventFlagsClear} New function. \enddiv \div{new} \func{const char *#osEventFlagsGetName (osEventFlagsId_t ef_id)} \none \copybrief{osEventFlagsGetName} New function. \enddiv \div{new} \func{osStatus_t #osEventFlagsDelete (osEventFlagsId_t ef_id)} \none \copybrief{osEventFlagsDelete} New function. \enddiv \div{new} \func{uint32_t #osEventFlagsGet (osEventFlagsId_t ef_id)} \none \copybrief{osEventFlagsGet} New function. \enddiv \div{new} \func{osEventFlagsId_t #osEventFlagsNew (const osEventFlagsAttr_t *attr)} \none \copybrief{osEventFlagsNew} New function. \enddiv \div{new} \func{uint32_t #osEventFlagsSet (osEventFlagsId_t ef_id, uint32_t flags)} \none \copybrief{osEventFlagsSet} New function. \enddiv \div{new} \func{uint32_t #osEventFlagsWait (osEventFlagsId_t ef_id, uint32_t flags, uint32_t options, uint32_t timeout)} \none \copybrief{osEventFlagsWait} New function. \enddiv \if NEVER_ENABLE =======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1==== ====== Generic Wait Functions ======= \endif \section mig_wait Generic Wait Functions \details Refer to \ref CMSIS_RTOS_Wait for details. \div{mod} \func{osStatus_t #osDelay (uint32_t ticks)} \func{osStatus   osDelay (uint32_t timeout)} \copybrief{osDelay} - The return type changed to #osStatus_t. \enddiv \div{new} \func{osStatus_t #osDelayUntil (uint32_t ticks)} \none \copybrief{osDelayUntil} New function. \enddiv \div{del} \none \func{osEvent osWait (uint32_t millisec)} \n Deprecated. \enddiv \if NEVER_ENABLE =======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1==== ====== Timer Management ======= \endif \section mig_timer Timer Management \details Refer to \ref CMSIS_RTOS_TimerMgmt for details. \div{mod} \func{osStatus_t #osTimerDelete (osTimerId_t timer_id)} \func{osStatus   osTimerDelete (osTimerId timer_id)} \copybrief{osTimerDelete} - The return type changed to #osStatus_t. - The parameter type has changed to #osTimerId_t. \enddiv \div{new} \func{const char *#osTimerGetName (osTimerId_t timer_id)} \none \copybrief{osTimerGetName} New function. \enddiv \div{new} \func{uint32_t #osTimerIsRunning (osTimerId_t timer_id)} \none \copybrief{osTimerIsRunning} New function. \enddiv \div{mod} \func{osTimerId_t #osTimerNew (osTimerFunc_t func, osTimerType_t type, void *argument, const osTimerAttr_t *attr)} \func{osTimerId   osTimerCreate (const osTimerDef_t *timer_def, os_timer_type type, void *argument)} \copybrief{osTimerNew} - The function \b osTimerNew replaces the RTOS v1 function \b osTimerCreate. - The return type changed to #osTimerId_t. - The parameter list and types have changed. \enddiv \div{mod} \func{osStatus_t #osTimerStart (osTimerId_t timer_id, uint32_t ticks)} \func{osStatus   osTimerStart (osTimerId timer_id, uint32_t timeout)} \copybrief{osTimerStart} - The return type changed to #osStatus_t. - The first parameter type has changed to #osTimerId_t. \enddiv \div{mod} \func{osStatus_t #osTimerStop (osTimerId_t timer_id)} \func{osStatus   osTimerStop (osTimerId timer_id)} \copybrief{osTimerStop} - The return type changed to #osStatus_t. - The parameter type has changed to #osTimerId_t. \enddiv \if NEVER_ENABLE =======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1==== ====== Mutexes ======= \endif \section mig_mutex Mutexes Refer to \ref CMSIS_RTOS_MutexMgmt for details. \div{mod} \func{osStatus_t #osMutexAcquire (osMutexId_t mutex_id, uint32_t timeout)} \func{osStatus   osMutexWait (osMutexId mutex_id, uint32_t timeout)} \copybrief{osMutexAcquire} - The function \b osMutexAcquire replaces the RTOS v1 function \b osMutexWait. - Return type changed to \ref osStatus_t. - First parameter type changed to \ref osMutexId_t. \enddiv \div{mod} \func{osStatus_t #osMutexDelete (osMutexId_t mutex_id)} \func{osStatus   osMutexDelete (osMutexId mutex_id)} \copybrief{osMutexDelete} - The return type changed to \ref osStatus_t. - The parameter type changed to \ref osMutexId_t. \enddiv \div{new} \func{const char *#osMutexGetName (osMutexId_t mutex_id)} \none \copybrief{osMutexGetName} New function. \enddiv \div{new} \func{osThreadId_t #osMutexGetOwner (osMutexId_t mutex_id)} \none \copybrief{osMutexGetOwner} New function. \enddiv \div{mod} \func{osMutexId_t #osMutexNew (const osMutexAttr_t *attr)} \func{osMutexId   osMutexCreate (const osMutexDef_t *mutex_def)} \copybrief{osMutexNew} - The function \b osMutexNew replaces the RTOS v1 function \b osMutexCreate. - The return type changed to \ref osMutexId_t. - The parameter type changed to \ref osMutexAttr_t. \enddiv \div{mod} \func{osStatus_t #osMutexRelease (osMutexId_t mutex_id)} \func{osStatus   osMutexRelease (osMutexId mutex_id)} \copybrief{osMutexRelease} - The return type changed to \ref osStatus_t. - The parameter type changed to \ref osMutexId_t. \enddiv \if NEVER_ENABLE =======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1==== ====== SEMAPHORES ======= \endif \section mig_sem Semaphores Refer to \ref CMSIS_RTOS_SemaphoreMgmt for details. \div{new} \func{osStatus_t #osSemaphoreAcquire (osSemaphoreId_t semaphore_id, uint32_t timeout)} \none \copybrief{osSemaphoreAcquire} New function. Replaces \c osSemaphoreWait. \enddiv \div{mod} \func{osStatus_t #osSemaphoreDelete (osSemaphoreId_t semaphore_id)} \func{osStatus   osSemaphoreDelete (osSemaphoreId semaphore_id)} \copybrief{osSemaphoreDelete} - The return type changed to #osStatus_t. - The parameter type has changed to #osSemaphoreId_t. \enddiv \div{new} \func{uint32_t #osSemaphoreGetCount (osSemaphoreId_t semaphore_id)} \none \copybrief{osSemaphoreGetCount} New function. \enddiv \div{new} \func{const char *#osSemaphoreGetName (osSemaphoreId_t semaphore_id)} \none \copybrief{osSemaphoreGetName} New function. \enddiv \div{mod} \func{osSemaphoreId_t #osSemaphoreNew (uint32_t max_count, uint32_t initial_count, const osSemaphoreAttr_t *attr)} \func{osSemaphoreId   osSemaphoreCreate (const osSemaphoreDef_t *semaphore_def, int32_t count)} \copybrief{osSemaphoreNew} - The function \b osSemaphoreNew replaces the RTOS v1 function \b osSemaphoreCreate. - The return type changed to #osSemaphoreId_t. - The parameter list and types have changed. \enddiv \div{mod} \func{osStatus_t #osSemaphoreRelease (osSemaphoreId_t semaphore_id)} \func{osStatus   osSemaphoreRelease (osSemaphoreId semaphore_id)} \copybrief{osSemaphoreRelease} - The return type changed to #osStatus_t. - The parameter type has changed to #osSemaphoreId_t. \enddiv \div{del} \none \func{int32_t osSemaphoreWait (osSemaphoreId semaphore_id, uint32_t timeout)} \n Deprecated. Replaced by #osSemaphoreAcquire. \enddiv \if NEVER_ENABLE =======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1==== ====== Memory Pool ======= \endif \section mig_memPool Memory Pool \div{mod} \func{void * #osMemoryPoolAlloc (osMemoryPoolId_t mp_id, uint32_t timeout)} \func{void * osPoolAlloc  (osPoolId pool_id)} \copybrief{osMemoryPoolAlloc} - The function \b osMemoryPoolAlloc replaces both RTOS v1 functions \b osPoolAlloc. - The parameter list and types changed. \enddiv \div{new} \func{osStatus_t #osMemoryPoolDelete (osMemoryPoolId_t mp_id)} \none \copybrief{osMemoryPoolDelete} New function. \enddiv \div{mod} \func{osStatus_t #osMemoryPoolFree (osMemoryPoolId_t mp_id, void * block)} \func{osStatus   osPoolFree (osPoolId pool_id, void * block)} \copybrief{osMemoryPoolFree} - The function \b osMemoryPoolFree replaces the RTOS v1 function \b osPoolFree. - The first parameter type \b osMemoryPoolId_t replaces the ROTS v1 type \b osPoolId. \enddiv \div{new} \func{uint32_t #osMemoryPoolGetBlockSize (osMemoryPoolId_t mp_id)} \none \copybrief{osMemoryPoolGetBlockSize} New function. \enddiv \div{new} \func{uint32_t #osMemoryPoolGetCapacity (osMemoryPoolId_t mp_id)} \none \copybrief{osMemoryPoolGetCapacity} New function. \enddiv \div{new} \func{uint32_t #osMemoryPoolGetCount (osMemoryPoolId_t mp_id)} \none \copybrief{osMemoryPoolGetCount} New function. \enddiv \div{new} \func{const char *#osMemoryPoolGetName (osMemoryPoolId_t mp_id)} \none \copybrief{osMemoryPoolGetName} New function. \enddiv \div{new} \func{uint32_t #osMemoryPoolGetSpace (osMemoryPoolId_t mp_id)} \none \copybrief{osMemoryPoolGetSpace} New function. \enddiv \div{mod} \func{osMemoryPoolId_t #osMemoryPoolNew (uint32_t block_count, uint32_t block_size, const osMemoryPoolAttr_t *attr)} \func{osPoolId         osPoolCreate (const osPoolDef_t * pool_def)} \copybrief{osMemoryPoolGetSpace} - The function \b osMemoryPoolNew replaces the RTOS v1 function \b osPoolCreate. - The return type changed to #osMemoryPoolId_t. - Parameter list and parameter types have changed. \enddiv \if NEVER_ENABLE =======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1==== ====== Message Queue ======= \endif \section mig_msgQueue Message Queue In general, messages are now using fixed size memory instead of being 32-bit values. Refer to \ref CMSIS_RTOS_Message for details. \div{new} \func{osStatus_t #osMessageQueueDelete (osMessageQueueId_t mq_id)} \none \copybrief{osMessageQueueDelete} New function. \enddiv \div{mod} \func{osStatus_t #osMessageQueueGet (osMessageQueueId_t mq_id, void *msg_ptr, uint8_t *msg_prio, uint32_t timeout)} \func{osEvent    osMessageGet (osMessageQId queue_id, uint32_t timeout)} \copybrief{osMessageQueueGet} - The function \b osMessageQueueGet replaces the RTOS v1 function \b osMessageGet. - The return type changed to #osStatus_t. - The parameter list and parameter types have changed. \enddiv \div{new} \func{uint32_t #osMessageQueueGetCapacity (osMessageQueueId_t mq_id)} \none \copybrief{osMessageQueueGetCapacity} New function. \enddiv \div{new} \func{uint32_t #osMessageQueueGetCount (osMessageQueueId_t mq_id)} \none \copybrief{osMessageQueueGetCount} New function. \enddiv \div{new} \func{uint32_t #osMessageQueueGetMsgSize (osMessageQueueId_t mq_id)} \none \copybrief{osMessageQueueGetMsgSize} New function. \enddiv \div{new} \func{const char *#osMessageQueueGetName (osMessageQueueId_t mq_id)} \none \copybrief{osMessageQueueGetName} New function. \enddiv \div{new} \func{uint32_t #osMessageQueueGetSpace (osMessageQueueId_t mq_id)} \none \copybrief{osMessageQueueGetSpace} New function. \enddiv \div{mod} \func{osMessageQueueId_t #osMessageQueueNew (uint32_t msg_count, uint32_t msg_size, const osMessageQueueAttr_t *attr)} \func{osMessageQId       osMessageCreate (const osMessageQDef_t *queue_def, osThreadId thread_id)} \copybrief{osMessageQueueNew} - The function \b osMessageQueueNew replaces the RTOS v1 function \b osMessageCreate. - The return type changed to #osMessageQueueId_t. - The parameter list and parameter types have changed. \enddiv \div{mod} \func{osStatus_t #osMessageQueuePut (osMessageQueueId_t mq_id, const void *msg_ptr, uint8_t msg_prio, uint32_t timeout)} \func{osStatus   osMessagePut (osMessageQId queue_id, uint32_t info, uint32_t timeout)} \copybrief{osMessageQueuePut} - The function \b osMessageQueuePut replaces the RTOS v1 function \b osMessagePut. - The return type changed to #osStatus_t. - The parameter list and parameter types have changed. \enddiv \div{new} \func{osStatus_t #osMessageQueueReset (osMessageQueueId_t mq_id)} \none \copybrief{osMessageQueueReset} New function. \enddiv \if NEVER_ENABLE =======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1==== ====== Mail Queue ======= \endif \section mig_mailQueue Mail Queue The Mail Queue RTOS v1 functions have been deprecated. Use the functionality of the \ref CMSIS_RTOS_Message instead. Differences are listed under \ref mig_msgQueue. \div{del} \none \func{void * osMailAlloc (osMailQId queue_id, uint32_t timeout)} \n Deprecated. \enddiv \div{del} \none \func{void * osMailCAlloc (osMailQId queue_id, uint32_t timeout)} \n Deprecated. \enddiv \div{del} \none \func{osMailQId osMailCreate (const osMailQDef_t *queue_def, osThreadId thread_id)} \n Deprecated. \enddiv \div{del} \none \func{osStatus osMailFree (osMailQId queue_id, void *mail)} \n Deprecated. \enddiv \div{del} \none \func{osEvent osMailGet (osMailQId queue_id, uint32_t timeout)} \n Deprecated. \enddiv \div{del} \none \func{osStatus osMailPut (osMailQId queue_id, void *mail)} \n Deprecated. \enddiv \if NEVER_ENABLE =======0=========1=========2=========3=========4=========5=========6=========7=========8=========9=========0=========1==== ====== Signal Events ======= \endif \section mig_signalEvents Signal Events \details The section RTOS v1 Signal Events has been deprecated. Use the functions listed under \ref mig_threadFlags instead. \div{del} \none \func{int32_t osSignalClear (osThreadId thread_id, int32_t signals)} \n Deprecated. \enddiv \div{del} \none \func{int32_t osSignalSet (osThreadId thread_id, int32_t signals)} \n Deprecated. \enddiv \div{del} \none \func{osEvent osSignalWait (int32_t signals, uint32_t timeout)} \n Deprecated. \enddiv */