From 789574dc6b353288aad782e88a477a7509db2c91 Mon Sep 17 00:00:00 2001 From: rtel Date: Sun, 14 Jul 2019 19:13:51 +0000 Subject: [PATCH 1/1] New MSVC task pool demo now building both the task pool and TCP libraries. git-svn-id: https://svn.code.sf.net/p/freertos/code/trunk@2679 1d2547de-c912-0410-9cb9-b8ca96c0e9e2 --- .../task_pool/FreeRTOSConfig.h | 1 + .../task_pool/WIN32.vcxproj | 13 +- .../task_pool/WIN32.vcxproj.filters | 77 +++++++ .../task_pool/iot_config.h | 59 +++++ .../task_pool/iot_config_common.h | 203 ++++++++++++++++++ .../FreeRTOS_Plus_IoT_SDK/task_pool/main.c | 52 +++++ .../standard/common/taskpool/iot_taskpool.c | 18 +- 7 files changed, 417 insertions(+), 6 deletions(-) create mode 100644 FreeRTOS-Plus/Demo/FreeRTOS_Plus_IoT_SDK/task_pool/iot_config.h create mode 100644 FreeRTOS-Plus/Demo/FreeRTOS_Plus_IoT_SDK/task_pool/iot_config_common.h diff --git a/FreeRTOS-Plus/Demo/FreeRTOS_Plus_IoT_SDK/task_pool/FreeRTOSConfig.h b/FreeRTOS-Plus/Demo/FreeRTOS_Plus_IoT_SDK/task_pool/FreeRTOSConfig.h index e68bd81c5..01737d5f7 100644 --- a/FreeRTOS-Plus/Demo/FreeRTOS_Plus_IoT_SDK/task_pool/FreeRTOSConfig.h +++ b/FreeRTOS-Plus/Demo/FreeRTOS_Plus_IoT_SDK/task_pool/FreeRTOSConfig.h @@ -61,6 +61,7 @@ #define configUSE_ALTERNATIVE_API 0 #define configNUM_THREAD_LOCAL_STORAGE_POINTERS 0 #define configENABLE_BACKWARD_COMPATIBILITY 1 +#define configSUPPORT_STATIC_ALLOCATION 1 /* Hook function related definitions. */ #define configUSE_TICK_HOOK 0 diff --git a/FreeRTOS-Plus/Demo/FreeRTOS_Plus_IoT_SDK/task_pool/WIN32.vcxproj b/FreeRTOS-Plus/Demo/FreeRTOS_Plus_IoT_SDK/task_pool/WIN32.vcxproj index 44615e22d..ae147ddd7 100644 --- a/FreeRTOS-Plus/Demo/FreeRTOS_Plus_IoT_SDK/task_pool/WIN32.vcxproj +++ b/FreeRTOS-Plus/Demo/FreeRTOS_Plus_IoT_SDK/task_pool/WIN32.vcxproj @@ -58,7 +58,7 @@ Disabled - ..\..\..\Source\FreeRTOS-Plus-FAT\include;..\..\..\Source\FreeRTOS-Plus-FAT\portable\common;..\..\..\Source\FreeRTOS-Plus-TCP\protocols\include;..\..\..\Source\FreeRTOS-Plus-TCP\portable\BufferManagement;.\DemoTasks\include;..\..\..\Source\FreeRTOS-Plus-TCP\portable\Compiler\MSVC;.\WinPCap;..\..\..\..\FreeRTOS\Source\include;..\..\..\..\FreeRTOS\Source\portable\MSVC-MingW;..\..\..\Source\FreeRTOS-Plus-CLI;.\TraceMacros\Example1;..\..\..\Source\FreeRTOS-Plus-TCP\include;.;%(AdditionalIncludeDirectories) + ..\..\..\Source\FreeRTOS-Plus-TCP\include;..\..\..\Source\FreeRTOS-Plus-TCP\portable\BufferManagement;..\..\..\Source\FreeRTOS-Plus-TCP\portable\Compiler\MSVC;.\DemoTasks\include;.\WinPCap;..\..\..\..\FreeRTOS\Source\include;..\..\..\..\FreeRTOS\Source\portable\MSVC-MingW;..\..\..\Source\FreeRTOS-Plus-IoT-SDK\c_sdk\standard\common\include;..\..\..\Source\FreeRTOS-Plus-IoT-SDK\abstractions\platform\include;..\..\..\Source\FreeRTOS-Plus-IoT-SDK\abstractions\platform\freertos\include;.;%(AdditionalIncludeDirectories) WIN32;_DEBUG;_CONSOLE;_WIN32_WINNT=0x0500;WINVER=0x400;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) true EnableFastChecks @@ -145,6 +145,7 @@ + @@ -174,6 +175,14 @@ + + + + + + + + @@ -190,6 +199,8 @@ + + diff --git a/FreeRTOS-Plus/Demo/FreeRTOS_Plus_IoT_SDK/task_pool/WIN32.vcxproj.filters b/FreeRTOS-Plus/Demo/FreeRTOS_Plus_IoT_SDK/task_pool/WIN32.vcxproj.filters index 4dee640c5..f1df7966a 100644 --- a/FreeRTOS-Plus/Demo/FreeRTOS_Plus_IoT_SDK/task_pool/WIN32.vcxproj.filters +++ b/FreeRTOS-Plus/Demo/FreeRTOS_Plus_IoT_SDK/task_pool/WIN32.vcxproj.filters @@ -33,6 +33,54 @@ {b71e974a-9f28-4815-972b-d930ba8a34d0} + + {60717407-397f-4ea5-8492-3314acdd25f0} + + + {8a90222f-d723-4b4e-8e6e-c57afaf7fa92} + + + {7c995f05-2a10-4771-ad77-18a755876e46} + + + {e07288b6-a8e7-416a-947d-7f0260673dcc} + + + {9a636cc3-ebc6-48c5-8c18-c72494686e81} + + + {fe53a296-12ec-4819-bf2b-fd9dca2c6e96} + + + {29376c48-bc8b-4624-ad59-16807874c9f2} + + + {91ef4008-de51-4b41-ba5e-bf24d8cda378} + + + {ade43c6c-04c5-4897-abdb-91af2df04e5d} + + + {08a4e35c-19ca-4b1e-af24-bac368c2bf7b} + + + {1fc5fc25-c18b-45a2-bad3-0c07795db1e9} + + + {f3a69e5b-1462-4e19-8651-274e86c252b0} + + + {9a849d9e-91e5-4035-ab4c-70a986c6aed1} + + + {1e324500-91b4-4c76-b699-59ba75691760} + + + {bdcbc1ec-99b8-4c72-9075-49035c115488} + + + {35ce7745-52a2-4220-be31-50dfaa35c0ab} + @@ -94,6 +142,9 @@ FreeRTOS+\FreeRTOS+TCP + + FreeRTOS+\FreeRTOS IoT Libraries\standard\common\task_pool + @@ -167,5 +218,31 @@ FreeRTOS\Source\include + + FreeRTOS+\FreeRTOS IoT Libraries\standard\common\include + + + FreeRTOS+\FreeRTOS IoT Libraries\standard\common\include\types + + + FreeRTOS+\FreeRTOS IoT Libraries\standard\common\include\private + + + FreeRTOS+\FreeRTOS IoT Libraries\standard\common\include\private + + + FreeRTOS+\FreeRTOS IoT Libraries\standard\common\include\private + + + FreeRTOS+\FreeRTOS IoT Libraries\standard\common\include\private + + + + + FreeRTOS+\FreeRTOS IoT Libraries\abstractions\platform\freertos\include\platform + + + FreeRTOS+\FreeRTOS IoT Libraries\abstractions\platform\include\types + \ No newline at end of file diff --git a/FreeRTOS-Plus/Demo/FreeRTOS_Plus_IoT_SDK/task_pool/iot_config.h b/FreeRTOS-Plus/Demo/FreeRTOS_Plus_IoT_SDK/task_pool/iot_config.h new file mode 100644 index 000000000..3038f0b78 --- /dev/null +++ b/FreeRTOS-Plus/Demo/FreeRTOS_Plus_IoT_SDK/task_pool/iot_config.h @@ -0,0 +1,59 @@ +/* + * Copyright (C) 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +/* This file contains configuration settings for the demos. */ + +#ifndef IOT_CONFIG_H_ +#define IOT_CONFIG_H_ + +/* How long the MQTT library will wait for PINGRESPs or PUBACKs. */ +#define IOT_MQTT_RESPONSE_WAIT_MS ( 10000 ) + +/* MQTT demo configuration. */ +#define IOT_DEMO_MQTT_PUBLISH_BURST_COUNT ( 10 ) +#define IOT_DEMO_MQTT_PUBLISH_BURST_SIZE ( 2 ) + +/* Shadow demo configuration. The demo publishes periodic Shadow updates and responds + * to changing Shadows. */ +#define AWS_IOT_DEMO_SHADOW_UPDATE_COUNT ( 20 ) /* Number of updates to publish. */ +#define AWS_IOT_DEMO_SHADOW_UPDATE_PERIOD_MS ( 3000 ) /* Period of Shadow updates. */ + +/* Library logging configuration. IOT_LOG_LEVEL_GLOBAL provides a global log + * level for all libraries; the library-specific settings override the global + * setting. If both the library-specific and global settings are undefined, + * no logs will be printed. */ +#define IOT_LOG_LEVEL_GLOBAL IOT_LOG_INFO +#define IOT_LOG_LEVEL_DEMO IOT_LOG_INFO +#define IOT_LOG_LEVEL_PLATFORM IOT_LOG_NONE +#define IOT_LOG_LEVEL_NETWORK IOT_LOG_INFO +#define IOT_LOG_LEVEL_TASKPOOL IOT_LOG_NONE +#define IOT_LOG_LEVEL_MQTT IOT_LOG_INFO +#define AWS_IOT_LOG_LEVEL_SHADOW IOT_LOG_INFO +#define AWS_IOT_LOG_LEVEL_DEFENDER IOT_LOG_INFO + +/* Platform thread stack size and priority. */ +#define IOT_THREAD_DEFAULT_STACK_SIZE 2048 +#define IOT_THREAD_DEFAULT_PRIORITY 5 + +/* Include the common configuration file for FreeRTOS. */ +#include "iot_config_common.h" + +#endif /* ifndef IOT_CONFIG_H_ */ diff --git a/FreeRTOS-Plus/Demo/FreeRTOS_Plus_IoT_SDK/task_pool/iot_config_common.h b/FreeRTOS-Plus/Demo/FreeRTOS_Plus_IoT_SDK/task_pool/iot_config_common.h new file mode 100644 index 000000000..ab85d95f3 --- /dev/null +++ b/FreeRTOS-Plus/Demo/FreeRTOS_Plus_IoT_SDK/task_pool/iot_config_common.h @@ -0,0 +1,203 @@ +/* + * Amazon FreeRTOS V201906.00 Major + * Copyright (C) 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * http://aws.amazon.com/freertos + * http://www.FreeRTOS.org + */ + +/* This file contains default configuration settings for the demos on FreeRTOS. */ + +#ifndef IOT_CONFIG_COMMON_H_ +#define IOT_CONFIG_COMMON_H_ + +/* FreeRTOS include. */ +#include "FreeRTOS.h" + +/* Use platform types on FreeRTOS. */ +#include "platform/iot_platform_types_afr.h" + +/* Used to get the cloud broker endpoint for FreeRTOS. */ +//_RB_#include "aws_clientcredential.h" + +/* SDK version. */ +#define IOT_SDK_VERSION "4.0.0" + +/* This config file is for the demos; disable any test code. */ +#define IOT_BUILD_TESTS ( 0 ) + +/* Logging puts function. */ +#define IotLogging_Puts( str ) configPRINTF( ( "%s\r\n", str ) ) + +/* Enable asserts in libraries by default. */ +#ifndef IOT_METRICS_ENABLE_ASSERTS + #define IOT_METRICS_ENABLE_ASSERTS ( 1 ) +#endif +#ifndef IOT_CONTAINERS_ENABLE_ASSERTS + #define IOT_CONTAINERS_ENABLE_ASSERTS ( 1 ) +#endif +#ifndef IOT_TASKPOOL_ENABLE_ASSERTS + #define IOT_TASKPOOL_ENABLE_ASSERTS ( 1 ) +#endif +#ifndef IOT_MQTT_ENABLE_ASSERTS + #define IOT_MQTT_ENABLE_ASSERTS ( 1 ) +#endif +#ifndef AWS_IOT_SHADOW_ENABLE_ASSERTS + #define AWS_IOT_SHADOW_ENABLE_ASSERTS ( 1 ) +#endif +#ifndef AWS_IOT_DEFENDER_ENABLE_ASSERTS + #define AWS_IOT_DEFENDER_ENABLE_ASSERTS ( 1 ) +#endif +#ifndef IOT_BLE_ENABLE_ASSERTS + #define IOT_BLE_ENABLE_ASSERTS ( 1 ) +#endif + +/* Assert functions. */ +#define IotMetrics_Assert( expression ) configASSERT( expression ) +#define IotContainers_Assert( expression ) configASSERT( expression ) +#define IotTaskPool_Assert( expression ) configASSERT( expression ) +#define IotMqtt_Assert( expression ) configASSERT( expression ) +#define AwsIotShadow_Assert( expression ) configASSERT( expression ) +#define AwsIotDefender_Assert( expression ) configASSERT( expression ) +#define IotBle_Assert( expression ) configASSERT( expression ) + +/* Control the usage of dynamic memory allocation. */ +#ifndef IOT_STATIC_MEMORY_ONLY + #define IOT_STATIC_MEMORY_ONLY ( 0 ) +#endif + +/* Memory allocation configuration. Note that these functions will not be affected + * by IOT_STATIC_MEMORY_ONLY. */ +#define IotNetwork_Malloc pvPortMalloc +#define IotNetwork_Free vPortFree +#define IotThreads_Malloc pvPortMalloc +#define IotThreads_Free vPortFree +#define IotLogging_Malloc pvPortMalloc +#define IotLogging_Free vPortFree +#define IotBle_Malloc pvPortMalloc +#define IotBle_Free vPortFree +/* #define IotLogging_StaticBufferSize */ + +/* Memory allocation function configuration for the MQTT and Defender library. + * These libraries will be affected by IOT_STATIC_MEMORY_ONLY. */ +#if IOT_STATIC_MEMORY_ONLY == 0 + #define IotMetrics_MallocTcpConnection pvPortMalloc + #define IotMetrics_FreeTcpConnection vPortFree + #define IotMetrics_MallocIpAddress pvPortMalloc + #define IotMetrics_FreeIpAddress vPortFree + + #define IotTaskPool_MallocTaskPool pvPortMalloc + #define IotTaskPool_FreeTaskPool vPortFree + #define IotTaskPool_MallocJob pvPortMalloc + #define IotTaskPool_FreeJob vPortFree + #define IotTaskPool_MallocTimerEvent pvPortMalloc + #define IotTaskPool_FreeTimerEvent vPortFree + + #define IotMqtt_MallocConnection pvPortMalloc + #define IotMqtt_FreeConnection vPortFree + #define IotMqtt_MallocMessage pvPortMalloc + #define IotMqtt_FreeMessage vPortFree + #define IotMqtt_MallocOperation pvPortMalloc + #define IotMqtt_FreeOperation vPortFree + #define IotMqtt_MallocSubscription pvPortMalloc + #define IotMqtt_FreeSubscription vPortFree + + #define IotSerializer_MallocCborEncoder pvPortMalloc + #define IotSerializer_FreeCborEncoder vPortFree + #define IotSerializer_MallocCborParser pvPortMalloc + #define IotSerializer_FreeCborParser vPortFree + #define IotSerializer_MallocCborValue pvPortMalloc + #define IotSerializer_FreeCborValue vPortFree + #define IotSerializer_MallocDecoderObject pvPortMalloc + #define IotSerializer_FreeDecoderObject vPortFree + + #define AwsIotShadow_MallocOperation pvPortMalloc + #define AwsIotShadow_FreeOperation vPortFree + #define AwsIotShadow_MallocString pvPortMalloc + #define AwsIotShadow_FreeString vPortFree + #define AwsIotShadow_MallocSubscription pvPortMalloc + #define AwsIotShadow_FreeSubscription vPortFree + + #define AwsIotDefender_MallocReport pvPortMalloc + #define AwsIotDefender_FreeReport vPortFree + #define AwsIotDefender_MallocTopic pvPortMalloc + #define AwsIotDefender_FreeTopic vPortFree +#endif /* if IOT_STATIC_MEMORY_ONLY == 0 */ + +/* Default platform thread stack size and priority. */ +#ifndef IOT_THREAD_DEFAULT_STACK_SIZE + #define IOT_THREAD_DEFAULT_STACK_SIZE 2048 +#endif +#ifndef IOT_THREAD_DEFAULT_PRIORITY + #define IOT_THREAD_DEFAULT_PRIORITY tskIDLE_PRIORITY +#endif + +/* Platform network configuration. */ +#ifndef IOT_NETWORK_RECEIVE_TASK_PRIORITY + #define IOT_NETWORK_RECEIVE_TASK_PRIORITY ( tskIDLE_PRIORITY + 1 ) +#endif +#ifndef IOT_NETWORK_RECEIVE_TASK_STACK_SIZE + #define IOT_NETWORK_RECEIVE_TASK_STACK_SIZE IOT_THREAD_DEFAULT_STACK_SIZE +#endif + +/* Platform and SDK name for AWS IoT MQTT metrics. Only used when + * AWS_IOT_MQTT_ENABLE_METRICS is 1. */ +#define IOT_SDK_NAME "AmazonFreeRTOS" +#ifdef configPLATFORM_NAME + #define IOT_PLATFORM_NAME configPLATFORM_NAME +#else + #define IOT_PLATFORM_NAME "Unknown" +#endif + +/* Cloud endpoint to which the device connects to. */ +#define IOT_CLOUD_ENDPOINT clientcredentialMQTT_BROKER_ENDPOINT + +/** + * @brief Unique identifier used to recognize a device by the cloud. + * This could be SHA-256 of the device certificate. + */ +extern const char *getDeviceIdentifier( void ); +#define IOT_DEVICE_IDENTIFIER getDeviceIdentifier() + +/** + * @brief Metrics emitted by the device. + */ +extern const char *getDeviceMetrics( void ); +#define AWS_IOT_METRICS_USERNAME getDeviceMetrics() + +/** + * @brief Length of the metrics emitted by device. + */ +extern uint16_t getDeviceMetricsLength( void ); +#define AWS_IOT_METRICS_USERNAME_LENGTH getDeviceMetricsLength() + +/* Define the data type of metrics connection id as same as Socket_t in aws_secure_socket.h */ +#define IotMetricsConnectionId_t void * + +/* Configuration for defender demo: set format to CBOR. */ +#define AWS_IOT_DEFENDER_FORMAT AWS_IOT_DEFENDER_FORMAT_CBOR + +/* Configuration for defender demo: use long tag for readable output. Please use short tag for the real application. */ +#define AWS_IOT_DEFENDER_USE_LONG_TAG ( 1 ) + +/* Demo runner configuration. */ +//_RB_#include "aws_demo_config.h" + +#endif /* ifndef IOT_CONFIG_COMMON_H_ */ diff --git a/FreeRTOS-Plus/Demo/FreeRTOS_Plus_IoT_SDK/task_pool/main.c b/FreeRTOS-Plus/Demo/FreeRTOS_Plus_IoT_SDK/task_pool/main.c index fa52947a5..9a93fcd3d 100644 --- a/FreeRTOS-Plus/Demo/FreeRTOS_Plus_IoT_SDK/task_pool/main.c +++ b/FreeRTOS-Plus/Demo/FreeRTOS_Plus_IoT_SDK/task_pool/main.c @@ -339,6 +339,7 @@ uint32_t ulLoggingIPAddress; } #endif +/*-----------------------------------------------------------*/ /* * Callback that provides the inputs necessary to generate a randomized TCP @@ -358,4 +359,55 @@ extern uint32_t ulApplicationGetNextSequenceNumber( uint32_t ulSourceAddress, return uxRand(); } +/*-----------------------------------------------------------*/ + +/* configUSE_STATIC_ALLOCATION is set to 1, so the application must provide an +implementation of vApplicationGetIdleTaskMemory() to provide the memory that is +used by the Idle task. */ +void vApplicationGetIdleTaskMemory( StaticTask_t** ppxIdleTaskTCBBuffer, StackType_t** ppxIdleTaskStackBuffer, uint32_t* pulIdleTaskStackSize ) +{ + /* If the buffers to be provided to the Idle task are declared inside this + function then they must be declared static - otherwise they will be allocated on + the stack and so not exists after this function exits. */ + static StaticTask_t xIdleTaskTCB; + static StackType_t uxIdleTaskStack[configMINIMAL_STACK_SIZE]; + + /* Pass out a pointer to the StaticTask_t structure in which the Idle task's + state will be stored. */ + *ppxIdleTaskTCBBuffer = &xIdleTaskTCB; + + /* Pass out the array that will be used as the Idle task's stack. */ + *ppxIdleTaskStackBuffer = uxIdleTaskStack; + + /* Pass out the size of the array pointed to by *ppxIdleTaskStackBuffer. + Note that, as the array is necessarily of type StackType_t, + configMINIMAL_STACK_SIZE is specified in words, not bytes. */ + *pulIdleTaskStackSize = configMINIMAL_STACK_SIZE; +} +/*-----------------------------------------------------------*/ + +/* configUSE_STATIC_ALLOCATION and configUSE_TIMERS are both set to 1, so the +application must provide an implementation of vApplicationGetTimerTaskMemory() +to provide the memory that is used by the Timer service task. */ +void vApplicationGetTimerTaskMemory( StaticTask_t** ppxTimerTaskTCBBuffer, StackType_t** ppxTimerTaskStackBuffer, uint32_t* pulTimerTaskStackSize ) +{ + /* If the buffers to be provided to the Timer task are declared inside this + function then they must be declared static - otherwise they will be allocated on + the stack and so not exists after this function exits. */ + static StaticTask_t xTimerTaskTCB; + static StackType_t uxTimerTaskStack[configTIMER_TASK_STACK_DEPTH]; + + /* Pass out a pointer to the StaticTask_t structure in which the Timer + task's state will be stored. */ + *ppxTimerTaskTCBBuffer = &xTimerTaskTCB; + + /* Pass out the array that will be used as the Timer task's stack. */ + *ppxTimerTaskStackBuffer = uxTimerTaskStack; + + /* Pass out the size of the array pointed to by *ppxTimerTaskStackBuffer. + Note that, as the array is necessarily of type StackType_t, + configMINIMAL_STACK_SIZE is specified in words, not bytes. */ + *pulTimerTaskStackSize = configTIMER_TASK_STACK_DEPTH; +} + diff --git a/FreeRTOS-Plus/Source/FreeRTOS-Plus-IoT-SDK/c_sdk/standard/common/taskpool/iot_taskpool.c b/FreeRTOS-Plus/Source/FreeRTOS-Plus-IoT-SDK/c_sdk/standard/common/taskpool/iot_taskpool.c index a01e6423c..460117d63 100644 --- a/FreeRTOS-Plus/Source/FreeRTOS-Plus-IoT-SDK/c_sdk/standard/common/taskpool/iot_taskpool.c +++ b/FreeRTOS-Plus/Source/FreeRTOS-Plus-IoT-SDK/c_sdk/standard/common/taskpool/iot_taskpool.c @@ -27,7 +27,11 @@ * @brief Implements the task pool functions in iot_taskpool.h */ -/* The config header is always included first. */ +/* Kernel includes. */ +#include "FreeRTOS.h" +#include "semphr.h" + +/* IoT libraries includes. */ #include "iot_config.h" /* Standard includes. */ @@ -37,9 +41,13 @@ #include #include +#if !defined( configSUPPORT_STATIC_ALLOCATION ) || ( configSUPPORT_STATIC_ALLOCATION != 1 ) + #error configSUPPORT_STATIC_ALLOCATION must be set to 1 in FreeRTOSConfig.h to build this file. +#endif + /* Platform layer includes. */ -#include "platform/iot_threads.h" -#include "platform/iot_clock.h" +//_RB_#include "platform/iot_threads.h" +//_RB_#include "platform/iot_clock.h" /* Task pool internal include. */ #include "private/iot_taskpool_internal.h" @@ -551,7 +559,7 @@ IotTaskPoolError_t IotTaskPool_DestroyRecyclableJob( IotTaskPool_t taskPoolHandl pool - no other values are allowed. Use the full implementation of this library if you want multiple task pools (there is more than one task in each pool. */ -#warning could use a TASKPOOL macro to check value and return error. +//_RB_could use a TASKPOOL macro to check value and return error. configASSERT( ( taskPoolHandle == NULL ) || ( taskPoolHandle == &_IotSystemTaskPool ) ); /* Avoid compiler warnings about unused parameters if configASSERT() is not @@ -891,7 +899,7 @@ static IotTaskPoolError_t _createTaskPool( const IotTaskPoolInfo_t * const pInfo TASKPOOL_FUNCTION_ENTRY( IOT_TASKPOOL_SUCCESS ); uint32_t count; - uint32_t threadsCreated; + uint32_t threadsCreated = 0; /* Although initialised before use removing the initialiser here results in compiler warnings. */ char cTaskName[ 10 ]; /* Check input values for consistency. */ -- 2.39.2