From 20c0e92ed8d6ef36de2e9a6be4d137ac75153329 Mon Sep 17 00:00:00 2001 From: ActoryOu Date: Thu, 18 Aug 2022 16:25:15 +0800 Subject: [PATCH 01/31] Update LTS 2.0 libraries and fix demo. --- .gitmodules | 2 +- Middleware/AWS/device-defender | 2 +- Middleware/AWS/device-shadow | 2 +- Middleware/AWS/ota | 2 +- Middleware/FreeRTOS/backoffAlgorithm | 2 +- Middleware/FreeRTOS/coreJSON | 2 +- Middleware/FreeRTOS/coreMQTT | 2 +- Middleware/FreeRTOS/coreMQTT-Agent | 2 +- Middleware/FreeRTOS/corePKCS11 | 2 +- Middleware/FreeRTOS/kernel | 2 +- examples/evkbmimxrt1060/defender/include/FreeRTOSConfig.h | 2 +- examples/evkbmimxrt1060/pubsub/include/FreeRTOSConfig.h | 2 +- examples/evkbmimxrt1060/shadow/include/FreeRTOSConfig.h | 2 +- examples/evkbmimxrt1060/shadow/shadow_device_task.c | 4 ++-- examples/evkbmimxrt1060/test/include/FreeRTOSConfig.h | 2 +- 15 files changed, 16 insertions(+), 16 deletions(-) diff --git a/.gitmodules b/.gitmodules index 74cb8c3..8ff4816 100644 --- a/.gitmodules +++ b/.gitmodules @@ -27,7 +27,7 @@ url = https://github.com/amazon-freertos/pkcs11.git [submodule "Middleware/AWS/ota"] path = Middleware/AWS/ota - url = https://github.com/aws/ota-for-aws-iot-embedded-sdk + url = https://github.com/ActoryOu/ota-for-aws-iot-embedded-sdk [submodule "Middleware/tinycbor"] path = Middleware/tinycbor url = https://github.com/intel/tinycbor.git diff --git a/Middleware/AWS/device-defender b/Middleware/AWS/device-defender index a12bbaf..bbb5821 160000 --- a/Middleware/AWS/device-defender +++ b/Middleware/AWS/device-defender @@ -1 +1 @@ -Subproject commit a12bbaf13920e83a4252b1cf992e1d6a5b0c9939 +Subproject commit bbb582123ebdc05dd8948167fddbf9519cd06aa7 diff --git a/Middleware/AWS/device-shadow b/Middleware/AWS/device-shadow index 92327cd..5d63295 160000 --- a/Middleware/AWS/device-shadow +++ b/Middleware/AWS/device-shadow @@ -1 +1 @@ -Subproject commit 92327cd715ddbab04f1d88837f7bc66010b2dfa5 +Subproject commit 5d6329514a2d8274bb1270684be0a524f01d64ff diff --git a/Middleware/AWS/ota b/Middleware/AWS/ota index 1f2362f..ac19306 160000 --- a/Middleware/AWS/ota +++ b/Middleware/AWS/ota @@ -1 +1 @@ -Subproject commit 1f2362f005f39a1847d645660ecaff93890cfcd7 +Subproject commit ac193061e21825b6c750d78a76a8f6a10a1da930 diff --git a/Middleware/FreeRTOS/backoffAlgorithm b/Middleware/FreeRTOS/backoffAlgorithm index 6343da9..b32d9da 160000 --- a/Middleware/FreeRTOS/backoffAlgorithm +++ b/Middleware/FreeRTOS/backoffAlgorithm @@ -1 +1 @@ -Subproject commit 6343da924adee67b315ce7f8ace2fb2ff5f05a29 +Subproject commit b32d9da8f1a0fedbfb356e65ab5930896ecaf987 diff --git a/Middleware/FreeRTOS/coreJSON b/Middleware/FreeRTOS/coreJSON index caf540c..e3d7f27 160000 --- a/Middleware/FreeRTOS/coreJSON +++ b/Middleware/FreeRTOS/coreJSON @@ -1 +1 @@ -Subproject commit caf540ccdb98e8f96a6f557075cb607288384938 +Subproject commit e3d7f279e313c48622251852bfa6cde11a311e40 diff --git a/Middleware/FreeRTOS/coreMQTT b/Middleware/FreeRTOS/coreMQTT index 51c8067..a2dddd6 160000 --- a/Middleware/FreeRTOS/coreMQTT +++ b/Middleware/FreeRTOS/coreMQTT @@ -1 +1 @@ -Subproject commit 51c8067bffbe73eaff2b666104293e46bdb103e6 +Subproject commit a2dddd65f6ffc82ec87ffff9259c18c257a406c6 diff --git a/Middleware/FreeRTOS/coreMQTT-Agent b/Middleware/FreeRTOS/coreMQTT-Agent index 0185515..1020ad8 160000 --- a/Middleware/FreeRTOS/coreMQTT-Agent +++ b/Middleware/FreeRTOS/coreMQTT-Agent @@ -1 +1 @@ -Subproject commit 0185515bafd3002df9e9b8cf0b211baaae69f20b +Subproject commit 1020ad869988238e98e4f6603872084db7928881 diff --git a/Middleware/FreeRTOS/corePKCS11 b/Middleware/FreeRTOS/corePKCS11 index d6a5191..3c65ab5 160000 --- a/Middleware/FreeRTOS/corePKCS11 +++ b/Middleware/FreeRTOS/corePKCS11 @@ -1 +1 @@ -Subproject commit d6a519146598ec2ccd6f0230a01fca876767a8fe +Subproject commit 3c65ab5ef77ab357d2dbce136c3423e3f66b696d diff --git a/Middleware/FreeRTOS/kernel b/Middleware/FreeRTOS/kernel index 1e08439..992ff1b 160000 --- a/Middleware/FreeRTOS/kernel +++ b/Middleware/FreeRTOS/kernel @@ -1 +1 @@ -Subproject commit 1e0843929477c8f2e2679b70d18341ee312a5fce +Subproject commit 992ff1bb50aeffd3f637b86e1869033861a30ac6 diff --git a/examples/evkbmimxrt1060/defender/include/FreeRTOSConfig.h b/examples/evkbmimxrt1060/defender/include/FreeRTOSConfig.h index 71309bb..2629dd3 100644 --- a/examples/evkbmimxrt1060/defender/include/FreeRTOSConfig.h +++ b/examples/evkbmimxrt1060/defender/include/FreeRTOSConfig.h @@ -58,7 +58,7 @@ extern void vLoggingPrintf( const char * pcFormat, #define configUSE_DAEMON_TASK_STARTUP_HOOK 1 #define configCPU_CLOCK_HZ ( SystemCoreClock ) #define configTICK_RATE_HZ ( ( TickType_t ) 1000 ) -#define configMAX_PRIORITIES ( 7 ) +#define configMAX_PRIORITIES ( 9 ) #define configMINIMAL_STACK_SIZE ( ( uint16_t ) 90 ) #define configTOTAL_HEAP_SIZE ( ( size_t ) ( 160 * 1024 ) ) /* 160 Kbytes. */ #define configMAX_TASK_NAME_LEN ( 16 ) diff --git a/examples/evkbmimxrt1060/pubsub/include/FreeRTOSConfig.h b/examples/evkbmimxrt1060/pubsub/include/FreeRTOSConfig.h index 71309bb..2629dd3 100644 --- a/examples/evkbmimxrt1060/pubsub/include/FreeRTOSConfig.h +++ b/examples/evkbmimxrt1060/pubsub/include/FreeRTOSConfig.h @@ -58,7 +58,7 @@ extern void vLoggingPrintf( const char * pcFormat, #define configUSE_DAEMON_TASK_STARTUP_HOOK 1 #define configCPU_CLOCK_HZ ( SystemCoreClock ) #define configTICK_RATE_HZ ( ( TickType_t ) 1000 ) -#define configMAX_PRIORITIES ( 7 ) +#define configMAX_PRIORITIES ( 9 ) #define configMINIMAL_STACK_SIZE ( ( uint16_t ) 90 ) #define configTOTAL_HEAP_SIZE ( ( size_t ) ( 160 * 1024 ) ) /* 160 Kbytes. */ #define configMAX_TASK_NAME_LEN ( 16 ) diff --git a/examples/evkbmimxrt1060/shadow/include/FreeRTOSConfig.h b/examples/evkbmimxrt1060/shadow/include/FreeRTOSConfig.h index 71309bb..2629dd3 100644 --- a/examples/evkbmimxrt1060/shadow/include/FreeRTOSConfig.h +++ b/examples/evkbmimxrt1060/shadow/include/FreeRTOSConfig.h @@ -58,7 +58,7 @@ extern void vLoggingPrintf( const char * pcFormat, #define configUSE_DAEMON_TASK_STARTUP_HOOK 1 #define configCPU_CLOCK_HZ ( SystemCoreClock ) #define configTICK_RATE_HZ ( ( TickType_t ) 1000 ) -#define configMAX_PRIORITIES ( 7 ) +#define configMAX_PRIORITIES ( 9 ) #define configMINIMAL_STACK_SIZE ( ( uint16_t ) 90 ) #define configTOTAL_HEAP_SIZE ( ( size_t ) ( 160 * 1024 ) ) /* 160 Kbytes. */ #define configMAX_TASK_NAME_LEN ( 16 ) diff --git a/examples/evkbmimxrt1060/shadow/shadow_device_task.c b/examples/evkbmimxrt1060/shadow/shadow_device_task.c index d18b04b..a00506c 100644 --- a/examples/evkbmimxrt1060/shadow/shadow_device_task.c +++ b/examples/evkbmimxrt1060/shadow/shadow_device_task.c @@ -148,7 +148,7 @@ * functions. shadowexampleMS_TO_WAIT_FOR_NOTIFICATION defines the time, in ticks, * to wait for such a callback. */ -#define shadowexampleMS_TO_WAIT_FOR_NOTIFICATION ( 5000 ) +#define shadowexampleMS_TO_WAIT_FOR_NOTIFICATION ( 15000 ) /** * @brief The maximum amount of time in milliseconds to wait for the commands @@ -477,7 +477,7 @@ static bool prvSubscribeToShadowUpdateTopics( void ) xCommandParams.blockTimeMs = shadowexampleMAX_COMMAND_SEND_BLOCK_TIME_MS; xCommandParams.cmdCompleteCallback = prvSubscribeCommandCallback; xCommandParams.pCmdCompleteCallbackContext = &xCommandContext; - LogInfo( ( "Sending subscribe request to agent for shadow topics." ) ); + LogInfo( ( "Sending subscribe request to agent for shadow topics. 22" ) ); do { diff --git a/examples/evkbmimxrt1060/test/include/FreeRTOSConfig.h b/examples/evkbmimxrt1060/test/include/FreeRTOSConfig.h index 71309bb..2629dd3 100644 --- a/examples/evkbmimxrt1060/test/include/FreeRTOSConfig.h +++ b/examples/evkbmimxrt1060/test/include/FreeRTOSConfig.h @@ -58,7 +58,7 @@ extern void vLoggingPrintf( const char * pcFormat, #define configUSE_DAEMON_TASK_STARTUP_HOOK 1 #define configCPU_CLOCK_HZ ( SystemCoreClock ) #define configTICK_RATE_HZ ( ( TickType_t ) 1000 ) -#define configMAX_PRIORITIES ( 7 ) +#define configMAX_PRIORITIES ( 9 ) #define configMINIMAL_STACK_SIZE ( ( uint16_t ) 90 ) #define configTOTAL_HEAP_SIZE ( ( size_t ) ( 160 * 1024 ) ) /* 160 Kbytes. */ #define configMAX_TASK_NAME_LEN ( 16 ) From a69827be161e64632101e8b95da6ad4c06e4e7d5 Mon Sep 17 00:00:00 2001 From: ActoryOu Date: Thu, 18 Aug 2022 17:37:51 +0800 Subject: [PATCH 02/31] Fix MQTT test in qualification tests. --- .gitmodules | 2 +- Middleware/FreeRTOS/tests | 2 +- .../shadow/shadow_update_task.c | 2 +- .../test/include/test_execution_config.h | 1 + .../test/include/test_param_config.h | 15 +++ .../evkbmimxrt1060/test/integration_test.c | 104 ++++++++++++++++++ projects/evkmimxrt1060/test/.cproject | 13 ++- 7 files changed, 130 insertions(+), 9 deletions(-) diff --git a/.gitmodules b/.gitmodules index 8ff4816..2543873 100644 --- a/.gitmodules +++ b/.gitmodules @@ -48,4 +48,4 @@ url = https://github.com/ThrowTheSwitch/Unity.git [submodule "Middleware/FreeRTOS/tests"] path = Middleware/FreeRTOS/tests - url = https://github.com/FreeRTOS/Labs-FreeRTOS-Libraries-Integration-Tests.git + url = https://github.com/ActoryOu/FreeRTOS-Libraries-Integration-Tests.git diff --git a/Middleware/FreeRTOS/tests b/Middleware/FreeRTOS/tests index 7b531a2..d355119 160000 --- a/Middleware/FreeRTOS/tests +++ b/Middleware/FreeRTOS/tests @@ -1 +1 @@ -Subproject commit 7b531a24eb3d1f5e9fdd23ca0f3c57d7f24c875f +Subproject commit d35511962f00cb558bce2e9160c1f2bc6c0d344c diff --git a/examples/evkbmimxrt1060/shadow/shadow_update_task.c b/examples/evkbmimxrt1060/shadow/shadow_update_task.c index 8497fa1..52cf158 100644 --- a/examples/evkbmimxrt1060/shadow/shadow_update_task.c +++ b/examples/evkbmimxrt1060/shadow/shadow_update_task.c @@ -147,7 +147,7 @@ * functions. shadowexampleMS_TO_WAIT_FOR_NOTIFICATION defines the time, in ticks, * to wait for such a callback. */ -#define shadowexampleMS_TO_WAIT_FOR_NOTIFICATION ( 5000 ) +#define shadowexampleMS_TO_WAIT_FOR_NOTIFICATION ( 15000 ) /** * @brief The maximum amount of time in milliseconds to wait for the commands diff --git a/examples/evkbmimxrt1060/test/include/test_execution_config.h b/examples/evkbmimxrt1060/test/include/test_execution_config.h index 9cbee8a..0b47bc8 100644 --- a/examples/evkbmimxrt1060/test/include/test_execution_config.h +++ b/examples/evkbmimxrt1060/test/include/test_execution_config.h @@ -40,6 +40,7 @@ * * #define MQTT_TEST_ENABLED (0) */ +#define MQTT_TEST_ENABLED ( 0 ) /** * @brief Configuration to enable the transport interface test. diff --git a/examples/evkbmimxrt1060/test/include/test_param_config.h b/examples/evkbmimxrt1060/test/include/test_param_config.h index 8d3d9db..a06eefe 100644 --- a/examples/evkbmimxrt1060/test/include/test_param_config.h +++ b/examples/evkbmimxrt1060/test/include/test_param_config.h @@ -52,6 +52,21 @@ */ #define MQTT_SERVER_PORT ( 8883 ) +/** + * @brief The MQTT client identifier used in MQTT test. Each client identifier + * must be unique; so edit as required to ensure that no two clients connecting to + * the same broker use the same client identifier. + * + * #define MQTT_TEST_CLIENT_IDENTIFIER "insert here." + */ + + /** + * @brief Network buffer size specified in bytes. Must be large enough to hold the maximum + * anticipated MQTT payload. + * + * #define MQTT_TEST_NETWORK_BUFFER_SIZE "insert here." + */ + /** * @brief Endpoint of the echo server to connect to in transport interface test. * diff --git a/examples/evkbmimxrt1060/test/integration_test.c b/examples/evkbmimxrt1060/test/integration_test.c index 13593c4..aaef2cd 100644 --- a/examples/evkbmimxrt1060/test/integration_test.c +++ b/examples/evkbmimxrt1060/test/integration_test.c @@ -33,12 +33,16 @@ #include "qualification_test.h" #include "transport_interface_test.h" #include "ota_pal_test.h" +#include "mqtt_test.h" +#include "demo_config.h" #include "using_mbedtls.h" #include "mflash_drv.h" /* FreeRTOS includes. */ #include "FreeRTOS.h" #include "task.h" #include "semphr.h" +#include "fsl_common.h" +#include "fsl_trng.h" /** @@ -46,12 +50,26 @@ */ #define mqttexampleTRANSPORT_SEND_RECV_TIMEOUT_MS ( 750 ) +/** + * @brief Used to convert times to/from ticks and milliseconds. + */ +#define mqttexampleMILLISECONDS_PER_SECOND ( 1000U ) +#define mqttexampleMILLISECONDS_PER_TICK ( mqttexampleMILLISECONDS_PER_SECOND / configTICK_RATE_HZ ) + static NetworkCredentials_t xNetworkCredentials = { 0 }; static TransportInterface_t xTransport = { 0 }; static NetworkContext_t xNetworkContext = { 0 }; static NetworkContext_t xSecondNetworkContext = { 0 }; +/** + * @brief Global entry time into the application to use as a reference timestamp + * in the #prvGetTimeMs function. #prvGetTimeMs will always return the difference + * between the current time and the global entry time. This will reduce the chances + * of overflow for the 32 bit unsigned integer used for holding the timestamp. + */ +static uint32_t ulGlobalEntryTimeMs; + static NetworkConnectStatus_t prvTransportNetworkConnect( void * pvNetworkContext, TestHostInfo_t * pxHostInfo, void * pvNetworkCredentials ) @@ -98,6 +116,44 @@ static void ThreadWrapper( void * pParam ) vTaskDelete( NULL ); } +/*-----------------------------------------------------------*/ + +int FRTest_GenerateRandInt() +{ + static bool first = true; + trng_config_t trngConfig; + int ret = 0; + + if( first ) + { + + if( TRNG_GetDefaultConfig(&trngConfig) != kStatus_Success ) + { + PRINTF( "TRNG_GetDefaultConfig fail." ); + return (0); + } + + /* Initialize TRNG */ + if( TRNG_Init(TRNG, &trngConfig) != kStatus_Success ) + { + PRINTF( "TRNG_Init fail." ); + return (0); + } + + first = false; + } + + if( TRNG_GetRandomData(TRNG, &ret, sizeof(ret)) != kStatus_Success ) + { + PRINTF( "TRNG_GetRandomData fail." ); + } + else + { + PRINTF( "Return random INT %d.", ret ); + } + + return ret; +} /*-----------------------------------------------------------*/ @@ -182,6 +238,54 @@ void FRTest_MemoryFree( void * ptr ) { return vPortFree( ptr ); } +/*-----------------------------------------------------------*/ + +uint32_t MqttTestGetTimeMs( void ) +{ + TickType_t xTickCount = 0; + uint32_t ulTimeMs = 0UL; + + /* Get the current tick count. */ + xTickCount = xTaskGetTickCount(); + + /* Convert the ticks to milliseconds. */ + ulTimeMs = ( uint32_t ) xTickCount * mqttexampleMILLISECONDS_PER_TICK; + + /* Reduce ulGlobalEntryTimeMs from obtained time so as to always return the + * elapsed time in the application. */ + ulTimeMs = ( uint32_t ) ( ulTimeMs - ulGlobalEntryTimeMs ); + + return ulTimeMs; +} +/*-----------------------------------------------------------*/ + +#if ( MQTT_TEST_ENABLED == 1 ) +void SetupMqttTestParam( MqttTestParam_t * pTestParam ) +{ + configASSERT( pTestParam != NULL ); + + /* Initialization of timestamp for MQTT. */ + ulGlobalEntryTimeMs = Clock_GetTimeMs(); + + /* Setup the transport interface. */ + xTransport.send = TLS_FreeRTOS_Send; + xTransport.recv = TLS_FreeRTOS_Recv; + + xNetworkCredentials.pRootCa = ( unsigned char * ) democonfigROOT_CA_PEM; + xNetworkCredentials.rootCaSize = sizeof( democonfigROOT_CA_PEM ); + xNetworkCredentials.pClientCertLabel = pkcs11configLABEL_DEVICE_CERTIFICATE_FOR_TLS; + xNetworkCredentials.pPrivateKeyLabel = pkcs11configLABEL_DEVICE_PRIVATE_KEY_FOR_TLS; + xNetworkCredentials.disableSni = pdFALSE; + + pTestParam->pTransport = &xTransport; + pTestParam->pNetworkContext = &xNetworkContext; + pTestParam->pSecondNetworkContext = &xSecondNetworkContext; + pTestParam->pNetworkConnect = prvTransportNetworkConnect; + pTestParam->pNetworkDisconnect = prvTransportNetworkDisconnect; + pTestParam->pNetworkCredentials = &xNetworkCredentials; +} +#endif /* TRANSPORT_INTERFACE_TEST_ENABLED == 1 */ +/*-----------------------------------------------------------*/ #if ( TRANSPORT_INTERFACE_TEST_ENABLED == 1 ) void SetupTransportTestParam( TransportTestParam_t * pTestParam ) diff --git a/projects/evkmimxrt1060/test/.cproject b/projects/evkmimxrt1060/test/.cproject index b7363e5..5836c2b 100644 --- a/projects/evkmimxrt1060/test/.cproject +++ b/projects/evkmimxrt1060/test/.cproject @@ -144,6 +144,7 @@ +