From a3c047d22fa51974c61cf29b60d583c76e830c11 Mon Sep 17 00:00:00 2001 From: Tony Josi Date: Mon, 23 Dec 2024 16:38:33 +0530 Subject: [PATCH] Update FreeRTOS+TCP to latest version V4.3.1 (#1305) Update FreeRTOS+TCP to latest version V4.3.1 --- .github/workflows/freertos_plus_demos.yml | 45 ++++++++++++++++--- .../FreeRTOSConfig.h | 17 +++---- .../FreeRTOSIPConfig.h | 7 ++- .../FreeRTOS_Plus_TCP_Echo_Posix/Makefile | 3 ++ .../TCPEchoClient_SingleTasks.c | 14 ++---- .../main_networking.c | 2 +- FreeRTOS-Plus/Source/FreeRTOS-Plus-TCP | 2 +- manifest.yml | 2 +- 8 files changed, 61 insertions(+), 31 deletions(-) diff --git a/.github/workflows/freertos_plus_demos.yml b/.github/workflows/freertos_plus_demos.yml index 684111dd038..95e819b8e1b 100644 --- a/.github/workflows/freertos_plus_demos.yml +++ b/.github/workflows/freertos_plus_demos.yml @@ -446,10 +446,20 @@ jobs: id: generate-credentials uses: FreeRTOS/CI-CD-GitHub-Actions/ssl-credential-creator@main + - name: Query CI host IP address + id: get-ip + run: | + # Query the device's IP address + $SERVER_IP = (Get-NetIPAddress -AddressFamily IPv4 | Where-Object { $_.IPAddress -notmatch '127.0.0.1' } | Select-Object -First 1 -ExpandProperty IPAddress) + Write-Host "Device IP address: $SERVER_IP" + echo "server_ip=$SERVER_IP" >> $env:GITHUB_ENV + shell: pwsh + - name: Start localhost MQTT broker id: mqtt-broker uses: FreeRTOS/CI-CD-GitHub-Actions/localhost-mqtt-broker@main with: + host_address: ${{ env.server_ip }} root-ca-cert-path: ${{ steps.generate-credentials.outputs.root-ca-cert-path }} server-priv-key-path: @@ -475,7 +485,7 @@ jobs: # ${{ env.stepName }} echo -e "::group::${{ env.stepName }}" echo '#define democonfigCLIENT_IDENTIFIER "mqtt_demo_test"' >> demo_config.h - echo '#define democonfigMQTT_BROKER_ENDPOINT "127.0.0.1"' >> demo_config.h + echo '#define democonfigMQTT_BROKER_ENDPOINT "${{ env.server_ip }}"' >> demo_config.h echo '#define democonfigMQTT_BROKER_PORT ( 1883 )' >> demo_config.h echo "::endgroup::" echo -e "${{ env.bashPass }} ${{ env.stepName }} ${{ env.bashEnd }} " @@ -521,7 +531,7 @@ jobs: sed 's/.*/"&\\n"\\/' ${{ steps.generate-credentials.outputs.root-ca-cert-path }} >> root_ca_cert.txt sed '$ s/.$//' root_ca_cert.txt >> demo_config.h echo '#define democonfigCLIENT_IDENTIFIER "mqtt_demo_test"' >> demo_config.h - echo '#define democonfigMQTT_BROKER_ENDPOINT "127.0.0.1"' >> demo_config.h + echo '#define democonfigMQTT_BROKER_ENDPOINT "${{ env.server_ip }}"' >> demo_config.h echo '#define democonfigMQTT_BROKER_PORT ( 8883 )' >> demo_config.h sed -i -z "s/define[[:space:]]*democonfigDISABLE_SNI[[:space:]]*([[:space:]]*[a-zA-Z0-9]\+[[:space:]]*)/define democonfigDISABLE_SNI ( pdTRUE )/g" demo_config.h exitStatus=$? @@ -575,7 +585,7 @@ jobs: sed 's/.*/"&\\n"\\/' ${{ steps.generate-credentials.outputs.device-priv-key-path }} >> device_priv_key.txt sed '$ s/.$//' device_priv_key.txt >> demo_config.h echo '#define democonfigCLIENT_IDENTIFIER "mqtt_demo_test"' >> demo_config.h - echo '#define democonfigMQTT_BROKER_ENDPOINT "127.0.0.1"' >> demo_config.h + echo '#define democonfigMQTT_BROKER_ENDPOINT "${{ env.server_ip }}"' >> demo_config.h echo '#define democonfigMQTT_BROKER_PORT ( 8883 )' >> demo_config.h sed -i -z "s/define[[:space:]]*democonfigDISABLE_SNI[[:space:]]*([[:space:]]*[a-zA-Z0-9]\+[[:space:]]*)/define democonfigDISABLE_SNI ( pdTRUE )/g" demo_config.h echo "::endgroup::" @@ -621,7 +631,7 @@ jobs: echo '#ifndef DEMO_CONFIG_H_TEST_BUILD' >> demo_config.h echo ' #define DEMO_CONFIG_H_TEST_BUILD' >> demo_config.h echo ' #define democonfigCLIENT_IDENTIFIER "mqtt_demo_test"' >> demo_config.h - echo ' #define democonfigMQTT_BROKER_ENDPOINT "127.0.0.1"' >> demo_config.h + echo ' #define democonfigMQTT_BROKER_ENDPOINT "${{ env.server_ip }}"' >> demo_config.h echo ' #define democonfigMQTT_BROKER_PORT ( 1883 )' >> demo_config.h echo '#endif /* DEMO_CONFIG_H_TEST_BUILD */' >> demo_config.h echo "::endgroup::" @@ -665,7 +675,7 @@ jobs: # ${{ env.stepName }} echo -e "::group::${{ env.stepName }}" echo '#define democonfigCLIENT_IDENTIFIER "mqtt_demo_test"' >> demo_config.h - echo '#define democonfigMQTT_BROKER_ENDPOINT "127.0.0.1"' >> demo_config.h + echo '#define democonfigMQTT_BROKER_ENDPOINT "${{ env.server_ip }}"' >> demo_config.h echo '#define democonfigMQTT_BROKER_PORT ( 1883 )' >> demo_config.h echo "::endgroup::" echo -e "${{ env.bashPass }} ${{ env.stepName }} ${{ env.bashEnd }} " @@ -710,7 +720,7 @@ jobs: sed 's/.*/"&\\n"\\/' ${{ steps.generate-credentials.outputs.device-priv-key-path }} >> device_priv_key.txt sed '$ s/.$//' device_priv_key.txt >> demo_config.h echo '#define democonfigCLIENT_IDENTIFIER "mqtt_demo_test"' >> demo_config.h - echo '#define democonfigMQTT_BROKER_ENDPOINT "127.0.0.1"' >> demo_config.h + echo '#define democonfigMQTT_BROKER_ENDPOINT "${{ env.server_ip }}"' >> demo_config.h echo '#define democonfigMQTT_BROKER_PORT ( 8883 )' >> demo_config.h echo "::endgroup::" echo -e "${{ env.bashPass }} ${{ env.stepName }} ${{ env.bashEnd }} " @@ -1051,10 +1061,19 @@ jobs: echo "::endgroup::" echo -e "${{ env.bashPass }} ${{ env.stepName }} ${{ env.bashEnd }} " + - name: Query CI host IP address + id: get-ip + run: | + # Query the device's IP address + SERVER_IP="$(ip addr show | grep "inet " | grep -v "127.0.0.1" | awk '{print $2}' | cut -d/ -f1 | head -n 1)" + echo "Device IP address: $SERVER_IP" + echo "server_ip=\"$SERVER_IP\"" >> $GITHUB_ENV + - name: Start localhost Echo server id: echo-server uses: FreeRTOS/CI-CD-GitHub-Actions/localhost-echo-server@main with: + host_address: ${{ env.server_ip }} port_number: 5000 - env: @@ -1067,6 +1086,8 @@ jobs: echo -e "::group::${{ env.stepName }}" sed -i -z "s/define[[:space:]]*echoECHO_PORT[[:space:]]*([[:space:]]*[0-9]\+[[:space:]]*)/define echoECHO_PORT ( 5000 )/g" TCPEchoClient_SingleTasks.c sed -i -z "s/int[[:space:]]*main[[:space:]]*([[:space:]]*void[[:space:]]*)\n{/int main( void ){setvbuf( stdout, NULL, _IONBF, 0 );/g" main.c + sed -i "s/^#define configECHO_SERVER_ADDR .*/#define configECHO_SERVER_ADDR \"${{ env.server_ip }}\"/" FreeRTOSConfig.h + git diff make -j TRACE_ON_ENTER=0 echo "::endgroup::" echo -e "${{ env.bashPass }} ${{ env.stepName }} ${{ env.bashEnd }} " @@ -1177,10 +1198,20 @@ jobs: exit 1 } + - name: Query CI host IP address + id: get-ip + run: | + # Query the device's IP address + $SERVER_IP = (Get-NetIPAddress -AddressFamily IPv4 | Where-Object { $_.IPAddress -notmatch '127.0.0.1' } | Select-Object -First 1 -ExpandProperty IPAddress) + Write-Host "Device IP address: $SERVER_IP" + echo "server_ip=$SERVER_IP" >> $env:GITHUB_ENV + shell: pwsh + - name: Start localhost Echo server id: echo-server uses: FreeRTOS/CI-CD-GitHub-Actions/localhost-echo-server@main with: + host_address: ${{ env.server_ip }} port_number: 5000 - env: @@ -1195,7 +1226,7 @@ jobs: $newContent = $content -replace '#define\s+echoECHO_PORT.*', '#define echoECHO_PORT ( 5000 )' $newContent | Set-Content -Path 'DemoTasks\TCPEchoClient_SingleTasks.c' $content = Get-Content -Path 'tcp_echo_config.h' -Raw - $newContent = $content -replace '#define\s+configECHO_SERVER_ADDR.*', '#define configECHO_SERVER_ADDR "127.0.0.1"' + $newContent = $content -replace '#define\s+configECHO_SERVER_ADDR.*', '#define configECHO_SERVER_ADDR "${{ env.server_ip }}"' $newContent | Set-Content -Path 'tcp_echo_config.h' $content = Get-Content -Path 'main.c' -Raw $newContent = $content -replace 'int\s+main(.*?)void(.*?)\r?\n\s*{', 'int main( void ){setvbuf( stdout, NULL, _IONBF, 0 );' diff --git a/FreeRTOS-Plus/Demo/FreeRTOS_Plus_TCP_Echo_Posix/FreeRTOSConfig.h b/FreeRTOS-Plus/Demo/FreeRTOS_Plus_TCP_Echo_Posix/FreeRTOSConfig.h index 0cf89d6ffc2..9737440b5c9 100644 --- a/FreeRTOS-Plus/Demo/FreeRTOS_Plus_TCP_Echo_Posix/FreeRTOSConfig.h +++ b/FreeRTOS-Plus/Demo/FreeRTOS_Plus_TCP_Echo_Posix/FreeRTOSConfig.h @@ -168,22 +168,19 @@ extern void vAssertCalled( const char * const pcFileName, * http://www.freertos.org/FreeRTOS-Plus/FreeRTOS_Plus_TCP/TCP_Echo_Clients.html * http://www.freertos.org/FreeRTOS-Plus/FreeRTOS_Plus_TCP/UDP_Echo_Clients.html */ -#define configECHO_SERVER_ADDR0 127 -#define configECHO_SERVER_ADDR1 0 -#define configECHO_SERVER_ADDR2 0 -#define configECHO_SERVER_ADDR3 1 +#define configECHO_SERVER_ADDR "172.31.69.236" /* Default MAC address configuration. The demo creates a virtual network * connection that uses this MAC address by accessing the raw Ethernet/WiFi data * to and from a real network connection on the host PC. See the * configNETWORK_INTERFACE_TO_USE definition above for information on how to * configure the real network connection to use. */ -#define configMAC_ADDR0 0x00 -#define configMAC_ADDR1 0x11 -#define configMAC_ADDR2 0x22 -#define configMAC_ADDR3 0x33 -#define configMAC_ADDR4 0x44 -#define configMAC_ADDR5 0x41 +#define configMAC_ADDR0 0x00 +#define configMAC_ADDR1 0x11 +#define configMAC_ADDR2 0x22 +#define configMAC_ADDR3 0x33 +#define configMAC_ADDR4 0x44 +#define configMAC_ADDR5 0x41 /* Default IP address configuration. Used in ipconfigUSE_DNS is set to 0, or * ipconfigUSE_DNS is set to 1 but a DNS server cannot be contacted. */ diff --git a/FreeRTOS-Plus/Demo/FreeRTOS_Plus_TCP_Echo_Posix/FreeRTOSIPConfig.h b/FreeRTOS-Plus/Demo/FreeRTOS_Plus_TCP_Echo_Posix/FreeRTOSIPConfig.h index 6c98ef994a6..cb9ef22a9e3 100644 --- a/FreeRTOS-Plus/Demo/FreeRTOS_Plus_TCP_Echo_Posix/FreeRTOSIPConfig.h +++ b/FreeRTOS-Plus/Demo/FreeRTOS_Plus_TCP_Echo_Posix/FreeRTOSIPConfig.h @@ -35,6 +35,11 @@ #ifndef FREERTOS_IP_CONFIG_H #define FREERTOS_IP_CONFIG_H +#ifdef HEAP3 + #define xPortGetMinimumEverFreeHeapSize( x ) 0 + #define xPortGetFreeHeapSize() 0 +#endif + /* Prototype for the function used to print out. In this case it prints to the * console before the network is connected then a UDP port after the network has * connected. */ @@ -67,7 +72,7 @@ extern void vLoggingPrintf( const char * pcFormatString, * FreeRTOS_netstat() command, and ping replies. If ipconfigHAS_PRINTF is set to 1 * then FreeRTOS_printf should be set to the function used to print out the * messages. */ -#define ipconfigHAS_PRINTF 0 +#define ipconfigHAS_PRINTF 1 #if ( ipconfigHAS_PRINTF == 1 ) #define FreeRTOS_printf( X ) vLoggingPrintf X #endif diff --git a/FreeRTOS-Plus/Demo/FreeRTOS_Plus_TCP_Echo_Posix/Makefile b/FreeRTOS-Plus/Demo/FreeRTOS_Plus_TCP_Echo_Posix/Makefile index e3753275045..d02fc2e1975 100644 --- a/FreeRTOS-Plus/Demo/FreeRTOS_Plus_TCP_Echo_Posix/Makefile +++ b/FreeRTOS-Plus/Demo/FreeRTOS_Plus_TCP_Echo_Posix/Makefile @@ -66,6 +66,9 @@ LDFLAGS += $(shell pkg-config --libs slirp) CPPFLAGS = $(INCLUDE_DIRS) -DBUILD_DIR=\"$(BUILD_DIR_ABS)\" +DEFINES := -DHEAP3 +CPPFLAGS += $(DEFINES) + ifndef TRACE_ON_ENTER TRACE_ON_ENTER = 1 endif diff --git a/FreeRTOS-Plus/Demo/FreeRTOS_Plus_TCP_Echo_Posix/TCPEchoClient_SingleTasks.c b/FreeRTOS-Plus/Demo/FreeRTOS_Plus_TCP_Echo_Posix/TCPEchoClient_SingleTasks.c index b354ad9bdc4..a0bf8952365 100644 --- a/FreeRTOS-Plus/Demo/FreeRTOS_Plus_TCP_Echo_Posix/TCPEchoClient_SingleTasks.c +++ b/FreeRTOS-Plus/Demo/FreeRTOS_Plus_TCP_Echo_Posix/TCPEchoClient_SingleTasks.c @@ -158,17 +158,11 @@ #if defined( ipconfigIPv4_BACKWARD_COMPATIBLE ) && ( ipconfigIPv4_BACKWARD_COMPATIBLE == 0 ) { - xEchoServerAddress.sin_address.ulIP_IPv4 = FreeRTOS_inet_addr_quick( configECHO_SERVER_ADDR0, - configECHO_SERVER_ADDR1, - configECHO_SERVER_ADDR2, - configECHO_SERVER_ADDR3 ); + xEchoServerAddress.sin_address.ulIP_IPv4 = FreeRTOS_inet_addr( configECHO_SERVER_ADDR ); } #else { - xEchoServerAddress.sin_addr = FreeRTOS_inet_addr_quick( configECHO_SERVER_ADDR0, - configECHO_SERVER_ADDR1, - configECHO_SERVER_ADDR2, - configECHO_SERVER_ADDR3 ); + xEchoServerAddress.sin_addr = FreeRTOS_inet_addr( configECHO_SERVER_ADDR ); } #endif /* defined( ipconfigIPv4_BACKWARD_COMPATIBLE ) && ( ipconfigIPv4_BACKWARD_COMPATIBLE == 0 ) */ @@ -189,8 +183,8 @@ FreeRTOS_setsockopt( xSocket, 0, FREERTOS_SO_WIN_PROPERTIES, ( void * ) &xWinProps, sizeof( xWinProps ) ); /* Connect to the echo server. */ - printf( "\nConnecting to echo server %d.%d.%d.%d:%d....\n", - configECHO_SERVER_ADDR0, configECHO_SERVER_ADDR1, configECHO_SERVER_ADDR2, configECHO_SERVER_ADDR3, echoECHO_PORT ); + printf( "\nConnecting to echo server %s:%d....\n", + configECHO_SERVER_ADDR, echoECHO_PORT ); ret = FreeRTOS_connect( xSocket, &xEchoServerAddress, sizeof( xEchoServerAddress ) ); diff --git a/FreeRTOS-Plus/Demo/FreeRTOS_Plus_TCP_Echo_Posix/main_networking.c b/FreeRTOS-Plus/Demo/FreeRTOS_Plus_TCP_Echo_Posix/main_networking.c index 42563624dd4..09ce8784f47 100644 --- a/FreeRTOS-Plus/Demo/FreeRTOS_Plus_TCP_Echo_Posix/main_networking.c +++ b/FreeRTOS-Plus/Demo/FreeRTOS_Plus_TCP_Echo_Posix/main_networking.c @@ -252,7 +252,7 @@ void main_tcp_echo_client_tasks( void ) } else { - FreeRTOS_printf( "Application idle hook network down\n" ); + FreeRTOS_printf( ( "Application idle hook network down\n" ) ); } } /*-----------------------------------------------------------*/ diff --git a/FreeRTOS-Plus/Source/FreeRTOS-Plus-TCP b/FreeRTOS-Plus/Source/FreeRTOS-Plus-TCP index f940d75a139..e7033c5ddda 160000 --- a/FreeRTOS-Plus/Source/FreeRTOS-Plus-TCP +++ b/FreeRTOS-Plus/Source/FreeRTOS-Plus-TCP @@ -1 +1 @@ -Subproject commit f940d75a1393ba976edfcce118d4d97dc234322d +Subproject commit e7033c5dddab7e7c0bdc422d93510136feb4b8f5 diff --git a/manifest.yml b/manifest.yml index 959ab752c00..9f17ffb7dc8 100644 --- a/manifest.yml +++ b/manifest.yml @@ -12,7 +12,7 @@ dependencies: path: "FreeRTOS/Source" - name: "FreeRTOS-Plus-TCP" - version: "V4.1.0" + version: "V4.3.1" repository: type: "git" url: "https://github.com/FreeRTOS/FreeRTOS-Plus-TCP.git"