Symbol table: vQueueAddToRegistry/56 (vQueueAddToRegistry) @06c1f2a0 Type: function Visibility: external public References: Referring: Availability: not_available Function flags: Called by: prvCheckForValidListAndQueue/29 Calls: xQueueGenericCreate/55 (xQueueGenericCreate) @06c1f1c0 Type: function Visibility: external public References: Referring: Availability: not_available Function flags: Called by: prvCheckForValidListAndQueue/29 Calls: vListInitialise/54 (vListInitialise) @06c1f000 Type: function Visibility: external public References: Referring: Availability: not_available Function flags: Called by: prvCheckForValidListAndQueue/29 prvCheckForValidListAndQueue/29 Calls: xQueueReceive/53 (xQueueReceive) @06c10c40 Type: function Visibility: external public References: Referring: Availability: not_available Function flags: Called by: prvProcessReceivedCommands/27 Calls: vPortFree/52 (vPortFree) @06c10b60 Type: function Visibility: external public References: Referring: Availability: not_available Function flags: Called by: prvProcessReceivedCommands/27 Calls: vListInsert/51 (vListInsert) @06c107e0 Type: function Visibility: external public References: Referring: Availability: not_available Function flags: Called by: prvInsertTimerInActiveList/26 prvInsertTimerInActiveList/26 Calls: xLastTime.6552/50 (xLastTime) @06c128b8 Type: variable definition analyzed Visibility: force_output no_reorder prevailing_def_ironly References: Referring: prvSampleTimeNow/25 (read)prvSampleTimeNow/25 (write) Availability: available Varpool flags: initialized xTaskGetTickCount/49 (xTaskGetTickCount) @06c10620 Type: function Visibility: external public References: Referring: Availability: not_available Function flags: Called by: prvSampleTimeNow/25 Calls: vQueueWaitForMessageRestricted/48 (vQueueWaitForMessageRestricted) @06c10380 Type: function Visibility: external public References: Referring: Availability: not_available Function flags: Called by: prvProcessTimerOrBlockTask/23 Calls: xTaskResumeAll/47 (xTaskResumeAll) @06c102a0 Type: function Visibility: external public References: Referring: Availability: not_available Function flags: Called by: prvProcessTimerOrBlockTask/23 prvProcessTimerOrBlockTask/23 prvProcessTimerOrBlockTask/23 Calls: vTaskSuspendAll/46 (vTaskSuspendAll) @06c101c0 Type: function Visibility: external public References: Referring: Availability: not_available Function flags: Called by: prvProcessTimerOrBlockTask/23 Calls: uxListRemove/45 (uxListRemove) @06bdfee0 Type: function Visibility: external public References: Referring: Availability: not_available Function flags: Called by: prvProcessReceivedCommands/27 prvProcessExpiredTimer/21 Calls: vPortExitCritical/44 (vPortExitCritical) @06bdf9a0 Type: function Visibility: external public References: Referring: Availability: not_available Function flags: Called by: vTimerSetTimerID/32 pvTimerGetTimerID/31 xTimerIsTimerActive/30 prvCheckForValidListAndQueue/29 uxTimerGetReloadMode/17 vTimerSetReloadMode/16 Calls: vPortEnterCritical/43 (vPortEnterCritical) @06bdf8c0 Type: function Visibility: external public References: Referring: Availability: not_available Function flags: Called by: vTimerSetTimerID/32 pvTimerGetTimerID/31 xTimerIsTimerActive/30 prvCheckForValidListAndQueue/29 uxTimerGetReloadMode/17 vTimerSetReloadMode/16 Calls: xQueueGenericSendFromISR/42 (xQueueGenericSendFromISR) @06bdf540 Type: function Visibility: external public References: Referring: Availability: not_available Function flags: Called by: xTimerPendFunctionCallFromISR/33 xTimerGenericCommand/13 Calls: xQueueGenericSend/41 (xQueueGenericSend) @06bdf460 Type: function Visibility: external public References: Referring: Availability: not_available Function flags: Called by: xTimerPendFunctionCall/34 xTimerGenericCommand/13 xTimerGenericCommand/13 Calls: xTaskGetSchedulerState/40 (xTaskGetSchedulerState) @06bdf380 Type: function Visibility: external public References: Referring: Availability: not_available Function flags: Called by: xTimerGenericCommand/13 Calls: vListInitialiseItem/39 (vListInitialiseItem) @06bdf1c0 Type: function Visibility: external public References: Referring: Availability: not_available Function flags: Called by: prvInitialiseNewTimer/12 Calls: pvPortMalloc/38 (pvPortMalloc) @06bdf000 Type: function Visibility: external public References: Referring: Availability: not_available Function flags: Called by: xTimerCreate/11 Calls: xTaskCreate/37 (xTaskCreate) @06bd6380 Type: function Visibility: external public References: Referring: Availability: not_available Function flags: Called by: xTimerCreateTimerTask/10 Calls: vTimerSetTimerNumber/36 (vTimerSetTimerNumber) @06bd6c40 Type: function definition analyzed Visibility: force_output externally_visible no_reorder public References: Referring: Availability: available Function flags: body Called by: Calls: uxTimerGetTimerNumber/35 (uxTimerGetTimerNumber) @06bd69a0 Type: function definition analyzed Visibility: force_output externally_visible no_reorder public References: Referring: Availability: available Function flags: body Called by: Calls: xTimerPendFunctionCall/34 (xTimerPendFunctionCall) @06bd6700 Type: function definition analyzed Visibility: force_output externally_visible no_reorder public References: xTimerQueue/8 (read)xTimerQueue/8 (read) Referring: Availability: available Function flags: body Called by: Calls: xQueueGenericSend/41 xTimerPendFunctionCallFromISR/33 (xTimerPendFunctionCallFromISR) @06bd62a0 Type: function definition analyzed Visibility: force_output externally_visible no_reorder public References: xTimerQueue/8 (read) Referring: Availability: available Function flags: body Called by: Calls: xQueueGenericSendFromISR/42 vTimerSetTimerID/32 (vTimerSetTimerID) @06bcfd20 Type: function definition analyzed Visibility: force_output externally_visible no_reorder public References: Referring: Availability: available Function flags: body Called by: Calls: vPortExitCritical/44 vPortEnterCritical/43 pvTimerGetTimerID/31 (pvTimerGetTimerID) @06bcf2a0 Type: function definition analyzed Visibility: force_output externally_visible no_reorder public References: Referring: Availability: available Function flags: body Called by: Calls: vPortExitCritical/44 vPortEnterCritical/43 xTimerIsTimerActive/30 (xTimerIsTimerActive) @06bcfc40 Type: function definition analyzed Visibility: force_output externally_visible no_reorder public References: Referring: Availability: available Function flags: body Called by: Calls: vPortExitCritical/44 vPortEnterCritical/43 prvCheckForValidListAndQueue/29 (prvCheckForValidListAndQueue) @06bcf8c0 Type: function definition analyzed Visibility: force_output no_reorder prevailing_def_ironly References: xTimerQueue/8 (read)xActiveTimerList1/4 (addr)xActiveTimerList2/5 (addr)pxCurrentTimerList/6 (write)xActiveTimerList1/4 (addr)pxOverflowTimerList/7 (write)xActiveTimerList2/5 (addr)xTimerQueue/8 (write)xTimerQueue/8 (read)xTimerQueue/8 (read) Referring: Availability: available Function flags: body Called by: prvInitialiseNewTimer/12 xTimerCreateTimerTask/10 Calls: vPortExitCritical/44 vQueueAddToRegistry/56 xQueueGenericCreate/55 vListInitialise/54 vListInitialise/54 vPortEnterCritical/43 prvSwitchTimerLists/28 (prvSwitchTimerLists) @06bcf540 Type: function definition analyzed Visibility: force_output no_reorder prevailing_def_ironly References: pxCurrentTimerList/6 (read)pxCurrentTimerList/6 (read)pxCurrentTimerList/6 (read)pxOverflowTimerList/7 (read)pxCurrentTimerList/6 (write)pxOverflowTimerList/7 (write) Referring: Availability: available Function flags: body Called by: prvSampleTimeNow/25 Calls: prvProcessExpiredTimer/21 prvProcessReceivedCommands/27 (prvProcessReceivedCommands) @06bcf1c0 Type: function definition analyzed Visibility: force_output no_reorder prevailing_def_ironly References: xTimerQueue/8 (read) Referring: Availability: available Function flags: body Called by: prvTimerTask/22 Calls: xQueueReceive/53 vPortFree/52 prvInsertTimerInActiveList/26 prvReloadTimer/20 prvInsertTimerInActiveList/26 prvSampleTimeNow/25 uxListRemove/45 Indirect call Indirect call prvInsertTimerInActiveList/26 (prvInsertTimerInActiveList) @06b6ec40 Type: function definition analyzed Visibility: force_output no_reorder prevailing_def_ironly References: pxOverflowTimerList/7 (read)pxCurrentTimerList/6 (read) Referring: Availability: available Function flags: body Called by: prvProcessReceivedCommands/27 prvProcessReceivedCommands/27 prvReloadTimer/20 Calls: vListInsert/51 vListInsert/51 prvSampleTimeNow/25 (prvSampleTimeNow) @06b6ee00 Type: function definition analyzed Visibility: force_output no_reorder prevailing_def_ironly References: xLastTime.6552/50 (read)xLastTime.6552/50 (write) Referring: Availability: available Function flags: body Called by: prvProcessReceivedCommands/27 prvProcessTimerOrBlockTask/23 Calls: prvSwitchTimerLists/28 xTaskGetTickCount/49 prvGetNextExpireTime/24 (prvGetNextExpireTime) @06b6eb60 Type: function definition analyzed Visibility: force_output no_reorder prevailing_def_ironly References: pxCurrentTimerList/6 (read)pxCurrentTimerList/6 (read) Referring: Availability: available Function flags: body Called by: prvTimerTask/22 Calls: prvProcessTimerOrBlockTask/23 (prvProcessTimerOrBlockTask) @06b6e7e0 Type: function definition analyzed Visibility: force_output no_reorder prevailing_def_ironly References: pxOverflowTimerList/7 (read)xTimerQueue/8 (read) Referring: Availability: available Function flags: body Called by: prvTimerTask/22 Calls: xTaskResumeAll/47 xTaskResumeAll/47 vQueueWaitForMessageRestricted/48 prvProcessExpiredTimer/21 xTaskResumeAll/47 prvSampleTimeNow/25 vTaskSuspendAll/46 prvTimerTask/22 (prvTimerTask) @06b6e380 Type: function definition analyzed Visibility: force_output no_reorder prevailing_def_ironly Address is taken. References: Referring: xTimerCreateTimerTask/10 (addr) Availability: available Function flags: body Called by: Calls: prvProcessReceivedCommands/27 prvProcessTimerOrBlockTask/23 prvGetNextExpireTime/24 prvProcessExpiredTimer/21 (prvProcessExpiredTimer) @06b6e0e0 Type: function definition analyzed Visibility: force_output no_reorder prevailing_def_ironly References: pxCurrentTimerList/6 (read) Referring: Availability: available Function flags: body Called by: prvProcessTimerOrBlockTask/23 prvSwitchTimerLists/28 Calls: prvReloadTimer/20 uxListRemove/45 Indirect call prvReloadTimer/20 (prvReloadTimer) @06b68a80 Type: function definition analyzed Visibility: force_output no_reorder prevailing_def_ironly References: Referring: Availability: available Function flags: body Called by: prvProcessReceivedCommands/27 prvProcessExpiredTimer/21 Calls: prvInsertTimerInActiveList/26 Indirect call pcTimerGetName/19 (pcTimerGetName) @06b68380 Type: function definition analyzed Visibility: force_output externally_visible no_reorder public References: Referring: Availability: available Function flags: body Called by: Calls: xTimerGetExpiryTime/18 (xTimerGetExpiryTime) @06b68d20 Type: function definition analyzed Visibility: force_output externally_visible no_reorder public References: Referring: Availability: available Function flags: body Called by: Calls: uxTimerGetReloadMode/17 (uxTimerGetReloadMode) @06b689a0 Type: function definition analyzed Visibility: force_output externally_visible no_reorder public References: Referring: Availability: available Function flags: body Called by: Calls: vPortExitCritical/44 vPortEnterCritical/43 vTimerSetReloadMode/16 (vTimerSetReloadMode) @06b68620 Type: function definition analyzed Visibility: force_output externally_visible no_reorder public References: Referring: Availability: available Function flags: body Called by: Calls: vPortExitCritical/44 vPortEnterCritical/43 xTimerGetPeriod/15 (xTimerGetPeriod) @06b682a0 Type: function definition analyzed Visibility: force_output externally_visible no_reorder public References: Referring: Availability: available Function flags: body Called by: Calls: xTimerGetTimerDaemonTaskHandle/14 (xTimerGetTimerDaemonTaskHandle) @06bc5c40 Type: function definition analyzed Visibility: force_output externally_visible no_reorder public References: xTimerTaskHandle/9 (read)xTimerTaskHandle/9 (read) Referring: Availability: available Function flags: body Called by: Calls: xTimerGenericCommand/13 (xTimerGenericCommand) @06bc5620 Type: function definition analyzed Visibility: force_output externally_visible no_reorder public References: xTimerQueue/8 (read)xTimerQueue/8 (read)xTimerQueue/8 (read)xTimerQueue/8 (read) Referring: Availability: available Function flags: body Called by: Calls: xQueueGenericSendFromISR/42 xQueueGenericSend/41 xQueueGenericSend/41 xTaskGetSchedulerState/40 prvInitialiseNewTimer/12 (prvInitialiseNewTimer) @06bc5b60 Type: function definition analyzed Visibility: force_output no_reorder prevailing_def_ironly References: Referring: Availability: available Function flags: body Called by: xTimerCreate/11 Calls: vListInitialiseItem/39 prvCheckForValidListAndQueue/29 xTimerCreate/11 (xTimerCreate) @06bc57e0 Type: function definition analyzed Visibility: force_output externally_visible no_reorder public References: Referring: Availability: available Function flags: body Called by: Calls: prvInitialiseNewTimer/12 pvPortMalloc/38 xTimerCreateTimerTask/10 (xTimerCreateTimerTask) @06bc5540 Type: function definition analyzed Visibility: force_output externally_visible no_reorder public References: xTimerQueue/8 (read)prvTimerTask/22 (addr)xTimerTaskHandle/9 (addr) Referring: Availability: available Function flags: body Called by: Calls: xTaskCreate/37 prvCheckForValidListAndQueue/29 xTimerTaskHandle/9 (xTimerTaskHandle) @06bbf678 Type: variable definition analyzed Visibility: force_output no_reorder prevailing_def_ironly References: Referring: xTimerGetTimerDaemonTaskHandle/14 (read)xTimerGetTimerDaemonTaskHandle/14 (read)xTimerCreateTimerTask/10 (addr) Availability: available Varpool flags: initialized xTimerQueue/8 (xTimerQueue) @06bbf5e8 Type: variable definition analyzed Visibility: force_output no_reorder prevailing_def_ironly References: Referring: prvProcessReceivedCommands/27 (read)prvProcessTimerOrBlockTask/23 (read)prvCheckForValidListAndQueue/29 (read)xTimerGenericCommand/13 (read)xTimerCreateTimerTask/10 (read)xTimerPendFunctionCallFromISR/33 (read)xTimerGenericCommand/13 (read)xTimerGenericCommand/13 (read)xTimerGenericCommand/13 (read)prvCheckForValidListAndQueue/29 (read)prvCheckForValidListAndQueue/29 (read)prvCheckForValidListAndQueue/29 (write)xTimerPendFunctionCall/34 (read)xTimerPendFunctionCall/34 (read) Availability: available Varpool flags: initialized pxOverflowTimerList/7 (pxOverflowTimerList) @06bbf558 Type: variable definition analyzed Visibility: force_output no_reorder prevailing_def_ironly References: Referring: prvInsertTimerInActiveList/26 (read)prvSwitchTimerLists/28 (write)prvProcessTimerOrBlockTask/23 (read)prvSwitchTimerLists/28 (read)prvCheckForValidListAndQueue/29 (write) Availability: available Varpool flags: pxCurrentTimerList/6 (pxCurrentTimerList) @06bbf4c8 Type: variable definition analyzed Visibility: force_output no_reorder prevailing_def_ironly References: Referring: prvGetNextExpireTime/24 (read)prvInsertTimerInActiveList/26 (read)prvProcessExpiredTimer/21 (read)prvSwitchTimerLists/28 (write)prvGetNextExpireTime/24 (read)prvSwitchTimerLists/28 (read)prvSwitchTimerLists/28 (read)prvSwitchTimerLists/28 (read)prvCheckForValidListAndQueue/29 (write) Availability: available Varpool flags: xActiveTimerList2/5 (xActiveTimerList2) @06bbf438 Type: variable definition analyzed Visibility: force_output no_reorder prevailing_def_ironly References: Referring: prvCheckForValidListAndQueue/29 (addr)prvCheckForValidListAndQueue/29 (addr) Availability: available Varpool flags: xActiveTimerList1/4 (xActiveTimerList1) @06bbf3a8 Type: variable definition analyzed Visibility: force_output no_reorder prevailing_def_ironly References: Referring: prvCheckForValidListAndQueue/29 (addr)prvCheckForValidListAndQueue/29 (addr) Availability: available Varpool flags: vTimerSetTimerNumber (struct tmrTimerControl * xTimer, UBaseType_t uxTimerNumber) { : MEM[(struct Timer_t *)xTimer_2(D)].uxTimerNumber = uxTimerNumber_3(D); return; } uxTimerGetTimerNumber (struct tmrTimerControl * xTimer) { UBaseType_t D.6791; UBaseType_t _3; : _3 = MEM[(struct Timer_t *)xTimer_2(D)].uxTimerNumber; : : return _3; } xTimerPendFunctionCall (void (*PendedFunction_t) (void *, uint32_t) xFunctionToPend, void * pvParameter1, uint32_t ulParameter2, TickType_t xTicksToWait) { uint32_t ulNewBASEPRI; BaseType_t xReturn; struct DaemonTaskMessage_t xMessage; BaseType_t D.6788; struct QueueDefinition * xTimerQueue.26_1; struct QueueDefinition * xTimerQueue.27_2; BaseType_t _14; : xTimerQueue.26_1 = xTimerQueue; if (xTimerQueue.26_1 == 0B) goto ; [INV] else goto ; [INV] : __asm__ __volatile__(" mov %0, %1 msr basepri, %0 isb dsb " : "=r" ulNewBASEPRI_16 : "i" 16 : "memory"); : : goto ; [INV] : xMessage.xMessageID = -1; xMessage.u.xCallbackParameters.pxCallbackFunction = xFunctionToPend_5(D); xMessage.u.xCallbackParameters.pvParameter1 = pvParameter1_7(D); xMessage.u.xCallbackParameters.ulParameter2 = ulParameter2_9(D); xTimerQueue.27_2 = xTimerQueue; xReturn_13 = xQueueGenericSend (xTimerQueue.27_2, &xMessage, xTicksToWait_11(D), 0); _14 = xReturn_13; xMessage ={v} {CLOBBER}; : : return _14; } xTimerPendFunctionCallFromISR (void (*PendedFunction_t) (void *, uint32_t) xFunctionToPend, void * pvParameter1, uint32_t ulParameter2, BaseType_t * pxHigherPriorityTaskWoken) { BaseType_t xReturn; struct DaemonTaskMessage_t xMessage; BaseType_t D.6783; struct QueueDefinition * xTimerQueue.25_1; BaseType_t _13; : xMessage.xMessageID = -2; xMessage.u.xCallbackParameters.pxCallbackFunction = xFunctionToPend_4(D); xMessage.u.xCallbackParameters.pvParameter1 = pvParameter1_6(D); xMessage.u.xCallbackParameters.ulParameter2 = ulParameter2_8(D); xTimerQueue.25_1 = xTimerQueue; xReturn_12 = xQueueGenericSendFromISR (xTimerQueue.25_1, &xMessage, pxHigherPriorityTaskWoken_10(D), 0); _13 = xReturn_12; xMessage ={v} {CLOBBER}; : : return _13; } vTimerSetTimerID (struct tmrTimerControl * xTimer, void * pvNewID) { uint32_t ulNewBASEPRI; struct Timer_t * const pxTimer; : pxTimer_2 = xTimer_1(D); if (xTimer_1(D) == 0B) goto ; [INV] else goto ; [INV] : __asm__ __volatile__(" mov %0, %1 msr basepri, %0 isb dsb " : "=r" ulNewBASEPRI_8 : "i" 16 : "memory"); : : goto ; [INV] : vPortEnterCritical (); pxTimer_2->pvTimerID = pvNewID_5(D); vPortExitCritical (); return; } pvTimerGetTimerID (struct tmrTimerControl * const xTimer) { uint32_t ulNewBASEPRI; void * pvReturn; struct Timer_t * const pxTimer; void * D.6779; void * _7; : pxTimer_2 = xTimer_1(D); if (xTimer_1(D) == 0B) goto ; [INV] else goto ; [INV] : __asm__ __volatile__(" mov %0, %1 msr basepri, %0 isb dsb " : "=r" ulNewBASEPRI_8 : "i" 16 : "memory"); : : goto ; [INV] : vPortEnterCritical (); pvReturn_5 = pxTimer_2->pvTimerID; vPortExitCritical (); _7 = pvReturn_5; : : return _7; } xTimerIsTimerActive (struct tmrTimerControl * xTimer) { uint32_t ulNewBASEPRI; struct Timer_t * pxTimer; BaseType_t xReturn; BaseType_t D.6775; unsigned char _1; int _2; int _3; BaseType_t _12; : pxTimer_6 = xTimer_5(D); if (xTimer_5(D) == 0B) goto ; [INV] else goto ; [INV] : __asm__ __volatile__(" mov %0, %1 msr basepri, %0 isb dsb " : "=r" ulNewBASEPRI_13 : "i" 16 : "memory"); : : goto ; [INV] : vPortEnterCritical (); _1 = pxTimer_6->ucStatus; _2 = (int) _1; _3 = _2 & 1; if (_3 == 0) goto ; [INV] else goto ; [INV] : xReturn_10 = 0; goto ; [INV] : xReturn_9 = 1; : # xReturn_4 = PHI vPortExitCritical (); _12 = xReturn_4; : : return _12; } prvCheckForValidListAndQueue () { struct QueueDefinition * xTimerQueue.22_1; struct QueueDefinition * _2; struct QueueDefinition * xTimerQueue.23_3; struct QueueDefinition * xTimerQueue.24_4; : vPortEnterCritical (); xTimerQueue.22_1 = xTimerQueue; if (xTimerQueue.22_1 == 0B) goto ; [INV] else goto ; [INV] : vListInitialise (&xActiveTimerList1); vListInitialise (&xActiveTimerList2); pxCurrentTimerList = &xActiveTimerList1; pxOverflowTimerList = &xActiveTimerList2; _2 = xQueueGenericCreate (10, 16, 0); xTimerQueue = _2; xTimerQueue.23_3 = xTimerQueue; if (xTimerQueue.23_3 != 0B) goto ; [INV] else goto ; [INV] : xTimerQueue.24_4 = xTimerQueue; vQueueAddToRegistry (xTimerQueue.24_4, "TmrQ"); : vPortExitCritical (); return; } prvSwitchTimerLists () { struct List_t * pxTemp; TickType_t xNextExpireTime; struct List_t * pxCurrentTimerList.19_1; struct xLIST_ITEM * _2; struct List_t * pxCurrentTimerList.20_3; long unsigned int _4; struct List_t * pxOverflowTimerList.21_5; : goto ; [INV] : pxCurrentTimerList.19_1 = pxCurrentTimerList; _2 = pxCurrentTimerList.19_1->xListEnd.pxNext; xNextExpireTime_11 = _2->xItemValue; prvProcessExpiredTimer (xNextExpireTime_11, 4294967295); : pxCurrentTimerList.20_3 = pxCurrentTimerList; _4 ={v} pxCurrentTimerList.20_3->uxNumberOfItems; if (_4 != 0) goto ; [INV] else goto ; [INV] : pxTemp_8 = pxCurrentTimerList; pxOverflowTimerList.21_5 = pxOverflowTimerList; pxCurrentTimerList = pxOverflowTimerList.21_5; pxOverflowTimerList = pxTemp_8; return; } prvProcessReceivedCommands () { uint32_t ulNewBASEPRI; uint32_t ulNewBASEPRI; const struct CallbackParameters_t * const pxCallback; TickType_t xTimeNow; BaseType_t xTimerListsWereSwitched; struct Timer_t * pxTimer; struct DaemonTaskMessage_t xMessage; long int _1; void (*) (void *, uint32_t) _2; void * _3; long unsigned int _4; long int _5; struct xLIST * _6; struct ListItem_t * _7; long int _8; unsigned char _9; unsigned char _10; long unsigned int _11; long unsigned int _12; long unsigned int _13; long unsigned int _14; long int _15; unsigned char _16; int _17; int _18; long unsigned int _19; long unsigned int _20; long unsigned int _21; unsigned char _22; unsigned char _23; void (*) (struct tmrTimerControl *) _24; unsigned char _25; unsigned char _26; unsigned char _27; unsigned char _28; long unsigned int _29; long unsigned int _30; long unsigned int _31; long unsigned int _32; unsigned char _33; int _34; int _35; unsigned char _36; unsigned char _37; struct QueueDefinition * xTimerQueue.18_38; long int _39; : goto ; [INV] : _1 = xMessage.xMessageID; if (_1 < 0) goto ; [INV] else goto ; [INV] : pxCallback_50 = &xMessage.u.xCallbackParameters; if (pxCallback_50 == 0B) goto ; [INV] else goto ; [INV] : __asm__ __volatile__(" mov %0, %1 msr basepri, %0 isb dsb " : "=r" ulNewBASEPRI_67 : "i" 16 : "memory"); : : goto ; [INV] : _2 = pxCallback_50->pxCallbackFunction; _3 = pxCallback_50->pvParameter1; _4 = pxCallback_50->ulParameter2; _2 (_3, _4); : _5 = xMessage.xMessageID; if (_5 >= 0) goto ; [INV] else goto ; [INV] : pxTimer_52 = xMessage.u.xTimerParameters.pxTimer; _6 = pxTimer_52->xTimerListItem.pvContainer; if (_6 != 0B) goto ; [INV] else goto ; [INV] : _7 = &pxTimer_52->xTimerListItem; uxListRemove (_7); : xTimeNow_55 = prvSampleTimeNow (&xTimerListsWereSwitched); _8 = xMessage.xMessageID; switch (_8) [INV], case 1 ... 2: [INV], case 3: [INV], case 4: [INV], case 5: [INV], case 6 ... 7: [INV], case 8: [INV], case 9: [INV]> : : _9 = pxTimer_52->ucStatus; _10 = _9 | 1; pxTimer_52->ucStatus = _10; _11 = xMessage.u.xTimerParameters.xMessageValue; _12 = pxTimer_52->xTimerPeriodInTicks; _13 = _11 + _12; _14 = xMessage.u.xTimerParameters.xMessageValue; _15 = prvInsertTimerInActiveList (pxTimer_52, _13, xTimeNow_55, _14); if (_15 != 0) goto ; [INV] else goto ; [INV] : _16 = pxTimer_52->ucStatus; _17 = (int) _16; _18 = _17 & 4; if (_18 != 0) goto ; [INV] else goto ; [INV] : _19 = xMessage.u.xTimerParameters.xMessageValue; _20 = pxTimer_52->xTimerPeriodInTicks; _21 = _19 + _20; prvReloadTimer (pxTimer_52, _21, xTimeNow_55); goto ; [INV] : _22 = pxTimer_52->ucStatus; _23 = _22 & 254; pxTimer_52->ucStatus = _23; : _24 = pxTimer_52->pxCallbackFunction; _24 (pxTimer_52); : goto ; [INV] : : _25 = pxTimer_52->ucStatus; _26 = _25 & 254; pxTimer_52->ucStatus = _26; goto ; [INV] : : _27 = pxTimer_52->ucStatus; _28 = _27 | 1; pxTimer_52->ucStatus = _28; _29 = xMessage.u.xTimerParameters.xMessageValue; pxTimer_52->xTimerPeriodInTicks = _29; _30 = pxTimer_52->xTimerPeriodInTicks; if (_30 == 0) goto ; [INV] else goto ; [INV] : __asm__ __volatile__(" mov %0, %1 msr basepri, %0 isb dsb " : "=r" ulNewBASEPRI_68 : "i" 16 : "memory"); : : goto ; [INV] : _31 = pxTimer_52->xTimerPeriodInTicks; _32 = xTimeNow_55 + _31; prvInsertTimerInActiveList (pxTimer_52, _32, xTimeNow_55, xTimeNow_55); goto ; [INV] : : _33 = pxTimer_52->ucStatus; _34 = (int) _33; _35 = _34 & 2; if (_35 == 0) goto ; [INV] else goto ; [INV] : vPortFree (pxTimer_52); goto ; [INV] : _36 = pxTimer_52->ucStatus; _37 = _36 & 254; pxTimer_52->ucStatus = _37; : goto ; [INV] : : : xTimerQueue.18_38 = xTimerQueue; _39 = xQueueReceive (xTimerQueue.18_38, &xMessage, 0); if (_39 != 0) goto ; [INV] else goto ; [INV] : xMessage ={v} {CLOBBER}; xTimerListsWereSwitched ={v} {CLOBBER}; return; } prvInsertTimerInActiveList (struct Timer_t * const pxTimer, const TickType_t xNextExpiryTime, const TickType_t xTimeNow, const TickType_t xCommandTime) { BaseType_t xProcessTimerNow; BaseType_t D.6741; long unsigned int _1; long unsigned int _2; struct List_t * pxOverflowTimerList.16_3; struct ListItem_t * _4; struct List_t * pxCurrentTimerList.17_5; struct ListItem_t * _6; BaseType_t _21; : xProcessTimerNow_9 = 0; pxTimer_11(D)->xTimerListItem.xItemValue = xNextExpiryTime_12(D); pxTimer_11(D)->xTimerListItem.pvOwner = pxTimer_11(D); if (xNextExpiryTime_12(D) <= xTimeNow_15(D)) goto ; [INV] else goto ; [INV] : _1 = xTimeNow_15(D) - xCommandTime_16(D); _2 = pxTimer_11(D)->xTimerPeriodInTicks; if (_1 >= _2) goto ; [INV] else goto ; [INV] : xProcessTimerNow_20 = 1; goto ; [INV] : pxOverflowTimerList.16_3 = pxOverflowTimerList; _4 = &pxTimer_11(D)->xTimerListItem; vListInsert (pxOverflowTimerList.16_3, _4); goto ; [INV] : if (xTimeNow_15(D) < xCommandTime_16(D)) goto ; [INV] else goto ; [INV] : if (xNextExpiryTime_12(D) >= xCommandTime_16(D)) goto ; [INV] else goto ; [INV] : xProcessTimerNow_17 = 1; goto ; [INV] : pxCurrentTimerList.17_5 = pxCurrentTimerList; _6 = &pxTimer_11(D)->xTimerListItem; vListInsert (pxCurrentTimerList.17_5, _6); : # xProcessTimerNow_7 = PHI _21 = xProcessTimerNow_7; : : return _21; } prvSampleTimeNow (BaseType_t * const pxTimerListsWereSwitched) { static TickType_t xLastTime = 0; TickType_t xTimeNow; TickType_t D.6729; long unsigned int xLastTime.15_1; TickType_t _11; : xTimeNow_5 = xTaskGetTickCount (); xLastTime.15_1 = xLastTime; if (xTimeNow_5 < xLastTime.15_1) goto ; [INV] else goto ; [INV] : prvSwitchTimerLists (); *pxTimerListsWereSwitched_6(D) = 1; goto ; [INV] : *pxTimerListsWereSwitched_6(D) = 0; : xLastTime = xTimeNow_5; _11 = xTimeNow_5; : : return _11; } prvGetNextExpireTime (BaseType_t * const pxListWasEmpty) { TickType_t xNextExpireTime; TickType_t D.6724; long int iftmp.12; struct List_t * pxCurrentTimerList.13_1; long unsigned int _2; long int _3; struct List_t * pxCurrentTimerList.14_4; struct xLIST_ITEM * _5; long int iftmp.12_7; long int iftmp.12_9; long int iftmp.12_10; TickType_t _15; : pxCurrentTimerList.13_1 = pxCurrentTimerList; _2 ={v} pxCurrentTimerList.13_1->uxNumberOfItems; if (_2 == 0) goto ; [INV] else goto ; [INV] : iftmp.12_10 = 1; goto ; [INV] : iftmp.12_9 = 0; : # iftmp.12_7 = PHI *pxListWasEmpty_11(D) = iftmp.12_7; _3 = *pxListWasEmpty_11(D); if (_3 == 0) goto ; [INV] else goto ; [INV] : pxCurrentTimerList.14_4 = pxCurrentTimerList; _5 = pxCurrentTimerList.14_4->xListEnd.pxNext; xNextExpireTime_14 = _5->xItemValue; goto ; [INV] : xNextExpireTime_13 = 0; : # xNextExpireTime_6 = PHI _15 = xNextExpireTime_6; : : return _15; } prvProcessTimerOrBlockTask (const TickType_t xNextExpireTime, BaseType_t xListWasEmpty) { BaseType_t xTimerListsWereSwitched; TickType_t xTimeNow; long int iftmp.9; long int xTimerListsWereSwitched.8_1; struct List_t * pxOverflowTimerList.10_2; long unsigned int _3; struct QueueDefinition * xTimerQueue.11_4; long unsigned int _5; long int _6; volatile uint32_t * _7; long int iftmp.9_9; long int iftmp.9_21; long int iftmp.9_22; : vTaskSuspendAll (); xTimeNow_15 = prvSampleTimeNow (&xTimerListsWereSwitched); xTimerListsWereSwitched.8_1 = xTimerListsWereSwitched; if (xTimerListsWereSwitched.8_1 == 0) goto ; [INV] else goto ; [INV] : if (xListWasEmpty_17(D) == 0) goto ; [INV] else goto ; [INV] : if (xNextExpireTime_18(D) <= xTimeNow_15) goto ; [INV] else goto ; [INV] : xTaskResumeAll (); prvProcessExpiredTimer (xNextExpireTime_18(D), xTimeNow_15); goto ; [INV] : if (xListWasEmpty_17(D) != 0) goto ; [INV] else goto ; [INV] : pxOverflowTimerList.10_2 = pxOverflowTimerList; _3 ={v} pxOverflowTimerList.10_2->uxNumberOfItems; if (_3 == 0) goto ; [INV] else goto ; [INV] : iftmp.9_22 = 1; goto ; [INV] : iftmp.9_21 = 0; : # iftmp.9_9 = PHI xListWasEmpty_23 = iftmp.9_9; : # xListWasEmpty_8 = PHI xTimerQueue.11_4 = xTimerQueue; _5 = xNextExpireTime_18(D) - xTimeNow_15; vQueueWaitForMessageRestricted (xTimerQueue.11_4, _5, xListWasEmpty_8); _6 = xTaskResumeAll (); if (_6 == 0) goto ; [INV] else goto ; [INV] : _7 = 3758157060B; *_7 ={v} 268435456; __asm__ __volatile__("dsb" : : : "memory"); __asm__ __volatile__("isb"); : goto ; [INV] : xTaskResumeAll (); : xTimerListsWereSwitched ={v} {CLOBBER}; return; } prvTimerTask (void * pvParameters) { BaseType_t xListWasEmpty; TickType_t xNextExpireTime; long int xListWasEmpty.7_1; : xNextExpireTime_5 = prvGetNextExpireTime (&xListWasEmpty); xListWasEmpty.7_1 = xListWasEmpty; prvProcessTimerOrBlockTask (xNextExpireTime_5, xListWasEmpty.7_1); prvProcessReceivedCommands (); goto ; [INV] } prvProcessExpiredTimer (const TickType_t xNextExpireTime, const TickType_t xTimeNow) { struct Timer_t * const pxTimer; struct List_t * pxCurrentTimerList.6_1; struct xLIST_ITEM * _2; struct ListItem_t * _3; unsigned char _4; int _5; int _6; unsigned char _7; unsigned char _8; void (*) (struct tmrTimerControl *) _9; : pxCurrentTimerList.6_1 = pxCurrentTimerList; _2 = pxCurrentTimerList.6_1->xListEnd.pxNext; pxTimer_12 = _2->pvOwner; _3 = &pxTimer_12->xTimerListItem; uxListRemove (_3); _4 = pxTimer_12->ucStatus; _5 = (int) _4; _6 = _5 & 4; if (_6 != 0) goto ; [INV] else goto ; [INV] : prvReloadTimer (pxTimer_12, xNextExpireTime_15(D), xTimeNow_16(D)); goto ; [INV] : _7 = pxTimer_12->ucStatus; _8 = _7 & 254; pxTimer_12->ucStatus = _8; : _9 = pxTimer_12->pxCallbackFunction; _9 (pxTimer_12); return; } prvReloadTimer (struct Timer_t * const pxTimer, TickType_t xExpiredTime, const TickType_t xTimeNow) { long unsigned int _1; void (*) (struct tmrTimerControl *) _2; long unsigned int _3; long unsigned int _4; long int _5; : goto ; [INV] : _1 = pxTimer_10(D)->xTimerPeriodInTicks; xExpiredTime_13 = xExpiredTime_6 + _1; _2 = pxTimer_10(D)->pxCallbackFunction; _2 (pxTimer_10(D)); : # xExpiredTime_6 = PHI _3 = pxTimer_10(D)->xTimerPeriodInTicks; _4 = xExpiredTime_6 + _3; _5 = prvInsertTimerInActiveList (pxTimer_10(D), _4, xTimeNow_11(D), xExpiredTime_6); if (_5 != 0) goto ; [INV] else goto ; [INV] : return; } pcTimerGetName (struct tmrTimerControl * xTimer) { uint32_t ulNewBASEPRI; struct Timer_t * pxTimer; const char * D.6696; const char * _4; : pxTimer_2 = xTimer_1(D); if (xTimer_1(D) == 0B) goto ; [INV] else goto ; [INV] : __asm__ __volatile__(" mov %0, %1 msr basepri, %0 isb dsb " : "=r" ulNewBASEPRI_5 : "i" 16 : "memory"); : : goto ; [INV] : _4 = pxTimer_2->pcTimerName; : : return _4; } xTimerGetExpiryTime (struct tmrTimerControl * xTimer) { uint32_t ulNewBASEPRI; TickType_t xReturn; struct Timer_t * pxTimer; TickType_t D.6692; TickType_t _5; : pxTimer_2 = xTimer_1(D); if (xTimer_1(D) == 0B) goto ; [INV] else goto ; [INV] : __asm__ __volatile__(" mov %0, %1 msr basepri, %0 isb dsb " : "=r" ulNewBASEPRI_6 : "i" 16 : "memory"); : : goto ; [INV] : xReturn_4 = pxTimer_2->xTimerListItem.xItemValue; _5 = xReturn_4; : : return _5; } uxTimerGetReloadMode (struct tmrTimerControl * xTimer) { uint32_t ulNewBASEPRI; UBaseType_t uxReturn; struct Timer_t * pxTimer; UBaseType_t D.6688; unsigned char _1; int _2; int _3; UBaseType_t _12; : pxTimer_6 = xTimer_5(D); if (xTimer_5(D) == 0B) goto ; [INV] else goto ; [INV] : __asm__ __volatile__(" mov %0, %1 msr basepri, %0 isb dsb " : "=r" ulNewBASEPRI_13 : "i" 16 : "memory"); : : goto ; [INV] : vPortEnterCritical (); _1 = pxTimer_6->ucStatus; _2 = (int) _1; _3 = _2 & 4; if (_3 == 0) goto ; [INV] else goto ; [INV] : uxReturn_10 = 0; goto ; [INV] : uxReturn_9 = 1; : # uxReturn_4 = PHI vPortExitCritical (); _12 = uxReturn_4; : : return _12; } vTimerSetReloadMode (struct tmrTimerControl * xTimer, const UBaseType_t uxAutoReload) { uint32_t ulNewBASEPRI; struct Timer_t * pxTimer; unsigned char _1; unsigned char _2; unsigned char _3; unsigned char _4; : pxTimer_7 = xTimer_6(D); if (xTimer_6(D) == 0B) goto ; [INV] else goto ; [INV] : __asm__ __volatile__(" mov %0, %1 msr basepri, %0 isb dsb " : "=r" ulNewBASEPRI_14 : "i" 16 : "memory"); : : goto ; [INV] : vPortEnterCritical (); if (uxAutoReload_10(D) != 0) goto ; [INV] else goto ; [INV] : _1 = pxTimer_7->ucStatus; _2 = _1 | 4; pxTimer_7->ucStatus = _2; goto ; [INV] : _3 = pxTimer_7->ucStatus; _4 = _3 & 251; pxTimer_7->ucStatus = _4; : vPortExitCritical (); return; } xTimerGetPeriod (struct tmrTimerControl * xTimer) { uint32_t ulNewBASEPRI; struct Timer_t * pxTimer; TickType_t D.6676; TickType_t _4; : pxTimer_2 = xTimer_1(D); if (xTimer_1(D) == 0B) goto ; [INV] else goto ; [INV] : __asm__ __volatile__(" mov %0, %1 msr basepri, %0 isb dsb " : "=r" ulNewBASEPRI_5 : "i" 16 : "memory"); : : goto ; [INV] : _4 = pxTimer_2->xTimerPeriodInTicks; : : return _4; } xTimerGetTimerDaemonTaskHandle () { uint32_t ulNewBASEPRI; struct tskTaskControlBlock * D.6672; struct tskTaskControlBlock * xTimerTaskHandle.5_1; struct tskTaskControlBlock * _3; : xTimerTaskHandle.5_1 = xTimerTaskHandle; if (xTimerTaskHandle.5_1 == 0B) goto ; [INV] else goto ; [INV] : __asm__ __volatile__(" mov %0, %1 msr basepri, %0 isb dsb " : "=r" ulNewBASEPRI_4 : "i" 16 : "memory"); : : goto ; [INV] : _3 = xTimerTaskHandle; : : return _3; } xTimerGenericCommand (struct tmrTimerControl * xTimer, const BaseType_t xCommandID, const TickType_t xOptionalValue, BaseType_t * const pxHigherPriorityTaskWoken, const TickType_t xTicksToWait) { uint32_t ulNewBASEPRI; struct DaemonTaskMessage_t xMessage; BaseType_t xReturn; BaseType_t D.6667; struct QueueDefinition * xTimerQueue.1_1; long int _2; struct QueueDefinition * xTimerQueue.2_3; struct QueueDefinition * xTimerQueue.3_4; struct QueueDefinition * xTimerQueue.4_5; BaseType_t _25; : xReturn_8 = 0; if (xTimer_9(D) == 0B) goto ; [INV] else goto ; [INV] : __asm__ __volatile__(" mov %0, %1 msr basepri, %0 isb dsb " : "=r" ulNewBASEPRI_27 : "i" 16 : "memory"); : : goto ; [INV] : xTimerQueue.1_1 = xTimerQueue; if (xTimerQueue.1_1 != 0B) goto ; [INV] else goto ; [INV] : xMessage.xMessageID = xCommandID_11(D); xMessage.u.xTimerParameters.xMessageValue = xOptionalValue_13(D); xMessage.u.xTimerParameters.pxTimer = xTimer_9(D); if (xCommandID_11(D) <= 5) goto ; [INV] else goto ; [INV] : _2 = xTaskGetSchedulerState (); if (_2 == 2) goto ; [INV] else goto ; [INV] : xTimerQueue.2_3 = xTimerQueue; xReturn_24 = xQueueGenericSend (xTimerQueue.2_3, &xMessage, xTicksToWait_22(D), 0); goto ; [INV] : xTimerQueue.3_4 = xTimerQueue; xReturn_21 = xQueueGenericSend (xTimerQueue.3_4, &xMessage, 0, 0); goto ; [INV] : xTimerQueue.4_5 = xTimerQueue; xReturn_18 = xQueueGenericSendFromISR (xTimerQueue.4_5, &xMessage, pxHigherPriorityTaskWoken_16(D), 0); : # xReturn_6 = PHI _25 = xReturn_6; xMessage ={v} {CLOBBER}; : : return _25; } prvInitialiseNewTimer (const char * const pcTimerName, const TickType_t xTimerPeriodInTicks, const UBaseType_t uxAutoReload, void * const pvTimerID, void (*TimerCallbackFunction_t) (struct tmrTimerControl *) pxCallbackFunction, struct Timer_t * pxNewTimer) { uint32_t ulNewBASEPRI; struct ListItem_t * _1; unsigned char _2; unsigned char _3; : if (xTimerPeriodInTicks_5(D) == 0) goto ; [INV] else goto ; [INV] : __asm__ __volatile__(" mov %0, %1 msr basepri, %0 isb dsb " : "=r" ulNewBASEPRI_19 : "i" 16 : "memory"); : : goto ; [INV] : prvCheckForValidListAndQueue (); pxNewTimer_8(D)->pcTimerName = pcTimerName_9(D); pxNewTimer_8(D)->xTimerPeriodInTicks = xTimerPeriodInTicks_5(D); pxNewTimer_8(D)->pvTimerID = pvTimerID_12(D); pxNewTimer_8(D)->pxCallbackFunction = pxCallbackFunction_14(D); _1 = &pxNewTimer_8(D)->xTimerListItem; vListInitialiseItem (_1); if (uxAutoReload_17(D) != 0) goto ; [INV] else goto ; [INV] : _2 = pxNewTimer_8(D)->ucStatus; _3 = _2 | 4; pxNewTimer_8(D)->ucStatus = _3; : return; } xTimerCreate (const char * const pcTimerName, const TickType_t xTimerPeriodInTicks, const UBaseType_t uxAutoReload, void * const pvTimerID, void (*TimerCallbackFunction_t) (struct tmrTimerControl *) pxCallbackFunction) { struct Timer_t * pxNewTimer; struct tmrTimerControl * D.6650; struct tmrTimerControl * _12; : pxNewTimer_4 = pvPortMalloc (44); if (pxNewTimer_4 != 0B) goto ; [INV] else goto ; [INV] : pxNewTimer_4->ucStatus = 0; prvInitialiseNewTimer (pcTimerName_6(D), xTimerPeriodInTicks_7(D), uxAutoReload_8(D), pvTimerID_9(D), pxCallbackFunction_10(D), pxNewTimer_4); : _12 = pxNewTimer_4; : : return _12; } xTimerCreateTimerTask () { uint32_t ulNewBASEPRI; BaseType_t xReturn; BaseType_t D.6646; struct QueueDefinition * xTimerQueue.0_1; BaseType_t _9; : xReturn_4 = 0; prvCheckForValidListAndQueue (); xTimerQueue.0_1 = xTimerQueue; if (xTimerQueue.0_1 != 0B) goto ; [INV] else goto ; [INV] : xReturn_8 = xTaskCreate (prvTimerTask, "Tmr Svc", 180, 0B, 2, &xTimerTaskHandle); : # xReturn_2 = PHI if (xReturn_2 == 0) goto ; [INV] else goto ; [INV] : __asm__ __volatile__(" mov %0, %1 msr basepri, %0 isb dsb " : "=r" ulNewBASEPRI_10 : "i" 16 : "memory"); : : goto ; [INV] : _9 = xReturn_2; : : return _9; }