+++ /dev/null
-/*\r
- * FreeRTOS Kernel V10.0.0\r
- * Copyright (C) 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\r
- *\r
- * Permission is hereby granted, free of charge, to any person obtaining a copy of\r
- * this software and associated documentation files (the "Software"), to deal in\r
- * the Software without restriction, including without limitation the rights to\r
- * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\r
- * the Software, and to permit persons to whom the Software is furnished to do so,\r
- * subject to the following conditions:\r
- *\r
- * The above copyright notice and this permission notice shall be included in all\r
- * copies or substantial portions of the Software. If you wish to use our Amazon\r
- * FreeRTOS name, please do so in a fair use way that does not cause confusion.\r
- *\r
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\r
- * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\r
- * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\r
- * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\r
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r
- *\r
- * http://www.FreeRTOS.org\r
- * http://aws.amazon.com/freertos\r
- *\r
- * 1 tab == 4 spaces!\r
- */\r
-\r
-#ifndef PORTMACRO_CMSIS_H\r
-#define PORTMACRO_CMSIS_H\r
-#include "app_util.h"\r
-\r
-#ifdef __cplusplus\r
-extern "C" {\r
-#endif\r
-\r
-/*-----------------------------------------------------------\r
- * Port specific definitions.\r
- *\r
- * The settings in this file configure FreeRTOS correctly for the\r
- * given hardware and compiler.\r
- *\r
- * These settings should not be altered.\r
- *-----------------------------------------------------------\r
- */\r
-\r
-/* Type definitions. */\r
-#define portCHAR char\r
-#define portFLOAT float\r
-#define portDOUBLE double\r
-#define portLONG long\r
-#define portSHORT short\r
-#define portSTACK_TYPE uint32_t\r
-#define portBASE_TYPE long\r
-\r
-typedef portSTACK_TYPE StackType_t;\r
-typedef long BaseType_t;\r
-typedef unsigned long UBaseType_t;\r
-\r
-#if ( configUSE_16_BIT_TICKS == 1 )\r
- typedef uint16_t TickType_t;\r
- #define portMAX_DELAY ( TickType_t ) 0xffff\r
-#else\r
- typedef uint32_t TickType_t;\r
- #define portMAX_DELAY ( TickType_t ) 0xffffffffUL\r
-\r
- /* 32-bit tick type on a 32-bit architecture, so reads of the tick count do\r
- not need to be guarded with a critical section. */\r
- #define portTICK_TYPE_IS_ATOMIC 1\r
-#endif\r
-/*-----------------------------------------------------------*/\r
-\r
-/* Architecture specifics. */\r
-#define portSTACK_GROWTH ( -1 )\r
-#define portTICK_PERIOD_MS ( ( TickType_t ) 1000 / configTICK_RATE_HZ )\r
-#define portBYTE_ALIGNMENT 8\r
-\r
-/* RTC register */\r
-#define portNRF_RTC_REG NRF_RTC1\r
-/* IRQn used by the selected RTC */\r
-#define portNRF_RTC_IRQn RTC1_IRQn\r
-/* Constants required to manipulate the NVIC. */\r
-#define portNRF_RTC_PRESCALER ( (uint32_t) (ROUNDED_DIV(configSYSTICK_CLOCK_HZ, configTICK_RATE_HZ) - 1) )\r
-/* Maximum RTC ticks */\r
-#define portNRF_RTC_MAXTICKS ((1U<<24)-1U)\r
-/*-----------------------------------------------------------*/\r
-\r
-/* Scheduler utilities. */\r
-#define portYIELD() do \\r
-{ \\r
- /* Set a PendSV to request a context switch. */ \\r
- SCB->ICSR = SCB_ICSR_PENDSVSET_Msk; \\r
- __SEV(); \\r
- /* Barriers are normally not required but do ensure the code is completely \\r
- within the specified behaviour for the architecture. */ \\r
- __DSB(); \\r
- __ISB(); \\r
-}while (0)\r
-\r
-#define portEND_SWITCHING_ISR( xSwitchRequired ) if ( (xSwitchRequired) != pdFALSE ) portYIELD()\r
-#define portYIELD_FROM_ISR( x ) portEND_SWITCHING_ISR( x )\r
-/*-----------------------------------------------------------*/\r
-\r
-/* Critical section management. */\r
-extern void vPortEnterCritical( void );\r
-extern void vPortExitCritical( void );\r
-#define portSET_INTERRUPT_MASK_FROM_ISR() ulPortRaiseBASEPRI()\r
-#define portCLEAR_INTERRUPT_MASK_FROM_ISR(x) vPortSetBASEPRI(x)\r
-#define portDISABLE_INTERRUPTS() vPortRaiseBASEPRI()\r
-#define portENABLE_INTERRUPTS() vPortSetBASEPRI(0)\r
-#define portENTER_CRITICAL() vPortEnterCritical()\r
-#define portEXIT_CRITICAL() vPortExitCritical()\r
-\r
-/*-----------------------------------------------------------*/\r
-\r
-/* Task function macros as described on the FreeRTOS.org WEB site. These are\r
-not necessary for to use this port. They are defined so the common demo files\r
-(which build with all the ports) will build. */\r
-#define portTASK_FUNCTION_PROTO( vFunction, pvParameters ) void vFunction( void *pvParameters )\r
-#define portTASK_FUNCTION( vFunction, pvParameters ) void vFunction( void *pvParameters )\r
-/*-----------------------------------------------------------*/\r
-\r
-/* Tickless idle/low power functionality. */\r
-#ifndef portSUPPRESS_TICKS_AND_SLEEP\r
- extern void vPortSuppressTicksAndSleep( TickType_t xExpectedIdleTime );\r
- #define portSUPPRESS_TICKS_AND_SLEEP( xExpectedIdleTime ) vPortSuppressTicksAndSleep( xExpectedIdleTime )\r
-#endif\r
-/*-----------------------------------------------------------*/\r
-\r
-/* Architecture specific optimisations. */\r
-#ifndef configUSE_PORT_OPTIMISED_TASK_SELECTION\r
- #define configUSE_PORT_OPTIMISED_TASK_SELECTION 1\r
-#endif\r
-\r
-#if configUSE_PORT_OPTIMISED_TASK_SELECTION == 1\r
-\r
- /* Count leading zeros helper. */\r
- #define ucPortCountLeadingZeros( bits ) __CLZ( bits )\r
-\r
- /* Check the configuration. */\r
- #if ( configMAX_PRIORITIES > 32 )\r
- #error configUSE_PORT_OPTIMISED_TASK_SELECTION can only be set to 1 when configMAX_PRIORITIES is less than or equal to 32. It is very rare that a system requires more than 10 to 15 difference priorities as tasks that share a priority will time slice.\r
- #endif\r
-\r
- /* Store/clear the ready priorities in a bit map. */\r
- #define portRECORD_READY_PRIORITY( uxPriority, uxReadyPriorities ) ( uxReadyPriorities ) |= ( 1UL << ( uxPriority ) )\r
- #define portRESET_READY_PRIORITY( uxPriority, uxReadyPriorities ) ( uxReadyPriorities ) &= ~( 1UL << ( uxPriority ) )\r
-\r
- /*-----------------------------------------------------------*/\r
-\r
- #define portGET_HIGHEST_PRIORITY( uxTopPriority, uxReadyPriorities ) uxTopPriority = ( 31 - ucPortCountLeadingZeros( ( uxReadyPriorities ) ) )\r
-\r
-#endif /* configUSE_PORT_OPTIMISED_TASK_SELECTION */\r
-\r
-/*-----------------------------------------------------------*/\r
-\r
-#ifdef configASSERT\r
- void vPortValidateInterruptPriority( void );\r
- #define portASSERT_IF_INTERRUPT_PRIORITY_INVALID() vPortValidateInterruptPriority()\r
-#endif\r
-\r
-/*-----------------------------------------------------------*/\r
-\r
-#define vPortSetBASEPRI( ulNewMaskValue ) __set_BASEPRI(ulNewMaskValue)\r
-\r
-/*-----------------------------------------------------------*/\r
-\r
-#define vPortRaiseBASEPRI( ) vPortSetBASEPRI(configMAX_SYSCALL_INTERRUPT_PRIORITY << (8 - configPRIO_BITS))\r
-\r
-/*-----------------------------------------------------------*/\r
-\r
-__STATIC_INLINE uint32_t ulPortRaiseBASEPRI( void )\r
-{\r
- uint32_t ulOriginalBASEPRI = __get_BASEPRI();\r
- vPortRaiseBASEPRI();\r
- return ulOriginalBASEPRI;\r
-}\r
-\r
-/*-----------------------------------------------------------*/\r
-\r
-\r
-#ifdef __cplusplus\r
-}\r
-#endif\r
-\r
-#endif /* PORTMACRO_CMSIS_H */\r
-\r